From b00d45521bc36dfce988dd4fe8804623052a7a73 Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Tue, 13 Feb 2024 14:46:36 +0100 Subject: [PATCH] Update ACE Editor to version 1.32.6 --- vendor/assets/javascripts/ace/ace.js | 22142 ++++++------- vendor/assets/javascripts/ace/ext-beautify.js | 644 +- .../assets/javascripts/ace/ext-chromevox.js | 540 - .../assets/javascripts/ace/ext-code_lens.js | 202 + .../assets/javascripts/ace/ext-command_bar.js | 459 + .../ace/ext-elastic_tabstops_lite.js | 153 +- vendor/assets/javascripts/ace/ext-emmet.js | 1348 +- .../javascripts/ace/ext-error_marker.js | 9 +- vendor/assets/javascripts/ace/ext-hardwrap.js | 116 + .../ace/ext-inline_autocomplete.js | 3375 ++ .../javascripts/ace/ext-keybinding_menu.js | 214 +- .../javascripts/ace/ext-language_tools.js | 3112 +- vendor/assets/javascripts/ace/ext-linking.js | 33 +- vendor/assets/javascripts/ace/ext-modelist.js | 379 +- vendor/assets/javascripts/ace/ext-old_ie.js | 502 - vendor/assets/javascripts/ace/ext-options.js | 764 + vendor/assets/javascripts/ace/ext-prompt.js | 3059 ++ vendor/assets/javascripts/ace/ext-rtl.js | 120 + .../assets/javascripts/ace/ext-searchbox.js | 510 +- .../javascripts/ace/ext-settings_menu.js | 1261 +- .../javascripts/ace/ext-simple_tokenizer.js | 45 + .../assets/javascripts/ace/ext-spellcheck.js | 24 +- vendor/assets/javascripts/ace/ext-split.js | 158 +- .../javascripts/ace/ext-static_highlight.js | 183 +- .../assets/javascripts/ace/ext-statusbar.js | 59 +- vendor/assets/javascripts/ace/ext-textarea.js | 422 +- .../assets/javascripts/ace/ext-themelist.js | 95 +- .../assets/javascripts/ace/ext-whitespace.js | 150 +- .../javascripts/ace/keybinding-emacs.js | 1061 +- .../javascripts/ace/keybinding-sublime.js | 409 + .../assets/javascripts/ace/keybinding-vim.js | 10348 ++++--- .../javascripts/ace/keybinding-vscode.js | 255 + vendor/assets/javascripts/ace/mode-abap.js | 174 +- vendor/assets/javascripts/ace/mode-abc.js | 306 +- .../javascripts/ace/mode-actionscript.js | 269 +- vendor/assets/javascripts/ace/mode-ada.js | 143 +- vendor/assets/javascripts/ace/mode-alda.js | 279 + .../javascripts/ace/mode-apache_conf.js | 446 +- vendor/assets/javascripts/ace/mode-apex.js | 402 + .../javascripts/ace/mode-applescript.js | 165 +- vendor/assets/javascripts/ace/mode-aql.js | 92 + .../assets/javascripts/ace/mode-asciidoc.js | 287 +- vendor/assets/javascripts/ace/mode-asl.js | 357 + .../javascripts/ace/mode-assembly_x86.js | 190 +- vendor/assets/javascripts/ace/mode-astro.js | 2414 ++ .../assets/javascripts/ace/mode-autohotkey.js | 203 +- .../assets/javascripts/ace/mode-batchfile.js | 188 +- vendor/assets/javascripts/ace/mode-bibtex.js | 318 + vendor/assets/javascripts/ace/mode-bro.js | 327 - .../assets/javascripts/ace/mode-c9search.js | 199 +- vendor/assets/javascripts/ace/mode-c_cpp.js | 452 +- vendor/assets/javascripts/ace/mode-cirru.js | 221 +- vendor/assets/javascripts/ace/mode-clojure.js | 257 +- vendor/assets/javascripts/ace/mode-cobol.js | 124 +- vendor/assets/javascripts/ace/mode-coffee.js | 481 +- .../assets/javascripts/ace/mode-coldfusion.js | 2464 +- vendor/assets/javascripts/ace/mode-crystal.js | 586 + vendor/assets/javascripts/ace/mode-csharp.js | 354 +- .../javascripts/ace/mode-csound_document.js | 3203 +- .../javascripts/ace/mode-csound_orchestra.js | 1765 +- .../javascripts/ace/mode-csound_score.js | 459 +- vendor/assets/javascripts/ace/mode-csp.js | 59 + vendor/assets/javascripts/ace/mode-css.js | 718 +- vendor/assets/javascripts/ace/mode-curly.js | 2440 +- .../assets/javascripts/ace/mode-cuttlefish.js | 56 + vendor/assets/javascripts/ace/mode-d.js | 413 +- vendor/assets/javascripts/ace/mode-dart.js | 775 +- vendor/assets/javascripts/ace/mode-diff.js | 72 +- vendor/assets/javascripts/ace/mode-django.js | 2463 +- .../assets/javascripts/ace/mode-dockerfile.js | 511 +- vendor/assets/javascripts/ace/mode-dot.js | 348 +- vendor/assets/javascripts/ace/mode-drools.js | 746 +- vendor/assets/javascripts/ace/mode-edifact.js | 130 + vendor/assets/javascripts/ace/mode-eiffel.js | 118 +- vendor/assets/javascripts/ace/mode-ejs.js | 3474 ++- vendor/assets/javascripts/ace/mode-elixir.js | 765 +- vendor/assets/javascripts/ace/mode-elm.js | 313 +- vendor/assets/javascripts/ace/mode-erlang.js | 1598 +- vendor/assets/javascripts/ace/mode-flix.js | 164 + vendor/assets/javascripts/ace/mode-forth.js | 309 +- vendor/assets/javascripts/ace/mode-fortran.js | 432 +- vendor/assets/javascripts/ace/mode-fsharp.js | 277 + vendor/assets/javascripts/ace/mode-fsl.js | 226 + vendor/assets/javascripts/ace/mode-ftl.js | 1580 +- vendor/assets/javascripts/ace/mode-gcode.js | 132 +- vendor/assets/javascripts/ace/mode-gherkin.js | 231 +- .../assets/javascripts/ace/mode-gitignore.js | 43 +- vendor/assets/javascripts/ace/mode-glsl.js | 497 +- .../assets/javascripts/ace/mode-gobstones.js | 1139 +- vendor/assets/javascripts/ace/mode-golang.js | 415 +- .../javascripts/ace/mode-graphqlschema.js | 146 +- vendor/assets/javascripts/ace/mode-groovy.js | 1063 +- vendor/assets/javascripts/ace/mode-haml.js | 2136 +- .../assets/javascripts/ace/mode-handlebars.js | 2525 +- vendor/assets/javascripts/ace/mode-haskell.js | 464 +- .../javascripts/ace/mode-haskell_cabal.js | 177 +- vendor/assets/javascripts/ace/mode-haxe.js | 304 +- vendor/assets/javascripts/ace/mode-hjson.js | 402 +- vendor/assets/javascripts/ace/mode-html.js | 2407 +- .../javascripts/ace/mode-html_elixir.js | 3266 +- .../assets/javascripts/ace/mode-html_ruby.js | 3528 ++- vendor/assets/javascripts/ace/mode-ini.js | 151 +- vendor/assets/javascripts/ace/mode-io.js | 224 +- vendor/assets/javascripts/ace/mode-ion.js | 477 + vendor/assets/javascripts/ace/mode-jack.js | 280 +- vendor/assets/javascripts/ace/mode-jade.js | 2929 +- vendor/assets/javascripts/ace/mode-java.js | 1269 +- .../assets/javascripts/ace/mode-javascript.js | 810 +- vendor/assets/javascripts/ace/mode-jexl.js | 270 + vendor/assets/javascripts/ace/mode-json.js | 248 +- vendor/assets/javascripts/ace/mode-json5.js | 308 + vendor/assets/javascripts/ace/mode-jsoniq.js | 191 +- vendor/assets/javascripts/ace/mode-jsp.js | 1951 +- vendor/assets/javascripts/ace/mode-jssm.js | 357 +- vendor/assets/javascripts/ace/mode-jsx.js | 951 +- vendor/assets/javascripts/ace/mode-julia.js | 314 +- vendor/assets/javascripts/ace/mode-kotlin.js | 921 +- vendor/assets/javascripts/ace/mode-latex.js | 241 +- vendor/assets/javascripts/ace/mode-latte.js | 2462 ++ vendor/assets/javascripts/ace/mode-lean.js | 281 - vendor/assets/javascripts/ace/mode-less.js | 820 +- vendor/assets/javascripts/ace/mode-liquid.js | 3137 +- vendor/assets/javascripts/ace/mode-lisp.js | 147 +- .../javascripts/ace/mode-live_script.js | 481 - .../assets/javascripts/ace/mode-livescript.js | 449 +- vendor/assets/javascripts/ace/mode-logiql.js | 248 +- vendor/assets/javascripts/ace/mode-logtalk.js | 309 + vendor/assets/javascripts/ace/mode-lsl.js | 264 +- vendor/assets/javascripts/ace/mode-lua.js | 395 +- vendor/assets/javascripts/ace/mode-luapage.js | 2819 +- vendor/assets/javascripts/ace/mode-lucene.js | 151 +- .../assets/javascripts/ace/mode-makefile.js | 542 +- .../assets/javascripts/ace/mode-markdown.js | 3910 +-- vendor/assets/javascripts/ace/mode-mask.js | 2042 +- vendor/assets/javascripts/ace/mode-matlab.js | 427 +- .../javascripts/ace/mode-mavens_mate_log.js | 160 - vendor/assets/javascripts/ace/mode-maze.js | 300 +- .../assets/javascripts/ace/mode-mediawiki.js | 580 + vendor/assets/javascripts/ace/mode-mel.js | 239 +- vendor/assets/javascripts/ace/mode-mips.js | 231 + .../javascripts/ace/mode-mips_assembler.js | 235 - .../javascripts/ace/mode-mipsassembler.js | 196 - vendor/assets/javascripts/ace/mode-mixal.js | 110 + .../assets/javascripts/ace/mode-mushcode.js | 1122 +- vendor/assets/javascripts/ace/mode-mysql.js | 196 +- vendor/assets/javascripts/ace/mode-nasal.js | 513 + vendor/assets/javascripts/ace/mode-nginx.js | 262 + vendor/assets/javascripts/ace/mode-nim.js | 325 + vendor/assets/javascripts/ace/mode-nix.js | 680 +- vendor/assets/javascripts/ace/mode-nsis.js | 320 +- .../assets/javascripts/ace/mode-nunjucks.js | 2458 ++ .../assets/javascripts/ace/mode-objectivec.js | 937 +- vendor/assets/javascripts/ace/mode-ocaml.js | 206 +- vendor/assets/javascripts/ace/mode-odin.js | 449 + vendor/assets/javascripts/ace/mode-partiql.js | 750 + vendor/assets/javascripts/ace/mode-pascal.js | 230 +- vendor/assets/javascripts/ace/mode-perl.js | 317 +- vendor/assets/javascripts/ace/mode-pgsql.js | 1662 +- vendor/assets/javascripts/ace/mode-php.js | 6372 ++-- .../javascripts/ace/mode-php_laravel_blade.js | 14078 +++++++++ vendor/assets/javascripts/ace/mode-pig.js | 307 +- .../assets/javascripts/ace/mode-plain_text.js | 24 +- vendor/assets/javascripts/ace/mode-plsql.js | 268 + .../assets/javascripts/ace/mode-powershell.js | 532 +- vendor/assets/javascripts/ace/mode-praat.js | 410 +- vendor/assets/javascripts/ace/mode-prisma.js | 457 + vendor/assets/javascripts/ace/mode-prolog.js | 435 +- .../assets/javascripts/ace/mode-properties.js | 72 +- .../assets/javascripts/ace/mode-protobuf.js | 583 +- vendor/assets/javascripts/ace/mode-prql.js | 323 + vendor/assets/javascripts/ace/mode-puppet.js | 316 + vendor/assets/javascripts/ace/mode-python.js | 539 +- vendor/assets/javascripts/ace/mode-qml.js | 346 + vendor/assets/javascripts/ace/mode-r.js | 520 +- vendor/assets/javascripts/ace/mode-raku.js | 516 + vendor/assets/javascripts/ace/mode-razor.js | 2730 +- vendor/assets/javascripts/ace/mode-rdoc.js | 394 +- vendor/assets/javascripts/ace/mode-red.js | 497 +- .../assets/javascripts/ace/mode-redshift.js | 321 + vendor/assets/javascripts/ace/mode-rhtml.js | 2923 +- vendor/assets/javascripts/ace/mode-robot.js | 168 + vendor/assets/javascripts/ace/mode-rst.js | 456 +- vendor/assets/javascripts/ace/mode-ruby.js | 1064 +- vendor/assets/javascripts/ace/mode-rust.js | 429 +- vendor/assets/javascripts/ace/mode-sac.js | 349 + vendor/assets/javascripts/ace/mode-sass.js | 563 +- vendor/assets/javascripts/ace/mode-scad.js | 327 +- vendor/assets/javascripts/ace/mode-scala.js | 1055 +- vendor/assets/javascripts/ace/mode-scheme.js | 239 +- vendor/assets/javascripts/ace/mode-scrypt.js | 317 + vendor/assets/javascripts/ace/mode-scss.js | 813 +- vendor/assets/javascripts/ace/mode-sh.js | 486 +- vendor/assets/javascripts/ace/mode-sjs.js | 897 +- vendor/assets/javascripts/ace/mode-slim.js | 4710 +++ vendor/assets/javascripts/ace/mode-smarty.js | 2568 +- vendor/assets/javascripts/ace/mode-smithy.js | 456 + .../assets/javascripts/ace/mode-snippets.js | 196 +- .../javascripts/ace/mode-soy_template.js | 2958 +- vendor/assets/javascripts/ace/mode-space.js | 119 +- vendor/assets/javascripts/ace/mode-sparql.js | 339 +- vendor/assets/javascripts/ace/mode-sql.js | 266 +- .../assets/javascripts/ace/mode-sqlserver.js | 342 +- vendor/assets/javascripts/ace/mode-stylus.js | 660 +- vendor/assets/javascripts/ace/mode-svg.js | 1466 +- vendor/assets/javascripts/ace/mode-swift.js | 263 +- vendor/assets/javascripts/ace/mode-swig.js | 1099 - vendor/assets/javascripts/ace/mode-tcl.js | 360 +- .../assets/javascripts/ace/mode-terraform.js | 346 + vendor/assets/javascripts/ace/mode-tex.js | 254 +- vendor/assets/javascripts/ace/mode-text.js | 8 + vendor/assets/javascripts/ace/mode-textile.js | 125 +- vendor/assets/javascripts/ace/mode-toml.js | 159 +- vendor/assets/javascripts/ace/mode-tsx.js | 905 +- vendor/assets/javascripts/ace/mode-turtle.js | 293 +- vendor/assets/javascripts/ace/mode-twig.js | 2608 +- .../assets/javascripts/ace/mode-typescript.js | 890 +- vendor/assets/javascripts/ace/mode-vala.js | 897 +- .../assets/javascripts/ace/mode-vbscript.js | 715 +- .../assets/javascripts/ace/mode-velocity.js | 2664 +- vendor/assets/javascripts/ace/mode-verilog.js | 146 +- vendor/assets/javascripts/ace/mode-vhdl.js | 146 +- .../javascripts/ace/mode-visualforce.js | 2394 ++ vendor/assets/javascripts/ace/mode-wollok.js | 958 +- vendor/assets/javascripts/ace/mode-xml.js | 595 +- vendor/assets/javascripts/ace/mode-xquery.js | 191 +- vendor/assets/javascripts/ace/mode-yaml.js | 377 +- vendor/assets/javascripts/ace/mode-zeek.js | 502 + vendor/assets/javascripts/ace/mode-zig.js | 585 + .../assets/javascripts/ace/snippets/abap.js | 14 +- vendor/assets/javascripts/ace/snippets/abc.js | 50 +- .../javascripts/ace/snippets/actionscript.js | 176 +- vendor/assets/javascripts/ace/snippets/ada.js | 14 +- .../assets/javascripts/ace/snippets/alda.js | 9 + .../javascripts/ace/snippets/apache_conf.js | 14 +- .../assets/javascripts/ace/snippets/apex.js | 9 + .../javascripts/ace/snippets/applescript.js | 14 +- vendor/assets/javascripts/ace/snippets/aql.js | 9 + .../javascripts/ace/snippets/asciidoc.js | 14 +- vendor/assets/javascripts/ace/snippets/asl.js | 9 + .../javascripts/ace/snippets/assembly_x86.js | 14 +- .../assets/javascripts/ace/snippets/astro.js | 9 + .../javascripts/ace/snippets/autohotkey.js | 14 +- .../javascripts/ace/snippets/batchfile.js | 14 +- .../assets/javascripts/ace/snippets/bibtex.js | 9 + vendor/assets/javascripts/ace/snippets/bro.js | 7 - .../javascripts/ace/snippets/c9search.js | 14 +- .../assets/javascripts/ace/snippets/c_cpp.js | 150 +- .../assets/javascripts/ace/snippets/cirru.js | 14 +- .../javascripts/ace/snippets/clojure.js | 109 +- .../assets/javascripts/ace/snippets/cobol.js | 14 +- .../assets/javascripts/ace/snippets/coffee.js | 114 +- .../javascripts/ace/snippets/coldfusion.js | 14 +- .../javascripts/ace/snippets/crystal.js | 9 + .../assets/javascripts/ace/snippets/csharp.js | 14 +- .../ace/snippets/csound_document.js | 29 +- .../ace/snippets/csound_orchestra.js | 66 +- .../javascripts/ace/snippets/csound_score.js | 14 +- vendor/assets/javascripts/ace/snippets/csp.js | 9 + vendor/assets/javascripts/ace/snippets/css.js | 986 +- .../assets/javascripts/ace/snippets/curly.js | 14 +- .../javascripts/ace/snippets/cuttlefish.js | 9 + vendor/assets/javascripts/ace/snippets/d.js | 14 +- .../assets/javascripts/ace/snippets/dart.js | 102 +- .../assets/javascripts/ace/snippets/diff.js | 30 +- .../assets/javascripts/ace/snippets/django.js | 127 +- .../javascripts/ace/snippets/dockerfile.js | 14 +- vendor/assets/javascripts/ace/snippets/dot.js | 14 +- .../assets/javascripts/ace/snippets/drools.js | 38 +- .../javascripts/ace/snippets/edifact.js | 16 + .../assets/javascripts/ace/snippets/eiffel.js | 14 +- vendor/assets/javascripts/ace/snippets/ejs.js | 14 +- .../assets/javascripts/ace/snippets/elixir.js | 14 +- vendor/assets/javascripts/ace/snippets/elm.js | 14 +- .../assets/javascripts/ace/snippets/erlang.js | 179 +- .../assets/javascripts/ace/snippets/flix.js | 9 + .../assets/javascripts/ace/snippets/forth.js | 14 +- .../javascripts/ace/snippets/fortran.js | 14 +- .../assets/javascripts/ace/snippets/fsharp.js | 9 + vendor/assets/javascripts/ace/snippets/fsl.js | 16 + vendor/assets/javascripts/ace/snippets/ftl.js | 14 +- .../assets/javascripts/ace/snippets/gcode.js | 14 +- .../javascripts/ace/snippets/gherkin.js | 14 +- .../javascripts/ace/snippets/gitignore.js | 14 +- .../assets/javascripts/ace/snippets/glsl.js | 14 +- .../javascripts/ace/snippets/gobstones.js | 53 +- .../assets/javascripts/ace/snippets/golang.js | 14 +- .../javascripts/ace/snippets/graphqlschema.js | 51 +- .../assets/javascripts/ace/snippets/groovy.js | 14 +- .../assets/javascripts/ace/snippets/haml.js | 39 +- .../javascripts/ace/snippets/handlebars.js | 14 +- .../javascripts/ace/snippets/haskell.js | 101 +- .../javascripts/ace/snippets/haskell_cabal.js | 14 +- .../assets/javascripts/ace/snippets/haxe.js | 14 +- .../assets/javascripts/ace/snippets/hjson.js | 14 +- .../assets/javascripts/ace/snippets/html.js | 874 +- .../javascripts/ace/snippets/html_elixir.js | 14 +- .../javascripts/ace/snippets/html_ruby.js | 14 +- vendor/assets/javascripts/ace/snippets/ini.js | 14 +- vendor/assets/javascripts/ace/snippets/io.js | 13 +- vendor/assets/javascripts/ace/snippets/ion.js | 9 + .../assets/javascripts/ace/snippets/jack.js | 14 +- .../assets/javascripts/ace/snippets/jade.js | 14 +- .../assets/javascripts/ace/snippets/java.js | 259 +- .../javascripts/ace/snippets/javascript.js | 214 +- .../assets/javascripts/ace/snippets/jexl.js | 9 + .../assets/javascripts/ace/snippets/json.js | 14 +- .../assets/javascripts/ace/snippets/json5.js | 9 + .../assets/javascripts/ace/snippets/jsoniq.js | 94 +- vendor/assets/javascripts/ace/snippets/jsp.js | 118 +- .../assets/javascripts/ace/snippets/jssm.js | 14 +- vendor/assets/javascripts/ace/snippets/jsx.js | 14 +- .../assets/javascripts/ace/snippets/julia.js | 14 +- .../assets/javascripts/ace/snippets/kotlin.js | 14 +- .../assets/javascripts/ace/snippets/latex.js | 14 +- .../assets/javascripts/ace/snippets/latte.js | 9 + .../assets/javascripts/ace/snippets/lean.js | 7 - .../assets/javascripts/ace/snippets/less.js | 14 +- .../assets/javascripts/ace/snippets/liquid.js | 19 +- .../assets/javascripts/ace/snippets/lisp.js | 14 +- .../javascripts/ace/snippets/live_script.js | 7 - .../javascripts/ace/snippets/livescript.js | 14 +- .../assets/javascripts/ace/snippets/logiql.js | 14 +- .../javascripts/ace/snippets/logtalk.js | 9 + vendor/assets/javascripts/ace/snippets/lsl.js | 1251 +- vendor/assets/javascripts/ace/snippets/lua.js | 40 +- .../javascripts/ace/snippets/luapage.js | 14 +- .../assets/javascripts/ace/snippets/lucene.js | 14 +- .../javascripts/ace/snippets/makefile.js | 23 +- .../javascripts/ace/snippets/markdown.js | 107 +- .../assets/javascripts/ace/snippets/mask.js | 14 +- .../assets/javascripts/ace/snippets/matlab.js | 14 +- .../assets/javascripts/ace/snippets/maze.js | 28 +- .../javascripts/ace/snippets/mediawiki.js | 9 + vendor/assets/javascripts/ace/snippets/mel.js | 14 +- .../assets/javascripts/ace/snippets/mips.js | 9 + .../ace/snippets/mips_assembler.js | 7 - .../javascripts/ace/snippets/mipsassembler.js | 7 - .../assets/javascripts/ace/snippets/mixal.js | 9 + .../javascripts/ace/snippets/mushcode.js | 14 +- .../assets/javascripts/ace/snippets/mysql.js | 14 +- .../assets/javascripts/ace/snippets/nasal.js | 9 + .../assets/javascripts/ace/snippets/nginx.js | 9 + vendor/assets/javascripts/ace/snippets/nim.js | 9 + vendor/assets/javascripts/ace/snippets/nix.js | 14 +- .../assets/javascripts/ace/snippets/nsis.js | 14 +- .../javascripts/ace/snippets/nunjucks.js | 9 + .../javascripts/ace/snippets/objectivec.js | 14 +- .../assets/javascripts/ace/snippets/ocaml.js | 14 +- .../assets/javascripts/ace/snippets/odin.js | 9 + .../javascripts/ace/snippets/partiql.js | 9 + .../assets/javascripts/ace/snippets/pascal.js | 14 +- .../assets/javascripts/ace/snippets/perl.js | 366 +- .../assets/javascripts/ace/snippets/pgsql.js | 14 +- vendor/assets/javascripts/ace/snippets/php.js | 396 +- .../ace/snippets/php_laravel_blade.js | 9 + vendor/assets/javascripts/ace/snippets/pig.js | 14 +- .../javascripts/ace/snippets/plain_text.js | 14 +- .../assets/javascripts/ace/snippets/plsql.js | 9 + .../javascripts/ace/snippets/powershell.js | 14 +- .../assets/javascripts/ace/snippets/praat.js | 14 +- .../assets/javascripts/ace/snippets/prisma.js | 9 + .../assets/javascripts/ace/snippets/prolog.js | 14 +- .../javascripts/ace/snippets/properties.js | 14 +- .../javascripts/ace/snippets/protobuf.js | 14 +- .../assets/javascripts/ace/snippets/prql.js | 9 + .../assets/javascripts/ace/snippets/puppet.js | 9 + .../assets/javascripts/ace/snippets/python.js | 177 +- vendor/assets/javascripts/ace/snippets/qml.js | 9 + vendor/assets/javascripts/ace/snippets/r.js | 140 +- .../assets/javascripts/ace/snippets/raku.js | 9 + .../assets/javascripts/ace/snippets/razor.js | 22 +- .../assets/javascripts/ace/snippets/rdoc.js | 14 +- vendor/assets/javascripts/ace/snippets/red.js | 14 +- .../javascripts/ace/snippets/redshift.js | 9 + .../assets/javascripts/ace/snippets/rhtml.js | 14 +- .../assets/javascripts/ace/snippets/robot.js | 16 + vendor/assets/javascripts/ace/snippets/rst.js | 41 +- .../assets/javascripts/ace/snippets/ruby.js | 947 +- .../assets/javascripts/ace/snippets/rust.js | 14 +- vendor/assets/javascripts/ace/snippets/sac.js | 9 + .../assets/javascripts/ace/snippets/sass.js | 14 +- .../assets/javascripts/ace/snippets/scad.js | 14 +- .../assets/javascripts/ace/snippets/scala.js | 14 +- .../assets/javascripts/ace/snippets/scheme.js | 14 +- .../assets/javascripts/ace/snippets/scrypt.js | 9 + .../assets/javascripts/ace/snippets/scss.js | 14 +- vendor/assets/javascripts/ace/snippets/sh.js | 102 +- vendor/assets/javascripts/ace/snippets/sjs.js | 14 +- .../assets/javascripts/ace/snippets/slim.js | 9 + .../assets/javascripts/ace/snippets/smarty.js | 14 +- .../assets/javascripts/ace/snippets/smithy.js | 9 + .../javascripts/ace/snippets/snippets.js | 28 +- .../javascripts/ace/snippets/soy_template.js | 14 +- .../assets/javascripts/ace/snippets/space.js | 14 +- .../assets/javascripts/ace/snippets/sparql.js | 14 +- vendor/assets/javascripts/ace/snippets/sql.js | 45 +- .../javascripts/ace/snippets/sqlserver.js | 88 +- .../assets/javascripts/ace/snippets/stylus.js | 14 +- vendor/assets/javascripts/ace/snippets/svg.js | 14 +- .../assets/javascripts/ace/snippets/swift.js | 14 +- .../assets/javascripts/ace/snippets/swig.js | 7 - vendor/assets/javascripts/ace/snippets/tcl.js | 111 +- .../javascripts/ace/snippets/terraform.js | 9 + vendor/assets/javascripts/ace/snippets/tex.js | 209 +- .../assets/javascripts/ace/snippets/text.js | 14 +- .../javascripts/ace/snippets/textile.js | 49 +- .../assets/javascripts/ace/snippets/toml.js | 14 +- vendor/assets/javascripts/ace/snippets/tsx.js | 14 +- .../assets/javascripts/ace/snippets/turtle.js | 14 +- .../assets/javascripts/ace/snippets/twig.js | 14 +- .../javascripts/ace/snippets/typescript.js | 14 +- .../assets/javascripts/ace/snippets/vala.js | 12 +- .../javascripts/ace/snippets/vbscript.js | 14 +- .../javascripts/ace/snippets/velocity.js | 45 +- .../javascripts/ace/snippets/verilog.js | 14 +- .../assets/javascripts/ace/snippets/vhdl.js | 14 +- .../javascripts/ace/snippets/visualforce.js | 9 + .../assets/javascripts/ace/snippets/wollok.js | 103 +- vendor/assets/javascripts/ace/snippets/xml.js | 14 +- .../assets/javascripts/ace/snippets/xquery.js | 94 +- .../assets/javascripts/ace/snippets/yaml.js | 14 +- .../assets/javascripts/ace/snippets/zeek.js | 9 + vendor/assets/javascripts/ace/snippets/zig.js | 9 + .../assets/javascripts/ace/theme-ambiance.js | 196 +- vendor/assets/javascripts/ace/theme-chaos.js | 170 +- vendor/assets/javascripts/ace/theme-chrome.js | 142 +- .../javascripts/ace/theme-cloud9_day.js | 19 + .../javascripts/ace/theme-cloud9_night.js | 18 + .../ace/theme-cloud9_night_low_color.js | 18 + .../javascripts/ace/theme-cloud_editor.js | 18 + .../ace/theme-cloud_editor_dark.js | 18 + vendor/assets/javascripts/ace/theme-clouds.js | 109 +- .../javascripts/ace/theme-clouds_midnight.js | 110 +- vendor/assets/javascripts/ace/theme-cobalt.js | 127 +- .../javascripts/ace/theme-crimson_editor.js | 132 +- vendor/assets/javascripts/ace/theme-dawn.js | 122 +- .../assets/javascripts/ace/theme-dracula.js | 136 +- .../javascripts/ace/theme-dreamweaver.js | 155 +- .../assets/javascripts/ace/theme-eclipse.js | 113 +- vendor/assets/javascripts/ace/theme-github.js | 117 +- .../javascripts/ace/theme-github_dark.js | 18 + vendor/assets/javascripts/ace/theme-gob.js | 126 +- .../assets/javascripts/ace/theme-gruvbox.js | 96 +- .../ace/theme-gruvbox_dark_hard.js | 18 + .../ace/theme-gruvbox_light_hard.js | 18 + .../javascripts/ace/theme-idle_fingers.js | 110 +- .../assets/javascripts/ace/theme-iplastic.js | 135 +- .../javascripts/ace/theme-katzenmilch.js | 135 +- .../assets/javascripts/ace/theme-kr_theme.js | 118 +- vendor/assets/javascripts/ace/theme-kuroir.js | 75 +- .../assets/javascripts/ace/theme-merbivore.js | 109 +- .../javascripts/ace/theme-merbivore_soft.js | 110 +- .../javascripts/ace/theme-mono_industrial.js | 121 +- .../assets/javascripts/ace/theme-monokai.js | 119 +- .../assets/javascripts/ace/theme-nord_dark.js | 19 + .../assets/javascripts/ace/theme-one_dark.js | 18 + .../javascripts/ace/theme-pastel_on_dark.js | 122 +- .../javascripts/ace/theme-solarized_dark.js | 102 +- .../javascripts/ace/theme-solarized_light.js | 105 +- .../assets/javascripts/ace/theme-sqlserver.js | 152 +- .../assets/javascripts/ace/theme-terminal.js | 128 +- .../assets/javascripts/ace/theme-textmate.js | 139 +- .../assets/javascripts/ace/theme-tomorrow.js | 122 +- .../javascripts/ace/theme-tomorrow_night.js | 122 +- .../ace/theme-tomorrow_night_blue.js | 120 +- .../ace/theme-tomorrow_night_bright.js | 135 +- .../ace/theme-tomorrow_night_eighties.js | 122 +- .../assets/javascripts/ace/theme-twilight.js | 123 +- .../javascripts/ace/theme-vibrant_ink.js | 108 +- vendor/assets/javascripts/ace/theme-xcode.js | 102 +- vendor/assets/javascripts/ace/worker-base.js | 1332 + .../assets/javascripts/ace/worker-coffee.js | 1976 +- vendor/assets/javascripts/ace/worker-css.js | 8208 ++--- vendor/assets/javascripts/ace/worker-html.js | 1998 +- .../javascripts/ace/worker-javascript.js | 25550 +++++++++------- vendor/assets/javascripts/ace/worker-json.js | 1972 +- vendor/assets/javascripts/ace/worker-lua.js | 3235 +- vendor/assets/javascripts/ace/worker-php.js | 6530 ++-- vendor/assets/javascripts/ace/worker-xml.js | 2123 +- .../assets/javascripts/ace/worker-xquery.js | 1970 +- vendor/assets/javascripts/ace/worker-yaml.js | 5841 ++++ 481 files changed, 171566 insertions(+), 125260 deletions(-) delete mode 100644 vendor/assets/javascripts/ace/ext-chromevox.js create mode 100644 vendor/assets/javascripts/ace/ext-code_lens.js create mode 100644 vendor/assets/javascripts/ace/ext-command_bar.js create mode 100644 vendor/assets/javascripts/ace/ext-hardwrap.js create mode 100644 vendor/assets/javascripts/ace/ext-inline_autocomplete.js delete mode 100644 vendor/assets/javascripts/ace/ext-old_ie.js create mode 100644 vendor/assets/javascripts/ace/ext-options.js create mode 100644 vendor/assets/javascripts/ace/ext-prompt.js create mode 100644 vendor/assets/javascripts/ace/ext-rtl.js create mode 100644 vendor/assets/javascripts/ace/ext-simple_tokenizer.js create mode 100644 vendor/assets/javascripts/ace/keybinding-sublime.js create mode 100644 vendor/assets/javascripts/ace/keybinding-vscode.js create mode 100644 vendor/assets/javascripts/ace/mode-alda.js create mode 100644 vendor/assets/javascripts/ace/mode-apex.js create mode 100644 vendor/assets/javascripts/ace/mode-aql.js create mode 100644 vendor/assets/javascripts/ace/mode-asl.js create mode 100644 vendor/assets/javascripts/ace/mode-astro.js create mode 100644 vendor/assets/javascripts/ace/mode-bibtex.js delete mode 100644 vendor/assets/javascripts/ace/mode-bro.js create mode 100644 vendor/assets/javascripts/ace/mode-crystal.js create mode 100644 vendor/assets/javascripts/ace/mode-csp.js create mode 100644 vendor/assets/javascripts/ace/mode-cuttlefish.js create mode 100644 vendor/assets/javascripts/ace/mode-edifact.js create mode 100644 vendor/assets/javascripts/ace/mode-flix.js create mode 100644 vendor/assets/javascripts/ace/mode-fsharp.js create mode 100644 vendor/assets/javascripts/ace/mode-fsl.js create mode 100644 vendor/assets/javascripts/ace/mode-ion.js create mode 100644 vendor/assets/javascripts/ace/mode-jexl.js create mode 100644 vendor/assets/javascripts/ace/mode-json5.js create mode 100644 vendor/assets/javascripts/ace/mode-latte.js delete mode 100644 vendor/assets/javascripts/ace/mode-lean.js delete mode 100644 vendor/assets/javascripts/ace/mode-live_script.js create mode 100644 vendor/assets/javascripts/ace/mode-logtalk.js delete mode 100644 vendor/assets/javascripts/ace/mode-mavens_mate_log.js create mode 100644 vendor/assets/javascripts/ace/mode-mediawiki.js create mode 100644 vendor/assets/javascripts/ace/mode-mips.js delete mode 100644 vendor/assets/javascripts/ace/mode-mips_assembler.js delete mode 100644 vendor/assets/javascripts/ace/mode-mipsassembler.js create mode 100644 vendor/assets/javascripts/ace/mode-mixal.js create mode 100644 vendor/assets/javascripts/ace/mode-nasal.js create mode 100644 vendor/assets/javascripts/ace/mode-nginx.js create mode 100644 vendor/assets/javascripts/ace/mode-nim.js create mode 100644 vendor/assets/javascripts/ace/mode-nunjucks.js create mode 100644 vendor/assets/javascripts/ace/mode-odin.js create mode 100644 vendor/assets/javascripts/ace/mode-partiql.js create mode 100644 vendor/assets/javascripts/ace/mode-php_laravel_blade.js create mode 100644 vendor/assets/javascripts/ace/mode-plsql.js create mode 100644 vendor/assets/javascripts/ace/mode-prisma.js create mode 100644 vendor/assets/javascripts/ace/mode-prql.js create mode 100644 vendor/assets/javascripts/ace/mode-puppet.js create mode 100644 vendor/assets/javascripts/ace/mode-qml.js create mode 100644 vendor/assets/javascripts/ace/mode-raku.js create mode 100644 vendor/assets/javascripts/ace/mode-redshift.js create mode 100644 vendor/assets/javascripts/ace/mode-robot.js create mode 100644 vendor/assets/javascripts/ace/mode-sac.js create mode 100644 vendor/assets/javascripts/ace/mode-scrypt.js create mode 100644 vendor/assets/javascripts/ace/mode-slim.js create mode 100644 vendor/assets/javascripts/ace/mode-smithy.js delete mode 100644 vendor/assets/javascripts/ace/mode-swig.js create mode 100644 vendor/assets/javascripts/ace/mode-terraform.js create mode 100644 vendor/assets/javascripts/ace/mode-visualforce.js create mode 100644 vendor/assets/javascripts/ace/mode-zeek.js create mode 100644 vendor/assets/javascripts/ace/mode-zig.js create mode 100644 vendor/assets/javascripts/ace/snippets/alda.js create mode 100644 vendor/assets/javascripts/ace/snippets/apex.js create mode 100644 vendor/assets/javascripts/ace/snippets/aql.js create mode 100644 vendor/assets/javascripts/ace/snippets/asl.js create mode 100644 vendor/assets/javascripts/ace/snippets/astro.js create mode 100644 vendor/assets/javascripts/ace/snippets/bibtex.js delete mode 100644 vendor/assets/javascripts/ace/snippets/bro.js create mode 100644 vendor/assets/javascripts/ace/snippets/crystal.js create mode 100644 vendor/assets/javascripts/ace/snippets/csp.js create mode 100644 vendor/assets/javascripts/ace/snippets/cuttlefish.js create mode 100644 vendor/assets/javascripts/ace/snippets/edifact.js create mode 100644 vendor/assets/javascripts/ace/snippets/flix.js create mode 100644 vendor/assets/javascripts/ace/snippets/fsharp.js create mode 100644 vendor/assets/javascripts/ace/snippets/fsl.js create mode 100644 vendor/assets/javascripts/ace/snippets/ion.js create mode 100644 vendor/assets/javascripts/ace/snippets/jexl.js create mode 100644 vendor/assets/javascripts/ace/snippets/json5.js create mode 100644 vendor/assets/javascripts/ace/snippets/latte.js delete mode 100644 vendor/assets/javascripts/ace/snippets/lean.js delete mode 100644 vendor/assets/javascripts/ace/snippets/live_script.js create mode 100644 vendor/assets/javascripts/ace/snippets/logtalk.js create mode 100644 vendor/assets/javascripts/ace/snippets/mediawiki.js create mode 100644 vendor/assets/javascripts/ace/snippets/mips.js delete mode 100644 vendor/assets/javascripts/ace/snippets/mips_assembler.js delete mode 100644 vendor/assets/javascripts/ace/snippets/mipsassembler.js create mode 100644 vendor/assets/javascripts/ace/snippets/mixal.js create mode 100644 vendor/assets/javascripts/ace/snippets/nasal.js create mode 100644 vendor/assets/javascripts/ace/snippets/nginx.js create mode 100644 vendor/assets/javascripts/ace/snippets/nim.js create mode 100644 vendor/assets/javascripts/ace/snippets/nunjucks.js create mode 100644 vendor/assets/javascripts/ace/snippets/odin.js create mode 100644 vendor/assets/javascripts/ace/snippets/partiql.js create mode 100644 vendor/assets/javascripts/ace/snippets/php_laravel_blade.js create mode 100644 vendor/assets/javascripts/ace/snippets/plsql.js create mode 100644 vendor/assets/javascripts/ace/snippets/prisma.js create mode 100644 vendor/assets/javascripts/ace/snippets/prql.js create mode 100644 vendor/assets/javascripts/ace/snippets/puppet.js create mode 100644 vendor/assets/javascripts/ace/snippets/qml.js create mode 100644 vendor/assets/javascripts/ace/snippets/raku.js create mode 100644 vendor/assets/javascripts/ace/snippets/redshift.js create mode 100644 vendor/assets/javascripts/ace/snippets/robot.js create mode 100644 vendor/assets/javascripts/ace/snippets/sac.js create mode 100644 vendor/assets/javascripts/ace/snippets/scrypt.js create mode 100644 vendor/assets/javascripts/ace/snippets/slim.js create mode 100644 vendor/assets/javascripts/ace/snippets/smithy.js delete mode 100644 vendor/assets/javascripts/ace/snippets/swig.js create mode 100644 vendor/assets/javascripts/ace/snippets/terraform.js create mode 100644 vendor/assets/javascripts/ace/snippets/visualforce.js create mode 100644 vendor/assets/javascripts/ace/snippets/zeek.js create mode 100644 vendor/assets/javascripts/ace/snippets/zig.js create mode 100644 vendor/assets/javascripts/ace/theme-cloud9_day.js create mode 100644 vendor/assets/javascripts/ace/theme-cloud9_night.js create mode 100644 vendor/assets/javascripts/ace/theme-cloud9_night_low_color.js create mode 100644 vendor/assets/javascripts/ace/theme-cloud_editor.js create mode 100644 vendor/assets/javascripts/ace/theme-cloud_editor_dark.js create mode 100644 vendor/assets/javascripts/ace/theme-github_dark.js create mode 100644 vendor/assets/javascripts/ace/theme-gruvbox_dark_hard.js create mode 100644 vendor/assets/javascripts/ace/theme-gruvbox_light_hard.js create mode 100644 vendor/assets/javascripts/ace/theme-nord_dark.js create mode 100644 vendor/assets/javascripts/ace/theme-one_dark.js create mode 100644 vendor/assets/javascripts/ace/worker-base.js create mode 100644 vendor/assets/javascripts/ace/worker-yaml.js diff --git a/vendor/assets/javascripts/ace/ace.js b/vendor/assets/javascripts/ace/ace.js index c7a88bc1..b901f7a4 100644 --- a/vendor/assets/javascripts/ace/ace.js +++ b/vendor/assets/javascripts/ace/ace.js @@ -173,811 +173,440 @@ exportAce(ACE_NAMESPACE); })(); -define("ace/lib/regexp",["require","exports","module"], function(require, exports, module) { -"use strict"; - - var real = { - exec: RegExp.prototype.exec, - test: RegExp.prototype.test, - match: String.prototype.match, - replace: String.prototype.replace, - split: String.prototype.split - }, - compliantExecNpcg = real.exec.call(/()??/, "")[1] === undefined, // check `exec` handling of nonparticipating capturing groups - compliantLastIndexIncrement = function () { - var x = /^/g; - real.test.call(x, ""); - return !x.lastIndex; - }(); - - if (compliantLastIndexIncrement && compliantExecNpcg) - return; - RegExp.prototype.exec = function (str) { - var match = real.exec.apply(this, arguments), - name, r2; - if ( typeof(str) == 'string' && match) { - if (!compliantExecNpcg && match.length > 1 && indexOf(match, "") > -1) { - r2 = RegExp(this.source, real.replace.call(getNativeFlags(this), "g", "")); - real.replace.call(str.slice(match.index), r2, function () { - for (var i = 1; i < arguments.length - 2; i++) { - if (arguments[i] === undefined) - match[i] = undefined; - } +define("ace/lib/es6-shim",["require","exports","module"], function(require, exports, module){function defineProp(obj, name, val) { + Object.defineProperty(obj, name, { + value: val, + enumerable: false, + writable: true, + configurable: true + }); +} +if (!String.prototype.startsWith) { + defineProp(String.prototype, "startsWith", function (searchString, position) { + position = position || 0; + return this.lastIndexOf(searchString, position) === position; + }); +} +if (!String.prototype.endsWith) { + defineProp(String.prototype, "endsWith", function (searchString, position) { + var subjectString = this; + if (position === undefined || position > subjectString.length) { + position = subjectString.length; + } + position -= searchString.length; + var lastIndex = subjectString.indexOf(searchString, position); + return lastIndex !== -1 && lastIndex === position; + }); +} +if (!String.prototype.repeat) { + defineProp(String.prototype, "repeat", function (count) { + var result = ""; + var string = this; + while (count > 0) { + if (count & 1) + result += string; + if ((count >>= 1)) + string += string; + } + return result; + }); +} +if (!String.prototype.includes) { + defineProp(String.prototype, "includes", function (str, position) { + return this.indexOf(str, position) != -1; + }); +} +if (!Object.assign) { + Object.assign = function (target) { + if (target === undefined || target === null) { + throw new TypeError("Cannot convert undefined or null to object"); + } + var output = Object(target); + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + if (source !== undefined && source !== null) { + Object.keys(source).forEach(function (key) { + output[key] = source[key]; }); } - if (this._xregexp && this._xregexp.captureNames) { - for (var i = 1; i < match.length; i++) { - name = this._xregexp.captureNames[i - 1]; - if (name) - match[name] = match[i]; - } - } - if (!compliantLastIndexIncrement && this.global && !match[0].length && (this.lastIndex > match.index)) - this.lastIndex--; } - return match; + return output; }; - if (!compliantLastIndexIncrement) { - RegExp.prototype.test = function (str) { - var match = real.exec.call(this, str); - if (match && this.global && !match[0].length && (this.lastIndex > match.index)) - this.lastIndex--; - return !!match; - }; - } - - function getNativeFlags (regex) { - return (regex.global ? "g" : "") + - (regex.ignoreCase ? "i" : "") + - (regex.multiline ? "m" : "") + - (regex.extended ? "x" : "") + // Proposed for ES4; included in AS3 - (regex.sticky ? "y" : ""); - } - - function indexOf (array, item, from) { - if (Array.prototype.indexOf) // Use the native array method if available - return array.indexOf(item, from); - for (var i = from || 0; i < array.length; i++) { - if (array[i] === item) - return i; +} +if (!Object.values) { + Object.values = function (o) { + return Object.keys(o).map(function (k) { + return o[k]; + }); + }; +} +if (!Array.prototype.find) { + defineProp(Array.prototype, "find", function (predicate) { + var len = this.length; + var thisArg = arguments[1]; + for (var k = 0; k < len; k++) { + var kValue = this[k]; + if (predicate.call(thisArg, kValue, k, this)) { + return kValue; + } } - return -1; - } + }); +} +if (!Array.prototype.findIndex) { + defineProp(Array.prototype, "findIndex", function (predicate) { + var len = this.length; + var thisArg = arguments[1]; + for (var k = 0; k < len; k++) { + var kValue = this[k]; + if (predicate.call(thisArg, kValue, k, this)) { + return k; + } + } + }); +} +if (!Array.prototype.includes) { + defineProp(Array.prototype, "includes", function (item, position) { + return this.indexOf(item, position) != -1; + }); +} +if (!Array.prototype.fill) { + defineProp(Array.prototype, "fill", function (value) { + var O = this; + var len = O.length >>> 0; + var start = arguments[1]; + var relativeStart = start >> 0; + var k = relativeStart < 0 + ? Math.max(len + relativeStart, 0) + : Math.min(relativeStart, len); + var end = arguments[2]; + var relativeEnd = end === undefined ? len : end >> 0; + var final = relativeEnd < 0 + ? Math.max(len + relativeEnd, 0) + : Math.min(relativeEnd, len); + while (k < final) { + O[k] = value; + k++; + } + return O; + }); +} +if (!Array.of) { + defineProp(Array, "of", function () { + return Array.prototype.slice.call(arguments); + }); +} }); -define("ace/lib/es5-shim",["require","exports","module"], function(require, exports, module) { +define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/es6-shim"], function(require, exports, module){// vim:set ts=4 sts=4 sw=4 st: +"use strict"; +require("./es6-shim"); -function Empty() {} +}); -if (!Function.prototype.bind) { - Function.prototype.bind = function bind(that) { // .length is 1 - var target = this; - if (typeof target != "function") { - throw new TypeError("Function.prototype.bind called on incompatible " + target); +define("ace/lib/deep_copy",["require","exports","module"], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); } - var args = slice.call(arguments, 1); // for normal call - var bound = function () { - - if (this instanceof bound) { - - var result = target.apply( - this, - args.concat(slice.call(arguments)) - ); - if (Object(result) === result) { - return result; - } - return this; - - } else { - return target.apply( - that, - args.concat(slice.call(arguments)) - ); - - } - - }; - if(target.prototype) { - Empty.prototype = target.prototype; - bound.prototype = new Empty(); - Empty.prototype = null; - } - return bound; - }; -} -var call = Function.prototype.call; -var prototypeOfArray = Array.prototype; -var prototypeOfObject = Object.prototype; -var slice = prototypeOfArray.slice; -var _toString = call.bind(prototypeOfObject.toString); -var owns = call.bind(prototypeOfObject.hasOwnProperty); -var defineGetter; -var defineSetter; -var lookupGetter; -var lookupSetter; -var supportsAccessors; -if ((supportsAccessors = owns(prototypeOfObject, "__defineGetter__"))) { - defineGetter = call.bind(prototypeOfObject.__defineGetter__); - defineSetter = call.bind(prototypeOfObject.__defineSetter__); - lookupGetter = call.bind(prototypeOfObject.__lookupGetter__); - lookupSetter = call.bind(prototypeOfObject.__lookupSetter__); -} -if ([1,2].splice(0).length != 2) { - if(function() { // test IE < 9 to splice bug - see issue #138 - function makeArray(l) { - var a = new Array(l+2); - a[0] = a[1] = 0; - return a; - } - var array = [], lengthBefore; - - array.splice.apply(array, makeArray(20)); - array.splice.apply(array, makeArray(26)); - - lengthBefore = array.length; //46 - array.splice(5, 0, "XXX"); // add one element - - lengthBefore + 1 == array.length - - if (lengthBefore + 1 == array.length) { - return true;// has right splice implementation without bugs - } - }()) {//IE 6/7 - var array_splice = Array.prototype.splice; - Array.prototype.splice = function(start, deleteCount) { - if (!arguments.length) { - return []; - } else { - return array_splice.apply(this, [ - start === void 0 ? 0 : start, - deleteCount === void 0 ? (this.length - start) : deleteCount - ].concat(slice.call(arguments, 2))) - } - }; - } else {//IE8 - Array.prototype.splice = function(pos, removeCount){ - var length = this.length; - if (pos > 0) { - if (pos > length) - pos = length; - } else if (pos == void 0) { - pos = 0; - } else if (pos < 0) { - pos = Math.max(length + pos, 0); - } - - if (!(pos+removeCount < length)) - removeCount = length - pos; - - var removed = this.slice(pos, pos+removeCount); - var insert = slice.call(arguments, 2); - var add = insert.length; - if (pos === length) { - if (add) { - this.push.apply(this, insert); - } - } else { - var remove = Math.min(removeCount, length - pos); - var tailOldPos = pos + remove; - var tailNewPos = tailOldPos + add - remove; - var tailCount = length - tailOldPos; - var lengthAfterRemove = length - remove; - - if (tailNewPos < tailOldPos) { // case A - for (var i = 0; i < tailCount; ++i) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } else if (tailNewPos > tailOldPos) { // case B - for (i = tailCount; i--; ) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } // else, add == remove (nothing to do) - - if (add && pos === lengthAfterRemove) { - this.length = lengthAfterRemove; // truncate array - this.push.apply(this, insert); - } else { - this.length = lengthAfterRemove + add; // reserves space - for (i = 0; i < add; ++i) { - this[pos+i] = insert[i]; - } - } - } - return removed; - }; + return copy; } -} -if (!Array.isArray) { - Array.isArray = function isArray(obj) { - return _toString(obj) == "[object Array]"; - }; -} -var boxedString = Object("a"), - splitString = boxedString[0] != "a" || !(0 in boxedString); - -if (!Array.prototype.forEach) { - Array.prototype.forEach = function forEach(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - thisp = arguments[1], - i = -1, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(); // TODO message - } - - while (++i < length) { - if (i in self) { - fun.call(thisp, self[i], i, object); - } - } - }; -} -if (!Array.prototype.map) { - Array.prototype.map = function map(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = Array(length), - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) - result[i] = fun.call(thisp, self[i], i, object); - } - return result; - }; -} -if (!Array.prototype.filter) { - Array.prototype.filter = function filter(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = [], - value, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) { - value = self[i]; - if (fun.call(thisp, value, i, object)) { - result.push(value); - } - } - } - return result; - }; -} -if (!Array.prototype.every) { - Array.prototype.every = function every(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && !fun.call(thisp, self[i], i, object)) { - return false; - } - } - return true; - }; -} -if (!Array.prototype.some) { - Array.prototype.some = function some(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && fun.call(thisp, self[i], i, object)) { - return true; - } - } - return false; - }; -} -if (!Array.prototype.reduce) { - Array.prototype.reduce = function reduce(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduce of empty array with no initial value"); - } - - var i = 0; - var result; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i++]; - break; - } - if (++i >= length) { - throw new TypeError("reduce of empty array with no initial value"); - } - } while (true); - } - - for (; i < length; i++) { - if (i in self) { - result = fun.call(void 0, result, self[i], i, object); - } - } - - return result; - }; -} -if (!Array.prototype.reduceRight) { - Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - - var result, i = length - 1; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i--]; - break; - } - if (--i < 0) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - } while (true); - } - - do { - if (i in this) { - result = fun.call(void 0, result, self[i], i, object); - } - } while (i--); - - return result; - }; -} -if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) { - Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - - var i = 0; - if (arguments.length > 1) { - i = toInteger(arguments[1]); - } - i = i >= 0 ? i : Math.max(0, length + i); - for (; i < length; i++) { - if (i in self && self[i] === sought) { - return i; - } - } - return -1; - }; -} -if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) { - Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - var i = length - 1; - if (arguments.length > 1) { - i = Math.min(i, toInteger(arguments[1])); - } - i = i >= 0 ? i : length - Math.abs(i); - for (; i >= 0; i--) { - if (i in self && sought === self[i]) { - return i; - } - } - return -1; - }; -} -if (!Object.getPrototypeOf) { - Object.getPrototypeOf = function getPrototypeOf(object) { - return object.__proto__ || ( - object.constructor ? - object.constructor.prototype : - prototypeOfObject - ); - }; -} -if (!Object.getOwnPropertyDescriptor) { - var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " + - "non-object: "; - Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT + object); - if (!owns(object, property)) - return; - - var descriptor, getter, setter; - descriptor = { enumerable: true, configurable: true }; - if (supportsAccessors) { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - - var getter = lookupGetter(object, property); - var setter = lookupSetter(object, property); - object.__proto__ = prototype; - - if (getter || setter) { - if (getter) descriptor.get = getter; - if (setter) descriptor.set = setter; - return descriptor; - } - } - descriptor.value = object[property]; - return descriptor; - }; -} -if (!Object.getOwnPropertyNames) { - Object.getOwnPropertyNames = function getOwnPropertyNames(object) { - return Object.keys(object); - }; -} -if (!Object.create) { - var createEmpty; - if (Object.prototype.__proto__ === null) { - createEmpty = function () { - return { "__proto__": null }; - }; - } else { - createEmpty = function () { - var empty = {}; - for (var i in empty) - empty[i] = null; - empty.constructor = - empty.hasOwnProperty = - empty.propertyIsEnumerable = - empty.isPrototypeOf = - empty.toLocaleString = - empty.toString = - empty.valueOf = - empty.__proto__ = null; - return empty; - } - } - - Object.create = function create(prototype, properties) { - var object; - if (prototype === null) { - object = createEmpty(); - } else { - if (typeof prototype != "object") - throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'"); - var Type = function () {}; - Type.prototype = prototype; - object = new Type(); - object.__proto__ = prototype; - } - if (properties !== void 0) - Object.defineProperties(object, properties); - return object; - }; -} - -function doesDefinePropertyWork(object) { - try { - Object.defineProperty(object, "sentinel", {}); - return "sentinel" in object; - } catch (exception) { - } -} -if (Object.defineProperty) { - var definePropertyWorksOnObject = doesDefinePropertyWork({}); - var definePropertyWorksOnDom = typeof document == "undefined" || - doesDefinePropertyWork(document.createElement("div")); - if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) { - var definePropertyFallback = Object.defineProperty; - } -} - -if (!Object.defineProperty || definePropertyFallback) { - var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: "; - var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: " - var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " + - "on this javascript engine"; - - Object.defineProperty = function defineProperty(object, property, descriptor) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT_TARGET + object); - if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null) - throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor); - if (definePropertyFallback) { - try { - return definePropertyFallback.call(Object, object, property, descriptor); - } catch (exception) { - } - } - if (owns(descriptor, "value")) { - - if (supportsAccessors && (lookupGetter(object, property) || - lookupSetter(object, property))) - { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - delete object[property]; - object[property] = descriptor.value; - object.__proto__ = prototype; - } else { - object[property] = descriptor.value; - } - } else { - if (!supportsAccessors) - throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED); - if (owns(descriptor, "get")) - defineGetter(object, property, descriptor.get); - if (owns(descriptor, "set")) - defineSetter(object, property, descriptor.set); - } - - return object; - }; -} -if (!Object.defineProperties) { - Object.defineProperties = function defineProperties(object, properties) { - for (var property in properties) { - if (owns(properties, property)) - Object.defineProperty(object, property, properties[property]); - } - return object; - }; -} -if (!Object.seal) { - Object.seal = function seal(object) { - return object; - }; -} -if (!Object.freeze) { - Object.freeze = function freeze(object) { - return object; - }; -} -try { - Object.freeze(function () {}); -} catch (exception) { - Object.freeze = (function freeze(freezeObject) { - return function freeze(object) { - if (typeof object == "function") { - return object; - } else { - return freezeObject(object); - } - }; - })(Object.freeze); -} -if (!Object.preventExtensions) { - Object.preventExtensions = function preventExtensions(object) { - return object; - }; -} -if (!Object.isSealed) { - Object.isSealed = function isSealed(object) { - return false; - }; -} -if (!Object.isFrozen) { - Object.isFrozen = function isFrozen(object) { - return false; - }; -} -if (!Object.isExtensible) { - Object.isExtensible = function isExtensible(object) { - if (Object(object) === object) { - throw new TypeError(); // TODO message - } - var name = ''; - while (owns(object, name)) { - name += '?'; - } - object[name] = true; - var returnValue = owns(object, name); - delete object[name]; - return returnValue; - }; -} -if (!Object.keys) { - var hasDontEnumBug = true, - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - dontEnumsLength = dontEnums.length; - - for (var key in {"toString": null}) { - hasDontEnumBug = false; - } - - Object.keys = function keys(object) { - - if ( - (typeof object != "object" && typeof object != "function") || - object === null - ) { - throw new TypeError("Object.keys called on a non-object"); - } - - var keys = []; - for (var name in object) { - if (owns(object, name)) { - keys.push(name); - } - } - - if (hasDontEnumBug) { - for (var i = 0, ii = dontEnumsLength; i < ii; i++) { - var dontEnum = dontEnums[i]; - if (owns(object, dontEnum)) { - keys.push(dontEnum); - } - } - } - return keys; - }; - -} -if (!Date.now) { - Date.now = function now() { - return new Date().getTime(); - }; -} -var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" + - "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" + - "\u2029\uFEFF"; -if (!String.prototype.trim || ws.trim()) { - ws = "[" + ws + "]"; - var trimBeginRegexp = new RegExp("^" + ws + ws + "*"), - trimEndRegexp = new RegExp(ws + ws + "*$"); - String.prototype.trim = function trim() { - return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, ""); - }; -} - -function toInteger(n) { - n = +n; - if (n !== n) { // isNaN - n = 0; - } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - return n; -} - -function isPrimitive(input) { - var type = typeof input; - return ( - input === null || - type === "undefined" || - type === "boolean" || - type === "number" || - type === "string" - ); -} - -function toPrimitive(input) { - var val, valueOf, toString; - if (isPrimitive(input)) { - return input; - } - valueOf = input.valueOf; - if (typeof valueOf === "function") { - val = valueOf.call(input); - if (isPrimitive(val)) { - return val; - } - } - toString = input.toString; - if (typeof toString === "function") { - val = toString.call(input); - if (isPrimitive(val)) { - return val; - } - } - throw new TypeError(); -} -var toObject = function (o) { - if (o == null) { // this matches both null and undefined - throw new TypeError("can't convert "+o+" to object"); - } - return Object(o); + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; }; }); -define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"], function(require, exports, module) { -"use strict"; - -require("./regexp"); -require("./es5-shim"); +define("ace/lib/lang",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = require("./deep_copy").deepCopy; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/ 0xffff ? 2 : 1; +}; }); -define("ace/lib/dom",["require","exports","module"], function(require, exports, module) { -"use strict"; +define("ace/lib/useragent",["require","exports","module"], function(require, exports, module){"use strict"; +exports.OS = { + LINUX: "LINUX", + MAC: "MAC", + WINDOWS: "WINDOWS" +}; +exports.getOS = function () { + if (exports.isMac) { + return exports.OS.MAC; + } + else if (exports.isLinux) { + return exports.OS.LINUX; + } + else { + return exports.OS.WINDOWS; + } +}; +var _navigator = typeof navigator == "object" ? navigator : {}; +var os = (/mac|win|linux/i.exec(_navigator.platform) || ["other"])[0].toLowerCase(); +var ua = _navigator.userAgent || ""; +var appName = _navigator.appName || ""; +exports.isWin = (os == "win"); +exports.isMac = (os == "mac"); +exports.isLinux = (os == "linux"); +exports.isIE = + (appName == "Microsoft Internet Explorer" || appName.indexOf("MSAppHost") >= 0) + ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]) + : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/) || [])[1]); // for ie +exports.isOldIE = exports.isIE && exports.isIE < 9; +exports.isGecko = exports.isMozilla = ua.match(/ Gecko\/\d+/); +exports.isOpera = typeof opera == "object" && Object.prototype.toString.call(window["opera"]) == "[object Opera]"; +exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; +exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; +exports.isSafari = parseFloat(ua.split(" Safari/")[1]) && !exports.isChrome || undefined; +exports.isEdge = parseFloat(ua.split(" Edge/")[1]) || undefined; +exports.isAIR = ua.indexOf("AdobeAIR") >= 0; +exports.isAndroid = ua.indexOf("Android") >= 0; +exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; +exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window["MSStream"]; +if (exports.isIOS) + exports.isMac = true; +exports.isMobile = exports.isIOS || exports.isAndroid; +}); + +define("ace/lib/dom",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; +var useragent = require("./useragent"); var XHTML_NS = "http://www.w3.org/1999/xhtml"; - -exports.getDocumentHead = function(doc) { +exports.buildDom = function buildDom(arr, parent, refs) { + if (typeof arr == "string" && arr) { + var txt = document.createTextNode(arr); + if (parent) + parent.appendChild(txt); + return txt; + } + if (!Array.isArray(arr)) { + if (arr && arr.appendChild && parent) + parent.appendChild(arr); + return arr; + } + if (typeof arr[0] != "string" || !arr[0]) { + var els = []; + for (var i = 0; i < arr.length; i++) { + var ch = buildDom(arr[i], parent, refs); + ch && els.push(ch); + } + return els; + } + var el = document.createElement(arr[0]); + var options = arr[1]; + var childIndex = 1; + if (options && typeof options == "object" && !Array.isArray(options)) + childIndex = 2; + for (var i = childIndex; i < arr.length; i++) + buildDom(arr[i], el, refs); + if (childIndex == 2) { + Object.keys(options).forEach(function (n) { + var val = options[n]; + if (n === "class") { + el.className = Array.isArray(val) ? val.join(" ") : val; + } + else if (typeof val == "function" || n == "value" || n[0] == "$") { + el[n] = val; + } + else if (n === "ref") { + if (refs) + refs[val] = el; + } + else if (n === "style") { + if (typeof val == "string") + el.style.cssText = val; + } + else if (val != null) { + el.setAttribute(n, val); + } + }); + } + if (parent) + parent.appendChild(el); + return el; +}; +exports.getDocumentHead = function (doc) { if (!doc) doc = document; return doc.head || doc.getElementsByTagName("head")[0] || doc.documentElement; }; - -exports.createElement = function(tag, ns) { +exports.createElement = function (tag, ns) { return document.createElementNS ? - document.createElementNS(ns || XHTML_NS, tag) : - document.createElement(tag); + document.createElementNS(ns || XHTML_NS, tag) : + document.createElement(tag); }; - -exports.hasCssClass = function(el, name) { +exports.removeChildren = function (element) { + element.innerHTML = ""; +}; +exports.createTextNode = function (textContent, element) { + var doc = element ? element.ownerDocument : document; + return doc.createTextNode(textContent); +}; +exports.createFragment = function (element) { + var doc = element ? element.ownerDocument : document; + return doc.createDocumentFragment(); +}; +exports.hasCssClass = function (el, name) { var classes = (el.className + "").split(/\s+/g); return classes.indexOf(name) !== -1; }; -exports.addCssClass = function(el, name) { +exports.addCssClass = function (el, name) { if (!exports.hasCssClass(el, name)) { el.className += " " + name; } }; -exports.removeCssClass = function(el, name) { +exports.removeCssClass = function (el, name) { var classes = el.className.split(/\s+/g); while (true) { var index = classes.indexOf(name); @@ -988,8 +617,7 @@ exports.removeCssClass = function(el, name) { } el.className = classes.join(" "); }; - -exports.toggleCssClass = function(el, name) { +exports.toggleCssClass = function (el, name) { var classes = el.className.split(/\s+/g), add = true; while (true) { var index = classes.indexOf(name); @@ -1001,96 +629,97 @@ exports.toggleCssClass = function(el, name) { } if (add) classes.push(name); - el.className = classes.join(" "); return add; }; -exports.setCssClass = function(node, className, include) { +exports.setCssClass = function (node, className, include) { if (include) { exports.addCssClass(node, className); - } else { + } + else { exports.removeCssClass(node, className); } }; - -exports.hasCssString = function(id, doc) { +exports.hasCssString = function (id, doc) { var index = 0, sheets; doc = doc || document; - - if (doc.createStyleSheet && (sheets = doc.styleSheets)) { - while (index < sheets.length) - if (sheets[index++].owningElement.id === id) return true; - } else if ((sheets = doc.getElementsByTagName("style"))) { - while (index < sheets.length) - if (sheets[index++].id === id) return true; + if ((sheets = doc.querySelectorAll("style"))) { + while (index < sheets.length) { + if (sheets[index++].id === id) { + return true; + } + } } - - return false; }; - -exports.importCssString = function importCssString(cssText, id, doc) { +exports.removeElementById = function (id, doc) { doc = doc || document; - if (id && exports.hasCssString(id, doc)) + if (doc.getElementById(id)) { + doc.getElementById(id).remove(); + } +}; +var strictCSP; +var cssCache = []; +exports.useStrictCSP = function (value) { + strictCSP = value; + if (value == false) + insertPendingStyles(); + else if (!cssCache) + cssCache = []; +}; +function insertPendingStyles() { + var cache = cssCache; + cssCache = null; + cache && cache.forEach(function (item) { + importCssString(item[0], item[1]); + }); +} +function importCssString(cssText, id, target) { + if (typeof document == "undefined") + return; + if (cssCache) { + if (target) { + insertPendingStyles(); + } + else if (target === false) { + return cssCache.push([cssText, id]); + } + } + if (strictCSP) + return; + var container = target; + if (!target || !target.getRootNode) { + container = document; + } + else { + container = target.getRootNode(); + if (!container || container == target) + container = document; + } + var doc = container.ownerDocument || container; + if (id && exports.hasCssString(id, container)) return null; - - var style; - if (id) cssText += "\n/*# sourceURL=ace/css/" + id + " */"; - - if (doc.createStyleSheet) { - style = doc.createStyleSheet(); - style.cssText = cssText; - if (id) - style.owningElement.id = id; - } else { - style = exports.createElement("style"); - style.appendChild(doc.createTextNode(cssText)); - if (id) - style.id = id; - - exports.getDocumentHead(doc).appendChild(style); - } + var style = exports.createElement("style"); + style.appendChild(doc.createTextNode(cssText)); + if (id) + style.id = id; + if (container == doc) + container = exports.getDocumentHead(doc); + container.insertBefore(style, container.firstChild); +} +exports.importCssString = importCssString; +exports.importCssStylsheet = function (uri, doc) { + exports.buildDom(["link", { rel: "stylesheet", href: uri }], exports.getDocumentHead(doc)); }; - -exports.importCssStylsheet = function(uri, doc) { - if (doc.createStyleSheet) { - doc.createStyleSheet(uri); - } else { - var link = exports.createElement('link'); - link.rel = 'stylesheet'; - link.href = uri; - - exports.getDocumentHead(doc).appendChild(link); - } -}; - -exports.getInnerWidth = function(element) { - return ( - parseInt(exports.computedStyle(element, "paddingLeft"), 10) + - parseInt(exports.computedStyle(element, "paddingRight"), 10) + - element.clientWidth - ); -}; - -exports.getInnerHeight = function(element) { - return ( - parseInt(exports.computedStyle(element, "paddingTop"), 10) + - parseInt(exports.computedStyle(element, "paddingBottom"), 10) + - element.clientHeight - ); -}; - -exports.scrollbarWidth = function(document) { +exports.scrollbarWidth = function (doc) { var inner = exports.createElement("ace_inner"); inner.style.width = "100%"; inner.style.minWidth = "0px"; inner.style.height = "200px"; inner.style.display = "block"; - var outer = exports.createElement("ace_outer"); var style = outer.style; - style.position = "absolute"; style.left = "-10000px"; style.overflow = "hidden"; @@ -1098,98 +727,99 @@ exports.scrollbarWidth = function(document) { style.minWidth = "0px"; style.height = "150px"; style.display = "block"; - outer.appendChild(inner); - - var body = document.documentElement; + var body = (doc && doc.documentElement) || (document && document.documentElement); + if (!body) + return 0; body.appendChild(outer); - var noScrollbar = inner.offsetWidth; - style.overflow = "scroll"; var withScrollbar = inner.offsetWidth; - - if (noScrollbar == withScrollbar) { + if (noScrollbar === withScrollbar) { withScrollbar = outer.clientWidth; } - body.removeChild(outer); - - return noScrollbar-withScrollbar; + return noScrollbar - withScrollbar; }; - -if (typeof document == "undefined") { - exports.importCssString = function() {}; - return; +exports.computedStyle = function (element, style) { + return window.getComputedStyle(element, "") || {}; +}; +exports.setStyle = function (styles, property, value) { + if (styles[property] !== value) { + styles[property] = value; + } +}; +exports.HAS_CSS_ANIMATION = false; +exports.HAS_CSS_TRANSFORMS = false; +exports.HI_DPI = useragent.isWin + ? typeof window !== "undefined" && window.devicePixelRatio >= 1.5 + : true; +if (useragent.isChromeOS) + exports.HI_DPI = false; +if (typeof document !== "undefined") { + var div = document.createElement("div"); + if (exports.HI_DPI && div.style.transform !== undefined) + exports.HAS_CSS_TRANSFORMS = true; + if (!useragent.isEdge && typeof div.style.animationName !== "undefined") + exports.HAS_CSS_ANIMATION = true; + div = null; } - -if (window.pageYOffset !== undefined) { - exports.getPageScrollTop = function() { - return window.pageYOffset; - }; - - exports.getPageScrollLeft = function() { - return window.pageXOffset; +if (exports.HAS_CSS_TRANSFORMS) { + exports.translate = function (element, tx, ty) { + element.style.transform = "translate(" + Math.round(tx) + "px, " + Math.round(ty) + "px)"; }; } else { - exports.getPageScrollTop = function() { - return document.body.scrollTop; - }; - - exports.getPageScrollLeft = function() { - return document.body.scrollLeft; + exports.translate = function (element, tx, ty) { + element.style.top = Math.round(ty) + "px"; + element.style.left = Math.round(tx) + "px"; }; } -if (window.getComputedStyle) - exports.computedStyle = function(element, style) { - if (style) - return (window.getComputedStyle(element, "") || {})[style] || ""; - return window.getComputedStyle(element, "") || {}; +}); + +define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module){/* + * based on code from: + * + * @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. + * Available via the MIT or new BSD license. + * see: http://github.com/jrburke/requirejs for details + */ +"use strict"; +var dom = require("./dom"); +exports.get = function (url, callback) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + callback(xhr.responseText); + } }; -else - exports.computedStyle = function(element, style) { - if (style) - return element.currentStyle[style]; - return element.currentStyle; - }; -exports.setInnerHtml = function(el, innerHtml) { - var element = el.cloneNode(false);//document.createElement("div"); - element.innerHTML = innerHtml; - el.parentNode.replaceChild(element, el); - return element; + xhr.send(null); }; - -if ("textContent" in document.documentElement) { - exports.setInnerText = function(el, innerText) { - el.textContent = innerText; +exports.loadScript = function (path, callback) { + var head = dom.getDocumentHead(); + var s = document.createElement('script'); + s.src = path; + head.appendChild(s); + s.onload = s.onreadystatechange = function (_, isAbort) { + if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") { + s = s.onload = s.onreadystatechange = null; + if (!isAbort) + callback(); + } }; - - exports.getInnerText = function(el) { - return el.textContent; - }; -} -else { - exports.setInnerText = function(el, innerText) { - el.innerText = innerText; - }; - - exports.getInnerText = function(el) { - return el.innerText; - }; -} - -exports.getParentWindow = function(document) { - return document.defaultView || document.parentWindow; +}; +exports.qualifyURL = function (url) { + var a = document.createElement('a'); + a.href = url; + return a.href; }; }); -define("ace/lib/oop",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.inherits = function(ctor, superCtor) { +define("ace/lib/oop",["require","exports","module"], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { ctor.super_ = superCtor; ctor.prototype = Object.create(superCtor.prototype, { constructor: { @@ -1200,59 +830,806 @@ exports.inherits = function(ctor, superCtor) { } }); }; - -exports.mixin = function(obj, mixin) { +exports.mixin = function (obj, mixin) { for (var key in mixin) { obj[key] = mixin[key]; } return obj; }; - -exports.implement = function(proto, mixin) { +exports.implement = function (proto, mixin) { exports.mixin(proto, mixin); }; }); -define("ace/lib/keys",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop"], function(require, exports, module) { +define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +define("ace/lib/report_error",["require","exports","module"], function(require, exports, module){exports.reportError = function reportError(msg, data) { + var e = new Error(msg); + e["data"] = data; + if (typeof console == "object" && console.error) + console.error(e); + setTimeout(function () { throw e; }); +}; + +}); + +define("ace/lib/app_config",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/report_error"], function(require, exports, module){"no use strict"; +var oop = require("./oop"); +var EventEmitter = require("./event_emitter").EventEmitter; +var reportError = require("./report_error").reportError; +var optionsProvider = { + setOptions: function (optList) { + Object.keys(optList).forEach(function (key) { + this.setOption(key, optList[key]); + }, this); + }, + getOptions: function (optionNames) { + var result = {}; + if (!optionNames) { + var options = this.$options; + optionNames = Object.keys(options).filter(function (key) { + return !options[key].hidden; + }); + } + else if (!Array.isArray(optionNames)) { + result = optionNames; + optionNames = Object.keys(result); + } + optionNames.forEach(function (key) { + result[key] = this.getOption(key); + }, this); + return result; + }, + setOption: function (name, value) { + if (this["$" + name] === value) + return; + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value); + if (!opt.handlesSet) + this["$" + name] = value; + if (opt && opt.set) + opt.set.call(this, value); + }, + getOption: function (name) { + var opt = this.$options[name]; + if (!opt) { + return warn('misspelled option "' + name + '"'); + } + if (opt.forwardTo) + return this[opt.forwardTo] && this[opt.forwardTo].getOption(name); + return opt && opt.get ? opt.get.call(this) : this["$" + name]; + } +}; +function warn(message) { + if (typeof console != "undefined" && console.warn) + console.warn.apply(console, arguments); +} +var messages; +var AppConfig = /** @class */ (function () { + function AppConfig() { + this.$defaultOptions = {}; + } + AppConfig.prototype.defineOptions = function (obj, path, options) { + if (!obj.$options) + this.$defaultOptions[path] = obj.$options = {}; + Object.keys(options).forEach(function (key) { + var opt = options[key]; + if (typeof opt == "string") + opt = { forwardTo: opt }; + opt.name || (opt.name = key); + obj.$options[opt.name] = opt; + if ("initialValue" in opt) + obj["$" + opt.name] = opt.initialValue; + }); + oop.implement(obj, optionsProvider); + return this; + }; + AppConfig.prototype.resetOptions = function (obj) { + Object.keys(obj.$options).forEach(function (key) { + var opt = obj.$options[key]; + if ("value" in opt) + obj.setOption(key, opt.value); + }); + }; + AppConfig.prototype.setDefaultValue = function (path, name, value) { + if (!path) { + for (path in this.$defaultOptions) + if (this.$defaultOptions[path][name]) + break; + if (!this.$defaultOptions[path][name]) + return false; + } + var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {}); + if (opts[name]) { + if (opts.forwardTo) + this.setDefaultValue(opts.forwardTo, name, value); + else + opts[name].value = value; + } + }; + AppConfig.prototype.setDefaultValues = function (path, optionHash) { + Object.keys(optionHash).forEach(function (key) { + this.setDefaultValue(path, key, optionHash[key]); + }, this); + }; + AppConfig.prototype.setMessages = function (value) { + messages = value; + }; + AppConfig.prototype.nls = function (string, params) { + if (messages && !messages[string]) { + warn("No message found for '" + string + "' in the provided messages, falling back to default English message."); + } + var translated = messages && messages[string] || string; + if (params) { + translated = translated.replace(/\$(\$|[\d]+)/g, function (_, name) { + if (name == "$") + return "$"; + return params[name]; + }); + } + return translated; + }; + return AppConfig; +}()); +AppConfig.prototype.warn = warn; +AppConfig.prototype.reportError = reportError; +oop.implement(AppConfig.prototype, EventEmitter); +exports.AppConfig = AppConfig; + +}); + +define("ace/theme/textmate-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tm .ace_gutter {\n background: #f0f0f0;\n color: #333;\n}\n\n.ace-tm .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-tm .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-tm {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-tm .ace_cursor {\n color: black;\n}\n \n.ace-tm .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-tm .ace_storage,\n.ace-tm .ace_keyword {\n color: blue;\n}\n\n.ace-tm .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-tm .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-tm .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-tm .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-tm .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-tm .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-tm .ace_support.ace_type,\n.ace-tm .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-tm .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-tm .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-tm .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-tm .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-tm .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-tm .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-tm .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-tm .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-tm .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-tm .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-tm .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-tm .ace_meta.ace_tag {\n color:rgb(0, 22, 142);\n}\n\n.ace-tm .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-tm .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n.ace-tm.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n.ace-tm .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-tm .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-tm .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-tm .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-tm .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-tm .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-tm .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-tm .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; + +}); + +define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"], function(require, exports, module){"use strict"; +exports.isDark = false; +exports.cssClass = "ace-tm"; +exports.cssText = require("./textmate-css"); +exports.$id = "ace/theme/textmate"; +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); + +define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/net","ace/lib/dom","ace/lib/app_config","ace/theme/textmate"], function(require, exports, module){"no use strict"; +var lang = require("./lib/lang"); +var net = require("./lib/net"); +var dom = require("./lib/dom"); +var AppConfig = require("./lib/app_config").AppConfig; +module.exports = exports = new AppConfig(); +var options = { + packaged: false, + workerPath: null, + modePath: null, + themePath: null, + basePath: "", + suffix: ".js", + $moduleUrls: {}, + loadWorkerFromBlob: true, + sharedPopups: false, + useStrictCSP: null +}; +exports.get = function (key) { + if (!options.hasOwnProperty(key)) + throw new Error("Unknown config key: " + key); + return options[key]; +}; +exports.set = function (key, value) { + if (options.hasOwnProperty(key)) + options[key] = value; + else if (this.setDefaultValue("", key, value) == false) + throw new Error("Unknown config key: " + key); + if (key == "useStrictCSP") + dom.useStrictCSP(value); +}; +exports.all = function () { + return lang.copyObject(options); +}; +exports.$modes = {}; +exports.moduleUrl = function (name, component) { + if (options.$moduleUrls[name]) + return options.$moduleUrls[name]; + var parts = name.split("/"); + component = component || parts[parts.length - 2] || ""; + var sep = component == "snippets" ? "/" : "-"; + var base = parts[parts.length - 1]; + if (component == "worker" && sep == "-") { + var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g"); + base = base.replace(re, ""); + } + if ((!base || base == component) && parts.length > 1) + base = parts[parts.length - 2]; + var path = options[component + "Path"]; + if (path == null) { + path = options.basePath; + } + else if (sep == "/") { + component = sep = ""; + } + if (path && path.slice(-1) != "/") + path += "/"; + return path + component + sep + base + this.get("suffix"); +}; +exports.setModuleUrl = function (name, subst) { + return options.$moduleUrls[name] = subst; +}; +var loader = function (moduleName, cb) { + if (moduleName === "ace/theme/textmate" || moduleName === "./theme/textmate") + return cb(null, require("./theme/textmate")); + if (customLoader) + return customLoader(moduleName, cb); + console.error("loader is not configured"); +}; +var customLoader; +exports.setLoader = function (cb) { + customLoader = cb; +}; +exports.dynamicModules = Object.create(null); +exports.$loading = {}; +exports.$loaded = {}; +exports.loadModule = function (moduleId, onLoad) { + var loadedModule; + if (Array.isArray(moduleId)) { + var moduleType = moduleId[0]; + var moduleName = moduleId[1]; + } + else if (typeof moduleId == "string") { + var moduleName = moduleId; + } + var load = function (module) { + if (module && !exports.$loading[moduleName]) + return onLoad && onLoad(module); + if (!exports.$loading[moduleName]) + exports.$loading[moduleName] = []; + exports.$loading[moduleName].push(onLoad); + if (exports.$loading[moduleName].length > 1) + return; + var afterLoad = function () { + loader(moduleName, function (err, module) { + if (module) + exports.$loaded[moduleName] = module; + exports._emit("load.module", { name: moduleName, module: module }); + var listeners = exports.$loading[moduleName]; + exports.$loading[moduleName] = null; + listeners.forEach(function (onLoad) { + onLoad && onLoad(module); + }); + }); + }; + if (!exports.get("packaged")) + return afterLoad(); + net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); + reportErrorIfPathIsNotConfigured(); + }; + if (exports.dynamicModules[moduleName]) { + exports.dynamicModules[moduleName]().then(function (module) { + if (module.default) { + load(module.default); + } + else { + load(module); + } + }); + } + else { + try { + loadedModule = this.$require(moduleName); + } + catch (e) { } + load(loadedModule || exports.$loaded[moduleName]); + } +}; +exports.$require = function (moduleName) { + if (typeof module["require"] == "function") { + var req = "require"; + return module[req](moduleName); + } +}; +exports.setModuleLoader = function (moduleName, onLoad) { + exports.dynamicModules[moduleName] = onLoad; +}; +var reportErrorIfPathIsNotConfigured = function () { + if (!options.basePath && !options.workerPath + && !options.modePath && !options.themePath + && !Object.keys(options.$moduleUrls).length) { + console.error("Unable to infer path to ace from script src,", "use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes", "or with webpack use ace/webpack-resolver"); + reportErrorIfPathIsNotConfigured = function () { }; + } +}; +exports.version = "1.32.6"; + +}); + +define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"], function(require, exports, module) { "use strict"; -require("./fixoldbrowsers"); +require("./lib/fixoldbrowsers"); +var config = require("./config"); +config.setLoader(function(moduleName, cb) { + require([moduleName], function(module) { + cb(null, module); + }); +}); +var global = (function() { + return this || typeof window != "undefined" && window; +})(); + +module.exports = function(ace) { + config.init = init; + config.$require = require; + ace.require = require; + + if (typeof define === "function") + ace.define = define; +}; +init(true);function init(packaged) { + + if (!global || !global.document) + return; + + config.set("packaged", packaged || require.packaged || module.packaged || (global.define && define.packaged)); + + var scriptOptions = {}; + var scriptUrl = ""; + var currentScript = (document.currentScript || document._currentScript ); // native or polyfill + var currentDocument = currentScript && currentScript.ownerDocument || document; + + if (currentScript && currentScript.src) { + scriptUrl = currentScript.src.split(/[?#]/)[0].split("/").slice(0, -1).join("/") || ""; + } + + var scripts = currentDocument.getElementsByTagName("script"); + for (var i=0; i [" + this.end.row + "/" + this.end.column + "]"); + }; + Range.prototype.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + Range.prototype.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + Range.prototype.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + Range.prototype.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + Range.prototype.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + Range.prototype.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + Range.prototype.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + Range.prototype.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + Range.prototype.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + Range.prototype.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + Range.prototype.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + Range.prototype.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + Range.prototype.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + Range.prototype.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + Range.prototype.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + Range.prototype.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; + return Range; +}()); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +define("ace/lib/keys",["require","exports","module","ace/lib/oop"], function(require, exports, module){/*! @license +========================================================================== +SproutCore -- JavaScript Application Framework +copyright 2006-2009, Sprout Systems Inc., Apple Inc. and contributors. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +SproutCore and the SproutCore logo are trademarks of Sprout Systems, Inc. + +For more information about SproutCore, visit http://www.sproutcore.com + + +========================================================================== +@license */ +"use strict"; var oop = require("./oop"); -var Keys = (function() { +var Keys = (function () { var ret = { MODIFIER_KEYS: { - 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta' + 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta', + 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu' }, - KEY_MODS: { - "ctrl": 1, "alt": 2, "option" : 2, "shift": 4, - "super": 8, "meta": 8, "command": 8, "cmd": 8 + "ctrl": 1, "alt": 2, "option": 2, "shift": 4, + "super": 8, "meta": 8, "command": 8, "cmd": 8, + "control": 1 }, - - FUNCTION_KEYS : { - 8 : "Backspace", - 9 : "Tab", - 13 : "Return", - 19 : "Pause", - 27 : "Esc", - 32 : "Space", - 33 : "PageUp", - 34 : "PageDown", - 35 : "End", - 36 : "Home", - 37 : "Left", - 38 : "Up", - 39 : "Right", - 40 : "Down", - 44 : "Print", - 45 : "Insert", - 46 : "Delete", - 96 : "Numpad0", - 97 : "Numpad1", - 98 : "Numpad2", - 99 : "Numpad3", + FUNCTION_KEYS: { + 8: "Backspace", + 9: "Tab", + 13: "Return", + 19: "Pause", + 27: "Esc", + 32: "Space", + 33: "PageUp", + 34: "PageDown", + 35: "End", + 36: "Home", + 37: "Left", + 38: "Up", + 39: "Right", + 40: "Down", + 44: "Print", + 45: "Insert", + 46: "Delete", + 96: "Numpad0", + 97: "Numpad1", + 98: "Numpad2", + 99: "Numpad3", 100: "Numpad4", 101: "Numpad5", 102: "Numpad6", @@ -1275,18 +1652,18 @@ var Keys = (function() { 144: "Numlock", 145: "Scrolllock" }, - PRINTABLE_KEYS: { - 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', - 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', - 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', - 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', - 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', - 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', - 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', - 219: '[', 220: '\\',221: ']', 222: "'", 111: '/', 106: '*' + 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', + 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a', + 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h', + 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o', + 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v', + 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.', + 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`', + 219: '[', 220: '\\', 221: ']', 222: "'", 111: '/', 106: '*' } }; + ret.PRINTABLE_KEYS[173] = '-'; var name, i; for (i in ret.FUNCTION_KEYS) { name = ret.FUNCTION_KEYS[i].toLowerCase(); @@ -1302,25 +1679,21 @@ var Keys = (function() { ret.enter = ret["return"]; ret.escape = ret.esc; ret.del = ret["delete"]; - ret[173] = '-'; - - (function() { + (function () { var mods = ["cmd", "ctrl", "alt", "shift"]; - for (var i = Math.pow(2, mods.length); i--;) { - ret.KEY_MODS[i] = mods.filter(function(x) { + for (var i = Math.pow(2, mods.length); i--;) { + ret.KEY_MODS[i] = mods.filter(function (x) { return i & ret.KEY_MODS[x]; }).join("-") + "-"; } })(); - ret.KEY_MODS[0] = ""; ret.KEY_MODS[-1] = "input-"; - return ret; })(); oop.mixin(exports, Keys); - -exports.keyCodeToString = function(keyCode) { +exports.default = exports; +exports.keyCodeToString = function (keyCode) { var keyString = Keys[keyCode]; if (typeof keyString != "string") keyString = String.fromCharCode(keyCode); @@ -1329,219 +1702,121 @@ exports.keyCodeToString = function(keyCode) { }); -define("ace/lib/useragent",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.OS = { - LINUX: "LINUX", - MAC: "MAC", - WINDOWS: "WINDOWS" -}; -exports.getOS = function() { - if (exports.isMac) { - return exports.OS.MAC; - } else if (exports.isLinux) { - return exports.OS.LINUX; - } else { - return exports.OS.WINDOWS; - } -}; -if (typeof navigator != "object") - return; - -var os = (navigator.platform.match(/mac|win|linux/i) || ["other"])[0].toLowerCase(); -var ua = navigator.userAgent; -exports.isWin = (os == "win"); -exports.isMac = (os == "mac"); -exports.isLinux = (os == "linux"); -exports.isIE = - (navigator.appName == "Microsoft Internet Explorer" || navigator.appName.indexOf("MSAppHost") >= 0) - ? parseFloat((ua.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]) - : parseFloat((ua.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]); // for ie - -exports.isOldIE = exports.isIE && exports.isIE < 9; -exports.isGecko = exports.isMozilla = (window.Controllers || window.controllers) && window.navigator.product === "Gecko"; -exports.isOldGecko = exports.isGecko && parseInt((ua.match(/rv:(\d+)/)||[])[1], 10) < 4; -exports.isOpera = window.opera && Object.prototype.toString.call(window.opera) == "[object Opera]"; -exports.isWebKit = parseFloat(ua.split("WebKit/")[1]) || undefined; - -exports.isChrome = parseFloat(ua.split(" Chrome/")[1]) || undefined; - -exports.isAIR = ua.indexOf("AdobeAIR") >= 0; - -exports.isIPad = ua.indexOf("iPad") >= 0; - -exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; - -exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream; - -if (exports.isIOS) exports.isMac = true; - -}); - -define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var keys = require("./keys"); +define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; var keys = require("./keys"); var useragent = require("./useragent"); - var pressedKeys = null; var ts = 0; - -exports.addListener = function(elem, type, callback) { - if (elem.addEventListener) { - return elem.addEventListener(type, callback, false); - } - if (elem.attachEvent) { - var wrapper = function() { - callback.call(elem, window.event); - }; - callback._wrapper = wrapper; - elem.attachEvent("on" + type, wrapper); +var activeListenerOptions; +function detectListenerOptionsSupport() { + activeListenerOptions = false; + try { + document.createComment("").addEventListener("test", function () { }, { + get passive() { + activeListenerOptions = { passive: false }; + return true; + } + }); } + catch (e) { } +} +function getListenerOptions() { + if (activeListenerOptions == undefined) + detectListenerOptionsSupport(); + return activeListenerOptions; +} +function EventListener(elem, type, callback) { + this.elem = elem; + this.type = type; + this.callback = callback; +} +EventListener.prototype.destroy = function () { + removeListener(this.elem, this.type, this.callback); + this.elem = this.type = this.callback = undefined; }; - -exports.removeListener = function(elem, type, callback) { - if (elem.removeEventListener) { - return elem.removeEventListener(type, callback, false); - } - if (elem.detachEvent) { - elem.detachEvent("on" + type, callback._wrapper || callback); - } +var addListener = exports.addListener = function (elem, type, callback, /**@type{any?}*/ destroyer) { + elem.addEventListener(type, callback, getListenerOptions()); + if (destroyer) + destroyer.$toDestroy.push(new EventListener(elem, type, callback)); }; -exports.stopEvent = function(e) { +var removeListener = exports.removeListener = function (elem, type, callback) { + elem.removeEventListener(type, callback, getListenerOptions()); +}; +exports.stopEvent = function (e) { exports.stopPropagation(e); exports.preventDefault(e); return false; }; - -exports.stopPropagation = function(e) { +exports.stopPropagation = function (e) { if (e.stopPropagation) e.stopPropagation(); - else - e.cancelBubble = true; }; - -exports.preventDefault = function(e) { +exports.preventDefault = function (e) { if (e.preventDefault) e.preventDefault(); - else - e.returnValue = false; }; -exports.getButton = function(e) { +exports.getButton = function (e) { if (e.type == "dblclick") return 0; if (e.type == "contextmenu" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey))) return 2; - if (e.preventDefault) { - return e.button; - } - else { - return {1:0, 2:2, 4:1}[e.button]; - } + return e.button; }; - -exports.capture = function(el, eventHandler, releaseCaptureHandler) { +exports.capture = function (el, eventHandler, releaseCaptureHandler) { + var ownerDocument = el && el.ownerDocument || document; function onMouseUp(e) { eventHandler && eventHandler(e); releaseCaptureHandler && releaseCaptureHandler(e); - - exports.removeListener(document, "mousemove", eventHandler, true); - exports.removeListener(document, "mouseup", onMouseUp, true); - exports.removeListener(document, "dragstart", onMouseUp, true); + removeListener(ownerDocument, "mousemove", eventHandler); + removeListener(ownerDocument, "mouseup", onMouseUp); + removeListener(ownerDocument, "dragstart", onMouseUp); } - - exports.addListener(document, "mousemove", eventHandler, true); - exports.addListener(document, "mouseup", onMouseUp, true); - exports.addListener(document, "dragstart", onMouseUp, true); - + addListener(ownerDocument, "mousemove", eventHandler); + addListener(ownerDocument, "mouseup", onMouseUp); + addListener(ownerDocument, "dragstart", onMouseUp); return onMouseUp; }; - -exports.addTouchMoveListener = function (el, callback) { - var startx, starty; - exports.addListener(el, "touchstart", function (e) { - var touches = e.touches; - var touchObj = touches[0]; - startx = touchObj.clientX; - starty = touchObj.clientY; - }); - exports.addListener(el, "touchmove", function (e) { - var touches = e.touches; - if (touches.length > 1) return; - - var touchObj = touches[0]; - - e.wheelX = startx - touchObj.clientX; - e.wheelY = starty - touchObj.clientY; - - startx = touchObj.clientX; - starty = touchObj.clientY; - +exports.addMouseWheelListener = function (el, callback, destroyer) { + addListener(el, "wheel", function (e) { + var factor = 0.15; + var deltaX = e.deltaX || 0; + var deltaY = e.deltaY || 0; + switch (e.deltaMode) { + case e.DOM_DELTA_PIXEL: + e.wheelX = deltaX * factor; + e.wheelY = deltaY * factor; + break; + case e.DOM_DELTA_LINE: + var linePixels = 15; + e.wheelX = deltaX * linePixels; + e.wheelY = deltaY * linePixels; + break; + case e.DOM_DELTA_PAGE: + var pagePixels = 150; + e.wheelX = deltaX * pagePixels; + e.wheelY = deltaY * pagePixels; + break; + } callback(e); - }); + }, destroyer); }; - -exports.addMouseWheelListener = function(el, callback) { - if ("onmousewheel" in el) { - exports.addListener(el, "mousewheel", function(e) { - var factor = 8; - if (e.wheelDeltaX !== undefined) { - e.wheelX = -e.wheelDeltaX / factor; - e.wheelY = -e.wheelDeltaY / factor; - } else { - e.wheelX = 0; - e.wheelY = -e.wheelDelta / factor; - } - callback(e); - }); - } else if ("onwheel" in el) { - exports.addListener(el, "wheel", function(e) { - var factor = 0.35; - switch (e.deltaMode) { - case e.DOM_DELTA_PIXEL: - e.wheelX = e.deltaX * factor || 0; - e.wheelY = e.deltaY * factor || 0; - break; - case e.DOM_DELTA_LINE: - case e.DOM_DELTA_PAGE: - e.wheelX = (e.deltaX || 0) * 5; - e.wheelY = (e.deltaY || 0) * 5; - break; - } - - callback(e); - }); - } else { - exports.addListener(el, "DOMMouseScroll", function(e) { - if (e.axis && e.axis == e.HORIZONTAL_AXIS) { - e.wheelX = (e.detail || 0) * 5; - e.wheelY = 0; - } else { - e.wheelX = 0; - e.wheelY = (e.detail || 0) * 5; - } - callback(e); - }); - } -}; - -exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName) { +exports.addMultiMouseDownListener = function (elements, timeouts, eventHandler, callbackName, destroyer) { var clicks = 0; - var startX, startY, timer; + var startX, startY, timer; var eventNames = { 2: "dblclick", 3: "tripleclick", 4: "quadclick" }; - function onMousedown(e) { if (exports.getButton(e) !== 0) { clicks = 0; - } else if (e.detail > 1) { + } + else if (e.detail > 1) { clicks++; if (clicks > 4) clicks = 1; - } else { + } + else { clicks = 1; } if (useragent.isIE) { @@ -1550,55 +1825,33 @@ exports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, c clicks = 1; if (timer) clearTimeout(timer); - timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600); - + timer = setTimeout(function () { timer = null; }, timeouts[clicks - 1] || 600); if (clicks == 1) { startX = e.clientX; startY = e.clientY; } } - e._clicks = clicks; - eventHandler[callbackName]("mousedown", e); - if (clicks > 4) clicks = 0; else if (clicks > 1) return eventHandler[callbackName](eventNames[clicks], e); } - function onDblclick(e) { - clicks = 2; - if (timer) - clearTimeout(timer); - timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600); - eventHandler[callbackName]("mousedown", e); - eventHandler[callbackName](eventNames[clicks], e); - } if (!Array.isArray(elements)) elements = [elements]; - elements.forEach(function(el) { - exports.addListener(el, "mousedown", onMousedown); - if (useragent.isOldIE) - exports.addListener(el, "dblclick", onDblclick); + elements.forEach(function (el) { + addListener(el, "mousedown", onMousedown, destroyer); }); }; - -var getModifierHash = useragent.isMac && useragent.isOpera && !("KeyboardEvent" in window) - ? function(e) { - return 0 | (e.metaKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.ctrlKey ? 8 : 0); - } - : function(e) { - return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); - }; - -exports.getModifierString = function(e) { +function getModifierHash(e) { + return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0); +} +exports.getModifierString = function (e) { return keys.KEY_MODS[getModifierHash(e)]; }; - function normalizeCommandKeys(callback, e, keyCode) { var hashId = getModifierHash(e); - if (!useragent.isMac && pressedKeys) { if (e.getModifierState && (e.getModifierState("OS") || e.getModifierState("Win"))) hashId |= 8; @@ -1609,34 +1862,28 @@ function normalizeCommandKeys(callback, e, keyCode) { return; } if (keyCode === 18 || keyCode === 17) { - var location = "location" in e ? e.location : e.keyLocation; + var location = e.location; if (keyCode === 17 && location === 1) { if (pressedKeys[keyCode] == 1) ts = e.timeStamp; - } else if (keyCode === 18 && hashId === 3 && location === 2) { + } + else if (keyCode === 18 && hashId === 3 && location === 2) { var dt = e.timeStamp - ts; if (dt < 50) pressedKeys.altGr = true; } } } - if (keyCode in keys.MODIFIER_KEYS) { keyCode = -1; } - if (hashId & 8 && (keyCode >= 91 && keyCode <= 93)) { - keyCode = -1; - } - if (!hashId && keyCode === 13) { - var location = "location" in e ? e.location : e.keyLocation; - if (location === 3) { + if (e.location === 3) { callback(e, hashId, -keyCode); if (e.defaultPrevented) return; } } - if (useragent.isChromeOS && hashId & 8) { callback(e, hashId, keyCode); if (e.defaultPrevented) @@ -1647,962 +1894,530 @@ function normalizeCommandKeys(callback, e, keyCode) { if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) { return false; } - return callback(e, hashId, keyCode); } - - -exports.addCommandKeyListener = function(el, callback) { - var addListener = exports.addListener; - if (useragent.isOldGecko || (useragent.isOpera && !("KeyboardEvent" in window))) { - var lastKeyDownKeyCode = null; - addListener(el, "keydown", function(e) { - lastKeyDownKeyCode = e.keyCode; - }); - addListener(el, "keypress", function(e) { - return normalizeCommandKeys(callback, e, lastKeyDownKeyCode); - }); - } else { - var lastDefaultPrevented = null; - - addListener(el, "keydown", function(e) { - pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; - var result = normalizeCommandKeys(callback, e, e.keyCode); - lastDefaultPrevented = e.defaultPrevented; - return result; - }); - - addListener(el, "keypress", function(e) { - if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { - exports.stopEvent(e); - lastDefaultPrevented = null; - } - }); - - addListener(el, "keyup", function(e) { - pressedKeys[e.keyCode] = null; - }); - - if (!pressedKeys) { - resetPressedKeys(); - addListener(window, "focus", resetPressedKeys); +exports.addCommandKeyListener = function (el, callback, destroyer) { + var lastDefaultPrevented = null; + addListener(el, "keydown", function (e) { + pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1; + var result = normalizeCommandKeys(callback, e, e.keyCode); + lastDefaultPrevented = e.defaultPrevented; + return result; + }, destroyer); + addListener(el, "keypress", function (e) { + if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) { + exports.stopEvent(e); + lastDefaultPrevented = null; } + }, destroyer); + addListener(el, "keyup", function (e) { + pressedKeys[e.keyCode] = null; + }, destroyer); + if (!pressedKeys) { + resetPressedKeys(); + addListener(window, "focus", resetPressedKeys); } }; function resetPressedKeys() { pressedKeys = Object.create(null); } - if (typeof window == "object" && window.postMessage && !useragent.isOldIE) { var postMessageId = 1; - exports.nextTick = function(callback, win) { + exports.nextTick = function (callback, win) { win = win || window; - var messageName = "zero-timeout-message-" + postMessageId; - exports.addListener(win, "message", function listener(e) { + var messageName = "zero-timeout-message-" + (postMessageId++); + var listener = function (e) { if (e.data == messageName) { exports.stopPropagation(e); - exports.removeListener(win, "message", listener); + removeListener(win, "message", listener); callback(); } - }); + }; + addListener(win, "message", listener); win.postMessage(messageName, "*"); }; } - - +exports.$idleBlocked = false; +exports.onIdle = function (cb, timeout) { + return setTimeout(function handler() { + if (!exports.$idleBlocked) { + cb(); + } + else { + setTimeout(handler, 100); + } + }, timeout); +}; +exports.$idleBlockId = null; +exports.blockIdle = function (delay) { + if (exports.$idleBlockId) + clearTimeout(exports.$idleBlockId); + exports.$idleBlocked = true; + exports.$idleBlockId = setTimeout(function () { + exports.$idleBlocked = false; + }, delay || 100); +}; exports.nextFrame = typeof window == "object" && (window.requestAnimationFrame - || window.mozRequestAnimationFrame - || window.webkitRequestAnimationFrame - || window.msRequestAnimationFrame - || window.oRequestAnimationFrame); - + || window["mozRequestAnimationFrame"] + || window["webkitRequestAnimationFrame"] + || window["msRequestAnimationFrame"] + || window["oRequestAnimationFrame"]); if (exports.nextFrame) exports.nextFrame = exports.nextFrame.bind(window); else - exports.nextFrame = function(callback) { + exports.nextFrame = function (callback) { setTimeout(callback, 17); }; + }); -define("ace/lib/lang",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.last = function(a) { - return a[a.length - 1]; -}; - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; +define("ace/clipboard",["require","exports","module"], function(require, exports, module){"use strict"; +var $cancelT; +module.exports = { + lineMode: false, + pasteCancelled: function () { + if ($cancelT && $cancelT > Date.now() - 50) + return true; + return $cancelT = false; + }, + cancel: function () { + $cancelT = Date.now(); } - return result; }; -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i 63; +var MAX_LINE_LENGTH = 400; var KEYS = require("../lib/keys"); var MODS = KEYS.KEY_MODS; -var BROKEN_SETDATA = useragent.isChrome < 18; -var USE_IE_MIME_TYPE = useragent.isIE; - -var TextInput = function(parentNode, host) { - var self = this; - var text = dom.createElement("textarea"); - text.className = useragent.isIOS ? "ace_text-input ace_text-input-ios" : "ace_text-input"; - - if (useragent.isTouchPad) - text.setAttribute("x-palm-disable-auto-cap", true); - - text.setAttribute("wrap", "off"); - text.setAttribute("autocorrect", "off"); - text.setAttribute("autocapitalize", "off"); - text.setAttribute("spellcheck", false); - - text.style.opacity = "0"; - parentNode.insertBefore(text, parentNode.firstChild); - - var PLACEHOLDER = "\n aaaa a\n"; - - var copied = false; - var cut = false; - var pasted = false; - var inComposition = false; - var tempStyle = ''; - var isSelectionEmpty = true; - try { var isFocused = document.activeElement === text; } catch(e) {} - - event.addListener(text, "blur", function(e) { - host.onBlur(e); - isFocused = false; - }); - event.addListener(text, "focus", function(e) { - isFocused = true; - host.onFocus(e); - resetSelection(); - }); - this.focus = function() { - if (tempStyle) return text.focus(); - text.style.position = "fixed"; - text.focus(); - }; - this.blur = function() { - text.blur(); - }; - this.isFocused = function() { - return isFocused; - }; - var syncSelection = lang.delayedCall(function() { - isFocused && resetSelection(isSelectionEmpty); - }); - var syncValue = lang.delayedCall(function() { - if (!inComposition) { - text.value = PLACEHOLDER; - isFocused && resetSelection(); - } - }); - - function resetSelection(isEmpty) { - if (inComposition) - return; - inComposition = true; - - if (inputHandler) { - selectionStart = 0; - selectionEnd = isEmpty ? 0 : text.value.length - 1; - } else { - var selectionStart = 4; - var selectionEnd = 5; - } - try { - text.setSelectionRange(selectionStart, selectionEnd); - } catch(e) {} - - inComposition = false; - } - - function resetValue() { - if (inComposition) - return; - text.value = PLACEHOLDER; - if (useragent.isWebKit) - syncValue.schedule(); - } - - useragent.isWebKit || host.addEventListener('changeSelection', function() { - if (host.selection.isEmpty() != isSelectionEmpty) { - isSelectionEmpty = !isSelectionEmpty; - syncSelection.schedule(); - } - }); - - resetValue(); - if (isFocused) - host.onFocus(); - - - var isAllSelected = function(text) { - return text.selectionStart === 0 && text.selectionEnd === text.value.length; - }; - - var onSelect = function(e) { - if (isAllSelected(text)) { - host.selectAll(); - resetSelection(); - } else if (inputHandler) { - resetSelection(host.selection.isEmpty()); - } - }; - - var inputHandler = null; - this.setInputHandler = function(cb) {inputHandler = cb;}; - this.getInputHandler = function() {return inputHandler;}; - var afterContextMenu = false; - - var sendText = function(data) { - if (text.selectionStart === 4 && text.selectionEnd === 5) { - return; - } - if (inputHandler) { - data = inputHandler(data); - inputHandler = null; - } - if (pasted) { - resetSelection(); - if (data) - host.onPaste(data); - pasted = false; - } else if (data == PLACEHOLDER.substr(0) && text.selectionStart === 4) { - if (afterContextMenu) - host.execCommand("del", {source: "ace"}); - else // some versions of android do not fire keydown when pressing backspace - host.execCommand("backspace", {source: "ace"}); - } else if (!copied) { - if (data.substring(0, 9) == PLACEHOLDER && data.length > PLACEHOLDER.length) - data = data.substr(9); - else if (data.substr(0, 4) == PLACEHOLDER.substr(0, 4)) - data = data.substr(4, data.length - PLACEHOLDER.length + 1); - else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) - data = data.slice(0, -1); - if (data == PLACEHOLDER.charAt(0)) { - } else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) - data = data.slice(0, -1); - - if (data) - host.onTextInput(data); - } - if (copied) { - copied = false; - } - if (afterContextMenu) - afterContextMenu = false; - }; - var onInput = function(e) { - if (inComposition) - return; - var data = text.value; - sendText(data); - resetValue(); - }; - - var handleClipboardData = function(e, data, forceIEMime) { - var clipboardData = e.clipboardData || window.clipboardData; - if (!clipboardData || BROKEN_SETDATA) - return; - var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; - try { - if (data) { - return clipboardData.setData(mime, data) !== false; - } else { - return clipboardData.getData(mime); - } - } catch(e) { - if (!forceIEMime) - return handleClipboardData(e, data, true); - } - }; - - var doCopy = function(e, isCut) { - var data = host.getCopyText(); - if (!data) - return event.preventDefault(e); - - if (handleClipboardData(e, data)) { - if (useragent.isIOS) { - cut = isCut; - text.value = "\n aa" + data + "a a\n"; - text.setSelectionRange(4, 4 + data.length); - copied = { - value: data - }; - } - isCut ? host.onCut() : host.onCopy(); - if (!useragent.isIOS) event.preventDefault(e); - } else { - copied = true; - text.value = data; - text.select(); - setTimeout(function(){ - copied = false; - resetValue(); - resetSelection(); - isCut ? host.onCut() : host.onCopy(); - }); - } - }; - - var onCut = function(e) { - doCopy(e, true); - }; - - var onCopy = function(e) { - doCopy(e, false); - }; - - var onPaste = function(e) { - var data = handleClipboardData(e); - if (typeof data == "string") { - if (data) - host.onPaste(data, e); - if (useragent.isIE) - setTimeout(resetSelection); - event.preventDefault(e); - } - else { - text.value = ""; - pasted = true; - } - }; - - event.addCommandKeyListener(text, host.onCommandKey.bind(host)); - - event.addListener(text, "select", onSelect); - - event.addListener(text, "input", onInput); - - event.addListener(text, "cut", onCut); - event.addListener(text, "copy", onCopy); - event.addListener(text, "paste", onPaste); - var onCompositionStart = function(e) { - if (inComposition || !host.onCompositionStart || host.$readOnly) - return; - inComposition = {}; - inComposition.canUndo = host.session.$undoManager; - host.onCompositionStart(); - setTimeout(onCompositionUpdate, 0); - host.on("mousedown", onCompositionEnd); - if (inComposition.canUndo && !host.selection.isEmpty()) { - host.insert(""); - host.session.markUndoGroup(); - host.selection.clearSelection(); - } - host.session.markUndoGroup(); - }; - - var onCompositionUpdate = function() { - if (!inComposition || !host.onCompositionUpdate || host.$readOnly) - return; - var val = text.value.replace(/\x01/g, ""); - if (inComposition.lastValue === val) return; - - host.onCompositionUpdate(val); - if (inComposition.lastValue) - host.undo(); - if (inComposition.canUndo) - inComposition.lastValue = val; - if (inComposition.lastValue) { - var r = host.selection.getRange(); - host.insert(inComposition.lastValue); - host.session.markUndoGroup(); - inComposition.range = host.selection.getRange(); - host.selection.setRange(r); - host.selection.clearSelection(); - } - }; - - var onCompositionEnd = function(e) { - if (!host.onCompositionEnd || host.$readOnly) return; - var c = inComposition; - inComposition = false; - var timer = setTimeout(function() { - timer = null; - var str = text.value.replace(/\x01/g, ""); - if (inComposition) - return; - else if (str == c.lastValue) - resetValue(); - else if (!c.lastValue && str) { - resetValue(); - sendText(str); - } - }); - inputHandler = function compositionInputHandler(str) { - if (timer) - clearTimeout(timer); - str = str.replace(/\x01/g, ""); - if (str == c.lastValue) - return ""; - if (c.lastValue && timer) - host.undo(); - return str; - }; - host.onCompositionEnd(); - host.removeListener("mousedown", onCompositionEnd); - if (e.type == "compositionend" && c.range) { - host.selection.setRange(c.range); - } - var needsOnInput = - (!!useragent.isChrome && useragent.isChrome >= 53) || - (!!useragent.isWebKit && useragent.isWebKit >= 603); - - if (needsOnInput) { - onInput(); - } - }; - - - - var syncComposition = lang.delayedCall(onCompositionUpdate, 50); - - event.addListener(text, "compositionstart", onCompositionStart); - if (useragent.isGecko) { - event.addListener(text, "text", function(){syncComposition.schedule();}); - } else { - event.addListener(text, "keyup", function(){syncComposition.schedule();}); - event.addListener(text, "keydown", function(){syncComposition.schedule();}); - } - event.addListener(text, "compositionend", onCompositionEnd); - - this.getElement = function() { - return text; - }; - - this.setReadOnly = function(readOnly) { - text.readOnly = readOnly; - }; - - this.onContextMenu = function(e) { - afterContextMenu = true; - resetSelection(host.selection.isEmpty()); - host._emit("nativecontextmenu", {target: host, domEvent: e}); - this.moveToMouse(e, true); - }; - - this.moveToMouse = function(e, bringToFront) { - if (!tempStyle) - tempStyle = text.style.cssText; - text.style.cssText = (bringToFront ? "z-index:100000;" : "") - + "height:" + text.style.height + ";" - + (useragent.isIE ? "opacity:0.1;" : ""); - - var rect = host.container.getBoundingClientRect(); - var style = dom.computedStyle(host.container); - var top = rect.top + (parseInt(style.borderTopWidth) || 0); - var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); - var maxTop = rect.bottom - top - text.clientHeight -2; - var move = function(e) { - text.style.left = e.clientX - left - 2 + "px"; - text.style.top = Math.min(e.clientY - top - 2, maxTop) + "px"; - }; - move(e); - - if (e.type != "mousedown") - return; - - if (host.renderer.$keepTextAreaAtCursor) - host.renderer.$keepTextAreaAtCursor = null; - - clearTimeout(closeTimeout); - if (useragent.isWin) - event.capture(host.container, move, onContextMenuClose); - }; - - this.onContextMenuClose = onContextMenuClose; - var closeTimeout; - function onContextMenuClose() { - clearTimeout(closeTimeout); - closeTimeout = setTimeout(function () { - if (tempStyle) { - text.style.cssText = tempStyle; - tempStyle = ''; - } - if (host.renderer.$keepTextAreaAtCursor == null) { - host.renderer.$keepTextAreaAtCursor = true; - host.renderer.$moveTextAreaToCursor(); - } - }, 0); - } - - var onContextMenu = function(e) { - host.textInput.onContextMenu(e); - onContextMenuClose(); - }; - event.addListener(text, "mouseup", onContextMenu); - event.addListener(text, "mousedown", function(e) { - e.preventDefault(); - onContextMenuClose(); - }); - event.addListener(host.renderer.scroller, "contextmenu", onContextMenu); - event.addListener(text, "contextmenu", onContextMenu); - - if (useragent.isIOS) { - var typingResetTimeout = null; - var typing = false; - - parentNode.addEventListener("keydown", function (e) { - if (typingResetTimeout) clearTimeout(typingResetTimeout); - typing = true; - }); - - parentNode.addEventListener("keyup", function (e) { - typingResetTimeout = setTimeout(function () { - typing = false; - }, 100); - }); - var detectArrowKeys = function(e) { - if (document.activeElement !== text) return; - if (typing) return; - - if (cut) { - return setTimeout(function () { - cut = false; - }, 100); - } - var selectionStart = text.selectionStart; - var selectionEnd = text.selectionEnd; - text.setSelectionRange(4, 5); - if (selectionStart == selectionEnd) { - switch (selectionStart) { - case 0: host.onCommandKey(null, 0, KEYS.up); break; - case 1: host.onCommandKey(null, 0, KEYS.home); break; - case 2: host.onCommandKey(null, MODS.option, KEYS.left); break; - case 4: host.onCommandKey(null, 0, KEYS.left); break; - case 5: host.onCommandKey(null, 0, KEYS.right); break; - case 7: host.onCommandKey(null, MODS.option, KEYS.right); break; - case 8: host.onCommandKey(null, 0, KEYS.end); break; - case 9: host.onCommandKey(null, 0, KEYS.down); break; - } - } else { - switch (selectionEnd) { - case 6: host.onCommandKey(null, MODS.shift, KEYS.right); break; - case 7: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.right); break; - case 8: host.onCommandKey(null, MODS.shift, KEYS.end); break; - case 9: host.onCommandKey(null, MODS.shift, KEYS.down); break; - } - switch (selectionStart) { - case 0: host.onCommandKey(null, MODS.shift, KEYS.up); break; - case 1: host.onCommandKey(null, MODS.shift, KEYS.home); break; - case 2: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.left); break; - case 3: host.onCommandKey(null, MODS.shift, KEYS.left); break; - } - } - }; - document.addEventListener("selectionchange", detectArrowKeys); - host.on("destroy", function() { - document.removeEventListener("selectionchange", detectArrowKeys); - }); - } -}; - -exports.TextInput = TextInput; -}); - -define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/keyboard/textinput_ios"], function(require, exports, module) { -"use strict"; - -var event = require("../lib/event"); -var useragent = require("../lib/useragent"); -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var BROKEN_SETDATA = useragent.isChrome < 18; -var USE_IE_MIME_TYPE = useragent.isIE; - -var TextInputIOS = require("./textinput_ios").TextInput; -var TextInput = function(parentNode, host) { - if (useragent.isIOS) - return TextInputIOS.call(this, parentNode, host); - +var isIOS = useragent.isIOS; +var valueResetRegex = isIOS ? /\s/ : /\n/; +var isMobile = useragent.isMobile; +var TextInput; +TextInput = function (parentNode, host) { var text = dom.createElement("textarea"); text.className = "ace_text-input"; - text.setAttribute("wrap", "off"); text.setAttribute("autocorrect", "off"); text.setAttribute("autocapitalize", "off"); - text.setAttribute("spellcheck", false); - + text.setAttribute("spellcheck", "false"); text.style.opacity = "0"; parentNode.insertBefore(text, parentNode.firstChild); - - var PLACEHOLDER = "\u2028\u2028"; - var copied = false; var pasted = false; var inComposition = false; + var sendingText = false; var tempStyle = ''; - var isSelectionEmpty = true; - try { var isFocused = document.activeElement === text; } catch(e) {} - - event.addListener(text, "blur", function(e) { + if (!isMobile) + text.style.fontSize = "1px"; + var commandMode = false; + var ignoreFocusEvents = false; + var lastValue = ""; + var lastSelectionStart = 0; + var lastSelectionEnd = 0; + var lastRestoreEnd = 0; + var rowStart = Number.MAX_SAFE_INTEGER; + var rowEnd = Number.MIN_SAFE_INTEGER; + var numberOfExtraLines = 0; + try { + var isFocused = document.activeElement === text; + } + catch (e) { } + this.setNumberOfExtraLines = function (number) { + rowStart = Number.MAX_SAFE_INTEGER; + rowEnd = Number.MIN_SAFE_INTEGER; + if (number < 0) { + numberOfExtraLines = 0; + return; + } + numberOfExtraLines = number; + }; + this.setAriaOptions = function (options) { + if (options.activeDescendant) { + text.setAttribute("aria-haspopup", "true"); + text.setAttribute("aria-autocomplete", options.inline ? "both" : "list"); + text.setAttribute("aria-activedescendant", options.activeDescendant); + } + else { + text.setAttribute("aria-haspopup", "false"); + text.setAttribute("aria-autocomplete", "both"); + text.removeAttribute("aria-activedescendant"); + } + if (options.role) { + text.setAttribute("role", options.role); + } + if (options.setLabel) { + text.setAttribute("aria-roledescription", nls("editor")); + if (host.session) { + var row = host.session.selection.cursor.row; + text.setAttribute("aria-label", nls("Cursor at row $0", [row + 1])); + } + } + }; + this.setAriaOptions({ role: "textbox" }); + event.addListener(text, "blur", function (e) { + if (ignoreFocusEvents) + return; host.onBlur(e); isFocused = false; - }); - event.addListener(text, "focus", function(e) { + }, host); + event.addListener(text, "focus", function (e) { + if (ignoreFocusEvents) + return; isFocused = true; + if (useragent.isEdge) { + try { + if (!document.hasFocus()) + return; + } + catch (e) { } + } host.onFocus(e); - resetSelection(); - }); - this.focus = function() { - if (tempStyle) return text.focus(); + if (useragent.isEdge) + setTimeout(resetSelection); + else + resetSelection(); + }, host); + this.$focusScroll = false; + this.focus = function () { + this.setAriaOptions({ + setLabel: host.renderer.enableKeyboardAccessibility + }); + if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == "browser") + return text.focus({ preventScroll: true }); var top = text.style.top; text.style.position = "fixed"; text.style.top = "0px"; - text.focus(); - setTimeout(function() { + try { + var isTransformed = text.getBoundingClientRect().top != 0; + } + catch (e) { + return; + } + var ancestors = []; + if (isTransformed) { + var t = text.parentElement; + while (t && t.nodeType == 1) { + ancestors.push(t); + t.setAttribute("ace_nocontext", "true"); + if (!t.parentElement && t.getRootNode) + t = t.getRootNode()["host"]; + else + t = t.parentElement; + } + } + text.focus({ preventScroll: true }); + if (isTransformed) { + ancestors.forEach(function (p) { + p.removeAttribute("ace_nocontext"); + }); + } + setTimeout(function () { text.style.position = ""; if (text.style.top == "0px") text.style.top = top; }, 0); }; - this.blur = function() { + this.blur = function () { text.blur(); }; - this.isFocused = function() { + this.isFocused = function () { return isFocused; }; - var syncSelection = lang.delayedCall(function() { - isFocused && resetSelection(isSelectionEmpty); - }); - var syncValue = lang.delayedCall(function() { - if (!inComposition) { - text.value = PLACEHOLDER; - isFocused && resetSelection(); - } - }); - - function resetSelection(isEmpty) { - if (inComposition) + host.on("beforeEndOperation", function () { + var curOp = host.curOp; + var commandName = curOp && curOp.command && curOp.command.name; + if (commandName == "insertstring") return; - inComposition = true; - - if (inputHandler) { + var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged); + if (inComposition && isUserAction) { + lastValue = text.value = ""; + onCompositionEnd(); + } + resetSelection(); + }); + var positionToSelection = function (row, column) { + var selection = column; + for (var i = 1; i <= row - rowStart && i < 2 * numberOfExtraLines + 1; i++) { + selection += host.session.getLine(row - i).length + 1; + } + return selection; + }; + var resetSelection = isIOS + ? function (value) { + if (!isFocused || (copied && !value) || sendingText) + return; + if (!value) + value = ""; + var newValue = "\n ab" + value + "cde fg\n"; + if (newValue != text.value) + text.value = lastValue = newValue; + var selectionStart = 4; + var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1)); + if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) { + text.setSelectionRange(selectionStart, selectionEnd); + } + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + } + : function () { + if (inComposition || sendingText) + return; + if (!isFocused && !afterContextMenu) + return; + inComposition = true; var selectionStart = 0; - var selectionEnd = isEmpty ? 0 : text.value.length - 1; - } else { - var selectionStart = isEmpty ? 2 : 1; - var selectionEnd = 2; - } - try { - text.setSelectionRange(selectionStart, selectionEnd); - } catch(e){} - - inComposition = false; - } - - function resetValue() { - if (inComposition) - return; - text.value = PLACEHOLDER; - if (useragent.isWebKit) - syncValue.schedule(); - } - - useragent.isWebKit || host.addEventListener('changeSelection', function() { - if (host.selection.isEmpty() != isSelectionEmpty) { - isSelectionEmpty = !isSelectionEmpty; - syncSelection.schedule(); - } - }); - - resetValue(); + var selectionEnd = 0; + var line = ""; + if (host.session) { + var selection = host.selection; + var range = selection.getRange(); + var row = selection.cursor.row; + if (row === rowEnd + 1) { + rowStart = rowEnd + 1; + rowEnd = rowStart + 2 * numberOfExtraLines; + } + else if (row === rowStart - 1) { + rowEnd = rowStart - 1; + rowStart = rowEnd - 2 * numberOfExtraLines; + } + else if (row < rowStart - 1 || row > rowEnd + 1) { + rowStart = row > numberOfExtraLines ? row - numberOfExtraLines : 0; + rowEnd = row > numberOfExtraLines ? row + numberOfExtraLines : 2 * numberOfExtraLines; + } + var lines = []; + for (var i = rowStart; i <= rowEnd; i++) { + lines.push(host.session.getLine(i)); + } + line = lines.join('\n'); + selectionStart = positionToSelection(range.start.row, range.start.column); + selectionEnd = positionToSelection(range.end.row, range.end.column); + if (range.start.row < rowStart) { + var prevLine = host.session.getLine(rowStart - 1); + selectionStart = range.start.row < rowStart - 1 ? 0 : selectionStart; + selectionEnd += prevLine.length + 1; + line = prevLine + "\n" + line; + } + else if (range.end.row > rowEnd) { + var nextLine = host.session.getLine(rowEnd + 1); + selectionEnd = range.end.row > rowEnd + 1 ? nextLine.length : range.end.column; + selectionEnd += line.length + 1; + line = line + "\n" + nextLine; + } + else if (isMobile && row > 0) { + line = "\n" + line; + selectionEnd += 1; + selectionStart += 1; + } + if (line.length > MAX_LINE_LENGTH) { + if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) { + line = line.slice(0, MAX_LINE_LENGTH); + } + else { + line = "\n"; + if (selectionStart == selectionEnd) { + selectionStart = selectionEnd = 0; + } + else { + selectionStart = 0; + selectionEnd = 1; + } + } + } + var newValue = line + "\n\n"; + if (newValue != lastValue) { + text.value = lastValue = newValue; + lastSelectionStart = lastSelectionEnd = newValue.length; + } + } + if (afterContextMenu) { + lastSelectionStart = text.selectionStart; + lastSelectionEnd = text.selectionEnd; + } + if (lastSelectionEnd != selectionEnd + || lastSelectionStart != selectionStart + || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization + ) { + try { + text.setSelectionRange(selectionStart, selectionEnd); + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + } + catch (e) { } + } + inComposition = false; + }; + this.resetSelection = resetSelection; if (isFocused) host.onFocus(); - - - var isAllSelected = function(text) { - return text.selectionStart === 0 && text.selectionEnd === text.value.length; + var isAllSelected = function (text) { + return text.selectionStart === 0 && text.selectionEnd >= lastValue.length + && text.value === lastValue && lastValue + && text.selectionEnd !== lastSelectionEnd; }; - - var onSelect = function(e) { - if (copied) { - copied = false; - } else if (isAllSelected(text)) { - host.selectAll(); - resetSelection(); - } else if (inputHandler) { - resetSelection(host.selection.isEmpty()); - } - }; - - var inputHandler = null; - this.setInputHandler = function(cb) {inputHandler = cb;}; - this.getInputHandler = function() {return inputHandler;}; - var afterContextMenu = false; - - var sendText = function(data) { - if (inputHandler) { - data = inputHandler(data); - inputHandler = null; - } - if (pasted) { - resetSelection(); - if (data) - host.onPaste(data); - pasted = false; - } else if (data == PLACEHOLDER.charAt(0)) { - if (afterContextMenu) - host.execCommand("del", {source: "ace"}); - else // some versions of android do not fire keydown when pressing backspace - host.execCommand("backspace", {source: "ace"}); - } else { - if (data.substring(0, 2) == PLACEHOLDER) - data = data.substr(2); - else if (data.charAt(0) == PLACEHOLDER.charAt(0)) - data = data.substr(1); - else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) - data = data.slice(0, -1); - if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) - data = data.slice(0, -1); - - if (data) - host.onTextInput(data); - } - if (afterContextMenu) - afterContextMenu = false; - }; - var onInput = function(e) { + var onSelect = function (e) { if (inComposition) return; - var data = text.value; - sendText(data); - resetValue(); + if (copied) { + copied = false; + } + else if (isAllSelected(text)) { + host.selectAll(); + resetSelection(); + } + else if (isMobile && text.selectionStart != lastSelectionStart) { + resetSelection(); + } }; - - var handleClipboardData = function(e, data, forceIEMime) { - var clipboardData = e.clipboardData || window.clipboardData; + var inputHandler = null; + this.setInputHandler = function (cb) { inputHandler = cb; }; + this.getInputHandler = function () { return inputHandler; }; + var afterContextMenu = false; + var sendText = function (value, fromInput) { + if (afterContextMenu) + afterContextMenu = false; + if (pasted) { + resetSelection(); + if (value) + host.onPaste(value); + pasted = false; + return ""; + } + else { + var selectionStart = text.selectionStart; + var selectionEnd = text.selectionEnd; + var extendLeft = lastSelectionStart; + var extendRight = lastValue.length - lastSelectionEnd; + var inserted = value; + var restoreStart = value.length - selectionStart; + var restoreEnd = value.length - selectionEnd; + var i = 0; + while (extendLeft > 0 && lastValue[i] == value[i]) { + i++; + extendLeft--; + } + inserted = inserted.slice(i); + i = 1; + while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) { + i++; + extendRight--; + } + restoreStart -= i - 1; + restoreEnd -= i - 1; + var endIndex = inserted.length - i + 1; + if (endIndex < 0) { + extendLeft = -endIndex; + endIndex = 0; + } + inserted = inserted.slice(0, endIndex); + if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd) + return ""; + sendingText = true; + var shouldReset = false; + if (useragent.isAndroid && inserted == ". ") { + inserted = " "; + shouldReset = true; + } + if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) { + host.onTextInput(inserted); + } + else { + host.onTextInput(inserted, { + extendLeft: extendLeft, + extendRight: extendRight, + restoreStart: restoreStart, + restoreEnd: restoreEnd + }); + } + sendingText = false; + lastValue = value; + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + lastRestoreEnd = restoreEnd; + return shouldReset ? "\n" : inserted; + } + }; + var onInput = function (e) { + if (inComposition) + return onCompositionUpdate(); + if (e && e.inputType) { + if (e.inputType == "historyUndo") + return host.execCommand("undo"); + if (e.inputType == "historyRedo") + return host.execCommand("redo"); + } + var data = text.value; + var inserted = sendText(data, true); + if (data.length > MAX_LINE_LENGTH + 100 + || valueResetRegex.test(inserted) + || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd) { + resetSelection(); + } + }; + var handleClipboardData = function (e, data, forceIEMime) { + var clipboardData = e.clipboardData || window["clipboardData"]; if (!clipboardData || BROKEN_SETDATA) return; var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; try { if (data) { return clipboardData.setData(mime, data) !== false; - } else { + } + else { return clipboardData.getData(mime); } - } catch(e) { + } + catch (e) { if (!forceIEMime) return handleClipboardData(e, data, true); } }; - - var doCopy = function(e, isCut) { + var doCopy = function (e, isCut) { var data = host.getCopyText(); if (!data) return event.preventDefault(e); - if (handleClipboardData(e, data)) { + if (isIOS) { + resetSelection(data); + copied = data; + setTimeout(function () { + copied = false; + }, 10); + } isCut ? host.onCut() : host.onCopy(); event.preventDefault(e); - } else { + } + else { copied = true; text.value = data; text.select(); - setTimeout(function(){ + setTimeout(function () { copied = false; - resetValue(); resetSelection(); isCut ? host.onCut() : host.onCopy(); }); } }; - - var onCut = function(e) { + var onCut = function (e) { doCopy(e, true); }; - - var onCopy = function(e) { + var onCopy = function (e) { doCopy(e, false); }; - - var onPaste = function(e) { + var onPaste = function (e) { var data = handleClipboardData(e); + if (clipboard.pasteCancelled()) + return; if (typeof data == "string") { if (data) host.onPaste(data, e); @@ -2615,21 +2430,20 @@ var TextInput = function(parentNode, host) { pasted = true; } }; - - event.addCommandKeyListener(text, host.onCommandKey.bind(host)); - - event.addListener(text, "select", onSelect); - - event.addListener(text, "input", onInput); - - event.addListener(text, "cut", onCut); - event.addListener(text, "copy", onCopy); - event.addListener(text, "paste", onPaste); + event.addCommandKeyListener(text, function (e, hashId, keyCode) { + if (inComposition) + return; + return host.onCommandKey(e, hashId, keyCode); + }, host); + event.addListener(text, "select", onSelect, host); + event.addListener(text, "input", onInput, host); + event.addListener(text, "cut", onCut, host); + event.addListener(text, "copy", onCopy, host); + event.addListener(text, "paste", onPaste, host); if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) { - event.addListener(parentNode, "keydown", function(e) { + event.addListener(parentNode, "keydown", function (e) { if ((useragent.isMac && !e.metaKey) || !e.ctrlKey) return; - switch (e.keyCode) { case 67: onCopy(e); @@ -2641,142 +2455,129 @@ var TextInput = function(parentNode, host) { onCut(e); break; } - }); + }, host); } - var onCompositionStart = function(e) { - if (inComposition || !host.onCompositionStart || host.$readOnly) + var onCompositionStart = function (e) { + if (inComposition || !host.onCompositionStart || host.$readOnly) return; inComposition = {}; - inComposition.canUndo = host.session.$undoManager; - host.onCompositionStart(); + if (commandMode) + return; + if (e.data) + inComposition.useTextareaForIME = false; setTimeout(onCompositionUpdate, 0); - host.on("mousedown", onCompositionEnd); - if (inComposition.canUndo && !host.selection.isEmpty()) { - host.insert(""); - host.session.markUndoGroup(); - host.selection.clearSelection(); + host._signal("compositionStart"); + host.on("mousedown", cancelComposition); + var range = host.getSelectionRange(); + range.end.row = range.start.row; + range.end.column = range.start.column; + inComposition.markerRange = range; + inComposition.selectionStart = lastSelectionStart; + host.onCompositionStart(inComposition); + if (inComposition.useTextareaForIME) { + lastValue = text.value = ""; + lastSelectionStart = 0; + lastSelectionEnd = 0; + } + else { + if (text.msGetInputContext) + inComposition.context = text.msGetInputContext(); + if (text.getInputContext) + inComposition.context = text.getInputContext(); } - host.session.markUndoGroup(); }; - - var onCompositionUpdate = function() { + var onCompositionUpdate = function () { if (!inComposition || !host.onCompositionUpdate || host.$readOnly) return; - var val = text.value.replace(/\u2028/g, ""); - if (inComposition.lastValue === val) return; - - host.onCompositionUpdate(val); - if (inComposition.lastValue) - host.undo(); - if (inComposition.canUndo) - inComposition.lastValue = val; - if (inComposition.lastValue) { - var r = host.selection.getRange(); - host.insert(inComposition.lastValue); - host.session.markUndoGroup(); - inComposition.range = host.selection.getRange(); - host.selection.setRange(r); - host.selection.clearSelection(); + if (commandMode) + return cancelComposition(); + if (inComposition.useTextareaForIME) { + host.onCompositionUpdate(text.value); } - }; - - var onCompositionEnd = function(e) { - if (!host.onCompositionEnd || host.$readOnly) return; - var c = inComposition; - inComposition = false; - var timer = setTimeout(function() { - timer = null; - var str = text.value.replace(/\u2028/g, ""); - if (inComposition) - return; - else if (str == c.lastValue) - resetValue(); - else if (!c.lastValue && str) { - resetValue(); - sendText(str); + else { + var data = text.value; + sendText(data); + if (inComposition.markerRange) { + if (inComposition.context) { + inComposition.markerRange.start.column = inComposition.selectionStart + = inComposition.context.compositionStartOffset; + } + inComposition.markerRange.end.column = inComposition.markerRange.start.column + + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd; } - }); - inputHandler = function compositionInputHandler(str) { - if (timer) - clearTimeout(timer); - str = str.replace(/\u2028/g, ""); - if (str == c.lastValue) - return ""; - if (c.lastValue && timer) - host.undo(); - return str; - }; - host.onCompositionEnd(); - host.removeListener("mousedown", onCompositionEnd); - if (e.type == "compositionend" && c.range) { - host.selection.setRange(c.range); - } - var needsOnInput = - (!!useragent.isChrome && useragent.isChrome >= 53) || - (!!useragent.isWebKit && useragent.isWebKit >= 603); - - if (needsOnInput) { - onInput(); } }; - - - - var syncComposition = lang.delayedCall(onCompositionUpdate, 50); - - event.addListener(text, "compositionstart", onCompositionStart); - if (useragent.isGecko) { - event.addListener(text, "text", function(){syncComposition.schedule();}); - } else { - event.addListener(text, "keyup", function(){syncComposition.schedule();}); - event.addListener(text, "keydown", function(){syncComposition.schedule();}); + var onCompositionEnd = function (e) { + if (!host.onCompositionEnd || host.$readOnly) + return; + inComposition = false; + host.onCompositionEnd(); + host.off("mousedown", cancelComposition); + if (e) + onInput(); + }; + function cancelComposition() { + ignoreFocusEvents = true; + text.blur(); + text.focus(); + ignoreFocusEvents = false; } - event.addListener(text, "compositionend", onCompositionEnd); - - this.getElement = function() { + var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null); + function onKeyup(e) { + if (e.keyCode == 27 && text.value.length < text.selectionStart) { + if (!inComposition) + lastValue = text.value; + lastSelectionStart = lastSelectionEnd = -1; + resetSelection(); + } + syncComposition(); + } + event.addListener(text, "compositionstart", onCompositionStart, host); + event.addListener(text, "compositionupdate", onCompositionUpdate, host); + event.addListener(text, "keyup", onKeyup, host); + event.addListener(text, "keydown", syncComposition, host); + event.addListener(text, "compositionend", onCompositionEnd, host); + this.getElement = function () { return text; }; - - this.setReadOnly = function(readOnly) { - text.readOnly = readOnly; + this.setCommandMode = function (value) { + commandMode = value; + text.readOnly = false; }; - - this.onContextMenu = function(e) { + this.setReadOnly = function (readOnly) { + if (!commandMode) + text.readOnly = readOnly; + }; + this.setCopyWithEmptySelection = function (value) { + }; + this.onContextMenu = function (e) { afterContextMenu = true; - resetSelection(host.selection.isEmpty()); - host._emit("nativecontextmenu", {target: host, domEvent: e}); + resetSelection(); + host._emit("nativecontextmenu", { target: host, domEvent: e }); this.moveToMouse(e, true); }; - - this.moveToMouse = function(e, bringToFront) { + this.moveToMouse = function (e, bringToFront) { if (!tempStyle) tempStyle = text.style.cssText; text.style.cssText = (bringToFront ? "z-index:100000;" : "") - + "height:" + text.style.height + ";" - + (useragent.isIE ? "opacity:0.1;" : ""); - + + (useragent.isIE ? "opacity:0.1;" : "") + + "text-indent: -" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + "px;"; var rect = host.container.getBoundingClientRect(); var style = dom.computedStyle(host.container); var top = rect.top + (parseInt(style.borderTopWidth) || 0); var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); - var maxTop = rect.bottom - top - text.clientHeight -2; - var move = function(e) { - text.style.left = e.clientX - left - 2 + "px"; - text.style.top = Math.min(e.clientY - top - 2, maxTop) + "px"; - }; + var maxTop = rect.bottom - top - text.clientHeight - 2; + var move = function (e) { + dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop)); + }; move(e); - if (e.type != "mousedown") return; - - if (host.renderer.$keepTextAreaAtCursor) - host.renderer.$keepTextAreaAtCursor = null; - + host.renderer.$isMousePressed = true; clearTimeout(closeTimeout); if (useragent.isWin) event.capture(host.container, move, onContextMenuClose); }; - this.onContextMenuClose = onContextMenuClose; var closeTimeout; function onContextMenuClose() { @@ -2786,77 +2587,146 @@ var TextInput = function(parentNode, host) { text.style.cssText = tempStyle; tempStyle = ''; } - if (host.renderer.$keepTextAreaAtCursor == null) { - host.renderer.$keepTextAreaAtCursor = true; + host.renderer.$isMousePressed = false; + if (host.renderer.$keepTextAreaAtCursor) host.renderer.$moveTextAreaToCursor(); - } }, 0); } - - var onContextMenu = function(e) { + var onContextMenu = function (e) { host.textInput.onContextMenu(e); onContextMenuClose(); }; - event.addListener(text, "mouseup", onContextMenu); - event.addListener(text, "mousedown", function(e) { + event.addListener(text, "mouseup", onContextMenu, host); + event.addListener(text, "mousedown", function (e) { e.preventDefault(); onContextMenuClose(); - }); - event.addListener(host.renderer.scroller, "contextmenu", onContextMenu); - event.addListener(text, "contextmenu", onContextMenu); + }, host); + event.addListener(host.renderer.scroller, "contextmenu", onContextMenu, host); + event.addListener(text, "contextmenu", onContextMenu, host); + if (isIOS) + addIosSelectionHandler(parentNode, host, text); + function addIosSelectionHandler(parentNode, host, text) { + var typingResetTimeout = null; + var typing = false; + text.addEventListener("keydown", function (e) { + if (typingResetTimeout) + clearTimeout(typingResetTimeout); + typing = true; + }, true); + text.addEventListener("keyup", function (e) { + typingResetTimeout = setTimeout(function () { + typing = false; + }, 100); + }, true); + var detectArrowKeys = function (e) { + if (document.activeElement !== text) + return; + if (typing || inComposition || host.$mouseHandler.isMousePressed) + return; + if (copied) { + return; + } + var selectionStart = text.selectionStart; + var selectionEnd = text.selectionEnd; + var key = null; + var modifier = 0; + if (selectionStart == 0) { + key = KEYS.up; + } + else if (selectionStart == 1) { + key = KEYS.home; + } + else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == "\n") { + key = KEYS.end; + } + else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == " ") { + key = KEYS.left; + modifier = MODS.option; + } + else if (selectionStart < lastSelectionStart + || (selectionStart == lastSelectionStart + && lastSelectionEnd != lastSelectionStart + && selectionStart == selectionEnd)) { + key = KEYS.left; + } + else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split("\n").length > 2) { + key = KEYS.down; + } + else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == " ") { + key = KEYS.right; + modifier = MODS.option; + } + else if (selectionEnd > lastSelectionEnd + || (selectionEnd == lastSelectionEnd + && lastSelectionEnd != lastSelectionStart + && selectionStart == selectionEnd)) { + key = KEYS.right; + } + if (selectionStart !== selectionEnd) + modifier |= MODS.shift; + if (key) { + var result = host.onCommandKey({}, modifier, key); + if (!result && host.commands) { + key = KEYS.keyCodeToString(key); + var command = host.commands.findKeyCommand(modifier, key); + if (command) + host.execCommand(command); + } + lastSelectionStart = selectionStart; + lastSelectionEnd = selectionEnd; + resetSelection(""); + } + }; + document.addEventListener("selectionchange", detectArrowKeys); + host.on("destroy", function () { + document.removeEventListener("selectionchange", detectArrowKeys); + }); + } + this.destroy = function () { + if (text.parentElement) + text.parentElement.removeChild(text); + }; +}; +exports.TextInput = TextInput; +exports.$setUserAgentForTests = function (_isMobile, _isIOS) { + isMobile = _isMobile; + isIOS = _isIOS; }; -exports.TextInput = TextInput; }); -define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var dom = require("../lib/dom"); -var event = require("../lib/event"); +define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"], function(require, exports, module){"use strict"; var useragent = require("../lib/useragent"); - var DRAG_OFFSET = 0; // pixels -var SCROLL_COOLDOWN_T = 250; // milliseconds - -function DefaultHandlers(mouseHandler) { - mouseHandler.$clickSelection = null; - - var editor = mouseHandler.editor; - editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); - editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); - editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); - editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); - editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); - editor.setDefaultHandler("touchmove", this.onTouchMove.bind(mouseHandler)); - - var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", - "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"]; - - exports.forEach(function(x) { - mouseHandler[x] = this[x]; - }, this); - - mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, "getLineRange"); - mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, "getWordRange"); -} - -(function() { - - this.onMouseDown = function(ev) { +var SCROLL_COOLDOWN_T = 550; // milliseconds +var DefaultHandlers = /** @class */ (function () { + function DefaultHandlers(mouseHandler) { + mouseHandler.$clickSelection = null; + var editor = mouseHandler.editor; + editor.setDefaultHandler("mousedown", this.onMouseDown.bind(mouseHandler)); + editor.setDefaultHandler("dblclick", this.onDoubleClick.bind(mouseHandler)); + editor.setDefaultHandler("tripleclick", this.onTripleClick.bind(mouseHandler)); + editor.setDefaultHandler("quadclick", this.onQuadClick.bind(mouseHandler)); + editor.setDefaultHandler("mousewheel", this.onMouseWheel.bind(mouseHandler)); + var exports = ["select", "startSelect", "selectEnd", "selectAllEnd", "selectByWordsEnd", + "selectByLinesEnd", "dragWait", "dragWaitEnd", "focusWait"]; + exports.forEach(function (x) { + mouseHandler[x] = this[x]; + }, this); + mouseHandler["selectByLines"] = this.extendSelectionBy.bind(mouseHandler, "getLineRange"); + mouseHandler["selectByWords"] = this.extendSelectionBy.bind(mouseHandler, "getWordRange"); + } + DefaultHandlers.prototype.onMouseDown = function (ev) { var inSelection = ev.inSelection(); var pos = ev.getDocumentPosition(); this.mousedownEvent = ev; var editor = this.editor; - var button = ev.getButton(); if (button !== 0) { var selectionRange = editor.getSelectionRange(); var selectionEmpty = selectionRange.isEmpty(); - editor.$blockScrolling++; if (selectionEmpty || button == 1) editor.selection.moveToPosition(pos); - editor.$blockScrolling--; if (button == 2) { editor.textInput.onContextMenu(ev.domEvent); if (!useragent.isMozilla) @@ -2864,52 +2734,45 @@ function DefaultHandlers(mouseHandler) { } return; } - this.mousedownEvent.time = Date.now(); if (inSelection && !editor.isFocused()) { editor.focus(); - if (this.$focusTimout && !this.$clickSelection && !editor.inMultiSelectMode) { + if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) { this.setState("focusWait"); this.captureMouse(ev); return; } } - this.captureMouse(ev); this.startSelect(pos, ev.domEvent._clicks > 1); return ev.preventDefault(); }; - - this.startSelect = function(pos, waitForClickSelection) { + DefaultHandlers.prototype.startSelect = function (pos, waitForClickSelection) { pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y); var editor = this.editor; - editor.$blockScrolling++; + if (!this.mousedownEvent) + return; if (this.mousedownEvent.getShiftKey()) editor.selection.selectToPosition(pos); else if (!waitForClickSelection) editor.selection.moveToPosition(pos); if (!waitForClickSelection) this.select(); - if (editor.renderer.scroller.setCapture) { - editor.renderer.scroller.setCapture(); - } editor.setStyle("ace_selecting"); this.setState("select"); - editor.$blockScrolling--; }; - - this.select = function() { + DefaultHandlers.prototype.select = function () { var anchor, editor = this.editor; var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); - editor.$blockScrolling++; if (this.$clickSelection) { var cmp = this.$clickSelection.comparePoint(cursor); - if (cmp == -1) { anchor = this.$clickSelection.end; - } else if (cmp == 1) { + } + else if (cmp == 1) { anchor = this.$clickSelection.start; - } else { + } + else { var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); cursor = orientedRange.cursor; anchor = orientedRange.anchor; @@ -2917,31 +2780,30 @@ function DefaultHandlers(mouseHandler) { editor.selection.setSelectionAnchor(anchor.row, anchor.column); } editor.selection.selectToPosition(cursor); - editor.$blockScrolling--; editor.renderer.scrollCursorIntoView(); }; - - this.extendSelectionBy = function(unitName) { + DefaultHandlers.prototype.extendSelectionBy = function (unitName) { var anchor, editor = this.editor; var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y); var range = editor.selection[unitName](cursor.row, cursor.column); - editor.$blockScrolling++; if (this.$clickSelection) { var cmpStart = this.$clickSelection.comparePoint(range.start); var cmpEnd = this.$clickSelection.comparePoint(range.end); - if (cmpStart == -1 && cmpEnd <= 0) { anchor = this.$clickSelection.end; if (range.end.row != cursor.row || range.end.column != cursor.column) cursor = range.start; - } else if (cmpEnd == 1 && cmpStart >= 0) { + } + else if (cmpEnd == 1 && cmpStart >= 0) { anchor = this.$clickSelection.start; if (range.start.row != cursor.row || range.start.column != cursor.column) cursor = range.end; - } else if (cmpStart == -1 && cmpEnd == 1) { + } + else if (cmpStart == -1 && cmpEnd == 1) { cursor = range.end; anchor = range.start; - } else { + } + else { var orientedRange = calcRangeOrientation(this.$clickSelection, cursor); cursor = orientedRange.cursor; anchor = orientedRange.anchor; @@ -2949,34 +2811,22 @@ function DefaultHandlers(mouseHandler) { editor.selection.setSelectionAnchor(anchor.row, anchor.column); } editor.selection.selectToPosition(cursor); - editor.$blockScrolling--; editor.renderer.scrollCursorIntoView(); }; - - this.selectEnd = - this.selectAllEnd = - this.selectByWordsEnd = - this.selectByLinesEnd = function() { + DefaultHandlers.prototype.selectByLinesEnd = function () { this.$clickSelection = null; this.editor.unsetStyle("ace_selecting"); - if (this.editor.renderer.scroller.releaseCapture) { - this.editor.renderer.scroller.releaseCapture(); - } }; - - this.focusWait = function() { + DefaultHandlers.prototype.focusWait = function () { var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); var time = Date.now(); - - if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimout) + if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout) this.startSelect(this.mousedownEvent.getDocumentPosition()); }; - - this.onDoubleClick = function(ev) { + DefaultHandlers.prototype.onDoubleClick = function (ev) { var pos = ev.getDocumentPosition(); var editor = this.editor; var session = editor.session; - var range = session.getBracketRange(pos); if (range) { if (range.isEmpty()) { @@ -2984,73 +2834,65 @@ function DefaultHandlers(mouseHandler) { range.end.column++; } this.setState("select"); - } else { + } + else { range = editor.selection.getWordRange(pos.row, pos.column); this.setState("selectByWords"); } this.$clickSelection = range; this.select(); }; - - this.onTripleClick = function(ev) { + DefaultHandlers.prototype.onTripleClick = function (ev) { var pos = ev.getDocumentPosition(); var editor = this.editor; - this.setState("selectByLines"); var range = editor.getSelectionRange(); if (range.isMultiLine() && range.contains(pos.row, pos.column)) { this.$clickSelection = editor.selection.getLineRange(range.start.row); this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end; - } else { + } + else { this.$clickSelection = editor.selection.getLineRange(pos.row); } this.select(); }; - - this.onQuadClick = function(ev) { + DefaultHandlers.prototype.onQuadClick = function (ev) { var editor = this.editor; - editor.selectAll(); this.$clickSelection = editor.getSelectionRange(); this.setState("selectAll"); }; - - this.onMouseWheel = function(ev) { + DefaultHandlers.prototype.onMouseWheel = function (ev) { if (ev.getAccelKey()) return; if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) { ev.wheelX = ev.wheelY; ev.wheelY = 0; } - var editor = this.editor; - if (!this.$lastScroll) this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 }; - var prevScroll = this.$lastScroll; var t = ev.domEvent.timeStamp; var dt = t - prevScroll.t; - var vx = ev.wheelX / dt; - var vy = ev.wheelY / dt; + var vx = dt ? ev.wheelX / dt : prevScroll.vx; + var vy = dt ? ev.wheelY / dt : prevScroll.vy; if (dt < SCROLL_COOLDOWN_T) { vx = (vx + prevScroll.vx) / 2; vy = (vy + prevScroll.vy) / 2; } - var direction = Math.abs(vx / vy); - var canScroll = false; if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0)) canScroll = true; if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed)) canScroll = true; - if (canScroll) { prevScroll.allowed = t; - } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) { - var isSlower = Math.abs(vx) <= 1.1 * Math.abs(prevScroll.vx) - && Math.abs(vy) <= 1.1 * Math.abs(prevScroll.vy); + } + else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) { + var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx) + && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy); if (isSlower) { canScroll = true; prevScroll.allowed = t; @@ -3059,29 +2901,23 @@ function DefaultHandlers(mouseHandler) { prevScroll.allowed = 0; } } - prevScroll.t = t; prevScroll.vx = vx; prevScroll.vy = vy; - if (canScroll) { editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed); return ev.stop(); } }; - - this.onTouchMove = function(ev) { - this.editor._emit("mousewheel", ev); - }; - -}).call(DefaultHandlers.prototype); - + return DefaultHandlers; +}()); +DefaultHandlers.prototype.selectEnd = DefaultHandlers.prototype.selectByLinesEnd; +DefaultHandlers.prototype.selectAllEnd = DefaultHandlers.prototype.selectByLinesEnd; +DefaultHandlers.prototype.selectByWordsEnd = DefaultHandlers.prototype.selectByLinesEnd; exports.DefaultHandlers = DefaultHandlers; - function calcDistance(ax, ay, bx, by) { return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); } - function calcRangeOrientation(range, cursor) { if (range.start.row == range.end.row) var cmp = 2 * cursor.column - range.start.column - range.end.column; @@ -3089,51 +2925,91 @@ function calcRangeOrientation(range, cursor) { var cmp = cursor.column - 4; else var cmp = 2 * cursor.row - range.start.row - range.end.row; - if (cmp < 0) - return {cursor: range.start, anchor: range.end}; + return { cursor: range.start, anchor: range.end }; else - return {cursor: range.end, anchor: range.start}; + return { cursor: range.end, anchor: range.start }; } }); -define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"], function(require, exports, module) { -"use strict"; +define("ace/lib/scroll",["require","exports","module"], function(require, exports, module){exports.preventParentScroll = function preventParentScroll(event) { + event.stopPropagation(); + var target = event.currentTarget; + var contentOverflows = target.scrollHeight > target.clientHeight; + if (!contentOverflows) { + event.preventDefault(); + } +}; -var oop = require("./lib/oop"); +}); + +define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range","ace/lib/scroll"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; var dom = require("./lib/dom"); -function Tooltip (parentNode) { - this.isOpen = false; - this.$element = null; - this.$parentNode = parentNode; -} - -(function() { - this.$init = function() { +var event = require("./lib/event"); +var Range = require("./range").Range; +var preventParentScroll = require("./lib/scroll").preventParentScroll; +var CLASSNAME = "ace_tooltip"; +var Tooltip = /** @class */ (function () { + function Tooltip(parentNode) { + this.isOpen = false; + this.$element = null; + this.$parentNode = parentNode; + } + Tooltip.prototype.$init = function () { this.$element = dom.createElement("div"); - this.$element.className = "ace_tooltip"; + this.$element.className = CLASSNAME; this.$element.style.display = "none"; this.$parentNode.appendChild(this.$element); return this.$element; }; - this.getElement = function() { + Tooltip.prototype.getElement = function () { return this.$element || this.$init(); }; - this.setText = function(text) { - dom.setInnerText(this.getElement(), text); + Tooltip.prototype.setText = function (text) { + this.getElement().textContent = text; }; - this.setHtml = function(html) { + Tooltip.prototype.setHtml = function (html) { this.getElement().innerHTML = html; }; - this.setPosition = function(x, y) { + Tooltip.prototype.setPosition = function (x, y) { this.getElement().style.left = x + "px"; this.getElement().style.top = y + "px"; }; - this.setClassName = function(className) { + Tooltip.prototype.setClassName = function (className) { dom.addCssClass(this.getElement(), className); }; - this.show = function(text, x, y) { + Tooltip.prototype.setTheme = function (theme) { + this.$element.className = CLASSNAME + " " + + (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); + }; + Tooltip.prototype.show = function (text, x, y) { if (text != null) this.setText(text); if (x != null && y != null) @@ -3143,55 +3019,314 @@ function Tooltip (parentNode) { this.isOpen = true; } }; - - this.hide = function() { + Tooltip.prototype.hide = function (e) { if (this.isOpen) { this.getElement().style.display = "none"; + this.getElement().className = CLASSNAME; this.isOpen = false; } }; - this.getHeight = function() { + Tooltip.prototype.getHeight = function () { return this.getElement().offsetHeight; }; - this.getWidth = function() { + Tooltip.prototype.getWidth = function () { return this.getElement().offsetWidth; }; - - this.destroy = function() { + Tooltip.prototype.destroy = function () { this.isOpen = false; if (this.$element && this.$element.parentNode) { this.$element.parentNode.removeChild(this.$element); } }; - -}).call(Tooltip.prototype); - + return Tooltip; +}()); +var PopupManager = /** @class */ (function () { + function PopupManager() { + this.popups = []; + } + PopupManager.prototype.addPopup = function (popup) { + this.popups.push(popup); + this.updatePopups(); + }; + PopupManager.prototype.removePopup = function (popup) { + var index = this.popups.indexOf(popup); + if (index !== -1) { + this.popups.splice(index, 1); + this.updatePopups(); + } + }; + PopupManager.prototype.updatePopups = function () { + var e_1, _a, e_2, _b; + this.popups.sort(function (a, b) { return b.priority - a.priority; }); + var visiblepopups = []; + try { + for (var _c = __values(this.popups), _d = _c.next(); !_d.done; _d = _c.next()) { + var popup = _d.value; + var shouldDisplay = true; + try { + for (var visiblepopups_1 = (e_2 = void 0, __values(visiblepopups)), visiblepopups_1_1 = visiblepopups_1.next(); !visiblepopups_1_1.done; visiblepopups_1_1 = visiblepopups_1.next()) { + var visiblePopup = visiblepopups_1_1.value; + if (this.doPopupsOverlap(visiblePopup, popup)) { + shouldDisplay = false; + break; + } + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (visiblepopups_1_1 && !visiblepopups_1_1.done && (_b = visiblepopups_1.return)) _b.call(visiblepopups_1); + } + finally { if (e_2) throw e_2.error; } + } + if (shouldDisplay) { + visiblepopups.push(popup); + } + else { + popup.hide(); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) _a.call(_c); + } + finally { if (e_1) throw e_1.error; } + } + }; + PopupManager.prototype.doPopupsOverlap = function (popupA, popupB) { + var rectA = popupA.getElement().getBoundingClientRect(); + var rectB = popupB.getElement().getBoundingClientRect(); + return (rectA.left < rectB.right && rectA.right > rectB.left && rectA.top < rectB.bottom && rectA.bottom + > rectB.top); + }; + return PopupManager; +}()); +var popupManager = new PopupManager(); +exports.popupManager = popupManager; exports.Tooltip = Tooltip; +var HoverTooltip = /** @class */ (function (_super) { + __extends(HoverTooltip, _super); + function HoverTooltip(parentNode) { + if (parentNode === void 0) { parentNode = document.body; } + var _this = _super.call(this, parentNode) || this; + _this.timeout = undefined; + _this.lastT = 0; + _this.idleTime = 350; + _this.lastEvent = undefined; + _this.onMouseOut = _this.onMouseOut.bind(_this); + _this.onMouseMove = _this.onMouseMove.bind(_this); + _this.waitForHover = _this.waitForHover.bind(_this); + _this.hide = _this.hide.bind(_this); + var el = _this.getElement(); + el.style.whiteSpace = "pre-wrap"; + el.style.pointerEvents = "auto"; + el.addEventListener("mouseout", _this.onMouseOut); + el.tabIndex = -1; + el.addEventListener("blur", function () { + if (!el.contains(document.activeElement)) + this.hide(); + }.bind(_this)); + el.addEventListener("wheel", preventParentScroll); + return _this; + } + HoverTooltip.prototype.addToEditor = function (editor) { + editor.on("mousemove", this.onMouseMove); + editor.on("mousedown", this.hide); + editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.onMouseOut, true); + }; + HoverTooltip.prototype.removeFromEditor = function (editor) { + editor.off("mousemove", this.onMouseMove); + editor.off("mousedown", this.hide); + editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.onMouseOut, true); + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + }; + HoverTooltip.prototype.onMouseMove = function (e, editor) { + this.lastEvent = e; + this.lastT = Date.now(); + var isMousePressed = editor.$mouseHandler.isMousePressed; + if (this.isOpen) { + var pos = this.lastEvent && this.lastEvent.getDocumentPosition(); + if (!this.range + || !this.range.contains(pos.row, pos.column) + || isMousePressed + || this.isOutsideOfText(this.lastEvent)) { + this.hide(); + } + } + if (this.timeout || isMousePressed) + return; + this.lastEvent = e; + this.timeout = setTimeout(this.waitForHover, this.idleTime); + }; + HoverTooltip.prototype.waitForHover = function () { + if (this.timeout) + clearTimeout(this.timeout); + var dt = Date.now() - this.lastT; + if (this.idleTime - dt > 10) { + this.timeout = setTimeout(this.waitForHover, this.idleTime - dt); + return; + } + this.timeout = null; + if (this.lastEvent && !this.isOutsideOfText(this.lastEvent)) { + this.$gatherData(this.lastEvent, this.lastEvent.editor); + } + }; + HoverTooltip.prototype.isOutsideOfText = function (e) { + var editor = e.editor; + var docPos = e.getDocumentPosition(); + var line = editor.session.getLine(docPos.row); + if (docPos.column == line.length) { + var screenPos = editor.renderer.pixelToScreenCoordinates(e.clientX, e.clientY); + var clippedPos = editor.session.documentToScreenPosition(docPos.row, docPos.column); + if (clippedPos.column != screenPos.column + || clippedPos.row != screenPos.row) { + return true; + } + } + return false; + }; + HoverTooltip.prototype.setDataProvider = function (value) { + this.$gatherData = value; + }; + HoverTooltip.prototype.showForRange = function (editor, range, domNode, startingEvent) { + var MARGIN = 10; + if (startingEvent && startingEvent != this.lastEvent) + return; + if (this.isOpen && document.activeElement == this.getElement()) + return; + var renderer = editor.renderer; + if (!this.isOpen) { + popupManager.addPopup(this); + this.$registerCloseEvents(); + this.setTheme(renderer.theme); + } + this.isOpen = true; + this.addMarker(range, editor.session); + this.range = Range.fromPoints(range.start, range.end); + var position = renderer.textToScreenCoordinates(range.start.row, range.start.column); + var rect = renderer.scroller.getBoundingClientRect(); + if (position.pageX < rect.left) + position.pageX = rect.left; + var element = this.getElement(); + element.innerHTML = ""; + element.appendChild(domNode); + element.style.maxHeight = ""; + element.style.display = "block"; + var labelHeight = element.clientHeight; + var labelWidth = element.clientWidth; + var spaceBelow = window.innerHeight - position.pageY - renderer.lineHeight; + var isAbove = true; + if (position.pageY - labelHeight < 0 && position.pageY < spaceBelow) { + isAbove = false; + } + element.style.maxHeight = (isAbove ? position.pageY : spaceBelow) - MARGIN + "px"; + element.style.top = isAbove ? "" : position.pageY + renderer.lineHeight + "px"; + element.style.bottom = isAbove ? window.innerHeight - position.pageY + "px" : ""; + element.style.left = Math.min(position.pageX, window.innerWidth - labelWidth - MARGIN) + "px"; + }; + HoverTooltip.prototype.addMarker = function (range, session) { + if (this.marker) { + this.$markerSession.removeMarker(this.marker); + } + this.$markerSession = session; + this.marker = session && session.addMarker(range, "ace_highlight-marker", "text"); + }; + HoverTooltip.prototype.hide = function (e) { + if (!e && document.activeElement == this.getElement()) + return; + if (e && e.target && (e.type != "keydown" || e.ctrlKey || e.metaKey) && this.$element.contains(e.target)) + return; + this.lastEvent = null; + if (this.timeout) + clearTimeout(this.timeout); + this.timeout = null; + this.addMarker(null); + if (this.isOpen) { + this.$removeCloseEvents(); + this.getElement().style.display = "none"; + this.isOpen = false; + popupManager.removePopup(this); + } + }; + HoverTooltip.prototype.$registerCloseEvents = function () { + window.addEventListener("keydown", this.hide, true); + window.addEventListener("wheel", this.hide, true); + window.addEventListener("mousedown", this.hide, true); + }; + HoverTooltip.prototype.$removeCloseEvents = function () { + window.removeEventListener("keydown", this.hide, true); + window.removeEventListener("wheel", this.hide, true); + window.removeEventListener("mousedown", this.hide, true); + }; + HoverTooltip.prototype.onMouseOut = function (e) { + if (this.timeout) { + clearTimeout(this.timeout); + this.timeout = null; + } + this.lastEvent = null; + if (!this.isOpen) + return; + if (!e.relatedTarget || this.getElement().contains(e.relatedTarget)) + return; + if (e && e.currentTarget.contains(e.relatedTarget)) + return; + if (!e.relatedTarget.classList.contains("ace_content")) + this.hide(); + }; + return HoverTooltip; +}(Tooltip)); +exports.HoverTooltip = HoverTooltip; + }); -define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"], function(require, exports, module) { -"use strict"; +define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/tooltip","ace/config"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; var dom = require("../lib/dom"); -var oop = require("../lib/oop"); var event = require("../lib/event"); var Tooltip = require("../tooltip").Tooltip; - +var nls = require("../config").nls; function GutterHandler(mouseHandler) { var editor = mouseHandler.editor; var gutter = editor.renderer.$gutterLayer; - var tooltip = new GutterTooltip(editor.container); - - mouseHandler.editor.setDefaultHandler("guttermousedown", function(e) { + var tooltip = new GutterTooltip(editor); + mouseHandler.editor.setDefaultHandler("guttermousedown", function (e) { if (!editor.isFocused() || e.getButton() != 0) return; var gutterRegion = gutter.getRegion(e); - if (gutterRegion == "foldWidgets") return; - var row = e.getDocumentPosition().row; var selection = editor.session.selection; - if (e.getShiftKey()) selection.selectTo(row, 0); else { @@ -3205,16 +3340,9 @@ function GutterHandler(mouseHandler) { mouseHandler.captureMouse(e); return e.preventDefault(); }); - - - var tooltipTimeout, mouseEvent, tooltipAnnotation; - + var tooltipTimeout, mouseEvent; function showTooltip() { var row = mouseEvent.getDocumentPosition().row; - var annotation = gutter.$annotations[row]; - if (!annotation) - return hideTooltip(); - var maxRow = editor.session.getLength(); if (row == maxRow) { var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row; @@ -3222,54 +3350,49 @@ function GutterHandler(mouseHandler) { if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column)) return hideTooltip(); } - - if (tooltipAnnotation == annotation) + tooltip.showTooltip(row); + if (!tooltip.isOpen) return; - tooltipAnnotation = annotation.text.join("
"); - - tooltip.setHtml(tooltipAnnotation); - tooltip.show(); - editor._signal("showGutterTooltip", tooltip); editor.on("mousewheel", hideTooltip); - if (mouseHandler.$tooltipFollowsMouse) { moveTooltip(mouseEvent); - } else { - var gutterElement = mouseEvent.domEvent.target; - var rect = gutterElement.getBoundingClientRect(); - var style = tooltip.getElement().style; - style.left = rect.right + "px"; - style.top = rect.bottom + "px"; + } + else { + var gutterRow = mouseEvent.getGutterRow(); + var gutterCell = gutter.$lines.get(gutterRow); + if (gutterCell) { + var gutterElement = gutterCell.element.querySelector(".ace_gutter_annotation"); + var rect = gutterElement.getBoundingClientRect(); + var style = tooltip.getElement().style; + style.left = rect.right + "px"; + style.top = rect.bottom + "px"; + } + else { + moveTooltip(mouseEvent); + } } } - function hideTooltip() { if (tooltipTimeout) tooltipTimeout = clearTimeout(tooltipTimeout); - if (tooltipAnnotation) { - tooltip.hide(); - tooltipAnnotation = null; - editor._signal("hideGutterTooltip", tooltip); - editor.removeEventListener("mousewheel", hideTooltip); + if (tooltip.isOpen) { + tooltip.hideTooltip(); + editor.off("mousewheel", hideTooltip); } } - function moveTooltip(e) { tooltip.setPosition(e.x, e.y); } - - mouseHandler.editor.setDefaultHandler("guttermousemove", function(e) { + mouseHandler.editor.setDefaultHandler("guttermousemove", function (e) { var target = e.domEvent.target || e.domEvent.srcElement; if (dom.hasCssClass(target, "ace_fold-widget")) return hideTooltip(); - - if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse) + if (tooltip.isOpen && mouseHandler.$tooltipFollowsMouse) moveTooltip(e); - mouseEvent = e; if (tooltipTimeout) return; - tooltipTimeout = setTimeout(function() { + tooltipTimeout = setTimeout(function () { tooltipTimeout = null; if (mouseEvent && !mouseHandler.isMousePressed) showTooltip(); @@ -3277,29 +3400,27 @@ function GutterHandler(mouseHandler) { hideTooltip(); }, 50); }); - - event.addListener(editor.renderer.$gutter, "mouseout", function(e) { + event.addListener(editor.renderer.$gutter, "mouseout", function (e) { mouseEvent = null; - if (!tooltipAnnotation || tooltipTimeout) + if (!tooltip.isOpen || tooltipTimeout) return; - - tooltipTimeout = setTimeout(function() { + tooltipTimeout = setTimeout(function () { tooltipTimeout = null; hideTooltip(); }, 50); - }); - + }, editor); editor.on("changeSession", hideTooltip); + editor.on("input", hideTooltip); } - -function GutterTooltip(parentNode) { - Tooltip.call(this, parentNode); -} - -oop.inherits(GutterTooltip, Tooltip); - -(function(){ - this.setPosition = function(x, y) { +exports.GutterHandler = GutterHandler; +var GutterTooltip = /** @class */ (function (_super) { + __extends(GutterTooltip, _super); + function GutterTooltip(editor) { + var _this = _super.call(this, editor.container) || this; + _this.editor = editor; + return _this; + } + GutterTooltip.prototype.setPosition = function (x, y) { var windowWidth = window.innerWidth || document.documentElement.clientWidth; var windowHeight = window.innerHeight || document.documentElement.clientHeight; var width = this.getWidth(); @@ -3314,64 +3435,144 @@ oop.inherits(GutterTooltip, Tooltip); } Tooltip.prototype.setPosition.call(this, x, y); }; - -}).call(GutterTooltip.prototype); - - - -exports.GutterHandler = GutterHandler; + Object.defineProperty(GutterTooltip, "annotationLabels", { + get: function () { + return { + error: { singular: nls("error"), plural: nls("errors") }, + warning: { singular: nls("warning"), plural: nls("warnings") }, + info: { singular: nls("information message"), plural: nls("information messages") } + }; + }, + enumerable: false, + configurable: true + }); + GutterTooltip.prototype.showTooltip = function (row) { + var gutter = this.editor.renderer.$gutterLayer; + var annotationsInRow = gutter.$annotations[row]; + var annotation; + if (annotationsInRow) + annotation = { text: Array.from(annotationsInRow.text), type: Array.from(annotationsInRow.type) }; + else + annotation = { text: [], type: [] }; + var fold = gutter.session.getFoldLine(row); + if (fold && gutter.$showFoldedAnnotations) { + var annotationsInFold = { error: [], warning: [], info: [] }; + var mostSevereAnnotationInFoldType; + for (var i = row + 1; i <= fold.end.row; i++) { + if (!gutter.$annotations[i]) + continue; + for (var j = 0; j < gutter.$annotations[i].text.length; j++) { + var annotationType = gutter.$annotations[i].type[j]; + annotationsInFold[annotationType].push(gutter.$annotations[i].text[j]); + if (annotationType === "error") { + mostSevereAnnotationInFoldType = "error_fold"; + continue; + } + if (annotationType === "warning") { + mostSevereAnnotationInFoldType = "warning_fold"; + continue; + } + } + } + if (mostSevereAnnotationInFoldType === "error_fold" || mostSevereAnnotationInFoldType === "warning_fold") { + var summaryFoldedAnnotations = "".concat(GutterTooltip.annotationsToSummaryString(annotationsInFold), " in folded code."); + annotation.text.push(summaryFoldedAnnotations); + annotation.type.push(mostSevereAnnotationInFoldType); + } + } + if (annotation.text.length === 0) + return this.hide(); + var annotationMessages = { error: [], warning: [], info: [] }; + var iconClassName = gutter.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; + for (var i = 0; i < annotation.text.length; i++) { + var line = " ").concat(annotation.text[i]); + annotationMessages[annotation.type[i].replace("_fold", "")].push(line); + } + var tooltipContent = [].concat(annotationMessages.error, annotationMessages.warning, annotationMessages.info).join("
"); + this.setHtml(tooltipContent); + this.$element.setAttribute("aria-live", "polite"); + if (!this.isOpen) { + this.setTheme(this.editor.renderer.theme); + this.setClassName("ace_gutter-tooltip"); + } + this.show(); + this.editor._signal("showGutterTooltip", this); + }; + GutterTooltip.prototype.hideTooltip = function () { + this.$element.removeAttribute("aria-live"); + this.hide(); + this.editor._signal("hideGutterTooltip", this); + }; + GutterTooltip.annotationsToSummaryString = function (annotations) { + var e_1, _a; + var summary = []; + var annotationTypes = ['error', 'warning', 'info']; + try { + for (var annotationTypes_1 = __values(annotationTypes), annotationTypes_1_1 = annotationTypes_1.next(); !annotationTypes_1_1.done; annotationTypes_1_1 = annotationTypes_1.next()) { + var annotationType = annotationTypes_1_1.value; + if (!annotations[annotationType].length) + continue; + var label = annotations[annotationType].length === 1 ? GutterTooltip.annotationLabels[annotationType].singular : GutterTooltip.annotationLabels[annotationType].plural; + summary.push("".concat(annotations[annotationType].length, " ").concat(label)); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (annotationTypes_1_1 && !annotationTypes_1_1.done && (_a = annotationTypes_1.return)) _a.call(annotationTypes_1); + } + finally { if (e_1) throw e_1.error; } + } + return summary.join(", "); + }; + return GutterTooltip; +}(Tooltip)); +exports.GutterTooltip = GutterTooltip; }); -define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - +define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; var event = require("../lib/event"); var useragent = require("../lib/useragent"); -var MouseEvent = exports.MouseEvent = function(domEvent, editor) { - this.domEvent = domEvent; - this.editor = editor; - - this.x = this.clientX = domEvent.clientX; - this.y = this.clientY = domEvent.clientY; - - this.$pos = null; - this.$inSelection = null; - - this.propagationStopped = false; - this.defaultPrevented = false; -}; - -(function() { - - this.stopPropagation = function() { +var MouseEvent = /** @class */ (function () { + function MouseEvent(domEvent, editor) { this.speed; this.wheelX; this.wheelY; + this.domEvent = domEvent; + this.editor = editor; + this.x = this.clientX = domEvent.clientX; + this.y = this.clientY = domEvent.clientY; + this.$pos = null; + this.$inSelection = null; + this.propagationStopped = false; + this.defaultPrevented = false; + } + MouseEvent.prototype.stopPropagation = function () { event.stopPropagation(this.domEvent); this.propagationStopped = true; }; - - this.preventDefault = function() { + MouseEvent.prototype.preventDefault = function () { event.preventDefault(this.domEvent); this.defaultPrevented = true; }; - - this.stop = function() { + MouseEvent.prototype.stop = function () { this.stopPropagation(); this.preventDefault(); }; - this.getDocumentPosition = function() { + MouseEvent.prototype.getDocumentPosition = function () { if (this.$pos) return this.$pos; - this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY); return this.$pos; }; - this.inSelection = function() { + MouseEvent.prototype.getGutterRow = function () { + var documentRow = this.getDocumentPosition().row; + var screenRow = this.editor.session.documentToScreenRow(documentRow, 0); + var screenTopRow = this.editor.session.documentToScreenRow(this.editor.renderer.$gutterLayer.$lines.get(0).row, 0); + return screenRow - screenTopRow; + }; + MouseEvent.prototype.inSelection = function () { if (this.$inSelection !== null) return this.$inSelection; - var editor = this.editor; - - var selectionRange = editor.getSelectionRange(); if (selectionRange.isEmpty()) this.$inSelection = false; @@ -3379,52 +3580,40 @@ var MouseEvent = exports.MouseEvent = function(domEvent, editor) { var pos = this.getDocumentPosition(); this.$inSelection = selectionRange.contains(pos.row, pos.column); } - return this.$inSelection; }; - this.getButton = function() { + MouseEvent.prototype.getButton = function () { return event.getButton(this.domEvent); }; - this.getShiftKey = function() { + MouseEvent.prototype.getShiftKey = function () { return this.domEvent.shiftKey; }; - - this.getAccelKey = useragent.isMac - ? function() { return this.domEvent.metaKey; } - : function() { return this.domEvent.ctrlKey; }; - -}).call(MouseEvent.prototype); + MouseEvent.prototype.getAccelKey = function () { + return useragent.isMac ? this.domEvent.metaKey : this.domEvent.ctrlKey; + }; + return MouseEvent; +}()); +exports.MouseEvent = MouseEvent; }); -define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - +define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"], function(require, exports, module){"use strict"; var dom = require("../lib/dom"); var event = require("../lib/event"); var useragent = require("../lib/useragent"); - var AUTOSCROLL_DELAY = 200; var SCROLL_CURSOR_DELAY = 200; var SCROLL_CURSOR_HYSTERESIS = 5; - function DragdropHandler(mouseHandler) { - var editor = mouseHandler.editor; - - var blankImage = dom.createElement("img"); - blankImage.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; - if (useragent.isOpera) - blankImage.style.cssText = "width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;"; - + var dragImage = dom.createElement("div"); + dragImage.style.cssText = "top:-100px;position:absolute;z-index:2147483647;opacity:0.5"; + dragImage.textContent = "\xa0"; var exports = ["dragWait", "dragWaitEnd", "startDrag", "dragReadyEnd", "onMouseDrag"]; - - exports.forEach(function(x) { - mouseHandler[x] = this[x]; + exports.forEach(function (x) { + mouseHandler[x] = this[x]; }, this); - editor.addEventListener("mousedown", this.onMouseDown.bind(mouseHandler)); - - + editor.on("mousedown", this.onMouseDown.bind(mouseHandler)); var mouseTarget = editor.container; var dragSelectionMarker, x, y; var timerId, range; @@ -3434,36 +3623,29 @@ function DragdropHandler(mouseHandler) { var autoScrollStartTime; var cursorMovedTime; var cursorPointOnCaretMoved; - - this.onDragStart = function(e) { + this.onDragStart = function (e) { if (this.cancelDrag || !mouseTarget.draggable) { var self = this; - setTimeout(function(){ + setTimeout(function () { self.startSelect(); self.captureMouse(e); }, 0); return e.preventDefault(); } range = editor.getSelectionRange(); - var dataTransfer = e.dataTransfer; dataTransfer.effectAllowed = editor.getReadOnly() ? "copy" : "copyMove"; - if (useragent.isOpera) { - editor.container.appendChild(blankImage); - blankImage.scrollTop = 0; - } - dataTransfer.setDragImage && dataTransfer.setDragImage(blankImage, 0, 0); - if (useragent.isOpera) { - editor.container.removeChild(blankImage); - } + editor.container.appendChild(dragImage); + dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0); + setTimeout(function () { + editor.container.removeChild(dragImage); + }); dataTransfer.clearData(); dataTransfer.setData("Text", editor.session.getTextRange()); - isInternal = true; this.setState("drag"); }; - - this.onDragEnd = function(e) { + this.onDragEnd = function (e) { mouseTarget.draggable = false; isInternal = false; this.setState(null); @@ -3471,13 +3653,12 @@ function DragdropHandler(mouseHandler) { var dropEffect = e.dataTransfer.dropEffect; if (!dragOperation && dropEffect == "move") editor.session.remove(editor.getSelectionRange()); - editor.renderer.$cursorLayer.setBlinking(true); + editor.$resetCursorStyle(); } this.editor.unsetStyle("ace_dragging"); this.editor.renderer.setCursorStyle(""); }; - - this.onDragEnter = function(e) { + this.onDragEnter = function (e) { if (editor.getReadOnly() || !canAccept(e.dataTransfer)) return; x = e.clientX; @@ -3488,8 +3669,7 @@ function DragdropHandler(mouseHandler) { e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); return event.preventDefault(e); }; - - this.onDragOver = function(e) { + this.onDragOver = function (e) { if (editor.getReadOnly() || !canAccept(e.dataTransfer)) return; x = e.clientX; @@ -3500,12 +3680,10 @@ function DragdropHandler(mouseHandler) { } if (onMouseMoveTimer !== null) onMouseMoveTimer = null; - e.dataTransfer.dropEffect = dragOperation = getDropEffect(e); return event.preventDefault(e); }; - - this.onDragLeave = function(e) { + this.onDragLeave = function (e) { counter--; if (counter <= 0 && dragSelectionMarker) { clearDragMarker(); @@ -3513,8 +3691,7 @@ function DragdropHandler(mouseHandler) { return event.preventDefault(e); } }; - - this.onDrop = function(e) { + this.onDrop = function (e) { if (!dragCursor) return; var dataTransfer = e.dataTransfer; @@ -3526,7 +3703,8 @@ function DragdropHandler(mouseHandler) { start: dragCursor, end: dragCursor }; - } else { + } + else { range = editor.moveText(range, dragCursor); } break; @@ -3534,7 +3712,8 @@ function DragdropHandler(mouseHandler) { range = editor.moveText(range, dragCursor, true); break; } - } else { + } + else { var dropData = dataTransfer.getData('Text'); range = { start: dragCursor, @@ -3546,53 +3725,50 @@ function DragdropHandler(mouseHandler) { clearDragMarker(); return event.preventDefault(e); }; - - event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler)); - event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler)); - event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler)); - event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler)); - event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler)); - event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler)); - + event.addListener(mouseTarget, "dragstart", this.onDragStart.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragend", this.onDragEnd.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragenter", this.onDragEnter.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragover", this.onDragOver.bind(mouseHandler), editor); + event.addListener(mouseTarget, "dragleave", this.onDragLeave.bind(mouseHandler), editor); + event.addListener(mouseTarget, "drop", this.onDrop.bind(mouseHandler), editor); function scrollCursorIntoView(cursor, prevCursor) { var now = Date.now(); var vMovement = !prevCursor || cursor.row != prevCursor.row; var hMovement = !prevCursor || cursor.column != prevCursor.column; if (!cursorMovedTime || vMovement || hMovement) { - editor.$blockScrolling += 1; editor.moveCursorToPosition(cursor); - editor.$blockScrolling -= 1; cursorMovedTime = now; - cursorPointOnCaretMoved = {x: x, y: y}; - } else { + cursorPointOnCaretMoved = { x: x, y: y }; + } + else { var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y); if (distance > SCROLL_CURSOR_HYSTERESIS) { cursorMovedTime = null; - } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { + } + else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) { editor.renderer.scrollCursorIntoView(); cursorMovedTime = null; } } } - function autoScroll(cursor, prevCursor) { var now = Date.now(); var lineHeight = editor.renderer.layerConfig.lineHeight; var characterWidth = editor.renderer.layerConfig.characterWidth; var editorRect = editor.renderer.scroller.getBoundingClientRect(); var offsets = { - x: { - left: x - editorRect.left, - right: editorRect.right - x - }, - y: { - top: y - editorRect.top, - bottom: editorRect.bottom - y - } + x: { + left: x - editorRect.left, + right: editorRect.right - x + }, + y: { + top: y - editorRect.top, + bottom: editorRect.bottom - y + } }; var nearestXOffset = Math.min(offsets.x.left, offsets.x.right); var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom); - var scrollCursor = {row: cursor.row, column: cursor.column}; + var scrollCursor = { row: cursor.row, column: cursor.column }; if (nearestXOffset / characterWidth <= 2) { scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2); } @@ -3607,18 +3783,17 @@ function DragdropHandler(mouseHandler) { autoScrollStartTime = now; else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY) editor.renderer.scrollCursorIntoView(scrollCursor); - } else { + } + else { autoScrollStartTime = null; } } - function onDragInterval() { var prevCursor = dragCursor; dragCursor = editor.renderer.screenToTextCoordinates(x, y); scrollCursorIntoView(dragCursor, prevCursor); autoScroll(dragCursor, prevCursor); } - function addDragMarker() { range = editor.selection.toOrientedRange(); dragSelectionMarker = editor.session.addMarker(range, "ace_selection", editor.getSelectionStyle()); @@ -3631,16 +3806,13 @@ function DragdropHandler(mouseHandler) { counter = 0; event.addListener(document, "mousemove", onMouseMove); } - function clearDragMarker() { clearInterval(timerId); editor.session.removeMarker(dragSelectionMarker); dragSelectionMarker = null; - editor.$blockScrolling += 1; editor.selection.fromOrientedRange(range); - editor.$blockScrolling -= 1; if (editor.isFocused() && !isInternal) - editor.renderer.$cursorLayer.setBlinking(!editor.getReadOnly()); + editor.$resetCursorStyle(); range = null; dragCursor = null; counter = 0; @@ -3651,65 +3823,56 @@ function DragdropHandler(mouseHandler) { var onMouseMoveTimer = null; function onMouseMove() { if (onMouseMoveTimer == null) { - onMouseMoveTimer = setTimeout(function() { + onMouseMoveTimer = setTimeout(function () { if (onMouseMoveTimer != null && dragSelectionMarker) clearDragMarker(); }, 20); } } - function canAccept(dataTransfer) { var types = dataTransfer.types; - return !types || Array.prototype.some.call(types, function(type) { + return !types || Array.prototype.some.call(types, function (type) { return type == 'text/plain' || type == 'Text'; }); } - function getDropEffect(e) { var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized']; var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized']; - var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey; var effectAllowed = "uninitialized"; try { effectAllowed = e.dataTransfer.effectAllowed.toLowerCase(); - } catch (e) {} + } + catch (e) { } var dropEffect = "none"; - if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0) dropEffect = "copy"; else if (moveAllowed.indexOf(effectAllowed) >= 0) dropEffect = "move"; else if (copyAllowed.indexOf(effectAllowed) >= 0) dropEffect = "copy"; - return dropEffect; } } - -(function() { - - this.dragWait = function() { +(function () { + this.dragWait = function () { var interval = Date.now() - this.mousedownEvent.time; if (interval > this.editor.getDragDelay()) this.startDrag(); }; - - this.dragWaitEnd = function() { + this.dragWaitEnd = function () { var target = this.editor.container; target.draggable = false; this.startSelect(this.mousedownEvent.getDocumentPosition()); this.selectEnd(); }; - - this.dragReadyEnd = function(e) { - this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()); + this.dragReadyEnd = function (e) { + this.editor.$resetCursorStyle(); this.editor.unsetStyle("ace_dragging"); this.editor.renderer.setCursorStyle(""); this.dragWaitEnd(); }; - - this.startDrag = function(){ + this.startDrag = function () { this.cancelDrag = false; var editor = this.editor; var target = editor.container; @@ -3720,8 +3883,7 @@ function DragdropHandler(mouseHandler) { editor.renderer.setCursorStyle(cursorStyle); this.setState("dragReady"); }; - - this.onMouseDrag = function(e) { + this.onMouseDrag = function (e) { var target = this.editor.container; if (useragent.isIE && this.state == "dragReady") { var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y); @@ -3736,13 +3898,11 @@ function DragdropHandler(mouseHandler) { } } }; - - this.onMouseDown = function(e) { + this.onMouseDown = function (e) { if (!this.$dragEnabled) return; this.mousedownEvent = e; var editor = this.editor; - var inSelection = e.inSelection(); var button = e.getButton(); var clickCount = e.domEvent.detail || 1; @@ -3760,630 +3920,466 @@ function DragdropHandler(mouseHandler) { mouseTarget.draggable = true; } this.setState("dragWait"); - } else { + } + else { this.startDrag(); } this.captureMouse(e, this.onMouseDrag.bind(this)); e.defaultPrevented = true; } }; - }).call(DragdropHandler.prototype); - - function calcDistance(ax, ay, bx, by) { return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2)); } - exports.DragdropHandler = DragdropHandler; }); -define("ace/lib/net",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; -var dom = require("./dom"); - -exports.get = function (url, callback) { - var xhr = new XMLHttpRequest(); - xhr.open('GET', url, true); - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - callback(xhr.responseText); - } - }; - xhr.send(null); -}; - -exports.loadScript = function(path, callback) { - var head = dom.getDocumentHead(); - var s = document.createElement('script'); - - s.src = path; - head.appendChild(s); - - s.onload = s.onreadystatechange = function(_, isAbort) { - if (isAbort || !s.readyState || s.readyState == "loaded" || s.readyState == "complete") { - s = s.onload = s.onreadystatechange = null; - if (!isAbort) - callback(); - } - }; -}; -exports.qualifyURL = function(url) { - var a = document.createElement('a'); - a.href = url; - return a.href; -}; - -}); - -define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - -EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i= 2 + ? editor.selection.getLineRange(pos.row) + : editor.session.getBracketRange(pos); + if (range && !range.isEmpty()) { + editor.selection.setRange(range); + } + else { + editor.selection.selectWord(); + } + mode = "wait"; + } + event.addListener(el, "contextmenu", function (e) { + if (!pressed) + return; + var textarea = editor.textInput.getElement(); + textarea.focus(); + }, editor); + event.addListener(el, "touchstart", function (e) { + var touches = e.touches; + if (longTouchTimer || touches.length > 1) { + clearTimeout(longTouchTimer); + longTouchTimer = null; + touchStartT = -1; + mode = "zoom"; return; - var opt = this.$options[name]; - if (!opt) { - return warn('misspelled option "' + name + '"'); } - if (opt.forwardTo) - return this[opt.forwardTo] && this[opt.forwardTo].setOption(name, value); - - if (!opt.handlesSet) - this["$" + name] = value; - if (opt && opt.set) - opt.set.call(this, value); - }, - getOption: function(name) { - var opt = this.$options[name]; - if (!opt) { - return warn('misspelled option "' + name + '"'); + pressed = editor.$mouseHandler.isMousePressed = true; + var h = editor.renderer.layerConfig.lineHeight; + var w = editor.renderer.layerConfig.lineHeight; + var t = e.timeStamp; + lastT = t; + var touchObj = touches[0]; + var x = touchObj.clientX; + var y = touchObj.clientY; + if (Math.abs(startX - x) + Math.abs(startY - y) > h) + touchStartT = -1; + startX = e.clientX = x; + startY = e.clientY = y; + vX = vY = 0; + var ev = new MouseEvent(e, editor); + pos = ev.getDocumentPosition(); + if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) { + clickCount++; + e.preventDefault(); + e.button = 0; + switchToSelectionMode(); } - if (opt.forwardTo) - return this[opt.forwardTo] && this[opt.forwardTo].getOption(name); - return opt && opt.get ? opt.get.call(this) : this["$" + name]; - } -}; - -function warn(message) { - if (typeof console != "undefined" && console.warn) - console.warn.apply(console, arguments); -} - -function reportError(msg, data) { - var e = new Error(msg); - e.data = data; - if (typeof console == "object" && console.error) - console.error(e); - setTimeout(function() { throw e; }); -} - -var AppConfig = function() { - this.$defaultOptions = {}; -}; - -(function() { - oop.implement(this, EventEmitter); - this.defineOptions = function(obj, path, options) { - if (!obj.$options) - this.$defaultOptions[path] = obj.$options = {}; - - Object.keys(options).forEach(function(key) { - var opt = options[key]; - if (typeof opt == "string") - opt = {forwardTo: opt}; - - opt.name || (opt.name = key); - obj.$options[opt.name] = opt; - if ("initialValue" in opt) - obj["$" + opt.name] = opt.initialValue; - }); - oop.implement(obj, optionsProvider); - - return this; - }; - - this.resetOptions = function(obj) { - Object.keys(obj.$options).forEach(function(key) { - var opt = obj.$options[key]; - if ("value" in opt) - obj.setOption(key, opt.value); - }); - }; - - this.setDefaultValue = function(path, name, value) { - var opts = this.$defaultOptions[path] || (this.$defaultOptions[path] = {}); - if (opts[name]) { - if (opts.forwardTo) - this.setDefaultValue(opts.forwardTo, name, value); + else { + clickCount = 0; + var cursor = editor.selection.cursor; + var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor; + var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true); + var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true); + var rect = editor.renderer.scroller.getBoundingClientRect(); + var offsetTop = editor.renderer.layerConfig.offset; + var offsetLeft = editor.renderer.scrollLeft; + var weightedDistance = function (x, y) { + x = x / w; + y = y / h - 0.75; + return x * x + y * y; + }; + if (e.clientX < rect.left) { + mode = "zoom"; + return; + } + var diff1 = weightedDistance(e.clientX - rect.left - cursorPos.left + offsetLeft, e.clientY - rect.top - cursorPos.top + offsetTop); + var diff2 = weightedDistance(e.clientX - rect.left - anchorPos.left + offsetLeft, e.clientY - rect.top - anchorPos.top + offsetTop); + if (diff1 < 3.5 && diff2 < 3.5) + mode = diff1 > diff2 ? "cursor" : "anchor"; + if (diff2 < 3.5) + mode = "anchor"; + else if (diff1 < 3.5) + mode = "cursor"; else - opts[name].value = value; + mode = "scroll"; + longTouchTimer = setTimeout(handleLongTap, 450); } - }; - - this.setDefaultValues = function(path, optionHash) { - Object.keys(optionHash).forEach(function(key) { - this.setDefaultValue(path, key, optionHash[key]); - }, this); - }; - - this.warn = warn; - this.reportError = reportError; - -}).call(AppConfig.prototype); - -exports.AppConfig = AppConfig; - -}); - -define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/app_config"], function(require, exports, module) { -"no use strict"; - -var lang = require("./lib/lang"); -var oop = require("./lib/oop"); -var net = require("./lib/net"); -var AppConfig = require("./lib/app_config").AppConfig; - -module.exports = exports = new AppConfig(); - -var global = (function() { - return this || typeof window != "undefined" && window; -})(); - -var options = { - packaged: false, - workerPath: null, - modePath: null, - themePath: null, - basePath: "", - suffix: ".js", - $moduleUrls: {} -}; - -exports.get = function(key) { - if (!options.hasOwnProperty(key)) - throw new Error("Unknown config key: " + key); - - return options[key]; -}; - -exports.set = function(key, value) { - if (!options.hasOwnProperty(key)) - throw new Error("Unknown config key: " + key); - - options[key] = value; -}; - -exports.all = function() { - return lang.copyObject(options); -}; -exports.moduleUrl = function(name, component) { - if (options.$moduleUrls[name]) - return options.$moduleUrls[name]; - - var parts = name.split("/"); - component = component || parts[parts.length - 2] || ""; - var sep = component == "snippets" ? "/" : "-"; - var base = parts[parts.length - 1]; - if (component == "worker" && sep == "-") { - var re = new RegExp("^" + component + "[\\-_]|[\\-_]" + component + "$", "g"); - base = base.replace(re, ""); - } - - if ((!base || base == component) && parts.length > 1) - base = parts[parts.length - 2]; - var path = options[component + "Path"]; - if (path == null) { - path = options.basePath; - } else if (sep == "/") { - component = sep = ""; - } - if (path && path.slice(-1) != "/") - path += "/"; - return path + component + sep + base + this.get("suffix"); -}; - -exports.setModuleUrl = function(name, subst) { - return options.$moduleUrls[name] = subst; -}; - -exports.$loading = {}; -exports.loadModule = function(moduleName, onLoad) { - var module, moduleType; - if (Array.isArray(moduleName)) { - moduleType = moduleName[0]; - moduleName = moduleName[1]; - } - - try { - module = require(moduleName); - } catch (e) {} - if (module && !exports.$loading[moduleName]) - return onLoad && onLoad(module); - - if (!exports.$loading[moduleName]) - exports.$loading[moduleName] = []; - - exports.$loading[moduleName].push(onLoad); - - if (exports.$loading[moduleName].length > 1) - return; - - var afterLoad = function() { - require([moduleName], function(module) { - exports._emit("load.module", {name: moduleName, module: module}); - var listeners = exports.$loading[moduleName]; - exports.$loading[moduleName] = null; - listeners.forEach(function(onLoad) { - onLoad && onLoad(module); - }); - }); - }; - - if (!exports.get("packaged")) - return afterLoad(); - net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad); -}; -init(true);function init(packaged) { - - if (!global || !global.document) - return; - - options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged); - - var scriptOptions = {}; - var scriptUrl = ""; - var currentScript = (document.currentScript || document._currentScript ); // native or polyfill - var currentDocument = currentScript && currentScript.ownerDocument || document; - - var scripts = currentDocument.getElementsByTagName("script"); - for (var i=0; i 1 || mode == "zoom") + return; + var touchObj = touches[0]; + var wheelX = startX - touchObj.clientX; + var wheelY = startY - touchObj.clientY; + if (mode == "wait") { + if (wheelX * wheelX + wheelY * wheelY > 4) + mode = "cursor"; + else + return e.preventDefault(); + } + startX = touchObj.clientX; + startY = touchObj.clientY; + e.clientX = touchObj.clientX; + e.clientY = touchObj.clientY; + var t = e.timeStamp; + var dt = t - lastT; + lastT = t; + if (mode == "scroll") { + var mouseEvent = new MouseEvent(e, editor); + mouseEvent.speed = 1; + mouseEvent.wheelX = wheelX; + mouseEvent.wheelY = wheelY; + if (10 * Math.abs(wheelX) < Math.abs(wheelY)) + wheelX = 0; + if (10 * Math.abs(wheelY) < Math.abs(wheelX)) + wheelY = 0; + if (dt != 0) { + vX = wheelX / dt; + vY = wheelY / dt; + } + editor._emit("mousewheel", mouseEvent); + if (!mouseEvent.propagationStopped) { + vX = vY = 0; } } - - var m = src.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/); - if (m) - scriptUrl = m[1]; + else { + var ev = new MouseEvent(e, editor); + var pos = ev.getDocumentPosition(); + if (mode == "cursor") + editor.selection.moveCursorToPosition(pos); + else if (mode == "anchor") + editor.selection.setSelectionAnchor(pos.row, pos.column); + editor.renderer.scrollCursorIntoView(pos); + e.preventDefault(); + } + }, editor); + function animate() { + animationSteps += 60; + animationTimer = setInterval(function () { + if (animationSteps-- <= 0) { + clearInterval(animationTimer); + animationTimer = null; + } + if (Math.abs(vX) < 0.01) + vX = 0; + if (Math.abs(vY) < 0.01) + vY = 0; + if (animationSteps < 20) + vX = 0.9 * vX; + if (animationSteps < 20) + vY = 0.9 * vY; + var oldScrollTop = editor.session.getScrollTop(); + editor.renderer.scrollBy(10 * vX, 10 * vY); + if (oldScrollTop == editor.session.getScrollTop()) + animationSteps = 0; + }, 10); } - - if (scriptUrl) { - scriptOptions.base = scriptOptions.base || scriptUrl; - scriptOptions.packaged = true; - } - - scriptOptions.basePath = scriptOptions.base; - scriptOptions.workerPath = scriptOptions.workerPath || scriptOptions.base; - scriptOptions.modePath = scriptOptions.modePath || scriptOptions.base; - scriptOptions.themePath = scriptOptions.themePath || scriptOptions.base; - delete scriptOptions.base; - - for (var key in scriptOptions) - if (typeof scriptOptions[key] !== "undefined") - exports.set(key, scriptOptions[key]); -} - -exports.init = init; - -function deHyphenate(str) { - return str.replace(/-(.)/g, function(m, m1) { return m1.toUpperCase(); }); -} +}; }); -define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"], function(require, exports, module) { -"use strict"; - +define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"], function(require, exports, module){"use strict"; var event = require("../lib/event"); var useragent = require("../lib/useragent"); var DefaultHandlers = require("./default_handlers").DefaultHandlers; var DefaultGutterHandler = require("./default_gutter_handler").GutterHandler; var MouseEvent = require("./mouse_event").MouseEvent; var DragdropHandler = require("./dragdrop_handler").DragdropHandler; +var addTouchListeners = require("./touch_handler").addTouchListeners; var config = require("../config"); - -var MouseHandler = function(editor) { - var _self = this; - this.editor = editor; - - new DefaultHandlers(this); - new DefaultGutterHandler(this); - new DragdropHandler(this); - - var focusEditor = function(e) { - var windowBlurred = !document.hasFocus || !document.hasFocus() - || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement()); - if (windowBlurred) - window.focus(); - editor.focus(); - }; - - var mouseTarget = editor.renderer.getMouseEventTarget(); - event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click")); - event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove")); - event.addMultiMouseDownListener([ - mouseTarget, - editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner, - editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner, - editor.textInput && editor.textInput.getElement() - ].filter(Boolean), [400, 300, 250], this, "onMouseEvent"); - event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel")); - event.addTouchMoveListener(editor.container, this.onTouchMove.bind(this, "touchmove")); - - var gutterEl = editor.renderer.$gutter; - event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown")); - event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick")); - event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick")); - event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove")); - - event.addListener(mouseTarget, "mousedown", focusEditor); - event.addListener(gutterEl, "mousedown", focusEditor); - if (useragent.isIE && editor.renderer.scrollBarV) { - event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor); - event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor); - } - - editor.on("mousemove", function(e){ - if (_self.state || _self.$dragDelay || !_self.$dragEnabled) - return; - - var character = editor.renderer.screenToTextCoordinates(e.x, e.y); - var range = editor.session.selection.getRange(); - var renderer = editor.renderer; - - if (!range.isEmpty() && range.insideStart(character.row, character.column)) { - renderer.setCursorStyle("default"); - } else { - renderer.setCursorStyle(""); +var MouseHandler = /** @class */ (function () { + function MouseHandler(editor) { this.$dragDelay; this.$dragEnabled; this.$mouseMoved; this.mouseEvent; this.$focusTimeout; + var _self = this; + this.editor = editor; + new DefaultHandlers(this); + new DefaultGutterHandler(this); + new DragdropHandler(this); + var focusEditor = function (e) { + var windowBlurred = !document.hasFocus || !document.hasFocus() + || !editor.isFocused() && document.activeElement == (editor.textInput && editor.textInput.getElement()); + if (windowBlurred) + window.focus(); + editor.focus(); + setTimeout(function () { + if (!editor.isFocused()) + editor.focus(); + }); + }; + var mouseTarget = editor.renderer.getMouseEventTarget(); + event.addListener(mouseTarget, "click", this.onMouseEvent.bind(this, "click"), editor); + event.addListener(mouseTarget, "mousemove", this.onMouseMove.bind(this, "mousemove"), editor); + event.addMultiMouseDownListener([ + mouseTarget, + editor.renderer.scrollBarV && editor.renderer.scrollBarV.inner, + editor.renderer.scrollBarH && editor.renderer.scrollBarH.inner, + editor.textInput && editor.textInput.getElement() + ].filter(Boolean), [400, 300, 250], this, "onMouseEvent", editor); + event.addMouseWheelListener(editor.container, this.onMouseWheel.bind(this, "mousewheel"), editor); + addTouchListeners(editor.container, editor); + var gutterEl = editor.renderer.$gutter; + event.addListener(gutterEl, "mousedown", this.onMouseEvent.bind(this, "guttermousedown"), editor); + event.addListener(gutterEl, "click", this.onMouseEvent.bind(this, "gutterclick"), editor); + event.addListener(gutterEl, "dblclick", this.onMouseEvent.bind(this, "gutterdblclick"), editor); + event.addListener(gutterEl, "mousemove", this.onMouseEvent.bind(this, "guttermousemove"), editor); + event.addListener(mouseTarget, "mousedown", focusEditor, editor); + event.addListener(gutterEl, "mousedown", focusEditor, editor); + if (useragent.isIE && editor.renderer.scrollBarV) { + event.addListener(editor.renderer.scrollBarV.element, "mousedown", focusEditor, editor); + event.addListener(editor.renderer.scrollBarH.element, "mousedown", focusEditor, editor); } - }); -}; - -(function() { - this.onMouseEvent = function(name, e) { + editor.on("mousemove", function (e) { + if (_self.state || _self.$dragDelay || !_self.$dragEnabled) + return; + var character = editor.renderer.screenToTextCoordinates(e.x, e.y); + var range = editor.session.selection.getRange(); + var renderer = editor.renderer; + if (!range.isEmpty() && range.insideStart(character.row, character.column)) { + renderer.setCursorStyle("default"); + } + else { + renderer.setCursorStyle(""); + } + }, //@ts-expect-error TODO: seems mistyping - should be boolean + editor); + } + MouseHandler.prototype.onMouseEvent = function (name, e) { + if (!this.editor.session) + return; this.editor._emit(name, new MouseEvent(e, this.editor)); }; - - this.onMouseMove = function(name, e) { + MouseHandler.prototype.onMouseMove = function (name, e) { var listeners = this.editor._eventRegistry && this.editor._eventRegistry.mousemove; if (!listeners || !listeners.length) return; - this.editor._emit(name, new MouseEvent(e, this.editor)); }; - - this.onMouseWheel = function(name, e) { + MouseHandler.prototype.onMouseWheel = function (name, e) { var mouseEvent = new MouseEvent(e, this.editor); mouseEvent.speed = this.$scrollSpeed * 2; mouseEvent.wheelX = e.wheelX; mouseEvent.wheelY = e.wheelY; - this.editor._emit(name, mouseEvent); }; - - this.onTouchMove = function (name, e) { - var mouseEvent = new MouseEvent(e, this.editor); - mouseEvent.speed = 1;//this.$scrollSpeed * 2; - mouseEvent.wheelX = e.wheelX; - mouseEvent.wheelY = e.wheelY; - this.editor._emit(name, mouseEvent); - }; - - this.setState = function(state) { + MouseHandler.prototype.setState = function (state) { this.state = state; }; - - this.captureMouse = function(ev, mouseMoveHandler) { + MouseHandler.prototype.captureMouse = function (ev, mouseMoveHandler) { this.x = ev.x; this.y = ev.y; - this.isMousePressed = true; + var editor = this.editor; var renderer = this.editor.renderer; - if (renderer.$keepTextAreaAtCursor) - renderer.$keepTextAreaAtCursor = null; - + renderer.$isMousePressed = true; var self = this; - var onMouseMove = function(e) { - if (!e) return; + var onMouseMove = function (e) { + if (!e) + return; if (useragent.isWebKit && !e.which && self.releaseMouse) return self.releaseMouse(); - self.x = e.clientX; self.y = e.clientY; mouseMoveHandler && mouseMoveHandler(e); self.mouseEvent = new MouseEvent(e, self.editor); self.$mouseMoved = true; }; - - var onCaptureEnd = function(e) { + var onCaptureEnd = function (e) { + editor.off("beforeEndOperation", onOperationEnd); clearInterval(timerId); - onCaptureInterval(); + if (editor.session) + onCaptureInterval(); self[self.state + "End"] && self[self.state + "End"](e); self.state = ""; - if (renderer.$keepTextAreaAtCursor == null) { - renderer.$keepTextAreaAtCursor = true; + self.isMousePressed = renderer.$isMousePressed = false; + if (renderer.$keepTextAreaAtCursor) renderer.$moveTextAreaToCursor(); - } - self.isMousePressed = false; self.$onCaptureMouseMove = self.releaseMouse = null; e && self.onMouseEvent("mouseup", e); + editor.endOperation(); }; - - var onCaptureInterval = function() { + var onCaptureInterval = function () { self[self.state] && self[self.state](); self.$mouseMoved = false; }; - if (useragent.isOldIE && ev.domEvent.type == "dblclick") { - return setTimeout(function() {onCaptureEnd(ev);}); + return setTimeout(function () { onCaptureEnd(ev); }); } - + var onOperationEnd = function (e) { + if (!self.releaseMouse) + return; + if (editor.curOp.command.name && editor.curOp.selectionChanged) { + self[self.state + "End"] && self[self.state + "End"](); + self.state = ""; + self.releaseMouse(); + } + }; + editor.on("beforeEndOperation", onOperationEnd); + editor.startOperation({ command: { name: "mouse" } }); self.$onCaptureMouseMove = onMouseMove; self.releaseMouse = event.capture(this.editor.container, onMouseMove, onCaptureEnd); var timerId = setInterval(onCaptureInterval, 20); }; - this.releaseMouse = null; - this.cancelContextMenu = function() { - var stop = function(e) { + MouseHandler.prototype.cancelContextMenu = function () { + var stop = function (e) { if (e && e.domEvent && e.domEvent.type != "contextmenu") return; this.editor.off("nativecontextmenu", stop); @@ -4393,114 +4389,111 @@ var MouseHandler = function(editor) { setTimeout(stop, 10); this.editor.on("nativecontextmenu", stop); }; -}).call(MouseHandler.prototype); - + MouseHandler.prototype.destroy = function () { + if (this.releaseMouse) + this.releaseMouse(); + }; + return MouseHandler; +}()); +MouseHandler.prototype.releaseMouse = null; config.defineOptions(MouseHandler.prototype, "mouseHandler", { - scrollSpeed: {initialValue: 2}, - dragDelay: {initialValue: (useragent.isMac ? 150 : 0)}, - dragEnabled: {initialValue: true}, - focusTimout: {initialValue: 0}, - tooltipFollowsMouse: {initialValue: true} + scrollSpeed: { initialValue: 2 }, + dragDelay: { initialValue: (useragent.isMac ? 150 : 0) }, + dragEnabled: { initialValue: true }, + focusTimeout: { initialValue: 0 }, + tooltipFollowsMouse: { initialValue: true } }); - - exports.MouseHandler = MouseHandler; + }); -define("ace/mouse/fold_handler",["require","exports","module"], function(require, exports, module) { -"use strict"; - -function FoldHandler(editor) { - - editor.on("click", function(e) { - var position = e.getDocumentPosition(); - var session = editor.session; - var fold = session.getFoldAt(position.row, position.column, 1); - if (fold) { - if (e.getAccelKey()) - session.removeFold(fold); - else - session.expandFold(fold); - - e.stop(); - } - }); - - editor.on("gutterclick", function(e) { - var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); - - if (gutterRegion == "foldWidgets") { - var row = e.getDocumentPosition().row; +define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var FoldHandler = /** @class */ (function () { + function FoldHandler(editor) { + editor.on("click", function (e) { + var position = e.getDocumentPosition(); var session = editor.session; - if (session.foldWidgets && session.foldWidgets[row]) - editor.session.onFoldWidgetClick(row, e); - if (!editor.isFocused()) - editor.focus(); - e.stop(); - } - }); - - editor.on("gutterdblclick", function(e) { - var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); - - if (gutterRegion == "foldWidgets") { - var row = e.getDocumentPosition().row; - var session = editor.session; - var data = session.getParentFoldRangeData(row, true); - var range = data.range || data.firstRange; - - if (range) { - row = range.start.row; - var fold = session.getFoldAt(row, session.getLine(row).length, 1); - - if (fold) { + var fold = session.getFoldAt(position.row, position.column, 1); + if (fold) { + if (e.getAccelKey()) session.removeFold(fold); - } else { - session.addFold("...", range); - editor.renderer.scrollCursorIntoView({row: range.start.row, column: 0}); + else + session.expandFold(fold); + e.stop(); + } + var target = e.domEvent && e.domEvent.target; + if (target && dom.hasCssClass(target, "ace_inline_button")) { + if (dom.hasCssClass(target, "ace_toggle_wrap")) { + session.setOption("wrap", !session.getUseWrapMode()); + editor.renderer.scrollCursorIntoView(); } } - e.stop(); - } - }); -} - + }); + editor.on("gutterclick", function (e) { + var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); + if (gutterRegion == "foldWidgets") { + var row = e.getDocumentPosition().row; + var session = editor.session; + if (session.foldWidgets && session.foldWidgets[row]) + editor.session.onFoldWidgetClick(row, e); + if (!editor.isFocused()) + editor.focus(); + e.stop(); + } + }); + editor.on("gutterdblclick", function (e) { + var gutterRegion = editor.renderer.$gutterLayer.getRegion(e); + if (gutterRegion == "foldWidgets") { + var row = e.getDocumentPosition().row; + var session = editor.session; + var data = session.getParentFoldRangeData(row, true); + var range = data.range || data.firstRange; + if (range) { + row = range.start.row; + var fold = session.getFoldAt(row, session.getLine(row).length, 1); + if (fold) { + session.removeFold(fold); + } + else { + session.addFold("...", range); + editor.renderer.scrollCursorIntoView({ row: range.start.row, column: 0 }); + } + } + e.stop(); + } + }); + } + return FoldHandler; +}()); exports.FoldHandler = FoldHandler; }); -define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module) { -"use strict"; - -var keyUtil = require("../lib/keys"); +define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"], function(require, exports, module){"use strict"; +var keyUtil = require("../lib/keys"); var event = require("../lib/event"); - -var KeyBinding = function(editor) { - this.$editor = editor; - this.$data = {editor: editor}; - this.$handlers = []; - this.setDefaultHandler(editor.commands); -}; - -(function() { - this.setDefaultHandler = function(kb) { +var KeyBinding = /** @class */ (function () { + function KeyBinding(editor) { + this.$editor = editor; + this.$data = { editor: editor }; + this.$handlers = []; + this.setDefaultHandler(editor.commands); + } + KeyBinding.prototype.setDefaultHandler = function (kb) { this.removeKeyboardHandler(this.$defaultHandler); this.$defaultHandler = kb; this.addKeyboardHandler(kb, 0); }; - - this.setKeyboardHandler = function(kb) { + KeyBinding.prototype.setKeyboardHandler = function (kb) { var h = this.$handlers; if (h[h.length - 1] == kb) return; - while (h[h.length - 1] && h[h.length - 1] != this.$defaultHandler) this.removeKeyboardHandler(h[h.length - 1]); - this.addKeyboardHandler(kb, 1); }; - - this.addKeyboardHandler = function(kb, pos) { + KeyBinding.prototype.addKeyboardHandler = function (kb, pos) { if (!kb) return; if (typeof kb == "function" && !kb.handleKeyboard) @@ -4508,17 +4501,14 @@ var KeyBinding = function(editor) { var i = this.$handlers.indexOf(kb); if (i != -1) this.$handlers.splice(i, 1); - if (pos == undefined) this.$handlers.push(kb); else this.$handlers.splice(pos, 0, kb); - if (i == -1 && kb.attach) kb.attach(this.$editor); }; - - this.removeKeyboardHandler = function(kb) { + KeyBinding.prototype.removeKeyboardHandler = function (kb) { var i = this.$handlers.indexOf(kb); if (i == -1) return false; @@ -4526,85 +4516,69 @@ var KeyBinding = function(editor) { kb.detach && kb.detach(this.$editor); return true; }; - - this.getKeyboardHandler = function() { + KeyBinding.prototype.getKeyboardHandler = function () { return this.$handlers[this.$handlers.length - 1]; }; - - this.getStatusText = function() { + KeyBinding.prototype.getStatusText = function () { var data = this.$data; var editor = data.editor; - return this.$handlers.map(function(h) { + return this.$handlers.map(function (h) { return h.getStatusText && h.getStatusText(editor, data) || ""; }).filter(Boolean).join(" "); }; - - this.$callKeyboardHandlers = function(hashId, keyString, keyCode, e) { + KeyBinding.prototype.$callKeyboardHandlers = function (hashId, keyString, keyCode, e) { var toExecute; var success = false; var commands = this.$editor.commands; - for (var i = this.$handlers.length; i--;) { toExecute = this.$handlers[i].handleKeyboard( - this.$data, hashId, keyString, keyCode, e - ); + this.$data, hashId, keyString, keyCode, e); if (!toExecute || !toExecute.command) continue; if (toExecute.command == "null") { success = true; - } else { + } + else { success = commands.exec(toExecute.command, this.$editor, toExecute.args, e); } - if (success && e && hashId != -1 && - toExecute.passEvent != true && toExecute.command.passEvent != true - ) { + if (success && e && hashId != -1 && + toExecute["passEvent"] != true && toExecute.command["passEvent"] != true) { event.stopEvent(e); } if (success) break; } - if (!success && hashId == -1) { - toExecute = {command: "insertstring"}; + toExecute = { command: "insertstring" }; success = commands.exec("insertstring", this.$editor, keyString); } - if (success && this.$editor._signal) this.$editor._signal("keyboardActivity", toExecute); - return success; }; - - this.onCommandKey = function(e, hashId, keyCode) { + KeyBinding.prototype.onCommandKey = function (e, hashId, keyCode) { var keyString = keyUtil.keyCodeToString(keyCode); - this.$callKeyboardHandlers(hashId, keyString, keyCode, e); + return this.$callKeyboardHandlers(hashId, keyString, keyCode, e); }; - - this.onTextInput = function(text) { - this.$callKeyboardHandlers(-1, text); + KeyBinding.prototype.onTextInput = function (text) { + return this.$callKeyboardHandlers(-1, text); }; - -}).call(KeyBinding.prototype); - + return KeyBinding; +}()); exports.KeyBinding = KeyBinding; + }); -define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/lib/bidiutil",["require","exports","module"], function(require, exports, module){"use strict"; var ArabicAlefBetIntervalsBegine = ['\u0621', '\u0641']; var ArabicAlefBetIntervalsEnd = ['\u063A', '\u064a']; var dir = 0, hiLevel = 0; -var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false; - -var impTab_LTR = [ [ 0, 3, 0, 1, 0, 0, 0 ], [ 0, 3, 0, 1, 2, 2, 0 ], [ 0, 3, 0, 0x11, 2, 0, 1 ], [ 0, 3, 5, 5, 4, 1, 0 ], [ 0, 3, 0x15, 0x15, 4, 0, 1 ], [ 0, 3, 5, 5, 4, 2, 0 ] +var lastArabic = false, hasUBAT_AL = false, hasUBAT_B = false, hasUBAT_S = false, hasBlockSep = false, hasSegSep = false; +var impTab_LTR = [ [0, 3, 0, 1, 0, 0, 0], [0, 3, 0, 1, 2, 2, 0], [0, 3, 0, 0x11, 2, 0, 1], [0, 3, 5, 5, 4, 1, 0], [0, 3, 0x15, 0x15, 4, 0, 1], [0, 3, 5, 5, 4, 2, 0] ]; - -var impTab_RTL = [ [ 2, 0, 1, 1, 0, 1, 0 ], [ 2, 0, 1, 1, 0, 2, 0 ], [ 2, 0, 2, 1, 3, 2, 0 ], [ 2, 0, 2, 0x21, 3, 1, 1 ] +var impTab_RTL = [ [2, 0, 1, 1, 0, 1, 0], [2, 0, 1, 1, 0, 2, 0], [2, 0, 2, 1, 3, 2, 0], [2, 0, 2, 0x21, 3, 1, 1] ]; - var LTR = 0, RTL = 1; - var L = 0; var R = 1; var EN = 2; @@ -4624,235 +4598,231 @@ var PDF = 15; var LRO = 16; var RLO = 17; var BN = 18; - var UnicodeTBL00 = [ -BN,BN,BN,BN,BN,BN,BN,BN,BN,S,B,S,WS,B,BN,BN, -BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,B,B,B,S, -WS,ON,ON,ET,ET,ET,ON,ON,ON,ON,ON,ES,CS,ES,CS,CS, -EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,CS,ON,ON,ON,ON,ON, -ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L, -L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON, -ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L, -L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,BN, -BN,BN,BN,BN,BN,B,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN, -BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN, -CS,ON,ET,ET,ET,ET,ON,ON,ON,ON,L,ON,ON,BN,ON,ON, -ET,ET,EN,EN,ON,L,ON,ON,ON,EN,L,ON,ON,ON,ON,ON + BN, BN, BN, BN, BN, BN, BN, BN, BN, S, B, S, WS, B, BN, BN, + BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, B, B, B, S, + WS, ON, ON, ET, ET, ET, ON, ON, ON, ON, ON, ES, CS, ES, CS, CS, + EN, EN, EN, EN, EN, EN, EN, EN, EN, EN, CS, ON, ON, ON, ON, ON, + ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, + L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, ON, + ON, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, + L, L, L, L, L, L, L, L, L, L, L, ON, ON, ON, ON, BN, + BN, BN, BN, BN, BN, B, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, + BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, BN, + CS, ON, ET, ET, ET, ET, ON, ON, ON, ON, L, ON, ON, BN, ON, ON, + ET, ET, EN, EN, ON, L, ON, ON, ON, EN, L, ON, ON, ON, ON, ON ]; - var UnicodeTBL20 = [ -WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,BN,BN,BN,L,R , -ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON, -ON,ON,ON,ON,ON,ON,ON,ON,WS,B,LRE,RLE,PDF,LRO,RLO,CS, -ET,ET,ET,ET,ET,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON, -ON,ON,ON,ON,CS,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON, -ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,WS + WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, WS, BN, BN, BN, L, R, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, WS, B, LRE, RLE, PDF, LRO, RLO, CS, + ET, ET, ET, ET, ET, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, CS, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, + ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, ON, WS ]; - function _computeLevels(chars, levels, len, charTypes) { - var impTab = dir ? impTab_RTL : impTab_LTR - , prevState = null, newClass = null, newLevel = null, newState = 0 - , action = null, cond = null, condPos = -1, i = null, ix = null, classes = []; - - if (!charTypes) { - for (i = 0, charTypes = []; i < len; i++) { - charTypes[i] = _getCharacterType(chars[i]); - } - } - hiLevel = dir; - lastArabic = false; - hasUBAT_AL = false; - hasUBAT_B = false; - hasUBAT_S = false; - for (ix = 0; ix < len; ix++){ - prevState = newState; - classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix); - newState = impTab[prevState][newClass]; - action = newState & 0xF0; - newState &= 0x0F; - levels[ix] = newLevel = impTab[newState][5]; - if (action > 0){ - if (action == 0x10){ - for(i = condPos; i < ix; i++){ - levels[i] = 1; - } - condPos = -1; - } else { - condPos = -1; - } - } - cond = impTab[newState][6]; - if (cond){ - if(condPos == -1){ - condPos = ix; - } - }else{ - if (condPos > -1){ - for(i = condPos; i < ix; i++){ - levels[i] = newLevel; - } - condPos = -1; - } - } - if (charTypes[ix] == B){ - levels[ix] = 0; - } - hiLevel |= newLevel; - } - if (hasUBAT_S){ - for(i = 0; i < len; i++){ - if(charTypes[i] == S){ - levels[i] = dir; - for(var j = i - 1; j >= 0; j--){ - if(charTypes[j] == WS){ - levels[j] = dir; - }else{ - break; - } - } - } - } - } + var impTab = dir ? impTab_RTL : impTab_LTR, prevState = null, newClass = null, newLevel = null, newState = 0, action = null, cond = null, condPos = -1, i = null, ix = null, classes = []; + if (!charTypes) { + for (i = 0, charTypes = []; i < len; i++) { + charTypes[i] = _getCharacterType(chars[i]); + } + } + hiLevel = dir; + lastArabic = false; + hasUBAT_AL = false; + hasUBAT_B = false; + hasUBAT_S = false; + for (ix = 0; ix < len; ix++) { + prevState = newState; + classes[ix] = newClass = _getCharClass(chars, charTypes, classes, ix); + newState = impTab[prevState][newClass]; + action = newState & 0xF0; + newState &= 0x0F; + levels[ix] = newLevel = impTab[newState][5]; + if (action > 0) { + if (action == 0x10) { + for (i = condPos; i < ix; i++) { + levels[i] = 1; + } + condPos = -1; + } + else { + condPos = -1; + } + } + cond = impTab[newState][6]; + if (cond) { + if (condPos == -1) { + condPos = ix; + } + } + else { + if (condPos > -1) { + for (i = condPos; i < ix; i++) { + levels[i] = newLevel; + } + condPos = -1; + } + } + if (charTypes[ix] == B) { + levels[ix] = 0; + } + hiLevel |= newLevel; + } + if (hasUBAT_S) { + for (i = 0; i < len; i++) { + if (charTypes[i] == S) { + levels[i] = dir; + for (var j = i - 1; j >= 0; j--) { + if (charTypes[j] == WS) { + levels[j] = dir; + } + else { + break; + } + } + } + } + } } - function _invertLevel(lev, levels, _array) { - if (hiLevel < lev){ - return; - } - if (lev == 1 && dir == RTL && !hasUBAT_B){ - _array.reverse(); - return; - } - var len = _array.length, start = 0, end, lo, hi, tmp; - while(start < len){ - if (levels[start] >= lev){ - end = start + 1; - while(end < len && levels[end] >= lev){ - end++; - } - for(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){ - tmp = _array[lo]; - _array[lo] = _array[hi]; - _array[hi] = tmp; - } - start = end; - } - start++; - } + if (hiLevel < lev) { + return; + } + if (lev == 1 && dir == RTL && !hasUBAT_B) { + _array.reverse(); + return; + } + var len = _array.length, start = 0, end, lo, hi, tmp; + while (start < len) { + if (levels[start] >= lev) { + end = start + 1; + while (end < len && levels[end] >= lev) { + end++; + } + for (lo = start, hi = end - 1; lo < hi; lo++, hi--) { + tmp = _array[lo]; + _array[lo] = _array[hi]; + _array[hi] = tmp; + } + start = end; + } + start++; + } } - -function _getCharClass(chars, types, classes, ix) { - var cType = types[ix], wType, nType, len, i; - switch(cType){ - case L: - case R: - lastArabic = false; - case ON: - case AN: - return cType; - case EN: - return lastArabic ? AN : EN; - case AL: - lastArabic = true; - hasUBAT_AL = true; - return R; - case WS: - return ON; - case CS: - if (ix < 1 || (ix + 1) >= types.length || - ((wType = classes[ix - 1]) != EN && wType != AN) || - ((nType = types[ix + 1]) != EN && nType != AN)){ - return ON; - } - if (lastArabic){nType = AN;} - return nType == wType ? nType : ON; - case ES: - wType = ix > 0 ? classes[ix - 1] : B; - if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){ - return EN; - } - return ON; - case ET: - if (ix > 0 && classes[ix - 1] == EN){ - return EN; - } - if (lastArabic){ - return ON; - } - i = ix + 1; - len = types.length; - while (i < len && types[i] == ET){ - i++; - } - if (i < len && types[i] == EN){ - return EN; - } - return ON; - case NSM: - len = types.length; - i = ix + 1; - while (i < len && types[i] == NSM){ - i++; - } - if (i < len){ - var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E; - - wType = types[i]; - if (rtlCandidate && (wType == R || wType == AL)){ - return R; - } - } - - if (ix < 1 || (wType = types[ix - 1]) == B){ - return ON; - } - return classes[ix - 1]; - case B: - lastArabic = false; - hasUBAT_B = true; - return dir; - case S: - hasUBAT_S = true; - return ON; - case LRE: - case RLE: - case LRO: - case RLO: - case PDF: - lastArabic = false; - case BN: - return ON; - } +function _getCharClass(chars, types, classes, ix) { + var cType = types[ix], wType, nType, len, i; + switch (cType) { + case L: + case R: + lastArabic = false; + case ON: + case AN: + return cType; + case EN: + return lastArabic ? AN : EN; + case AL: + lastArabic = true; + hasUBAT_AL = true; + return R; + case WS: + return ON; + case CS: + if (ix < 1 || (ix + 1) >= types.length || + ((wType = classes[ix - 1]) != EN && wType != AN) || + ((nType = types[ix + 1]) != EN && nType != AN)) { + return ON; + } + if (lastArabic) { + nType = AN; + } + return nType == wType ? nType : ON; + case ES: + wType = ix > 0 ? classes[ix - 1] : B; + if (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN) { + return EN; + } + return ON; + case ET: + if (ix > 0 && classes[ix - 1] == EN) { + return EN; + } + if (lastArabic) { + return ON; + } + i = ix + 1; + len = types.length; + while (i < len && types[i] == ET) { + i++; + } + if (i < len && types[i] == EN) { + return EN; + } + return ON; + case NSM: + len = types.length; + i = ix + 1; + while (i < len && types[i] == NSM) { + i++; + } + if (i < len) { + var c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E; + wType = types[i]; + if (rtlCandidate && (wType == R || wType == AL)) { + return R; + } + } + if (ix < 1 || (wType = types[ix - 1]) == B) { + return ON; + } + return classes[ix - 1]; + case B: + lastArabic = false; + hasUBAT_B = true; + return dir; + case S: + hasUBAT_S = true; + return ON; + case LRE: + case RLE: + case LRO: + case RLO: + case PDF: + lastArabic = false; + case BN: + return ON; + } } - -function _getCharacterType( ch ) { - var uc = ch.charCodeAt(0), hi = uc >> 8; - - if (hi == 0) { - return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]); - } else if (hi == 5) { - return (/[\u0591-\u05f4]/.test(ch) ? R : L); - } else if (hi == 6) { - if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch)) - return NSM; - else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch)) - return AN; - else if (uc == 0x066A) - return ET; - else if (/[\u06f0-\u06f9]/.test(ch)) - return EN; - else - return AL; - } else if (hi == 0x20 && uc <= 0x205F) { - return UnicodeTBL20[uc & 0xFF]; - } else if (hi == 0xFE) { - return (uc >= 0xFE70 ? AL : ON); - } - return ON; +function _getCharacterType(ch) { + var uc = ch.charCodeAt(0), hi = uc >> 8; + if (hi == 0) { + return ((uc > 0x00BF) ? L : UnicodeTBL00[uc]); + } + else if (hi == 5) { + return (/[\u0591-\u05f4]/.test(ch) ? R : L); + } + else if (hi == 6) { + if (/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(ch)) + return NSM; + else if (/[\u0660-\u0669\u066b-\u066c]/.test(ch)) + return AN; + else if (uc == 0x066A) + return ET; + else if (/[\u06f0-\u06f9]/.test(ch)) + return EN; + else + return AL; + } + else if (hi == 0x20 && uc <= 0x205F) { + return UnicodeTBL20[uc & 0xFF]; + } + else if (hi == 0xFE) { + return (uc >= 0xFE70 ? AL : ON); + } + return ON; } - -function _isArabicDiacritics( ch ) { - return (ch >= '\u064b' && ch <= '\u0655'); +function _isArabicDiacritics(ch) { + return (ch >= '\u064b' && ch <= '\u0655'); } exports.L = L; exports.R = R; @@ -4861,88 +4831,86 @@ exports.ON_R = 3; exports.AN = 4; exports.R_H = 5; exports.B = 6; - +exports.RLE = 7; exports.DOT = "\xB7"; -exports.doBidiReorder = function(text, textCharTypes, isRtl) { - if (text.length < 2) - return {}; - - var chars = text.split(""), logicalFromVisual = new Array(chars.length), - bidiLevels = new Array(chars.length), levels = []; - - dir = isRtl ? RTL : LTR; - - _computeLevels(chars, levels, chars.length, textCharTypes); - - for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++); - - _invertLevel(2, levels, logicalFromVisual); - _invertLevel(1, levels, logicalFromVisual); - - for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width - if (textCharTypes[i] === AN) { - levels[i] = exports.AN; - } else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) - || textCharTypes[i] === ON || textCharTypes[i] === BN)) { - levels[i] = exports.ON_R; - } else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) { - levels[i - 1] = levels[i] = exports.R_H; - i++; - } - } - if (chars[chars.length - 1] === exports.DOT) - levels[chars.length - 1] = exports.B; - - for (var i = 0; i < logicalFromVisual.length; i++) { - bidiLevels[i] = levels[logicalFromVisual[i]]; - } - - return {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels}; +exports.doBidiReorder = function (text, textCharTypes, isRtl) { + if (text.length < 2) + return {}; + var chars = text.split(""), logicalFromVisual = new Array(chars.length), bidiLevels = new Array(chars.length), levels = []; + dir = isRtl ? RTL : LTR; + _computeLevels(chars, levels, chars.length, textCharTypes); + for (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++) + ; + _invertLevel(2, levels, logicalFromVisual); + _invertLevel(1, levels, logicalFromVisual); + for (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width + if (textCharTypes[i] === AN) { + levels[i] = exports.AN; + } + else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) + || textCharTypes[i] === ON || textCharTypes[i] === BN)) { + levels[i] = exports.ON_R; + } + else if ((i > 0 && chars[i - 1] === '\u0644') && /\u0622|\u0623|\u0625|\u0627/.test(chars[i])) { + levels[i - 1] = levels[i] = exports.R_H; + i++; + } + } + if (chars[chars.length - 1] === exports.DOT) + levels[chars.length - 1] = exports.B; + if (chars[0] === '\u202B') + levels[0] = exports.RLE; + for (var i = 0; i < logicalFromVisual.length; i++) { + bidiLevels[i] = levels[logicalFromVisual[i]]; + } + return { 'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels }; }; -exports.hasBidiCharacters = function(text, textCharTypes){ - var ret = false; - for (var i = 0; i < text.length; i++){ - textCharTypes[i] = _getCharacterType(text.charAt(i)); - if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL)) - ret = true; - } - return ret; -}; -exports.getVisualFromLogicalIdx = function(logIdx, rowMap) { - for (var i = 0; i < rowMap.logicalFromVisual.length; i++) { - if (rowMap.logicalFromVisual[i] == logIdx) - return i; - } - return 0; +exports.hasBidiCharacters = function (text, textCharTypes) { + var ret = false; + for (var i = 0; i < text.length; i++) { + textCharTypes[i] = _getCharacterType(text.charAt(i)); + if (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN)) + ret = true; + } + return ret; +}; +exports.getVisualFromLogicalIdx = function (logIdx, rowMap) { + for (var i = 0; i < rowMap.logicalFromVisual.length; i++) { + if (rowMap.logicalFromVisual[i] == logIdx) + return i; + } + return 0; }; }); -define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - +define("ace/bidihandler",["require","exports","module","ace/lib/bidiutil","ace/lib/lang"], function(require, exports, module){"use strict"; var bidiUtil = require("./lib/bidiutil"); var lang = require("./lib/lang"); -var useragent = require("./lib/useragent"); -var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; -var BidiHandler = function(session) { - this.session = session; - this.bidiMap = {}; - this.currentRow = null; - this.bidiUtil = bidiUtil; - this.charWidths = []; - this.EOL = "\xAC"; - this.showInvisibles = true; - this.isRtlDir = false; - this.line = ""; - this.wrapIndent = 0; - this.isLastRow = false; - this.EOF = "\xB6"; - this.seenBidi = false; -}; - -(function() { - this.isBidiRow = function(screenRow, docRow, splitIndex) { +var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac\u202B]/; +var BidiHandler = /** @class */ (function () { + function BidiHandler(session) { + this.session = session; + this.bidiMap = {}; + this.currentRow = null; + this.bidiUtil = bidiUtil; + this.charWidths = []; + this.EOL = "\xAC"; + this.showInvisibles = true; + this.isRtlDir = false; + this.$isRtl = false; + this.line = ""; + this.wrapIndent = 0; + this.EOF = "\xB6"; + this.RLE = "\u202B"; + this.contentWidth = 0; + this.fontMetrics = null; + this.rtlLineOffset = 0; + this.wrapOffset = 0; + this.isMoveLeftOperation = false; + this.seenBidi = bidiRE.test(session.getValue()); + } + BidiHandler.prototype.isBidiRow = function (screenRow, docRow, splitIndex) { if (!this.seenBidi) return false; if (screenRow !== this.currentRow) { @@ -4952,20 +4920,18 @@ var BidiHandler = function(session) { } return this.bidiMap.bidiLevels; }; - - this.onChange = function(delta) { + BidiHandler.prototype.onChange = function (delta) { if (!this.seenBidi) { if (delta.action == "insert" && bidiRE.test(delta.lines.join("\n"))) { this.seenBidi = true; this.currentRow = null; } - } + } else { this.currentRow = null; } }; - - this.getDocumentRow = function() { + BidiHandler.prototype.getDocumentRow = function () { var docRow = 0; var rowCache = this.session.$screenRowCache; if (rowCache.length) { @@ -4973,11 +4939,9 @@ var BidiHandler = function(session) { if (index >= 0) docRow = this.session.$docRowCache[index]; } - return docRow; }; - - this.getSplitIndex = function() { + BidiHandler.prototype.getSplitIndex = function () { var splitIndex = 0; var rowCache = this.session.$screenRowCache; if (rowCache.length) { @@ -4986,40 +4950,47 @@ var BidiHandler = function(session) { currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1); if (currentIndex !== prevIndex) break; - prevIndex = currentIndex; splitIndex++; } } - + else { + splitIndex = this.currentRow; + } return splitIndex; }; - - this.updateRowLine = function(docRow, splitIndex) { + BidiHandler.prototype.updateRowLine = function (docRow, splitIndex) { if (docRow === undefined) docRow = this.getDocumentRow(); - + var isLastRow = (docRow === this.session.getLength() - 1), endOfLine = isLastRow ? this.EOF : this.EOL; this.wrapIndent = 0; - this.isLastRow = (docRow === this.session.getLength() - 1); this.line = this.session.getLine(docRow); + this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE; if (this.session.$useWrapMode) { var splits = this.session.$wrapData[docRow]; if (splits) { if (splitIndex === undefined) splitIndex = this.getSplitIndex(); - - if(splitIndex > 0 && splits.length) { + if (splitIndex > 0 && splits.length) { this.wrapIndent = splits.indent; + this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L]; this.line = (splitIndex < splits.length) ? - this.line.substring(splits[splitIndex - 1], splits[splits.length - 1]) : - this.line.substring(splits[splits.length - 1]); - } else { + this.line.substring(splits[splitIndex - 1], splits[splitIndex]) : + this.line.substring(splits[splits.length - 1]); + } + else { this.line = this.line.substring(0, splits[splitIndex]); } + if (splitIndex == splits.length) { + this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT; + } } } + else { + this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT; + } var session = this.session, shift = 0, size; - this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function(ch, i){ + this.line = this.line.replace(/\t|[\u1100-\u2029, \u202F-\uFFE6]/g, function (ch, i) { if (ch === '\t' || session.isFullWidth(ch.charCodeAt(0))) { size = (ch === '\t') ? session.getScreenTabSize(i + shift) : 2; shift += size - 1; @@ -5027,566 +4998,299 @@ var BidiHandler = function(session) { } return ch; }); + if (this.isRtlDir) { + this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line; + this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width; + } }; - - this.updateBidiMap = function() { - var textCharTypes = [], endOfLine = this.isLastRow ? this.EOF : this.EOL; - var line = this.line + (this.showInvisibles ? endOfLine : bidiUtil.DOT); - if (bidiUtil.hasBidiCharacters(line, textCharTypes)) { - this.bidiMap = bidiUtil.doBidiReorder(line, textCharTypes, this.isRtlDir); - } else { + BidiHandler.prototype.updateBidiMap = function () { + var textCharTypes = []; + if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) { + this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir); + } + else { this.bidiMap = {}; } }; - this.markAsDirty = function() { + BidiHandler.prototype.markAsDirty = function () { this.currentRow = null; }; - this.updateCharacterWidths = function(fontMetrics) { - if (!this.seenBidi) - return; + BidiHandler.prototype.updateCharacterWidths = function (fontMetrics) { if (this.characterWidth === fontMetrics.$characterSize.width) return; - + this.fontMetrics = fontMetrics; var characterWidth = this.characterWidth = fontMetrics.$characterSize.width; var bidiCharWidth = fontMetrics.$measureCharWidth("\u05d4"); - this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth; this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth; - this.charWidths[bidiUtil.R_H] = useragent.isChrome ? bidiCharWidth : bidiCharWidth * 0.45; - this.charWidths[bidiUtil.B] = 0; - + this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45; + this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0; this.currentRow = null; }; - - this.getShowInvisibles = function() { - return this.showInvisibles; - }; - - this.setShowInvisibles = function(showInvisibles) { + BidiHandler.prototype.setShowInvisibles = function (showInvisibles) { this.showInvisibles = showInvisibles; this.currentRow = null; }; - - this.setEolChar = function(eolChar) { - this.EOL = eolChar; + BidiHandler.prototype.setEolChar = function (eolChar) { + this.EOL = eolChar; }; - - this.setTextDir = function(isRtlDir) { - this.isRtlDir = isRtlDir; + BidiHandler.prototype.setContentWidth = function (width) { + this.contentWidth = width; }; - this.getPosLeft = function(col) { + BidiHandler.prototype.isRtlLine = function (row) { + if (this.$isRtl) + return true; + if (row != undefined) + return (this.session.getLine(row).charAt(0) == this.RLE); + else + return this.isRtlDir; + }; + BidiHandler.prototype.setRtlDirection = function (editor, isRtlDir) { + var cursor = editor.getCursorPosition(); + for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) { + if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE) + editor.session.doc.removeInLine(row, 0, 1); + else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE) + editor.session.doc.insert({ column: 0, row: row }, editor.session.$bidiHandler.RLE); + } + }; + BidiHandler.prototype.getPosLeft = function (col) { col -= this.wrapIndent; - var visualIdx = bidiUtil.getVisualFromLogicalIdx(col > 0 ? col - 1 : 0, this.bidiMap), - levels = this.bidiMap.bidiLevels, left = 0; - - if (col === 0 && levels[visualIdx] % 2 !== 0) + var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0; + var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary; + var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap), levels = this.bidiMap.bidiLevels, left = 0; + if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0) visualIdx++; - for (var i = 0; i < visualIdx; i++) { left += this.charWidths[levels[i]]; } - - if (col !== 0 && levels[visualIdx] % 2 === 0) + if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0)) left += this.charWidths[levels[visualIdx]]; - if (this.wrapIndent) - left += this.wrapIndent * this.charWidths[bidiUtil.L]; - + left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; + if (this.isRtlDir) + left += this.rtlLineOffset; return left; }; - this.getSelections = function(startCol, endCol) { - var map = this.bidiMap, levels = map.bidiLevels, level, offset = this.wrapIndent * this.charWidths[bidiUtil.L], selections = [], - selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, - isSelected = false, isSelectedPrev = false, selectionStart = 0; - + BidiHandler.prototype.getSelections = function (startCol, endCol) { + var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0, selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent, isSelected = false, isSelectedPrev = false, selectionStart = 0; + if (this.wrapIndent) + offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) { logIdx = map.logicalFromVisual[visIdx]; level = levels[visIdx]; isSelected = (logIdx >= selColMin) && (logIdx < selColMax); if (isSelected && !isSelectedPrev) { selectionStart = offset; - } else if (!isSelected && isSelectedPrev) { - selections.push({left: selectionStart, width: offset - selectionStart}); + } + else if (!isSelected && isSelectedPrev) { + selections.push({ left: selectionStart, width: offset - selectionStart }); } offset += this.charWidths[level]; isSelectedPrev = isSelected; } - if (isSelected && (visIdx === levels.length)) { - selections.push({left: selectionStart, width: offset - selectionStart}); + selections.push({ left: selectionStart, width: offset - selectionStart }); + } + if (this.isRtlDir) { + for (var i = 0; i < selections.length; i++) { + selections[i].left += this.rtlLineOffset; + } } - return selections; }; - this.offsetToCol = function(posX) { - var logicalIdx = 0, posX = Math.max(posX, 0), - offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, - charWidth = this.charWidths[levels[visualIdx]]; - - if (this.wrapIndent) { - posX -= this.wrapIndent * this.charWidths[bidiUtil.L]; - } - - while(posX > offset + charWidth/2) { + BidiHandler.prototype.offsetToCol = function (posX) { + if (this.isRtlDir) + posX -= this.rtlLineOffset; + var logicalIdx = 0, posX = Math.max(posX, 0), offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels, charWidth = this.charWidths[levels[visualIdx]]; + if (this.wrapIndent) + posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset; + while (posX > offset + charWidth / 2) { offset += charWidth; - if(visualIdx === levels.length - 1) { + if (visualIdx === levels.length - 1) { charWidth = 0; break; } charWidth = this.charWidths[levels[++visualIdx]]; } - - if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){ - if(posX < offset) + if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)) { + if (posX < offset) visualIdx--; logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; - - } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){ + } + else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)) { logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx] - : this.bidiMap.logicalFromVisual[visualIdx - 1]); - - } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0)) - || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){ + : this.bidiMap.logicalFromVisual[visualIdx - 1]); + } + else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0)) + || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))) { logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx]; - } else { + } + else { if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0) visualIdx--; logicalIdx = this.bidiMap.logicalFromVisual[visualIdx]; } - + if (logicalIdx === 0 && this.isRtlDir) + logicalIdx++; return (logicalIdx + this.wrapIndent); }; - -}).call(BidiHandler.prototype); - + return BidiHandler; +}()); exports.BidiHandler = BidiHandler; + }); -define("ace/range",["require","exports","module"], function(require, exports, module) { -"use strict"; -var comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -var Range = function(startRow, startColumn, endRow, endColumn) { - this.start = { - row: startRow, - column: startColumn - }; - - this.end = { - row: endRow, - column: endColumn - }; -}; - -(function() { - this.isEqual = function(range) { - return this.start.row === range.start.row && - this.end.row === range.end.row && - this.start.column === range.start.column && - this.end.column === range.end.column; - }; - this.toString = function() { - return ("Range: [" + this.start.row + "/" + this.start.column + - "] -> [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var lang = require("./lib/lang"); var EventEmitter = require("./lib/event_emitter").EventEmitter; var Range = require("./range").Range; -var Selection = function(session) { - this.session = session; - this.doc = session.getDocument(); - - this.clearSelection(); - this.lead = this.selectionLead = this.doc.createAnchor(0, 0); - this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0); - - var self = this; - this.lead.on("change", function(e) { - self._emit("changeCursor"); - if (!self.$isEmpty) - self._emit("changeSelection"); - if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) - self.$desiredColumn = null; - }); - - this.selectionAnchor.on("change", function() { - if (!self.$isEmpty) - self._emit("changeSelection"); - }); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.isEmpty = function() { - return (this.$isEmpty || ( - this.anchor.row == this.lead.row && - this.anchor.column == this.lead.column - )); +var Selection = /** @class */ (function () { + function Selection(session) { + this.session = session; + this.doc = session.getDocument(); + this.clearSelection(); + this.cursor = this.lead = this.doc.createAnchor(0, 0); + this.anchor = this.doc.createAnchor(0, 0); + this.$silent = false; + var self = this; + this.cursor.on("change", function (e) { + self.$cursorChanged = true; + if (!self.$silent) + self._emit("changeCursor"); + if (!self.$isEmpty && !self.$silent) + self._emit("changeSelection"); + if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column) + self.$desiredColumn = null; + }); + this.anchor.on("change", function () { + self.$anchorChanged = true; + if (!self.$isEmpty && !self.$silent) + self._emit("changeSelection"); + }); + } + Selection.prototype.isEmpty = function () { + return this.$isEmpty || (this.anchor.row == this.lead.row && + this.anchor.column == this.lead.column); }; - this.isMultiLine = function() { - if (this.isEmpty()) { - return false; - } - - return this.getRange().isMultiLine(); + Selection.prototype.isMultiLine = function () { + return !this.$isEmpty && this.anchor.row != this.cursor.row; }; - this.getCursor = function() { + Selection.prototype.getCursor = function () { return this.lead.getPosition(); }; - this.setSelectionAnchor = function(row, column) { + Selection.prototype.setAnchor = function (row, column) { + this.$isEmpty = false; this.anchor.setPosition(row, column); - - if (this.$isEmpty) { - this.$isEmpty = false; - this._emit("changeSelection"); - } }; - this.getSelectionAnchor = function() { + Selection.prototype.getAnchor = function () { if (this.$isEmpty) return this.getSelectionLead(); - else - return this.anchor.getPosition(); + return this.anchor.getPosition(); }; - this.getSelectionLead = function() { + Selection.prototype.getSelectionLead = function () { return this.lead.getPosition(); }; - this.shiftSelection = function(columns) { - if (this.$isEmpty) { - this.moveCursorTo(this.lead.row, this.lead.column + columns); - return; - } - - var anchor = this.getSelectionAnchor(); - var lead = this.getSelectionLead(); - - var isBackwards = this.isBackwards(); - - if (!isBackwards || anchor.column !== 0) - this.setSelectionAnchor(anchor.row, anchor.column + columns); - - if (isBackwards || lead.column !== 0) { - this.$moveSelection(function() { - this.moveCursorTo(lead.row, lead.column + columns); - }); - } - }; - this.isBackwards = function() { + Selection.prototype.isBackwards = function () { var anchor = this.anchor; var lead = this.lead; return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column)); }; - this.getRange = function() { + Selection.prototype.getRange = function () { var anchor = this.anchor; var lead = this.lead; - - if (this.isEmpty()) + if (this.$isEmpty) return Range.fromPoints(lead, lead); - - if (this.isBackwards()) { - return Range.fromPoints(lead, anchor); - } - else { - return Range.fromPoints(anchor, lead); - } + return this.isBackwards() + ? Range.fromPoints(lead, anchor) + : Range.fromPoints(anchor, lead); }; - this.clearSelection = function() { + Selection.prototype.clearSelection = function () { if (!this.$isEmpty) { this.$isEmpty = true; this._emit("changeSelection"); } }; - this.selectAll = function() { - var lastRow = this.doc.getLength() - 1; - this.setSelectionAnchor(0, 0); - this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length); + Selection.prototype.selectAll = function () { + this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE); }; - this.setRange = - this.setSelectionRange = function(range, reverse) { - if (reverse) { - this.setSelectionAnchor(range.end.row, range.end.column); - this.selectTo(range.start.row, range.start.column); - } else { - this.setSelectionAnchor(range.start.row, range.start.column); - this.selectTo(range.end.row, range.end.column); - } - if (this.getRange().isEmpty()) - this.$isEmpty = true; - this.$desiredColumn = null; + Selection.prototype.setRange = function (range, reverse) { + var start = reverse ? range.end : range.start; + var end = reverse ? range.start : range.end; + this.$setSelection(start.row, start.column, end.row, end.column); }; - - this.$moveSelection = function(mover) { + Selection.prototype.$setSelection = function (anchorRow, anchorColumn, cursorRow, cursorColumn) { + if (this.$silent) + return; + var wasEmpty = this.$isEmpty; + var wasMultiselect = this.inMultiSelectMode; + this.$silent = true; + this.$cursorChanged = this.$anchorChanged = false; + this.anchor.setPosition(anchorRow, anchorColumn); + this.cursor.setPosition(cursorRow, cursorColumn); + this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor); + this.$silent = false; + if (this.$cursorChanged) + this._emit("changeCursor"); + if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect) + this._emit("changeSelection"); + }; + Selection.prototype.$moveSelection = function (mover) { var lead = this.lead; if (this.$isEmpty) this.setSelectionAnchor(lead.row, lead.column); - mover.call(this); }; - this.selectTo = function(row, column) { - this.$moveSelection(function() { + Selection.prototype.selectTo = function (row, column) { + this.$moveSelection(function () { this.moveCursorTo(row, column); }); }; - this.selectToPosition = function(pos) { - this.$moveSelection(function() { + Selection.prototype.selectToPosition = function (pos) { + this.$moveSelection(function () { this.moveCursorToPosition(pos); }); }; - this.moveTo = function(row, column) { + Selection.prototype.moveTo = function (row, column) { this.clearSelection(); this.moveCursorTo(row, column); }; - this.moveToPosition = function(pos) { + Selection.prototype.moveToPosition = function (pos) { this.clearSelection(); this.moveCursorToPosition(pos); }; - this.selectUp = function() { + Selection.prototype.selectUp = function () { this.$moveSelection(this.moveCursorUp); }; - this.selectDown = function() { + Selection.prototype.selectDown = function () { this.$moveSelection(this.moveCursorDown); }; - this.selectRight = function() { + Selection.prototype.selectRight = function () { this.$moveSelection(this.moveCursorRight); }; - this.selectLeft = function() { + Selection.prototype.selectLeft = function () { this.$moveSelection(this.moveCursorLeft); }; - this.selectLineStart = function() { + Selection.prototype.selectLineStart = function () { this.$moveSelection(this.moveCursorLineStart); }; - this.selectLineEnd = function() { + Selection.prototype.selectLineEnd = function () { this.$moveSelection(this.moveCursorLineEnd); }; - this.selectFileEnd = function() { + Selection.prototype.selectFileEnd = function () { this.$moveSelection(this.moveCursorFileEnd); }; - this.selectFileStart = function() { + Selection.prototype.selectFileStart = function () { this.$moveSelection(this.moveCursorFileStart); }; - this.selectWordRight = function() { + Selection.prototype.selectWordRight = function () { this.$moveSelection(this.moveCursorWordRight); }; - this.selectWordLeft = function() { + Selection.prototype.selectWordLeft = function () { this.$moveSelection(this.moveCursorWordLeft); }; - this.getWordRange = function(row, column) { + Selection.prototype.getWordRange = function (row, column) { if (typeof column == "undefined") { var cursor = row || this.lead; row = cursor.row; @@ -5594,24 +5298,23 @@ var Selection = function(session) { } return this.session.getWordRange(row, column); }; - this.selectWord = function() { + Selection.prototype.selectWord = function () { this.setSelectionRange(this.getWordRange()); }; - this.selectAWord = function() { + Selection.prototype.selectAWord = function () { var cursor = this.getCursor(); var range = this.session.getAWordRange(cursor.row, cursor.column); this.setSelectionRange(range); }; - - this.getLineRange = function(row, excludeLastChar) { + Selection.prototype.getLineRange = function (row, excludeLastChar) { var rowStart = typeof row == "number" ? row : this.lead.row; var rowEnd; - var foldLine = this.session.getFoldLine(rowStart); if (foldLine) { rowStart = foldLine.start.row; rowEnd = foldLine.end.row; - } else { + } + else { rowEnd = rowStart; } if (excludeLastChar === true) @@ -5619,32 +5322,30 @@ var Selection = function(session) { else return new Range(rowStart, 0, rowEnd + 1, 0); }; - this.selectLine = function() { + Selection.prototype.selectLine = function () { this.setSelectionRange(this.getLineRange()); }; - this.moveCursorUp = function() { + Selection.prototype.moveCursorUp = function () { this.moveCursorBy(-1, 0); }; - this.moveCursorDown = function() { + Selection.prototype.moveCursorDown = function () { this.moveCursorBy(1, 0); }; - this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) { + Selection.prototype.wouldMoveIntoSoftTab = function (cursor, tabSize, direction) { var start = cursor.column; var end = cursor.column + tabSize; - if (direction < 0) { start = cursor.column - tabSize; end = cursor.column; } - return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length-1 == tabSize; + return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length - 1 == tabSize; }; - this.moveCursorLeft = function() { - var cursor = this.lead.getPosition(), - fold; - + Selection.prototype.moveCursorLeft = function () { + var cursor = this.lead.getPosition(), fold; if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) { this.moveCursorTo(fold.start.row, fold.start.column); - } else if (cursor.column === 0) { + } + else if (cursor.column === 0) { if (cursor.row > 0) { this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length); } @@ -5653,14 +5354,14 @@ var Selection = function(session) { var tabSize = this.session.getTabSize(); if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) { this.moveCursorBy(0, -tabSize); - } else { + } + else { this.moveCursorBy(0, -1); } } }; - this.moveCursorRight = function() { - var cursor = this.lead.getPosition(), - fold; + Selection.prototype.moveCursorRight = function () { + var cursor = this.lead.getPosition(), fold; if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) { this.moveCursorTo(fold.end.row, fold.end.column); } @@ -5674,27 +5375,24 @@ var Selection = function(session) { var cursor = this.lead; if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) { this.moveCursorBy(0, tabSize); - } else { + } + else { this.moveCursorBy(0, 1); } } }; - this.moveCursorLineStart = function() { + Selection.prototype.moveCursorLineStart = function () { var row = this.lead.row; var column = this.lead.column; var screenRow = this.session.documentToScreenRow(row, column); var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0); - var beforeCursor = this.session.getDisplayLine( - row, null, firstColumnPosition.row, - firstColumnPosition.column - ); - + var beforeCursor = this.session.getDisplayLine(row, null, firstColumnPosition.row, firstColumnPosition.column); var leadingSpace = beforeCursor.match(/^\s*/); if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart) firstColumnPosition.column += leadingSpace[0].length; this.moveCursorToPosition(firstColumnPosition); }; - this.moveCursorLineEnd = function() { + Selection.prototype.moveCursorLineEnd = function () { var lead = this.lead; var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column); if (this.lead.column == lineEnd.column) { @@ -5705,24 +5403,21 @@ var Selection = function(session) { lineEnd.column = textEnd; } } - this.moveCursorTo(lineEnd.row, lineEnd.column); }; - this.moveCursorFileEnd = function() { + Selection.prototype.moveCursorFileEnd = function () { var row = this.doc.getLength() - 1; var column = this.doc.getLine(row).length; this.moveCursorTo(row, column); }; - this.moveCursorFileStart = function() { + Selection.prototype.moveCursorFileStart = function () { this.moveCursorTo(0, 0); }; - this.moveCursorLongWordRight = function() { + Selection.prototype.moveCursorLongWordRight = function () { var row = this.lead.row; var column = this.lead.column; var line = this.doc.getLine(row); var rightOfCursor = line.substring(column); - - var match; this.session.nonTokenRe.lastIndex = 0; this.session.tokenRe.lastIndex = 0; var fold = this.session.getFoldAt(row, column, 1); @@ -5730,7 +5425,7 @@ var Selection = function(session) { this.moveCursorTo(fold.end.row, fold.end.column); return; } - if (match = this.session.nonTokenRe.exec(rightOfCursor)) { + if (this.session.nonTokenRe.exec(rightOfCursor)) { column += this.session.nonTokenRe.lastIndex; this.session.nonTokenRe.lastIndex = 0; rightOfCursor = line.substring(column); @@ -5742,14 +5437,13 @@ var Selection = function(session) { this.moveCursorWordRight(); return; } - if (match = this.session.tokenRe.exec(rightOfCursor)) { + if (this.session.tokenRe.exec(rightOfCursor)) { column += this.session.tokenRe.lastIndex; this.session.tokenRe.lastIndex = 0; } - this.moveCursorTo(row, column); }; - this.moveCursorLongWordLeft = function() { + Selection.prototype.moveCursorLongWordLeft = function () { var row = this.lead.row; var column = this.lead.column; var fold; @@ -5757,17 +5451,14 @@ var Selection = function(session) { this.moveCursorTo(fold.start.row, fold.start.column); return; } - var str = this.session.getFoldStringAt(row, column, -1); if (str == null) { str = this.doc.getLine(row).substring(0, column); } - var leftOfCursor = lang.stringReverse(str); - var match; this.session.nonTokenRe.lastIndex = 0; this.session.tokenRe.lastIndex = 0; - if (match = this.session.nonTokenRe.exec(leftOfCursor)) { + if (this.session.nonTokenRe.exec(leftOfCursor)) { column -= this.session.nonTokenRe.lastIndex; leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex); this.session.nonTokenRe.lastIndex = 0; @@ -5779,38 +5470,36 @@ var Selection = function(session) { this.moveCursorWordLeft(); return; } - if (match = this.session.tokenRe.exec(leftOfCursor)) { + if (this.session.tokenRe.exec(leftOfCursor)) { column -= this.session.tokenRe.lastIndex; this.session.tokenRe.lastIndex = 0; } - this.moveCursorTo(row, column); }; - - this.$shortWordEndIndex = function(rightOfCursor) { - var match, index = 0, ch; + Selection.prototype.$shortWordEndIndex = function (rightOfCursor) { + var index = 0, ch; var whitespaceRe = /\s/; var tokenRe = this.session.tokenRe; - tokenRe.lastIndex = 0; - if (match = this.session.tokenRe.exec(rightOfCursor)) { + if (this.session.tokenRe.exec(rightOfCursor)) { index = this.session.tokenRe.lastIndex; - } else { + } + else { while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index ++; - + index++; if (index < 1) { tokenRe.lastIndex = 0; - while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { + while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) { tokenRe.lastIndex = 0; - index ++; + index++; if (whitespaceRe.test(ch)) { if (index > 2) { index--; break; - } else { + } + else { while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch)) - index ++; + index++; if (index > 2) break; } @@ -5819,120 +5508,100 @@ var Selection = function(session) { } } tokenRe.lastIndex = 0; - return index; }; - - this.moveCursorShortWordRight = function() { + Selection.prototype.moveCursorShortWordRight = function () { var row = this.lead.row; var column = this.lead.column; var line = this.doc.getLine(row); var rightOfCursor = line.substring(column); - var fold = this.session.getFoldAt(row, column, 1); if (fold) return this.moveCursorTo(fold.end.row, fold.end.column); - if (column == line.length) { var l = this.doc.getLength(); do { row++; rightOfCursor = this.doc.getLine(row); } while (row < l && /^\s*$/.test(rightOfCursor)); - if (!/^\s+/.test(rightOfCursor)) rightOfCursor = ""; column = 0; } - var index = this.$shortWordEndIndex(rightOfCursor); - this.moveCursorTo(row, column + index); }; - - this.moveCursorShortWordLeft = function() { + Selection.prototype.moveCursorShortWordLeft = function () { var row = this.lead.row; var column = this.lead.column; - var fold; if (fold = this.session.getFoldAt(row, column, -1)) return this.moveCursorTo(fold.start.row, fold.start.column); - var line = this.session.getLine(row).substring(0, column); if (column === 0) { do { row--; line = this.doc.getLine(row); } while (row > 0 && /^\s*$/.test(line)); - column = line.length; if (!/\s+$/.test(line)) line = ""; } - var leftOfCursor = lang.stringReverse(line); var index = this.$shortWordEndIndex(leftOfCursor); - return this.moveCursorTo(row, column - index); }; - - this.moveCursorWordRight = function() { + Selection.prototype.moveCursorWordRight = function () { if (this.session.$selectLongWords) this.moveCursorLongWordRight(); else this.moveCursorShortWordRight(); }; - - this.moveCursorWordLeft = function() { + Selection.prototype.moveCursorWordLeft = function () { if (this.session.$selectLongWords) this.moveCursorLongWordLeft(); else this.moveCursorShortWordLeft(); }; - this.moveCursorBy = function(rows, chars) { - var screenPos = this.session.documentToScreenPosition( - this.lead.row, - this.lead.column - ); - + Selection.prototype.moveCursorBy = function (rows, chars) { + var screenPos = this.session.documentToScreenPosition(this.lead.row, this.lead.column); var offsetX; - if (chars === 0) { if (rows !== 0) { if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) { offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column); screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]); - } else { + } + else { offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0]; } } - if (this.$desiredColumn) screenPos.column = this.$desiredColumn; else this.$desiredColumn = screenPos.column; } - + if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) { + var widget = this.session.lineWidgets[this.lead.row]; + if (rows < 0) + rows -= widget.rowsAbove || 0; + else if (rows > 0) + rows += widget.rowCount - (widget.rowsAbove || 0); + } var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX); - if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) { - if (this.session.lineWidgets && this.session.lineWidgets[docPos.row]) { - if (docPos.row > 0 || rows > 0) - docPos.row++; - } } this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0); }; - this.moveCursorToPosition = function(position) { + Selection.prototype.moveCursorToPosition = function (position) { this.moveCursorTo(position.row, position.column); }; - this.moveCursorTo = function(row, column, keepDesiredColumn) { + Selection.prototype.moveCursorTo = function (row, column, keepDesiredColumn) { var fold = this.session.getFoldAt(row, column, 1); if (fold) { row = fold.start.row; column = fold.start.column; } - this.$keepDesiredColumnOnChange = true; var line = this.session.getLine(row); if (/[\uDC00-\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) { @@ -5943,201 +5612,193 @@ var Selection = function(session) { } this.lead.setPosition(row, column); this.$keepDesiredColumnOnChange = false; - if (!keepDesiredColumn) this.$desiredColumn = null; }; - this.moveCursorToScreen = function(row, column, keepDesiredColumn) { + Selection.prototype.moveCursorToScreen = function (row, column, keepDesiredColumn) { var pos = this.session.screenToDocumentPosition(row, column); this.moveCursorTo(pos.row, pos.column, keepDesiredColumn); }; - this.detach = function() { + Selection.prototype.detach = function () { this.lead.detach(); this.anchor.detach(); - this.session = this.doc = null; }; - - this.fromOrientedRange = function(range) { + Selection.prototype.fromOrientedRange = function (range) { this.setSelectionRange(range, range.cursor == range.start); this.$desiredColumn = range.desiredColumn || this.$desiredColumn; }; - - this.toOrientedRange = function(range) { + Selection.prototype.toOrientedRange = function (range) { var r = this.getRange(); if (range) { range.start.column = r.start.column; range.start.row = r.start.row; range.end.column = r.end.column; range.end.row = r.end.row; - } else { + } + else { range = r; } - range.cursor = this.isBackwards() ? range.start : range.end; range.desiredColumn = this.$desiredColumn; return range; }; - this.getRangeOfMovements = function(func) { + Selection.prototype.getRangeOfMovements = function (func) { var start = this.getCursor(); try { func(this); var end = this.getCursor(); - return Range.fromPoints(start,end); - } catch(e) { - return Range.fromPoints(start,start); - } finally { + return Range.fromPoints(start, end); + } + catch (e) { + return Range.fromPoints(start, start); + } + finally { this.moveCursorToPosition(start); } }; - - this.toJSON = function() { - if (this.rangeCount) { - var data = this.ranges.map(function(r) { + Selection.prototype.toJSON = function () { + if (this.rangeCount) { var data = this.ranges.map(function (r) { var r1 = r.clone(); r1.isBackwards = r.cursor == r.start; return r1; }); - } else { - var data = this.getRange(); + } + else { var data = this.getRange(); data.isBackwards = this.isBackwards(); } return data; }; - - this.fromJSON = function(data) { + Selection.prototype.fromJSON = function (data) { if (data.start == undefined) { - if (this.rangeList) { + if (this.rangeList && data.length > 1) { this.toSingleRange(data[0]); - for (var i = data.length; i--; ) { + for (var i = data.length; i--;) { var r = Range.fromPoints(data[i].start, data[i].end); if (data[i].isBackwards) r.cursor = r.start; this.addRange(r, true); } return; - } else + } + else { data = data[0]; + } } if (this.rangeList) this.toSingleRange(data); this.setSelectionRange(data, data.isBackwards); }; - - this.isEqual = function(data) { + Selection.prototype.isEqual = function (data) { if ((data.length || this.rangeCount) && data.length != this.rangeCount) return false; if (!data.length || !this.ranges) return this.getRange().isEqual(data); - - for (var i = this.ranges.length; i--; ) { + for (var i = this.ranges.length; i--;) { if (!this.ranges[i].isEqual(data[i])) return false; } return true; }; - -}).call(Selection.prototype); - + return Selection; +}()); +Selection.prototype.setSelectionAnchor = Selection.prototype.setAnchor; +Selection.prototype.getSelectionAnchor = Selection.prototype.getAnchor; +Selection.prototype.setSelectionRange = Selection.prototype.setRange; +oop.implement(Selection.prototype, EventEmitter); exports.Selection = Selection; + }); -define("ace/tokenizer",["require","exports","module","ace/config"], function(require, exports, module) { -"use strict"; - -var config = require("./config"); +define("ace/tokenizer",["require","exports","module","ace/lib/report_error"], function(require, exports, module){"use strict"; +var reportError = require("./lib/report_error").reportError; var MAX_TOKEN_COUNT = 2000; -var Tokenizer = function(rules) { - this.states = rules; - - this.regExps = {}; - this.matchMappings = {}; - for (var key in this.states) { - var state = this.states[key]; - var ruleRegExps = []; - var matchTotal = 0; - var mapping = this.matchMappings[key] = {defaultToken: "text"}; - var flag = "g"; - - var splitterRurles = []; - for (var i = 0; i < state.length; i++) { - var rule = state[i]; - if (rule.defaultToken) - mapping.defaultToken = rule.defaultToken; - if (rule.caseInsensitive) - flag = "gi"; - if (rule.regex == null) - continue; - - if (rule.regex instanceof RegExp) - rule.regex = rule.regex.toString().slice(1, -1); - var adjustedregex = rule.regex; - var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; - if (Array.isArray(rule.token)) { - if (rule.token.length == 1 || matchcount == 1) { - rule.token = rule.token[0]; - } else if (matchcount - 1 != rule.token.length) { - this.reportError("number of classes and regexp groups doesn't match", { - rule: rule, - groupCount: matchcount - 1 - }); - rule.token = rule.token[0]; - } else { - rule.tokenArray = rule.token; - rule.token = null; - rule.onMatch = this.$arrayTokens; +var Tokenizer = /** @class */ (function () { + function Tokenizer(rules) { + this.splitRegex; + this.states = rules; + this.regExps = {}; + this.matchMappings = {}; + for (var key in this.states) { + var state = this.states[key]; + var ruleRegExps = []; + var matchTotal = 0; + var mapping = this.matchMappings[key] = { defaultToken: "text" }; + var flag = "g"; + var splitterRurles = []; + for (var i = 0; i < state.length; i++) { + var rule = state[i]; + if (rule.defaultToken) + mapping.defaultToken = rule.defaultToken; + if (rule.caseInsensitive && flag.indexOf("i") === -1) + flag += "i"; + if (rule.unicode && flag.indexOf("u") === -1) + flag += "u"; + if (rule.regex == null) + continue; + if (rule.regex instanceof RegExp) + rule.regex = rule.regex.toString().slice(1, -1); + var adjustedregex = rule.regex; + var matchcount = new RegExp("(?:(" + adjustedregex + ")|(.))").exec("a").length - 2; + if (Array.isArray(rule.token)) { + if (rule.token.length == 1 || matchcount == 1) { + rule.token = rule.token[0]; + } + else if (matchcount - 1 != rule.token.length) { + this.reportError("number of classes and regexp groups doesn't match", { + rule: rule, + groupCount: matchcount - 1 + }); + rule.token = rule.token[0]; + } + else { + rule.tokenArray = rule.token; + rule.token = null; + rule.onMatch = this.$arrayTokens; + } } - } else if (typeof rule.token == "function" && !rule.onMatch) { - if (matchcount > 1) - rule.onMatch = this.$applyToken; - else - rule.onMatch = rule.token; - } - - if (matchcount > 1) { - if (/\\\d/.test(rule.regex)) { - adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function(match, digit) { - return "\\" + (parseInt(digit, 10) + matchTotal + 1); - }); - } else { - matchcount = 1; - adjustedregex = this.removeCapturingGroups(rule.regex); + else if (typeof rule.token == "function" && !rule.onMatch) { + if (matchcount > 1) + rule.onMatch = this.$applyToken; + else + rule.onMatch = rule.token; } - if (!rule.splitRegex && typeof rule.token != "string") - splitterRurles.push(rule); // flag will be known only at the very end + if (matchcount > 1) { + if (/\\\d/.test(rule.regex)) { + adjustedregex = rule.regex.replace(/\\([0-9]+)/g, function (match, digit) { + return "\\" + (parseInt(digit, 10) + matchTotal + 1); + }); + } + else { + matchcount = 1; + adjustedregex = this.removeCapturingGroups(rule.regex); + } + if (!rule.splitRegex && typeof rule.token != "string") + splitterRurles.push(rule); // flag will be known only at the very end + } + mapping[matchTotal] = i; + matchTotal += matchcount; + ruleRegExps.push(adjustedregex); + if (!rule.onMatch) + rule.onMatch = null; } - - mapping[matchTotal] = i; - matchTotal += matchcount; - - ruleRegExps.push(adjustedregex); - if (!rule.onMatch) - rule.onMatch = null; + if (!ruleRegExps.length) { + mapping[0] = 0; + ruleRegExps.push("$"); + } + splitterRurles.forEach(function (rule) { + rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); + }, this); + this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); } - - if (!ruleRegExps.length) { - mapping[0] = 0; - ruleRegExps.push("$"); - } - - splitterRurles.forEach(function(rule) { - rule.splitRegex = this.createSplitterRegexp(rule.regex, flag); - }, this); - - this.regExps[key] = new RegExp("(" + ruleRegExps.join(")|(") + ")|($)", flag); } -}; - -(function() { - this.$setMaxTokenCount = function(m) { + Tokenizer.prototype.$setMaxTokenCount = function (m) { MAX_TOKEN_COUNT = m | 0; }; - - this.$applyToken = function(str) { + Tokenizer.prototype.$applyToken = function (str) { var values = this.splitRegex.exec(str).slice(1); var types = this.token.apply(this, values); if (typeof types === "string") - return [{type: types, value: str}]; - + return [{ type: types, value: str }]; var tokens = []; for (var i = 0, l = types.length; i < l; i++) { if (values[i]) @@ -6148,8 +5809,7 @@ var Tokenizer = function(rules) { } return tokens; }; - - this.$arrayTokens = function(str) { + Tokenizer.prototype.$arrayTokens = function (str) { if (!str) return []; var values = this.splitRegex.exec(str); @@ -6166,34 +5826,30 @@ var Tokenizer = function(rules) { } return tokens; }; - - this.removeCapturingGroups = function(src) { - var r = src.replace( - /\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g, - function(x, y) {return y ? "(?:" : x;} - ); + Tokenizer.prototype.removeCapturingGroups = function (src) { + var r = src.replace(/\\.|\[(?:\\.|[^\\\]])*|\(\?[:=!<]|(\()/g, function (x, y) { return y ? "(?:" : x; }); return r; }; - - this.createSplitterRegexp = function(src, flag) { + Tokenizer.prototype.createSplitterRegexp = function (src, flag) { if (src.indexOf("(?=") != -1) { var stack = 0; var inChClass = false; var lastCapture = {}; - src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function( - m, esc, parenOpen, parenClose, square, index - ) { + src.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g, function (m, esc, parenOpen, parenClose, square, index) { if (inChClass) { inChClass = square != "]"; - } else if (square) { + } + else if (square) { inChClass = true; - } else if (parenClose) { + } + else if (parenClose) { if (stack == lastCapture.stack) { - lastCapture.end = index+1; + lastCapture.end = index + 1; lastCapture.stack = -1; } stack--; - } else if (parenOpen) { + } + else if (parenOpen) { stack++; if (parenOpen.length != 1) { lastCapture.stack = stack; @@ -6202,16 +5858,16 @@ var Tokenizer = function(rules) { } return m; }); - if (lastCapture.end != null && /^\)*$/.test(src.substr(lastCapture.end))) src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end); } - if (src.charAt(0) != "^") src = "^" + src; - if (src.charAt(src.length - 1) != "$") src += "$"; - - return new RegExp(src, (flag||"").replace("g", "")); + if (src.charAt(0) != "^") + src = "^" + src; + if (src.charAt(src.length - 1) != "$") + src += "$"; + return new RegExp(src, (flag || "").replace("g", "")); }; - this.getLineTokens = function(line, startState) { + Tokenizer.prototype.getLineTokens = function (line, startState) { if (startState && typeof startState != "string") { var stack = startState.slice(0); startState = stack[0]; @@ -6219,10 +5875,10 @@ var Tokenizer = function(rules) { stack.shift(); startState = stack.shift(); } - } else + } + else var stack = []; - - var currentState = startState || "start"; + var currentState = /**@type{string}*/ (startState) || "start"; var state = this.states[currentState]; if (!state) { currentState = "start"; @@ -6231,48 +5887,41 @@ var Tokenizer = function(rules) { var mapping = this.matchMappings[currentState]; var re = this.regExps[currentState]; re.lastIndex = 0; - var match, tokens = []; var lastIndex = 0; var matchAttempts = 0; - - var token = {type: null, value: ""}; - + var token = { type: null, value: "" }; while (match = re.exec(line)) { var type = mapping.defaultToken; var rule = null; var value = match[0]; var index = re.lastIndex; - if (index - value.length > lastIndex) { var skipped = line.substring(lastIndex, index - value.length); if (token.type == type) { token.value += skipped; - } else { + } + else { if (token.type) tokens.push(token); - token = {type: type, value: skipped}; + token = { type: type, value: skipped }; } } - - for (var i = 0; i < match.length-2; i++) { + for (var i = 0; i < match.length - 2; i++) { if (match[i + 1] === undefined) continue; - rule = state[mapping[i]]; - if (rule.onMatch) type = rule.onMatch(value, currentState, stack, line); else type = rule.token; - if (rule.next) { if (typeof rule.next == "string") { currentState = rule.next; - } else { + } + else { currentState = rule.next(currentState, stack); } - state = this.states[currentState]; if (!state) { this.reportError("state doesn't exist", currentState); @@ -6288,30 +5937,28 @@ var Tokenizer = function(rules) { lastIndex = index; break; } - if (value) { if (typeof type === "string") { if ((!rule || rule.merge !== false) && token.type === type) { token.value += value; - } else { + } + else { if (token.type) tokens.push(token); - token = {type: type, value: value}; + token = { type: type, value: value }; } - } else if (type) { + } + else if (type) { if (token.type) tokens.push(token); - token = {type: null, value: ""}; + token = { type: null, value: "" }; for (var i = 0; i < type.length; i++) tokens.push(type[i]); } } - if (lastIndex == line.length) break; - lastIndex = index; - if (matchAttempts++ > MAX_TOKEN_COUNT) { if (matchAttempts > 2 * line.length) { this.reportError("infinite loop with in ace tokenizer", { @@ -6323,7 +5970,7 @@ var Tokenizer = function(rules) { if (token.type) tokens.push(token); token = { - value: line.substring(lastIndex, lastIndex += 2000), + value: line.substring(lastIndex, lastIndex += 500), type: "overflow" }; } @@ -6332,47 +5979,39 @@ var Tokenizer = function(rules) { break; } } - if (token.type) tokens.push(token); - if (stack.length > 1) { if (stack[0] !== currentState) stack.unshift("#tmp", currentState); } return { - tokens : tokens, - state : stack.length ? stack : currentState + tokens: tokens, + state: stack.length ? stack : currentState }; }; - - this.reportError = config.reportError; - -}).call(Tokenizer.prototype); - + return Tokenizer; +}()); +Tokenizer.prototype.reportError = reportError; exports.Tokenizer = Tokenizer; + }); -define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"], function(require, exports, module) { -"use strict"; - -var lang = require("../lib/lang"); - -var TextHighlightRules = function() { - +define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"], function(require, exports, module){"use strict"; +var deepCopy = require("../lib/deep_copy").deepCopy; +var TextHighlightRules; +TextHighlightRules = function () { this.$rules = { - "start" : [{ - token : "empty_line", - regex : '^$' - }, { - defaultToken : "text" - }] + "start": [{ + token: "empty_line", + regex: '^$' + }, { + defaultToken: "text" + }] }; }; - -(function() { - - this.addRules = function(rules, prefix) { +(function () { + this.addRules = function (rules, prefix) { if (!prefix) { for (var key in rules) this.$rules[key] = rules[key]; @@ -6394,11 +6033,9 @@ var TextHighlightRules = function() { this.$rules[prefix + key] = state; } }; - - this.getRules = function() { + this.getRules = function () { return this.$rules; }; - this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) { var embedRules = typeof HighlightRules == "function" ? new HighlightRules().getRules() @@ -6406,45 +6043,40 @@ var TextHighlightRules = function() { if (states) { for (var i = 0; i < states.length; i++) states[i] = prefix + states[i]; - } else { + } + else { states = []; for (var key in embedRules) states.push(prefix + key); } - this.addRules(embedRules, prefix); - if (escapeRules) { var addRules = Array.prototype[append ? "push" : "unshift"]; for (var i = 0; i < states.length; i++) - addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules)); + addRules.apply(this.$rules[states[i]], deepCopy(escapeRules)); } - if (!this.$embeds) this.$embeds = []; this.$embeds.push(prefix); }; - - this.getEmbeds = function() { + this.getEmbeds = function () { return this.$embeds; }; - - var pushState = function(currentState, stack) { + var pushState = function (currentState, stack) { if (currentState != "start" || stack.length) stack.unshift(this.nextState, currentState); return this.nextState; }; - var popState = function(currentState, stack) { + var popState = function (currentState, stack) { stack.shift(); return stack.shift() || "start"; }; - - this.normalizeRules = function() { + this.normalizeRules = function () { var id = 0; var rules = this.$rules; function processState(key) { var state = rules[key]; - state.processed = true; + state["processed"] = true; for (var i = 0; i < state.length; i++) { var rule = state[i]; var toInsert = null; @@ -6469,7 +6101,7 @@ var TextHighlightRules = function() { var next = rule.next || rule.push; if (next && Array.isArray(next)) { var stateName = rule.stateName; - if (!stateName) { + if (!stateName) { stateName = rule.token; if (typeof stateName != "string") stateName = stateName[0] || ""; @@ -6479,101 +6111,92 @@ var TextHighlightRules = function() { rules[stateName] = next; rule.next = stateName; processState(stateName); - } else if (next == "pop") { + } + else if (next == "pop") { rule.next = popState; } - if (rule.push) { rule.nextState = rule.next || rule.push; rule.next = pushState; delete rule.push; } - if (rule.rules) { for (var r in rule.rules) { if (rules[r]) { if (rules[r].push) rules[r].push.apply(rules[r], rule.rules[r]); - } else { + } + else { rules[r] = rule.rules[r]; } } } var includeName = typeof rule == "string" ? rule : rule.include; if (includeName) { + if (includeName === "$self") + includeName = "start"; if (Array.isArray(includeName)) - toInsert = includeName.map(function(x) { return rules[x]; }); + toInsert = includeName.map(function (x) { return rules[x]; }); else toInsert = rules[includeName]; } - if (toInsert) { var args = [i, 1].concat(toInsert); if (rule.noEscape) - args = args.filter(function(x) {return !x.next;}); + args = args.filter(function (x) { return !x.next; }); state.splice.apply(state, args); i--; } - if (rule.keywordMap) { - rule.token = this.createKeywordMapper( - rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive - ); + rule.token = this.createKeywordMapper(rule.keywordMap, rule.defaultToken || "text", rule.caseInsensitive); delete rule.defaultToken; } } } Object.keys(rules).forEach(processState, this); }; - - this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) { + this.createKeywordMapper = function (map, defaultToken, ignoreCase, splitChar) { var keywords = Object.create(null); - Object.keys(map).forEach(function(className) { + this.$keywordList = []; + Object.keys(map).forEach(function (className) { var a = map[className]; - if (ignoreCase) - a = a.toLowerCase(); var list = a.split(splitChar || "|"); - for (var i = list.length; i--; ) - keywords[list[i]] = className; - }); - if (Object.getPrototypeOf(keywords)) { - keywords.__proto__ = null; - } - this.$keywordList = Object.keys(keywords); + for (var i = list.length; i--;) { + var word = list[i]; + this.$keywordList.push(word); + if (ignoreCase) + word = word.toLowerCase(); + keywords[word] = className; + } + }, this); map = null; return ignoreCase - ? function(value) {return keywords[value.toLowerCase()] || defaultToken; } - : function(value) {return keywords[value] || defaultToken; }; + ? function (value) { return keywords[value.toLowerCase()] || defaultToken; } + : function (value) { return keywords[value] || defaultToken; }; }; - - this.getKeywords = function() { + this.getKeywords = function () { return this.$keywords; }; - }).call(TextHighlightRules.prototype); - exports.TextHighlightRules = TextHighlightRules; + }); -define("ace/mode/behaviour",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var Behaviour = function() { - this.$behaviours = {}; +define("ace/mode/behaviour",["require","exports","module"], function(require, exports, module){"use strict"; +var Behaviour; +Behaviour = function () { + this.$behaviours = {}; }; - (function () { - this.add = function (name, action, callback) { switch (undefined) { - case this.$behaviours: - this.$behaviours = {}; - case this.$behaviours[name]: - this.$behaviours[name] = {}; + case this.$behaviours: + this.$behaviours = {}; + case this.$behaviours[name]: + this.$behaviours[name] = {}; } this.$behaviours[name][action] = callback; }; - this.addBehaviours = function (behaviours) { for (var key in behaviours) { for (var action in behaviours[key]) { @@ -6581,26 +6204,25 @@ var Behaviour = function() { } } }; - this.remove = function (name) { if (this.$behaviours && this.$behaviours[name]) { delete this.$behaviours[name]; } }; - this.inherit = function (mode, filter) { if (typeof mode === "function") { var behaviours = new mode().getBehaviours(filter); - } else { + } + else { var behaviours = mode.getBehaviours(filter); } this.addBehaviours(behaviours); }; - this.getBehaviours = function (filter) { if (!filter) { return this.$behaviours; - } else { + } + else { var ret = {}; for (var i = 0; i < filter.length; i++) { if (this.$behaviours[filter[i]]) { @@ -6610,43 +6232,35 @@ var Behaviour = function() { return ret; } }; - }).call(Behaviour.prototype); - exports.Behaviour = Behaviour; + }); -define("ace/token_iterator",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/token_iterator",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("./range").Range; -var TokenIterator = function(session, initialRow, initialColumn) { - this.$session = session; - this.$row = initialRow; - this.$rowTokens = session.getTokens(initialRow); - - var token = session.getTokenAt(initialRow, initialColumn); - this.$tokenIndex = token ? token.index : -1; -}; - -(function() { - this.stepBackward = function() { +var TokenIterator = /** @class */ (function () { + function TokenIterator(session, initialRow, initialColumn) { + this.$session = session; + this.$row = initialRow; + this.$rowTokens = session.getTokens(initialRow); + var token = session.getTokenAt(initialRow, initialColumn); + this.$tokenIndex = token ? token.index : -1; + } + TokenIterator.prototype.stepBackward = function () { this.$tokenIndex -= 1; - while (this.$tokenIndex < 0) { this.$row -= 1; if (this.$row < 0) { this.$row = 0; return null; } - this.$rowTokens = this.$session.getTokens(this.$row); this.$tokenIndex = this.$rowTokens.length - 1; } - return this.$rowTokens[this.$tokenIndex]; - }; - this.stepForward = function() { + }; + TokenIterator.prototype.stepForward = function () { this.$tokenIndex += 1; var rowCount; while (this.$tokenIndex >= this.$rowTokens.length) { @@ -6657,71 +6271,60 @@ var TokenIterator = function(session, initialRow, initialColumn) { this.$row = rowCount - 1; return null; } - this.$rowTokens = this.$session.getTokens(this.$row); this.$tokenIndex = 0; } - return this.$rowTokens[this.$tokenIndex]; - }; - this.getCurrentToken = function () { + }; + TokenIterator.prototype.getCurrentToken = function () { return this.$rowTokens[this.$tokenIndex]; - }; - this.getCurrentTokenRow = function () { + }; + TokenIterator.prototype.getCurrentTokenRow = function () { return this.$row; - }; - this.getCurrentTokenColumn = function() { + }; + TokenIterator.prototype.getCurrentTokenColumn = function () { var rowTokens = this.$rowTokens; var tokenIndex = this.$tokenIndex; var column = rowTokens[tokenIndex].start; if (column !== undefined) return column; - column = 0; while (tokenIndex > 0) { tokenIndex -= 1; column += rowTokens[tokenIndex].value.length; } - - return column; + return column; }; - this.getCurrentTokenPosition = function() { - return {row: this.$row, column: this.getCurrentTokenColumn()}; + TokenIterator.prototype.getCurrentTokenPosition = function () { + return { row: this.$row, column: this.getCurrentTokenColumn() }; }; - this.getCurrentTokenRange = function() { + TokenIterator.prototype.getCurrentTokenRange = function () { var token = this.$rowTokens[this.$tokenIndex]; var column = this.getCurrentTokenColumn(); return new Range(this.$row, column, this.$row, column + token.value.length); }; - -}).call(TokenIterator.prototype); - + return TokenIterator; +}()); exports.TokenIterator = TokenIterator; + }); -define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - -var SAFE_INSERT_IN_TOKENS = - ["text", "paren.rparen", "punctuation.operator"]; -var SAFE_INSERT_BEFORE_TOKENS = - ["text", "paren.rparen", "punctuation.operator", "comment"]; - +var SAFE_INSERT_IN_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator"]; +var SAFE_INSERT_BEFORE_TOKENS = ["text", "paren.rparen", "rparen", "paren", "punctuation.operator", "comment"]; var context; var contextCache = {}; -var defaultQuotes = {'"' : '"', "'" : "'"}; - -var initContext = function(editor) { +var defaultQuotes = { '"': '"', "'": "'" }; +var initContext = function (editor) { var id = -1; if (editor.multiSelect) { id = editor.selection.index; if (contextCache.rangeCount != editor.multiSelect.rangeCount) - contextCache = {rangeCount: editor.multiSelect.rangeCount}; + contextCache = { rangeCount: editor.multiSelect.rangeCount }; } if (contextCache[id]) return context = contextCache[id]; @@ -6735,22 +6338,22 @@ var initContext = function(editor) { maybeInsertedLineEnd: "" }; }; - -var getWrapped = function(selection, selected, opening, closing) { +var getWrapped = function (selection, selected, opening, closing) { var rowDiff = selection.end.row - selection.start.row; return { text: opening + selected + closing, selection: [ - 0, - selection.start.column + 1, - rowDiff, - selection.end.column + (rowDiff ? 0 : 1) - ] + 0, + selection.start.column + 1, + rowDiff, + selection.end.column + (rowDiff ? 0 : 1) + ] }; }; - -var CstyleBehaviour = function(options) { - this.add("braces", "insertion", function(state, action, editor, session, text) { +var CstyleBehaviour; +CstyleBehaviour = function (options) { + options = options || {}; + this.add("braces", "insertion", function (state, action, editor, session, text) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); if (text == '{') { @@ -6759,14 +6362,16 @@ var CstyleBehaviour = function(options) { var selected = session.doc.getTextRange(selection); if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { return getWrapped(selection, selected, '{', '}'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) { + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options.braces) { CstyleBehaviour.recordAutoInsert(editor, session, "}"); return { text: '{}', selection: [1, 1] }; - } else { + } + else { CstyleBehaviour.recordMaybeInsert(editor, session, "{"); return { text: '{', @@ -6774,11 +6379,12 @@ var CstyleBehaviour = function(options) { }; } } - } else if (text == '}') { + } + else if (text == '}') { initContext(editor); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar == '}') { - var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row}); + var matching = session.$findOpeningBracket('}', { column: cursor.column + 1, row: cursor.row }); if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { CstyleBehaviour.popAutoInsertedClosing(); return { @@ -6787,7 +6393,8 @@ var CstyleBehaviour = function(options) { }; } } - } else if (text == "\n" || text == "\r\n") { + } + else if (text == "\n" || text == "\r\n") { initContext(editor); var closing = ""; if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) { @@ -6796,28 +6403,29 @@ var CstyleBehaviour = function(options) { } var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === '}') { - var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}'); + var openBracePos = session.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 }, '}'); if (!openBracePos) - return null; + return null; var next_indent = this.$getIndent(session.getLine(openBracePos.row)); - } else if (closing) { + } + else if (closing) { var next_indent = this.$getIndent(line); - } else { + } + else { CstyleBehaviour.clearMaybeInsertedClosing(); return; } var indent = next_indent + session.getTabString(); - return { text: '\n' + indent + '\n' + next_indent + closing, selection: [1, indent.length, 1, indent.length] }; - } else { + } + else { CstyleBehaviour.clearMaybeInsertedClosing(); } }); - - this.add("braces", "deletion", function(state, action, editor, session, range) { + this.add("braces", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected == '{') { initContext(editor); @@ -6826,33 +6434,35 @@ var CstyleBehaviour = function(options) { if (rightChar == '}') { range.end.column++; return range; - } else { + } + else { context.maybeInsertedBrackets--; } } }); - - this.add("parens", "insertion", function(state, action, editor, session, text) { + this.add("parens", "insertion", function (state, action, editor, session, text) { if (text == '(') { initContext(editor); var selection = editor.getSelectionRange(); var selected = session.doc.getTextRange(selection); if (selected !== "" && editor.getWrapBehavioursEnabled()) { return getWrapped(selection, selected, '(', ')'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { CstyleBehaviour.recordAutoInsert(editor, session, ")"); return { text: '()', selection: [1, 1] }; } - } else if (text == ')') { + } + else if (text == ')') { initContext(editor); var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar == ')') { - var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row}); + var matching = session.$findOpeningBracket(')', { column: cursor.column + 1, row: cursor.row }); if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { CstyleBehaviour.popAutoInsertedClosing(); return { @@ -6863,8 +6473,7 @@ var CstyleBehaviour = function(options) { } } }); - - this.add("parens", "deletion", function(state, action, editor, session, range) { + this.add("parens", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected == '(') { initContext(editor); @@ -6876,28 +6485,29 @@ var CstyleBehaviour = function(options) { } } }); - - this.add("brackets", "insertion", function(state, action, editor, session, text) { + this.add("brackets", "insertion", function (state, action, editor, session, text) { if (text == '[') { initContext(editor); var selection = editor.getSelectionRange(); var selected = session.doc.getTextRange(selection); if (selected !== "" && editor.getWrapBehavioursEnabled()) { return getWrapped(selection, selected, '[', ']'); - } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { + } + else if (CstyleBehaviour.isSaneInsertion(editor, session)) { CstyleBehaviour.recordAutoInsert(editor, session, "]"); return { text: '[]', selection: [1, 1] }; } - } else if (text == ']') { + } + else if (text == ']') { initContext(editor); var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar == ']') { - var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row}); + var matching = session.$findOpeningBracket(']', { column: cursor.column + 1, row: cursor.row }); if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) { CstyleBehaviour.popAutoInsertedClosing(); return { @@ -6908,8 +6518,7 @@ var CstyleBehaviour = function(options) { } } }); - - this.add("brackets", "deletion", function(state, action, editor, session, range) { + this.add("brackets", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected == '[') { initContext(editor); @@ -6921,11 +6530,10 @@ var CstyleBehaviour = function(options) { } } }); - - this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { var quotes = session.$mode.$quotes || defaultQuotes; if (text.length == 1 && quotes[text]) { - if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) + if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) return; initContext(editor); var quote = text; @@ -6933,26 +6541,25 @@ var CstyleBehaviour = function(options) { var selected = session.doc.getTextRange(selection); if (selected !== "" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) { return getWrapped(selection, selected, quote, quote); - } else if (!selected) { + } + else if (!selected) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); - var leftChar = line.substring(cursor.column-1, cursor.column); + var leftChar = line.substring(cursor.column - 1, cursor.column); var rightChar = line.substring(cursor.column, cursor.column + 1); - var token = session.getTokenAt(cursor.row, cursor.column); var rightToken = session.getTokenAt(cursor.row, cursor.column + 1); if (leftChar == "\\" && token && /escape/.test(token.type)) return null; - var stringBefore = token && /string|escape/.test(token.type); var stringAfter = !rightToken || /string|escape/.test(rightToken.type); - var pair; if (rightChar == quote) { pair = stringBefore !== stringAfter; if (pair && /string\.end/.test(rightToken.type)) pair = false; - } else { + } + else { if (stringBefore && !stringAfter) return null; // wrap string with different quote if (stringBefore && stringAfter) @@ -6961,24 +6568,29 @@ var CstyleBehaviour = function(options) { wordRe.lastIndex = 0; var isWordBefore = wordRe.test(leftChar); wordRe.lastIndex = 0; - var isWordAfter = wordRe.test(leftChar); - if (isWordBefore || isWordAfter) + var isWordAfter = wordRe.test(rightChar); + var pairQuotesAfter = session.$mode.$pairQuotesAfter; + var shouldPairQuotes = pairQuotesAfter && pairQuotesAfter[quote] && pairQuotesAfter[quote].test(leftChar); + if ((!shouldPairQuotes && isWordBefore) || isWordAfter) return null; // before or after alphanumeric if (rightChar && !/[\s;,.})\]\\]/.test(rightChar)) return null; // there is rightChar and it isn't closing + var charBefore = line[cursor.column - 2]; + if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore))) + return null; pair = true; } return { text: pair ? quote + quote : "", - selection: [1,1] + selection: [1, 1] }; } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var quotes = session.$mode.$quotes || defaultQuotes; var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) { initContext(editor); var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.start.column + 1, range.start.column + 2); @@ -6988,14 +6600,43 @@ var CstyleBehaviour = function(options) { } } }); - + if (options.closeDocComment !== false) { + this.add("doc comment end", "insertion", function (state, action, editor, session, text) { + if (state === "doc-start" && (text === "\n" || text === "\r\n") && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var nextLine = session.doc.getLine(cursor.row + 1); + var indent = this.$getIndent(line); + if (/\s*\*/.test(nextLine)) { + if (/^\s*\*/.test(line)) { + return { + text: text + indent + "* ", + selection: [1, 3 + indent.length, 1, 3 + indent.length] + }; + } + else { + return { + text: text + indent + " * ", + selection: [1, 3 + indent.length, 1, 3 + indent.length] + }; + } + } + if (/\/\*\*/.test(line.substring(0, cursor.column))) { + return { + text: text + indent + " * " + text + " " + indent + "*/", + selection: [1, 4 + indent.length, 1, 4 + indent.length] + }; + } + } + }); + } }; - - -CstyleBehaviour.isSaneInsertion = function(editor, session) { +CstyleBehaviour.isSaneInsertion = function (editor, session) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); if (!this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) { + if (/[)}\]]/.test(editor.session.getLine(cursor.row)[cursor.column])) + return true; var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1); if (!this.$matchTokenType(iterator2.getCurrentToken() || "text", SAFE_INSERT_IN_TOKENS)) return false; @@ -7004,120 +6645,70 @@ CstyleBehaviour.isSaneInsertion = function(editor, session) { return iterator.getCurrentTokenRow() !== cursor.row || this.$matchTokenType(iterator.getCurrentToken() || "text", SAFE_INSERT_BEFORE_TOKENS); }; - -CstyleBehaviour.$matchTokenType = function(token, types) { +CstyleBehaviour["$matchTokenType"] = function (token, types) { return types.indexOf(token.type || token) > -1; }; - -CstyleBehaviour.recordAutoInsert = function(editor, session, bracket) { +CstyleBehaviour["recordAutoInsert"] = function (editor, session, bracket) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); - if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0])) + if (!this["isAutoInsertedClosing"](cursor, line, context.autoInsertedLineEnd[0])) context.autoInsertedBrackets = 0; context.autoInsertedRow = cursor.row; context.autoInsertedLineEnd = bracket + line.substr(cursor.column); context.autoInsertedBrackets++; }; - -CstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) { +CstyleBehaviour["recordMaybeInsert"] = function (editor, session, bracket) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); - if (!this.isMaybeInsertedClosing(cursor, line)) + if (!this["isMaybeInsertedClosing"](cursor, line)) context.maybeInsertedBrackets = 0; context.maybeInsertedRow = cursor.row; context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket; context.maybeInsertedLineEnd = line.substr(cursor.column); context.maybeInsertedBrackets++; }; - -CstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) { +CstyleBehaviour["isAutoInsertedClosing"] = function (cursor, line, bracket) { return context.autoInsertedBrackets > 0 && cursor.row === context.autoInsertedRow && bracket === context.autoInsertedLineEnd[0] && line.substr(cursor.column) === context.autoInsertedLineEnd; }; - -CstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) { +CstyleBehaviour["isMaybeInsertedClosing"] = function (cursor, line) { return context.maybeInsertedBrackets > 0 && cursor.row === context.maybeInsertedRow && line.substr(cursor.column) === context.maybeInsertedLineEnd && line.substr(0, cursor.column) == context.maybeInsertedLineStart; }; - -CstyleBehaviour.popAutoInsertedClosing = function() { +CstyleBehaviour["popAutoInsertedClosing"] = function () { context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1); context.autoInsertedBrackets--; }; - -CstyleBehaviour.clearMaybeInsertedClosing = function() { +CstyleBehaviour["clearMaybeInsertedClosing"] = function () { if (context) { context.maybeInsertedBrackets = 0; context.maybeInsertedRow = -1; } }; - - - oop.inherits(CstyleBehaviour, Behaviour); - exports.CstyleBehaviour = CstyleBehaviour; + }); -define("ace/unicode",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.packages = {}; - -addUnicodePackage({ - L: "0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", - Ll: "0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A", - Lu: "0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A", - Lt: "01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC", - Lm: "02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F", - Lo: "01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC", - M: "0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26", - Mn: "0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26", - Mc: "0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC", - Me: "0488048906DE20DD-20E020E2-20E4A670-A672", - N: "0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", - Nd: "0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19", - Nl: "16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF", - No: "00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835", - P: "0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65", - Pd: "002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D", - Ps: "0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62", - Pe: "0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63", - Pi: "00AB2018201B201C201F20392E022E042E092E0C2E1C2E20", - Pf: "00BB2019201D203A2E032E052E0A2E0D2E1D2E21", - Pc: "005F203F20402054FE33FE34FE4D-FE4FFF3F", - Po: "0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65", - S: "0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD", - Sm: "002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC", - Sc: "002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6", - Sk: "005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3", - So: "00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD", - Z: "002000A01680180E2000-200A20282029202F205F3000", - Zs: "002000A01680180E2000-200A202F205F3000", - Zl: "2028", - Zp: "2029", - C: "0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF", - Cc: "0000-001F007F-009F", - Cf: "00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB", - Co: "E000-F8FF", - Cs: "D800-DFFF", - Cn: "03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF" -}); - -function addUnicodePackage (pack) { - var codePoint = /\w{4}/g; - for (var name in pack) - exports.packages[name] = pack[name].replace(codePoint, "\\u$&"); +define("ace/unicode",["require","exports","module"], function(require, exports, module){"use strict"; +var wordChars = [48, 9, 8, 25, 5, 0, 2, 25, 48, 0, 11, 0, 5, 0, 6, 22, 2, 30, 2, 457, 5, 11, 15, 4, 8, 0, 2, 0, 18, 116, 2, 1, 3, 3, 9, 0, 2, 2, 2, 0, 2, 19, 2, 82, 2, 138, 2, 4, 3, 155, 12, 37, 3, 0, 8, 38, 10, 44, 2, 0, 2, 1, 2, 1, 2, 0, 9, 26, 6, 2, 30, 10, 7, 61, 2, 9, 5, 101, 2, 7, 3, 9, 2, 18, 3, 0, 17, 58, 3, 100, 15, 53, 5, 0, 6, 45, 211, 57, 3, 18, 2, 5, 3, 11, 3, 9, 2, 1, 7, 6, 2, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 0, 4, 3, 3, 8, 3, 1, 3, 3, 9, 0, 5, 1, 2, 4, 3, 11, 16, 2, 2, 5, 5, 1, 3, 21, 2, 6, 2, 1, 2, 1, 2, 1, 3, 0, 2, 4, 5, 1, 3, 2, 4, 0, 8, 3, 2, 0, 8, 15, 12, 2, 2, 8, 2, 2, 2, 21, 2, 6, 2, 1, 2, 4, 3, 9, 2, 2, 2, 2, 3, 0, 16, 3, 3, 9, 18, 2, 2, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 3, 8, 3, 1, 3, 2, 9, 1, 5, 1, 2, 4, 3, 9, 2, 0, 17, 1, 2, 5, 4, 2, 2, 3, 4, 1, 2, 0, 2, 1, 4, 1, 4, 2, 4, 11, 5, 4, 4, 2, 2, 3, 3, 0, 7, 0, 15, 9, 18, 2, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 4, 7, 2, 2, 2, 3, 8, 1, 2, 1, 7, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 9, 2, 4, 3, 8, 2, 2, 2, 3, 8, 1, 8, 0, 2, 3, 3, 9, 19, 1, 2, 7, 2, 2, 2, 22, 2, 15, 4, 7, 2, 2, 2, 3, 10, 0, 9, 3, 3, 9, 11, 5, 3, 1, 2, 17, 4, 23, 2, 8, 2, 0, 3, 6, 4, 0, 5, 5, 2, 0, 2, 7, 19, 1, 14, 57, 6, 14, 2, 9, 40, 1, 2, 0, 3, 1, 2, 0, 3, 0, 7, 3, 2, 6, 2, 2, 2, 0, 2, 0, 3, 1, 2, 12, 2, 2, 3, 4, 2, 0, 2, 5, 3, 9, 3, 1, 35, 0, 24, 1, 7, 9, 12, 0, 2, 0, 2, 0, 5, 9, 2, 35, 5, 19, 2, 5, 5, 7, 2, 35, 10, 0, 58, 73, 7, 77, 3, 37, 11, 42, 2, 0, 4, 328, 2, 3, 3, 6, 2, 0, 2, 3, 3, 40, 2, 3, 3, 32, 2, 3, 3, 6, 2, 0, 2, 3, 3, 14, 2, 56, 2, 3, 3, 66, 5, 0, 33, 15, 17, 84, 13, 619, 3, 16, 2, 25, 6, 74, 22, 12, 2, 6, 12, 20, 12, 19, 13, 12, 2, 2, 2, 1, 13, 51, 3, 29, 4, 0, 5, 1, 3, 9, 34, 2, 3, 9, 7, 87, 9, 42, 6, 69, 11, 28, 4, 11, 5, 11, 11, 39, 3, 4, 12, 43, 5, 25, 7, 10, 38, 27, 5, 62, 2, 28, 3, 10, 7, 9, 14, 0, 89, 75, 5, 9, 18, 8, 13, 42, 4, 11, 71, 55, 9, 9, 4, 48, 83, 2, 2, 30, 14, 230, 23, 280, 3, 5, 3, 37, 3, 5, 3, 7, 2, 0, 2, 0, 2, 0, 2, 30, 3, 52, 2, 6, 2, 0, 4, 2, 2, 6, 4, 3, 3, 5, 5, 12, 6, 2, 2, 6, 67, 1, 20, 0, 29, 0, 14, 0, 17, 4, 60, 12, 5, 0, 4, 11, 18, 0, 5, 0, 3, 9, 2, 0, 4, 4, 7, 0, 2, 0, 2, 0, 2, 3, 2, 10, 3, 3, 6, 4, 5, 0, 53, 1, 2684, 46, 2, 46, 2, 132, 7, 6, 15, 37, 11, 53, 10, 0, 17, 22, 10, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 6, 2, 31, 48, 0, 470, 1, 36, 5, 2, 4, 6, 1, 5, 85, 3, 1, 3, 2, 2, 89, 2, 3, 6, 40, 4, 93, 18, 23, 57, 15, 513, 6581, 75, 20939, 53, 1164, 68, 45, 3, 268, 4, 27, 21, 31, 3, 13, 13, 1, 2, 24, 9, 69, 11, 1, 38, 8, 3, 102, 3, 1, 111, 44, 25, 51, 13, 68, 12, 9, 7, 23, 4, 0, 5, 45, 3, 35, 13, 28, 4, 64, 15, 10, 39, 54, 10, 13, 3, 9, 7, 22, 4, 1, 5, 66, 25, 2, 227, 42, 2, 1, 3, 9, 7, 11171, 13, 22, 5, 48, 8453, 301, 3, 61, 3, 105, 39, 6, 13, 4, 6, 11, 2, 12, 2, 4, 2, 0, 2, 1, 2, 1, 2, 107, 34, 362, 19, 63, 3, 53, 41, 11, 5, 15, 17, 6, 13, 1, 25, 2, 33, 4, 2, 134, 20, 9, 8, 25, 5, 0, 2, 25, 12, 88, 4, 5, 3, 5, 3, 5, 3, 2]; +var code = 0; +var str = []; +for (var i = 0; i < wordChars.length; i += 2) { + str.push(code += wordChars[i]); + if (wordChars[i + 1]) + str.push(45, code += wordChars[i + 1]); } +exports.wordChars = String.fromCharCode.apply(null, str); }); -define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/text",["require","exports","module","ace/config","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; +var config = require("../config"); var Tokenizer = require("../tokenizer").Tokenizer; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; @@ -7125,48 +6716,30 @@ var unicode = require("../unicode"); var lang = require("../lib/lang"); var TokenIterator = require("../token_iterator").TokenIterator; var Range = require("../range").Range; - -var Mode = function() { +var Mode; +Mode = function () { this.HighlightRules = TextHighlightRules; }; - -(function() { +(function () { this.$defaultBehaviour = new CstyleBehaviour(); - - this.tokenRe = new RegExp("^[" - + unicode.packages.L - + unicode.packages.Mn + unicode.packages.Mc - + unicode.packages.Nd - + unicode.packages.Pc + "\\$_]+", "g" - ); - - this.nonTokenRe = new RegExp("^(?:[^" - + unicode.packages.L - + unicode.packages.Mn + unicode.packages.Mc - + unicode.packages.Nd - + unicode.packages.Pc + "\\$_]|\\s])+", "g" - ); - - this.getTokenizer = function() { + this.tokenRe = new RegExp("^[" + unicode.wordChars + "\\$_]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "\\$_]|\\s])+", "g"); + this.getTokenizer = function () { if (!this.$tokenizer) { this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig); this.$tokenizer = new Tokenizer(this.$highlightRules.getRules()); } return this.$tokenizer; }; - this.lineCommentStart = ""; this.blockComment = ""; - - this.toggleCommentLines = function(state, session, startRow, endRow) { + this.toggleCommentLines = function (state, session, startRow, endRow) { var doc = session.doc; - var ignoreBlankLines = true; var shouldRemove = true; var minIndent = Infinity; var tabSize = session.getTabSize(); var insertAtTabStop = false; - if (!this.lineCommentStart) { if (!this.blockComment) return false; @@ -7174,25 +6747,22 @@ var Mode = function() { var lineCommentEnd = this.blockComment.end; var regexpStart = new RegExp("^(\\s*)(?:" + lang.escapeRegExp(lineCommentStart) + ")"); var regexpEnd = new RegExp("(?:" + lang.escapeRegExp(lineCommentEnd) + ")\\s*$"); - - var comment = function(line, i) { + var comment = function (line, i) { if (testRemove(line, i)) return; if (!ignoreBlankLines || /\S/.test(line)) { - doc.insertInLine({row: i, column: line.length}, lineCommentEnd); - doc.insertInLine({row: i, column: minIndent}, lineCommentStart); + doc.insertInLine({ row: i, column: line.length }, lineCommentEnd); + doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); } }; - - var uncomment = function(line, i) { + var uncomment = function (line, i) { var m; if (m = line.match(regexpEnd)) doc.removeInLine(i, line.length - m[0].length, line.length); if (m = line.match(regexpStart)) doc.removeInLine(i, m[1].length, m[0].length); }; - - var testRemove = function(line, row) { + var testRemove = function (line, row) { if (regexpStart.test(line)) return true; var tokens = session.getTokens(row); @@ -7201,40 +6771,40 @@ var Mode = function() { return true; } }; - } else { + } + else { if (Array.isArray(this.lineCommentStart)) { var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join("|"); var lineCommentStart = this.lineCommentStart[0]; - } else { + } + else { var regexpStart = lang.escapeRegExp(this.lineCommentStart); var lineCommentStart = this.lineCommentStart; } regexpStart = new RegExp("^(\\s*)(?:" + regexpStart + ") ?"); - insertAtTabStop = session.getUseSoftTabs(); - - var uncomment = function(line, i) { + var uncomment = function (line, i) { var m = line.match(regexpStart); - if (!m) return; + if (!m) + return; var start = m[1].length, end = m[0].length; if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == " ") end--; doc.removeInLine(i, start, end); }; var commentWithSpace = lineCommentStart + " "; - var comment = function(line, i) { + var comment = function (line, i) { if (!ignoreBlankLines || /\S/.test(line)) { if (shouldInsertSpace(line, minIndent, minIndent)) - doc.insertInLine({row: i, column: minIndent}, commentWithSpace); + doc.insertInLine({ row: i, column: minIndent }, commentWithSpace); else - doc.insertInLine({row: i, column: minIndent}, lineCommentStart); + doc.insertInLine({ row: i, column: minIndent }, lineCommentStart); } }; - var testRemove = function(line, i) { + var testRemove = function (line, i) { return regexpStart.test(line); }; - - var shouldInsertSpace = function(line, before, after) { + var shouldInsertSpace = function (line, before, after) { var spaces = 0; while (before-- && line.charAt(before) == " ") spaces++; @@ -7247,55 +6817,45 @@ var Mode = function() { return spaces % tabSize != tabSize - 1; else return spaces % tabSize == 0; - return true; }; } - function iter(fun) { for (var i = startRow; i <= endRow; i++) fun(doc.getLine(i), i); } - - var minEmptyLength = Infinity; - iter(function(line, i) { + iter(function (line, i) { var indent = line.search(/\S/); if (indent !== -1) { if (indent < minIndent) minIndent = indent; if (shouldRemove && !testRemove(line, i)) shouldRemove = false; - } else if (minEmptyLength > line.length) { + } + else if (minEmptyLength > line.length) { minEmptyLength = line.length; } }); - if (minIndent == Infinity) { minIndent = minEmptyLength; ignoreBlankLines = false; shouldRemove = false; } - if (insertAtTabStop && minIndent % tabSize != 0) minIndent = Math.floor(minIndent / tabSize) * tabSize; - iter(shouldRemove ? uncomment : comment); }; - - this.toggleBlockComment = function(state, session, range, cursor) { + this.toggleBlockComment = function (state, session, range, cursor) { var comment = this.blockComment; if (!comment) return; if (!comment.start && comment[0]) comment = comment[0]; - var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - var sel = session.selection; var initialRange = session.selection.toOrientedRange(); var startRow, colDiff; - if (token && /comment/.test(token.type)) { var startRange, endRange; while (token && /comment/.test(token.type)) { @@ -7308,7 +6868,6 @@ var Mode = function() { } token = iterator.stepBackward(); } - var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); while (token && /comment/.test(token.type)) { @@ -7328,7 +6887,8 @@ var Mode = function() { startRow = startRange.start.row; colDiff = -comment.start.length; } - } else { + } + else { colDiff = comment.start.length; startRow = range.start.row; session.insert(range.end, comment.end); @@ -7340,57 +6900,67 @@ var Mode = function() { initialRange.end.column += colDiff; session.selection.fromOrientedRange(initialRange); }; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - - this.createWorker = function(session) { + this.createWorker = function (session) { return null; }; - this.createModeDelegates = function (mapping) { this.$embeds = []; this.$modes = {}; for (var i in mapping) { if (mapping[i]) { + var Mode = mapping[i]; + var id = Mode.prototype.$id; + var mode = config.$modes[id]; + if (!mode) + config.$modes[id] = mode = new Mode(); + if (!config.$modes[i]) + config.$modes[i] = mode; this.$embeds.push(i); - this.$modes[i] = new mapping[i](); + this.$modes[i] = mode; } } - - var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", + var delegations = ["toggleBlockComment", "toggleCommentLines", "getNextLineIndent", "checkOutdent", "autoOutdent", "transformAction", "getCompletions"]; - + var _loop_1 = function (i) { + (function (scope) { + var functionName = delegations[i]; + var defaultHandler = scope[functionName]; + scope[delegations[i]] = + function () { + return this.$delegator(functionName, arguments, defaultHandler); + }; + }(this_1)); + }; + var this_1 = this; for (var i = 0; i < delegations.length; i++) { - (function(scope) { - var functionName = delegations[i]; - var defaultHandler = scope[functionName]; - scope[delegations[i]] = function() { - return this.$delegator(functionName, arguments, defaultHandler); - }; - }(this)); + _loop_1(i); } }; - - this.$delegator = function(method, args, defaultHandler) { - var state = args[0]; - if (typeof state != "string") - state = state[0]; + this.$delegator = function (method, args, defaultHandler) { + var state = args[0] || "start"; + if (typeof state != "string") { + if (Array.isArray(state[2])) { + var language = state[2][state[2].length - 1]; + var mode = this.$modes[language]; + if (mode) + return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1))); + } + state = state[0] || "start"; + } for (var i = 0; i < this.$embeds.length; i++) { - if (!this.$modes[this.$embeds[i]]) continue; - + if (!this.$modes[this.$embeds[i]]) + continue; var split = state.split(this.$embeds[i]); if (!split[0] && split[1]) { args[0] = split[1]; @@ -7401,8 +6971,7 @@ var Mode = function() { var ret = defaultHandler.apply(this, args); return defaultHandler ? ret : undefined; }; - - this.transformAction = function(state, action, editor, session, param) { + this.transformAction = function (state, action, editor, session, param) { if (this.$behaviour) { var behaviours = this.$behaviour.getBehaviours(); for (var key in behaviours) { @@ -7415,10 +6984,9 @@ var Mode = function() { } } }; - - this.getKeywords = function(append) { + this.getKeywords = function (append) { if (!this.completionKeywords) { - var rules = this.$tokenizer.rules; + var rules = this.$tokenizer["rules"]; var completionKeywords = []; for (var rule in rules) { var ruleItr = rules[rule]; @@ -7428,7 +6996,7 @@ var Mode = function() { completionKeywords.push(ruleItr[r].regex); } else if (typeof ruleItr[r].token === "object") { - for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { + for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { if (/keyword|support|storage/.test(ruleItr[r].token[a])) { var rule = ruleItr[r].regex.match(/\(.+?\)/g)[a]; completionKeywords.push(rule.substr(1, rule.length - 2)); @@ -7443,16 +7011,14 @@ var Mode = function() { return this.$keywordList; return completionKeywords.concat(this.$keywordList || []); }; - - this.$createKeywordList = function() { + this.$createKeywordList = function () { if (!this.$highlightRules) this.getTokenizer(); return this.$keywordList = this.$highlightRules.$keywordList || []; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { var keywords = this.$keywordList || this.$createKeywordList(); - return keywords.map(function(word) { + return keywords.map(function (word) { return { name: word, value: word, @@ -7461,33 +7027,28 @@ var Mode = function() { }; }); }; - this.$id = "ace/mode/text"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/apply_delta",["require","exports","module"], function(require, exports, module) { -"use strict"; - -function throwDeltaError(delta, errorText){ +define("ace/apply_delta",["require","exports","module"], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { console.log("Invalid Delta:", delta); throw "Invalid Delta: " + errorText; } - function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; } - function validateDelta(docLines, delta) { if (delta.action != "insert" && delta.action != "remove") throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); if (!(delta.lines instanceof Array)) throwDeltaError(delta, "delta.lines must be an Array"); if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); + throwDeltaError(delta, "delta.start/end must be an present"); var start = delta.start; if (!positionInDocument(docLines, delta.start)) throwDeltaError(delta, "delta.start must be contained in document"); @@ -7499,9 +7060,7 @@ function validateDelta(docLines, delta) { if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) throwDeltaError(delta, "delta.range must match delta lines"); } - -exports.applyDelta = function(docLines, delta, doNotValidate) { - +exports.applyDelta = function (docLines, delta, doNotValidate) { var row = delta.start.row; var startColumn = delta.start.column; var line = docLines[row] || ""; @@ -7510,7 +7069,8 @@ exports.applyDelta = function(docLines, delta, doNotValidate) { var lines = delta.lines; if (lines.length === 1) { docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } else { + } + else { var args = [row, 1].concat(delta.lines); docLines.splice.apply(docLines, args); docLines[row] = line.substring(0, startColumn) + docLines[row]; @@ -7522,102 +7082,59 @@ exports.applyDelta = function(docLines, delta, doNotValidate) { var endRow = delta.end.row; if (row === endRow) { docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } else { - docLines.splice( - row, endRow - row + 1, - line.substring(0, startColumn) + docLines[endRow].substring(endColumn) - ); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); } break; } }; + }); -define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - +define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var Anchor = exports.Anchor = function(doc, row, column) { - this.$onChange = this.onChange.bind(this); - this.attach(doc); - - if (typeof column == "undefined") - this.setPosition(row.row, row.column); - else - this.setPosition(row, column); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.getPosition = function() { +var Anchor = /** @class */ (function () { + function Anchor(doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof row != "number") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); + } + Anchor.prototype.getPosition = function () { return this.$clipPositionToDocument(this.row, this.column); }; - this.getDocument = function() { + Anchor.prototype.getDocument = function () { return this.document; }; - this.$insertRight = false; - this.onChange = function(delta) { + Anchor.prototype.onChange = function (delta) { if (delta.start.row == delta.end.row && delta.start.row != this.row) return; - if (delta.start.row > this.row) return; - - var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); this.setPosition(point.row, point.column, true); }; - - function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); - } - - function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - - return { - row: deltaStart.row, - column: deltaStart.column - }; - } - this.setPosition = function(row, column, noClip) { + Anchor.prototype.setPosition = function (row, column, noClip) { var pos; if (noClip) { pos = { row: row, column: column }; - } else { + } + else { pos = this.$clipPositionToDocument(row, column); } - if (this.row == pos.row && this.column == pos.column) return; - var old = { row: this.row, column: this.column }; - this.row = pos.row; this.column = pos.column; this._signal("change", { @@ -7625,16 +7142,15 @@ var Anchor = exports.Anchor = function(doc, row, column) { value: pos }); }; - this.detach = function() { - this.document.removeEventListener("change", this.$onChange); + Anchor.prototype.detach = function () { + this.document.off("change", this.$onChange); }; - this.attach = function(doc) { + Anchor.prototype.attach = function (doc) { this.document = doc || this.document; this.document.on("change", this.$onChange); }; - this.$clipPositionToDocument = function(row, column) { + Anchor.prototype.$clipPositionToDocument = function (row, column) { var pos = {}; - if (row >= this.document.getLength()) { pos.row = Math.max(0, this.document.getLength() - 1); pos.column = this.document.getLine(pos.row).length; @@ -7647,113 +7163,123 @@ var Anchor = exports.Anchor = function(doc, row, column) { pos.row = row; pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); } - if (column < 0) pos.column = 0; - return pos; }; - -}).call(Anchor.prototype); + return Anchor; +}()); +Anchor.prototype.$insertRight = false; +oop.implement(Anchor.prototype, EventEmitter); +function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); +} +function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; +} +exports.Anchor = Anchor; }); -define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module) { -"use strict"; - +define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var applyDelta = require("./apply_delta").applyDelta; var EventEmitter = require("./lib/event_emitter").EventEmitter; var Range = require("./range").Range; var Anchor = require("./anchor").Anchor; - -var Document = function(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { +var Document = /** @class */ (function () { + function Document(textOrLines) { this.$lines = [""]; - } else if (Array.isArray(textOrLines)) { - this.insertMergedLines({row: 0, column: 0}, textOrLines); - } else { - this.insert({row: 0, column:0}, textOrLines); + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { + Document.prototype.setValue = function (text) { var len = this.getLength() - 1; this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({row: 0, column: 0}, text); + this.insert({ row: 0, column: 0 }, text || ""); }; - this.getValue = function() { + Document.prototype.getValue = function () { return this.getAllLines().join(this.getNewLineCharacter()); }; - this.createAnchor = function(row, column) { + Document.prototype.createAnchor = function (row, column) { return new Anchor(this, row, column); }; - if ("aaa".split(/a/).length === 0) { - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - }; - } else { - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - } - - - this.$detectNewLine = function(text) { + Document.prototype.$detectNewLine = function (text) { var match = text.match(/^.*?(\r\n|\r|\n)/m); this.$autoNewLine = match ? match[1] : "\n"; this._signal("changeNewLineMode"); }; - this.getNewLineCharacter = function() { + Document.prototype.getNewLineCharacter = function () { switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; } }; - - this.$autoNewLine = ""; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { + Document.prototype.setNewLineMode = function (newLineMode) { if (this.$newLineMode === newLineMode) return; - this.$newLineMode = newLineMode; this._signal("changeNewLineMode"); }; - this.getNewLineMode = function() { + Document.prototype.getNewLineMode = function () { return this.$newLineMode; }; - this.isNewLine = function(text) { + Document.prototype.isNewLine = function (text) { return (text == "\r\n" || text == "\r" || text == "\n"); }; - this.getLine = function(row) { + Document.prototype.getLine = function (row) { return this.$lines[row] || ""; }; - this.getLines = function(firstRow, lastRow) { + Document.prototype.getLines = function (firstRow, lastRow) { return this.$lines.slice(firstRow, lastRow + 1); }; - this.getAllLines = function() { + Document.prototype.getAllLines = function () { return this.getLines(0, this.getLength()); }; - this.getLength = function() { + Document.prototype.getLength = function () { return this.$lines.length; }; - this.getTextRange = function(range) { + Document.prototype.getTextRange = function (range) { return this.getLinesForRange(range).join(this.getNewLineCharacter()); }; - this.getLinesForRange = function(range) { + Document.prototype.getLinesForRange = function (range) { var lines; if (range.start.row === range.end.row) { lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } else { + } + else { lines = this.getLines(range.start.row, range.end.row); lines[0] = (lines[0] || "").substring(range.start.column); var l = lines.length - 1; @@ -7762,45 +7288,43 @@ var Document = function(textOrLines) { } return lines; }; - this.insertLines = function(row, lines) { + Document.prototype.insertLines = function (row, lines) { console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); return this.insertFullLines(row, lines); }; - this.removeLines = function(firstRow, lastRow) { + Document.prototype.removeLines = function (firstRow, lastRow) { console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); return this.removeFullLines(firstRow, lastRow); }; - this.insertNewLine = function(position) { + Document.prototype.insertNewLine = function (position) { console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); return this.insertMergedLines(position, ["", ""]); }; - this.insert = function(position, text) { + Document.prototype.insert = function (position, text) { if (this.getLength() <= 1) this.$detectNewLine(text); - return this.insertMergedLines(position, this.$split(text)); }; - this.insertInLine = function(position, text) { + Document.prototype.insertInLine = function (position, text) { var start = this.clippedPos(position.row, position.column); var end = this.pos(position.row, position.column + text.length); - this.applyDelta({ start: start, end: end, action: "insert", lines: [text] }, true); - return this.clonePos(end); }; - - this.clippedPos = function(row, column) { + Document.prototype.clippedPos = function (row, column) { var length = this.getLength(); if (row === undefined) { row = length; - } else if (row < 0) { + } + else if (row < 0) { row = 0; - } else if (row >= length) { + } + else if (row >= length) { row = length - 1; column = undefined; } @@ -7808,93 +7332,87 @@ var Document = function(textOrLines) { if (column == undefined) column = line.length; column = Math.min(Math.max(column, 0), line.length); - return {row: row, column: column}; + return { row: row, column: column }; }; - - this.clonePos = function(pos) { - return {row: pos.row, column: pos.column}; + Document.prototype.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; }; - - this.pos = function(row, column) { - return {row: row, column: column}; + Document.prototype.pos = function (row, column) { + return { row: row, column: column }; }; - - this.$clipPosition = function(position) { + Document.prototype.$clipPosition = function (position) { var length = this.getLength(); if (position.row >= length) { position.row = Math.max(0, length - 1); position.column = this.getLine(length - 1).length; - } else { + } + else { position.row = Math.max(0, position.row); position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); } return position; }; - this.insertFullLines = function(row, lines) { + Document.prototype.insertFullLines = function (row, lines) { row = Math.min(Math.max(row, 0), this.getLength()); var column = 0; if (row < this.getLength()) { lines = lines.concat([""]); column = 0; - } else { + } + else { lines = [""].concat(lines); row--; column = this.$lines[row].length; } - this.insertMergedLines({row: row, column: column}, lines); - }; - this.insertMergedLines = function(position, lines) { + this.insertMergedLines({ row: row, column: column }, lines); + }; + Document.prototype.insertMergedLines = function (position, lines) { var start = this.clippedPos(position.row, position.column); var end = { row: start.row + lines.length - 1, column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length }; - this.applyDelta({ start: start, end: end, action: "insert", lines: lines }); - return this.clonePos(end); }; - this.remove = function(range) { + Document.prototype.remove = function (range) { var start = this.clippedPos(range.start.row, range.start.column); var end = this.clippedPos(range.end.row, range.end.column); this.applyDelta({ start: start, end: end, action: "remove", - lines: this.getLinesForRange({start: start, end: end}) + lines: this.getLinesForRange({ start: start, end: end }) }); return this.clonePos(start); }; - this.removeInLine = function(row, startColumn, endColumn) { + Document.prototype.removeInLine = function (row, startColumn, endColumn) { var start = this.clippedPos(row, startColumn); var end = this.clippedPos(row, endColumn); - this.applyDelta({ start: start, end: end, action: "remove", - lines: this.getLinesForRange({start: start, end: end}) + lines: this.getLinesForRange({ start: start, end: end }) }, true); - return this.clonePos(start); }; - this.removeFullLines = function(firstRow, lastRow) { + Document.prototype.removeFullLines = function (firstRow, lastRow) { firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow ); - var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 ); - var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow ); - var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); var range = new Range(startRow, startCol, endRow, endCol); var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - this.applyDelta({ start: range.start, end: range.end, @@ -7903,7 +7421,7 @@ var Document = function(textOrLines) { }); return deletedLines; }; - this.removeNewLine = function(row) { + Document.prototype.removeNewLine = function (row) { if (row < this.getLength() - 1 && row >= 0) { this.applyDelta({ start: this.pos(row, this.getLine(row).length), @@ -7913,14 +7431,13 @@ var Document = function(textOrLines) { }); } }; - this.replace = function(range, text) { + Document.prototype.replace = function (range, text) { if (!(range instanceof Range)) range = Range.fromPoints(range.start, range.end); if (text.length === 0 && range.isEmpty()) return range.start; if (text == this.getTextRange(range)) return range.end; - this.remove(range); var end; if (text) { @@ -7929,48 +7446,47 @@ var Document = function(textOrLines) { else { end = range.start; } - return end; }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { + Document.prototype.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { this.revertDelta(deltas[i]); } }; - this.applyDelta = function(delta, doNotValidate) { + Document.prototype.applyDelta = function (delta, doNotValidate) { var isInsert = delta.action == "insert"; if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] : !Range.comparePoints(delta.start, delta.end)) { return; } - - if (isInsert && delta.lines.length > 20000) + if (isInsert && delta.lines.length > 20000) { this.$splitAndapplyLargeDelta(delta, 20000); - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } }; - - this.$splitAndapplyLargeDelta = function(delta, MAX) { + Document.prototype.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { var lines = delta.lines; - var l = lines.length; - var row = delta.start.row; + var l = lines.length - MAX + 1; + var row = delta.start.row; var column = delta.start.column; - var from = 0, to = 0; - do { - from = to; + for (var from = 0, to = 0; from < l; from = to) { to += MAX - 1; var chunk = lines.slice(from, to); - if (to > l) { - delta.lines = chunk; - delta.start.row = row + from; - delta.start.column = column; - break; - } chunk.push(""); this.applyDelta({ start: this.pos(row + from, column), @@ -7978,328 +7494,792 @@ var Document = function(textOrLines) { action: delta.action, lines: chunk }, true); - } while(true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); }; - this.revertDelta = function(delta) { - this.applyDelta({ + Document.prototype.revertDelta = function (delta) { + this.$safeApplyDelta({ start: this.clonePos(delta.start), end: this.clonePos(delta.end), action: (delta.action == "insert" ? "remove" : "insert"), lines: delta.lines.slice() }); }; - this.indexToPosition = function(index, startRow) { + Document.prototype.indexToPosition = function (index, startRow) { var lines = this.$lines || this.getAllLines(); var newlineLength = this.getNewLineCharacter().length; for (var i = startRow || 0, l = lines.length; i < l; i++) { index -= lines[i].length + newlineLength; if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; + return { row: i, column: index + lines[i].length + newlineLength }; } - return {row: l-1, column: lines[l-1].length}; + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; }; - this.positionToIndex = function(pos, startRow) { + Document.prototype.positionToIndex = function (pos, startRow) { var lines = this.$lines || this.getAllLines(); var newlineLength = this.getNewLineCharacter().length; var index = 0; var row = Math.min(pos.row, lines.length); for (var i = startRow || 0; i < row; ++i) index += lines[i].length + newlineLength; - return index + pos.column; }; - -}).call(Document.prototype); - + Document.prototype.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + return Document; +}()); +Document.prototype.$autoNewLine = ""; +Document.prototype.$newLineMode = "auto"; +oop.implement(Document.prototype, EventEmitter); exports.Document = Document; + }); -define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - +define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var EventEmitter = require("./lib/event_emitter").EventEmitter; - -var BackgroundTokenizer = function(tokenizer, editor) { - this.running = false; - this.lines = []; - this.states = []; - this.currentLine = 0; - this.tokenizer = tokenizer; - - var self = this; - - this.$worker = function() { - if (!self.running) { return; } - - var workerStart = new Date(); - var currentLine = self.currentLine; - var endLine = -1; - var doc = self.doc; - - var startLine = currentLine; - while (self.lines[currentLine]) - currentLine++; - - var len = doc.getLength(); - var processedLines = 0; - self.running = false; - while (currentLine < len) { - self.$tokenizeRow(currentLine); - endLine = currentLine; - do { - currentLine++; - } while (self.lines[currentLine]); - processedLines ++; - if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { - self.running = setTimeout(self.$worker, 20); - break; +var BackgroundTokenizer = /** @class */ (function () { + function BackgroundTokenizer(tokenizer, session) { + this.running = false; + this.lines = []; + this.states = []; + this.currentLine = 0; + this.tokenizer = tokenizer; + var self = this; + this.$worker = function () { + if (!self.running) { + return; } - } - self.currentLine = currentLine; - - if (endLine == -1) - endLine = currentLine; - - if (startLine <= endLine) - self.fireUpdateEvent(startLine, endLine); - }; -}; - -(function(){ - - oop.implement(this, EventEmitter); - this.setTokenizer = function(tokenizer) { + var workerStart = new Date(); + var currentLine = self.currentLine; + var endLine = -1; + var doc = self.doc; + var startLine = currentLine; + while (self.lines[currentLine]) + currentLine++; + var len = doc.getLength(); + var processedLines = 0; + self.running = false; + while (currentLine < len) { + self.$tokenizeRow(currentLine); + endLine = currentLine; + do { + currentLine++; + } while (self.lines[currentLine]); + processedLines++; + if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) { + self.running = setTimeout(self.$worker, 20); + break; + } + } + self.currentLine = currentLine; + if (endLine == -1) + endLine = currentLine; + if (startLine <= endLine) + self.fireUpdateEvent(startLine, endLine); + }; + } + BackgroundTokenizer.prototype.setTokenizer = function (tokenizer) { this.tokenizer = tokenizer; this.lines = []; this.states = []; - this.start(0); }; - this.setDocument = function(doc) { + BackgroundTokenizer.prototype.setDocument = function (doc) { this.doc = doc; this.lines = []; this.states = []; - this.stop(); }; - this.fireUpdateEvent = function(firstRow, lastRow) { + BackgroundTokenizer.prototype.fireUpdateEvent = function (firstRow, lastRow) { var data = { first: firstRow, last: lastRow }; - this._signal("update", {data: data}); + this._signal("update", { data: data }); }; - this.start = function(startRow) { + BackgroundTokenizer.prototype.start = function (startRow) { this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength()); this.lines.splice(this.currentLine, this.lines.length); this.states.splice(this.currentLine, this.states.length); - this.stop(); this.running = setTimeout(this.$worker, 700); }; - - this.scheduleStart = function() { + BackgroundTokenizer.prototype.scheduleStart = function () { if (!this.running) this.running = setTimeout(this.$worker, 700); }; - - this.$updateOnChange = function(delta) { + BackgroundTokenizer.prototype.$updateOnChange = function (delta) { var startRow = delta.start.row; var len = delta.end.row - startRow; - if (len === 0) { this.lines[startRow] = null; - } else if (delta.action == "remove") { + } + else if (delta.action == "remove") { this.lines.splice(startRow, len + 1, null); this.states.splice(startRow, len + 1, null); - } else { + } + else { var args = Array(len + 1); args.unshift(startRow, 1); this.lines.splice.apply(this.lines, args); this.states.splice.apply(this.states, args); } - this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength()); - this.stop(); }; - this.stop = function() { + BackgroundTokenizer.prototype.stop = function () { if (this.running) clearTimeout(this.running); this.running = false; }; - this.getTokens = function(row) { + BackgroundTokenizer.prototype.getTokens = function (row) { return this.lines[row] || this.$tokenizeRow(row); }; - this.getState = function(row) { + BackgroundTokenizer.prototype.getState = function (row) { if (this.currentLine == row) this.$tokenizeRow(row); return this.states[row] || "start"; }; - - this.$tokenizeRow = function(row) { + BackgroundTokenizer.prototype.$tokenizeRow = function (row) { var line = this.doc.getLine(row); var state = this.states[row - 1]; - var data = this.tokenizer.getLineTokens(line, state, row); - if (this.states[row] + "" !== data.state + "") { this.states[row] = data.state; this.lines[row + 1] = null; if (this.currentLine > row + 1) this.currentLine = row + 1; - } else if (this.currentLine == row) { + } + else if (this.currentLine == row) { this.currentLine = row + 1; } - return this.lines[row] = data.tokens; }; - -}).call(BackgroundTokenizer.prototype); - + BackgroundTokenizer.prototype.cleanup = function () { + this.running = false; + this.lines = []; + this.states = []; + this.currentLine = 0; + this.removeAllListeners(); + }; + return BackgroundTokenizer; +}()); +oop.implement(BackgroundTokenizer.prototype, EventEmitter); exports.BackgroundTokenizer = BackgroundTokenizer; + }); -define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"], function(require, exports, module){"use strict"; var lang = require("./lib/lang"); -var oop = require("./lib/oop"); var Range = require("./range").Range; - -var SearchHighlight = function(regExp, clazz, type) { - this.setRegexp(regExp); - this.clazz = clazz; - this.type = type || "text"; -}; - -(function() { - this.MAX_RANGES = 500; - - this.setRegexp = function(regExp) { - if (this.regExp+"" == regExp+"") +var SearchHighlight = /** @class */ (function () { + function SearchHighlight(regExp, clazz, type) { + if (type === void 0) { type = "text"; } + this.setRegexp(regExp); + this.clazz = clazz; + this.type = type; + } + SearchHighlight.prototype.setRegexp = function (regExp) { + if (this.regExp + "" == regExp + "") return; this.regExp = regExp; this.cache = []; }; - - this.update = function(html, markerLayer, session, config) { + SearchHighlight.prototype.update = function (html, markerLayer, session, config) { if (!this.regExp) return; var start = config.firstRow, end = config.lastRow; - + var renderedMarkerRanges = {}; for (var i = start; i <= end; i++) { var ranges = this.cache[i]; if (ranges == null) { ranges = lang.getMatchOffsets(session.getLine(i), this.regExp); if (ranges.length > this.MAX_RANGES) ranges = ranges.slice(0, this.MAX_RANGES); - ranges = ranges.map(function(match) { + ranges = ranges.map(function (match) { return new Range(i, match.offset, i, match.offset + match.length); }); this.cache[i] = ranges.length ? ranges : ""; } - - for (var j = ranges.length; j --; ) { - markerLayer.drawSingleLineMarker( - html, ranges[j].toScreenRange(session), this.clazz, config); + for (var j = ranges.length; j--;) { + var rangeToAddMarkerTo = ranges[j].toScreenRange(session); + var rangeAsString = rangeToAddMarkerTo.toString(); + if (renderedMarkerRanges[rangeAsString]) + continue; + renderedMarkerRanges[rangeAsString] = true; + markerLayer.drawSingleLineMarker(html, rangeToAddMarkerTo, this.clazz, config); } } }; - -}).call(SearchHighlight.prototype); - + return SearchHighlight; +}()); +SearchHighlight.prototype.MAX_RANGES = 500; exports.SearchHighlight = SearchHighlight; + }); -define("ace/edit_session/fold_line",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; -function FoldLine(foldData, folds) { - this.foldData = foldData; - if (Array.isArray(folds)) { - this.folds = folds; - } else { - folds = this.folds = [ folds ]; +define("ace/undomanager",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var UndoManager = /** @class */ (function () { + function UndoManager() { + this.$keepRedoStack; + this.$maxRev = 0; + this.$fromUndo = false; + this.$undoDepth = Infinity; + this.reset(); + } + UndoManager.prototype.addSession = function (session) { + this.$session = session; + }; + UndoManager.prototype.add = function (delta, allowMerge, session) { + if (this.$fromUndo) + return; + if (delta == this.$lastDelta) + return; + if (!this.$keepRedoStack) + this.$redoStack.length = 0; + if (allowMerge === false || !this.lastDeltas) { + this.lastDeltas = []; + var undoStackLength = this.$undoStack.length; + if (undoStackLength > this.$undoDepth - 1) { + this.$undoStack.splice(0, undoStackLength - this.$undoDepth + 1); + } + this.$undoStack.push(this.lastDeltas); + delta.id = this.$rev = ++this.$maxRev; + } + if (delta.action == "remove" || delta.action == "insert") + this.$lastDelta = delta; + this.lastDeltas.push(delta); + }; + UndoManager.prototype.addSelection = function (selection, rev) { + this.selections.push({ + value: selection, + rev: rev || this.$rev + }); + }; + UndoManager.prototype.startNewGroup = function () { + this.lastDeltas = null; + return this.$rev; + }; + UndoManager.prototype.markIgnored = function (from, to) { + if (to == null) + to = this.$rev + 1; + var stack = this.$undoStack; + for (var i = stack.length; i--;) { + var delta = stack[i][0]; + if (delta.id <= from) + break; + if (delta.id < to) + delta.ignore = true; + } + this.lastDeltas = null; + }; + UndoManager.prototype.getSelection = function (rev, after) { + var stack = this.selections; + for (var i = stack.length; i--;) { + var selection = stack[i]; + if (selection.rev < rev) { + if (after) + selection = stack[i + 1]; + return selection; + } + } + }; + UndoManager.prototype.getRevision = function () { + return this.$rev; + }; + UndoManager.prototype.getDeltas = function (from, to) { + if (to == null) + to = this.$rev + 1; + var stack = this.$undoStack; + var end = null, start = 0; + for (var i = stack.length; i--;) { + var delta = stack[i][0]; + if (delta.id < to && !end) + end = i + 1; + if (delta.id <= from) { + start = i + 1; + break; + } + } + return stack.slice(start, end); + }; + UndoManager.prototype.getChangedRanges = function (from, to) { + if (to == null) + to = this.$rev + 1; + }; + UndoManager.prototype.getChangedLines = function (from, to) { + if (to == null) + to = this.$rev + 1; + }; + UndoManager.prototype.undo = function (session, dontSelect) { + this.lastDeltas = null; + var stack = this.$undoStack; + if (!rearrangeUndoStack(stack, stack.length)) + return; + if (!session) + session = this.$session; + if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length) + this.$redoStack = []; + this.$fromUndo = true; + var deltaSet = stack.pop(); + var undoSelectionRange = null; + if (deltaSet) { + undoSelectionRange = session.undoChanges(deltaSet, dontSelect); + this.$redoStack.push(deltaSet); + this.$syncRev(); + } + this.$fromUndo = false; + return undoSelectionRange; + }; + UndoManager.prototype.redo = function (session, dontSelect) { + this.lastDeltas = null; + if (!session) + session = this.$session; + this.$fromUndo = true; + if (this.$redoStackBaseRev != this.$rev) { + var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1); + rebaseRedoStack(this.$redoStack, diff); + this.$redoStackBaseRev = this.$rev; + this.$redoStack.forEach(function (x) { + x[0].id = ++this.$maxRev; + }, this); + } + var deltaSet = this.$redoStack.pop(); + var redoSelectionRange = null; + if (deltaSet) { + redoSelectionRange = session.redoChanges(deltaSet, dontSelect); + this.$undoStack.push(deltaSet); + this.$syncRev(); + } + this.$fromUndo = false; + return redoSelectionRange; + }; + UndoManager.prototype.$syncRev = function () { + var stack = this.$undoStack; + var nextDelta = stack[stack.length - 1]; + var id = nextDelta && nextDelta[0].id || 0; + this.$redoStackBaseRev = id; + this.$rev = id; + }; + UndoManager.prototype.reset = function () { + this.lastDeltas = null; + this.$lastDelta = null; + this.$undoStack = []; + this.$redoStack = []; + this.$rev = 0; + this.mark = 0; + this.$redoStackBaseRev = this.$rev; + this.selections = []; + }; + UndoManager.prototype.canUndo = function () { + return this.$undoStack.length > 0; + }; + UndoManager.prototype.canRedo = function () { + return this.$redoStack.length > 0; + }; + UndoManager.prototype.bookmark = function (rev) { + if (rev == undefined) + rev = this.$rev; + this.mark = rev; + }; + UndoManager.prototype.isAtBookmark = function () { + return this.$rev === this.mark; + }; + UndoManager.prototype.toJSON = function () { + return { + $redoStack: this.$redoStack, + $undoStack: this.$undoStack + }; + }; + UndoManager.prototype.fromJSON = function (json) { + this.reset(); + this.$undoStack = json.$undoStack; + this.$redoStack = json.$redoStack; + }; + UndoManager.prototype.$prettyPrint = function (delta) { + if (delta) + return stringifyDelta(delta); + return stringifyDelta(this.$undoStack) + "\n---\n" + stringifyDelta(this.$redoStack); + }; + return UndoManager; +}()); +UndoManager.prototype.hasUndo = UndoManager.prototype.canUndo; +UndoManager.prototype.hasRedo = UndoManager.prototype.canRedo; +UndoManager.prototype.isClean = UndoManager.prototype.isAtBookmark; +UndoManager.prototype.markClean = UndoManager.prototype.bookmark; +function rearrangeUndoStack(stack, pos) { + for (var i = pos; i--;) { + var deltaSet = stack[i]; + if (deltaSet && !deltaSet[0].ignore) { + while (i < pos - 1) { + var swapped = swapGroups(stack[i], stack[i + 1]); + stack[i] = swapped[0]; + stack[i + 1] = swapped[1]; + i++; + } + return true; + } } - - var last = folds[folds.length - 1]; - this.range = new Range(folds[0].start.row, folds[0].start.column, - last.end.row, last.end.column); - this.start = this.range.start; - this.end = this.range.end; - - this.folds.forEach(function(fold) { - fold.setFoldLine(this); - }, this); } +var Range = require("./range").Range; +var cmp = Range.comparePoints; +var comparePoints = Range.comparePoints; +function $updateMarkers(delta) { + var isInsert = delta.action == "insert"; + var start = delta.start; + var end = delta.end; + var rowShift = (end.row - start.row) * (isInsert ? 1 : -1); + var colShift = (end.column - start.column) * (isInsert ? 1 : -1); + if (isInsert) + end = start; + for (var i in this.marks) { + var point = this.marks[i]; + var cmp = comparePoints(point, start); + if (cmp < 0) { + continue; // delta starts after the range + } + if (cmp === 0) { + if (isInsert) { + if (point.bias == 1) { + cmp = 1; + } + else { + point.bias == -1; + continue; + } + } + } + var cmp2 = isInsert ? cmp : comparePoints(point, end); + if (cmp2 > 0) { + point.row += rowShift; + point.column += point.row == end.row ? colShift : 0; + continue; + } + if (!isInsert && cmp2 <= 0) { + point.row = start.row; + point.column = start.column; + if (cmp2 === 0) + point.bias = 1; + } + } +} +function clonePos(pos) { + return { row: pos.row, column: pos.column }; +} +function cloneDelta(d) { + return { + start: clonePos(d.start), + end: clonePos(d.end), + action: d.action, + lines: d.lines.slice() + }; +} +function stringifyDelta(d) { + d = d || this; + if (Array.isArray(d)) { + return d.map(stringifyDelta).join("\n"); + } + var type = ""; + if (d.action) { + type = d.action == "insert" ? "+" : "-"; + type += "[" + d.lines + "]"; + } + else if (d.value) { + if (Array.isArray(d.value)) { + type = d.value.map(stringifyRange).join("\n"); + } + else { + type = stringifyRange(d.value); + } + } + if (d.start) { + type += stringifyRange(d); + } + if (d.id || d.rev) { + type += "\t(" + (d.id || d.rev) + ")"; + } + return type; +} +function stringifyRange(r) { + return r.start.row + ":" + r.start.column + + "=>" + r.end.row + ":" + r.end.column; +} +function swap(d1, d2) { + var i1 = d1.action == "insert"; + var i2 = d2.action == "insert"; + if (i1 && i2) { + if (cmp(d2.start, d1.end) >= 0) { + shift(d2, d1, -1); + } + else if (cmp(d2.start, d1.start) <= 0) { + shift(d1, d2, +1); + } + else { + return null; + } + } + else if (i1 && !i2) { + if (cmp(d2.start, d1.end) >= 0) { + shift(d2, d1, -1); + } + else if (cmp(d2.end, d1.start) <= 0) { + shift(d1, d2, -1); + } + else { + return null; + } + } + else if (!i1 && i2) { + if (cmp(d2.start, d1.start) >= 0) { + shift(d2, d1, +1); + } + else if (cmp(d2.start, d1.start) <= 0) { + shift(d1, d2, +1); + } + else { + return null; + } + } + else if (!i1 && !i2) { + if (cmp(d2.start, d1.start) >= 0) { + shift(d2, d1, +1); + } + else if (cmp(d2.end, d1.start) <= 0) { + shift(d1, d2, -1); + } + else { + return null; + } + } + return [d2, d1]; +} +function swapGroups(ds1, ds2) { + for (var i = ds1.length; i--;) { + for (var j = 0; j < ds2.length; j++) { + if (!swap(ds1[i], ds2[j])) { + while (i < ds1.length) { + while (j--) { + swap(ds2[j], ds1[i]); + } + j = ds2.length; + i++; + } + return [ds1, ds2]; + } + } + } + ds1.selectionBefore = ds2.selectionBefore = + ds1.selectionAfter = ds2.selectionAfter = null; + return [ds2, ds1]; +} +function xform(d1, c1) { + var i1 = d1.action == "insert"; + var i2 = c1.action == "insert"; + if (i1 && i2) { + if (cmp(d1.start, c1.start) < 0) { + shift(c1, d1, 1); + } + else { + shift(d1, c1, 1); + } + } + else if (i1 && !i2) { + if (cmp(d1.start, c1.end) >= 0) { + shift(d1, c1, -1); + } + else if (cmp(d1.start, c1.start) <= 0) { + shift(c1, d1, +1); + } + else { + shift(d1, Range.fromPoints(c1.start, d1.start), -1); + shift(c1, d1, +1); + } + } + else if (!i1 && i2) { + if (cmp(c1.start, d1.end) >= 0) { + shift(c1, d1, -1); + } + else if (cmp(c1.start, d1.start) <= 0) { + shift(d1, c1, +1); + } + else { + shift(c1, Range.fromPoints(d1.start, c1.start), -1); + shift(d1, c1, +1); + } + } + else if (!i1 && !i2) { + if (cmp(c1.start, d1.end) >= 0) { + shift(c1, d1, -1); + } + else if (cmp(c1.end, d1.start) <= 0) { + shift(d1, c1, -1); + } + else { + var before, after; + if (cmp(d1.start, c1.start) < 0) { + before = d1; + d1 = splitDelta(d1, c1.start); + } + if (cmp(d1.end, c1.end) > 0) { + after = splitDelta(d1, c1.end); + } + shiftPos(c1.end, d1.start, d1.end, -1); + if (after && !before) { + d1.lines = after.lines; + d1.start = after.start; + d1.end = after.end; + after = d1; + } + return [c1, before, after].filter(Boolean); + } + } + return [c1, d1]; +} +function shift(d1, d2, dir) { + shiftPos(d1.start, d2.start, d2.end, dir); + shiftPos(d1.end, d2.start, d2.end, dir); +} +function shiftPos(pos, start, end, dir) { + if (pos.row == (dir == 1 ? start : end).row) { + pos.column += dir * (end.column - start.column); + } + pos.row += dir * (end.row - start.row); +} +function splitDelta(c, pos) { + var lines = c.lines; + var end = c.end; + c.end = clonePos(pos); + var rowsBefore = c.end.row - c.start.row; + var otherLines = lines.splice(rowsBefore, lines.length); + var col = rowsBefore ? pos.column : pos.column - c.start.column; + lines.push(otherLines[0].substring(0, col)); + otherLines[0] = otherLines[0].substr(col); + var rest = { + start: clonePos(pos), + end: end, + lines: otherLines, + action: c.action + }; + return rest; +} +function moveDeltasByOne(redoStack, d) { + d = cloneDelta(d); + for (var j = redoStack.length; j--;) { + var deltaSet = redoStack[j]; + for (var i = 0; i < deltaSet.length; i++) { + var x = deltaSet[i]; + var xformed = xform(x, d); + d = xformed[0]; + if (xformed.length != 2) { + if (xformed[2]) { + deltaSet.splice(i + 1, 1, xformed[1], xformed[2]); + i++; + } + else if (!xformed[1]) { + deltaSet.splice(i, 1); + i--; + } + } + } + if (!deltaSet.length) { + redoStack.splice(j, 1); + } + } + return redoStack; +} +function rebaseRedoStack(redoStack, deltaSets) { + for (var i = 0; i < deltaSets.length; i++) { + var deltas = deltaSets[i]; + for (var j = 0; j < deltas.length; j++) { + moveDeltasByOne(redoStack, deltas[j]); + } + } +} +exports.UndoManager = UndoManager; -(function() { - this.shiftRow = function(shift) { +}); + +define("ace/edit_session/fold_line",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var FoldLine = /** @class */ (function () { + function FoldLine(foldData, folds) { + this.foldData = foldData; + if (Array.isArray(folds)) { + this.folds = folds; + } + else { + folds = this.folds = [folds]; + } + var last = folds[folds.length - 1]; + this.range = new Range(folds[0].start.row, folds[0].start.column, last.end.row, last.end.column); + this.start = this.range.start; + this.end = this.range.end; + this.folds.forEach(function (fold) { + fold.setFoldLine(this); + }, this); + } + FoldLine.prototype.shiftRow = function (shift) { this.start.row += shift; this.end.row += shift; - this.folds.forEach(function(fold) { + this.folds.forEach(function (fold) { fold.start.row += shift; fold.end.row += shift; }); }; - - this.addFold = function(fold) { + FoldLine.prototype.addFold = function (fold) { if (fold.sameRow) { if (fold.start.row < this.startRow || fold.endRow > this.endRow) { throw new Error("Can't add a fold to this FoldLine as it has no connection"); } this.folds.push(fold); - this.folds.sort(function(a, b) { + this.folds.sort(function (a, b) { return -a.range.compareEnd(b.start.row, b.start.column); }); if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) { this.end.row = fold.end.row; - this.end.column = fold.end.column; - } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { + this.end.column = fold.end.column; + } + else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) { this.start.row = fold.start.row; this.start.column = fold.start.column; } - } else if (fold.start.row == this.end.row) { + } + else if (fold.start.row == this.end.row) { this.folds.push(fold); this.end.row = fold.end.row; this.end.column = fold.end.column; - } else if (fold.end.row == this.start.row) { + } + else if (fold.end.row == this.start.row) { this.folds.unshift(fold); this.start.row = fold.start.row; this.start.column = fold.start.column; - } else { + } + else { throw new Error("Trying to add fold to FoldRow that doesn't have a matching row"); } fold.foldLine = this; }; - - this.containsRow = function(row) { + FoldLine.prototype.containsRow = function (row) { return row >= this.start.row && row <= this.end.row; }; - - this.walk = function(callback, endRow, endColumn) { - var lastEnd = 0, - folds = this.folds, - fold, - cmp, stop, isNewRow = true; - + FoldLine.prototype.walk = function (callback, endRow, endColumn) { + var lastEnd = 0, folds = this.folds, fold, cmp, stop, isNewRow = true; if (endRow == null) { endRow = this.end.row; endColumn = this.end.column; } - for (var i = 0; i < folds.length; i++) { fold = folds[i]; - cmp = fold.range.compareStart(endRow, endColumn); if (cmp == -1) { callback(null, endRow, endColumn, lastEnd, isNewRow); return; } - stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow); stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd); if (stop || cmp === 0) { @@ -8310,8 +8290,7 @@ function FoldLine(foldData, folds) { } callback(null, endRow, endColumn, lastEnd, isNewRow); }; - - this.getNextFoldTo = function(row, column) { + FoldLine.prototype.getNextFoldTo = function (row, column) { var fold, cmp; for (var i = 0; i < this.folds.length; i++) { fold = this.folds[i]; @@ -8321,7 +8300,8 @@ function FoldLine(foldData, folds) { fold: fold, kind: "after" }; - } else if (cmp === 0) { + } + else if (cmp === 0) { return { fold: fold, kind: "inside" @@ -8330,18 +8310,16 @@ function FoldLine(foldData, folds) { } return null; }; - - this.addRemoveChars = function(row, column, len) { - var ret = this.getNextFoldTo(row, column), - fold, folds; + FoldLine.prototype.addRemoveChars = function (row, column, len) { + var ret = this.getNextFoldTo(row, column), fold, folds; if (ret) { fold = ret.fold; if (ret.kind == "inside" && fold.start.column != column - && fold.start.row != row) - { + && fold.start.row != row) { window.console && window.console.log(row, column, fold); - } else if (fold.start.row == row) { + } + else if (fold.start.row == row) { folds = this.folds; var i = folds.indexOf(fold); if (i === 0) { @@ -8359,29 +8337,23 @@ function FoldLine(foldData, folds) { } } }; - - this.split = function(row, column) { + FoldLine.prototype.split = function (row, column) { var pos = this.getNextFoldTo(row, column); - if (!pos || pos.kind == "inside") return null; - var fold = pos.fold; var folds = this.folds; var foldData = this.foldData; - var i = folds.indexOf(fold); var foldBefore = folds[i - 1]; this.end.row = foldBefore.end.row; this.end.column = foldBefore.end.column; folds = folds.splice(i, folds.length - i); - var newFoldLine = new FoldLine(foldData, folds); foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine); return newFoldLine; }; - - this.merge = function(foldLineNext) { + FoldLine.prototype.merge = function (foldLineNext) { var folds = foldLineNext.folds; for (var i = 0; i < folds.length; i++) { this.addFold(folds[i]); @@ -8389,23 +8361,18 @@ function FoldLine(foldData, folds) { var foldData = this.foldData; foldData.splice(foldData.indexOf(foldLineNext), 1); }; - - this.toString = function() { - var ret = [this.range.toString() + ": [" ]; - - this.folds.forEach(function(fold) { + FoldLine.prototype.toString = function () { + var ret = [this.range.toString() + ": ["]; + this.folds.forEach(function (fold) { ret.push(" " + fold.toString()); }); ret.push("]"); return ret.join("\n"); }; - - this.idxToPosition = function(idx) { + FoldLine.prototype.idxToPosition = function (idx) { var lastFoldEndColumn = 0; - for (var i = 0; i < this.folds.length; i++) { var fold = this.folds[i]; - idx -= fold.start.column - lastFoldEndColumn; if (idx < 0) { return { @@ -8413,40 +8380,33 @@ function FoldLine(foldData, folds) { column: fold.start.column + idx }; } - idx -= fold.placeholder.length; if (idx < 0) { return fold.start; } - lastFoldEndColumn = fold.end.column; } - return { row: this.end.row, column: this.end.column + idx }; }; -}).call(FoldLine.prototype); - + return FoldLine; +}()); exports.FoldLine = FoldLine; + }); -define("ace/range_list",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; +define("ace/range_list",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("./range").Range; var comparePoints = Range.comparePoints; - -var RangeList = function() { - this.ranges = []; -}; - -(function() { - this.comparePoints = comparePoints; - - this.pointIndex = function(pos, excludeEdges, startIndex) { +var RangeList = /** @class */ (function () { + function RangeList() { + this.ranges = []; + this.$bias = 1; + } + RangeList.prototype.pointIndex = function (pos, excludeEdges, startIndex) { var list = this.ranges; - for (var i = startIndex || 0; i < list.length; i++) { var range = list[i]; var cmpEnd = comparePoints(pos, range.end); @@ -8454,52 +8414,43 @@ var RangeList = function() { continue; var cmpStart = comparePoints(pos, range.start); if (cmpEnd === 0) - return excludeEdges && cmpStart !== 0 ? -i-2 : i; + return excludeEdges && cmpStart !== 0 ? -i - 2 : i; if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges)) return i; - - return -i-1; + return -i - 1; } return -i - 1; }; - - this.add = function(range) { + RangeList.prototype.add = function (range) { var excludeEdges = !range.isEmpty(); var startIndex = this.pointIndex(range.start, excludeEdges); if (startIndex < 0) startIndex = -startIndex - 1; - var endIndex = this.pointIndex(range.end, excludeEdges, startIndex); - if (endIndex < 0) endIndex = -endIndex - 1; else endIndex++; return this.ranges.splice(startIndex, endIndex - startIndex, range); }; - - this.addList = function(list) { + RangeList.prototype.addList = function (list) { var removed = []; - for (var i = list.length; i--; ) { + for (var i = list.length; i--;) { removed.push.apply(removed, this.add(list[i])); } return removed; }; - - this.substractPoint = function(pos) { + RangeList.prototype.substractPoint = function (pos) { var i = this.pointIndex(pos); - if (i >= 0) return this.ranges.splice(i, 1); }; - this.merge = function() { + RangeList.prototype.merge = function () { var removed = []; var list = this.ranges; - - list = list.sort(function(a, b) { + list = list.sort(function (a, b) { return comparePoints(a.start, b.start); }); - var next = list[0], range; for (var i = 1; i < list.length; i++) { range = next; @@ -8507,123 +8458,153 @@ var RangeList = function() { var cmp = comparePoints(range.end, next.start); if (cmp < 0) continue; - if (cmp == 0 && !range.isEmpty() && !next.isEmpty()) continue; - if (comparePoints(range.end, next.end) < 0) { range.end.row = next.end.row; range.end.column = next.end.column; } - list.splice(i, 1); removed.push(next); next = range; i--; } - this.ranges = list; - return removed; }; - - this.contains = function(row, column) { - return this.pointIndex({row: row, column: column}) >= 0; + RangeList.prototype.contains = function (row, column) { + return this.pointIndex({ row: row, column: column }) >= 0; }; - - this.containsPoint = function(pos) { + RangeList.prototype.containsPoint = function (pos) { return this.pointIndex(pos) >= 0; }; - - this.rangeAtPoint = function(pos) { + RangeList.prototype.rangeAtPoint = function (pos) { var i = this.pointIndex(pos); if (i >= 0) return this.ranges[i]; }; - - - this.clipRows = function(startRow, endRow) { + RangeList.prototype.clipRows = function (startRow, endRow) { var list = this.ranges; if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow) return []; - - var startIndex = this.pointIndex({row: startRow, column: 0}); + var startIndex = this.pointIndex({ row: startRow, column: 0 }); if (startIndex < 0) startIndex = -startIndex - 1; - var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex); + var endIndex = this.pointIndex({ row: endRow, column: 0 }, startIndex); if (endIndex < 0) endIndex = -endIndex - 1; - var clipped = []; for (var i = startIndex; i < endIndex; i++) { clipped.push(list[i]); } return clipped; }; - - this.removeAll = function() { + RangeList.prototype.removeAll = function () { return this.ranges.splice(0, this.ranges.length); }; - - this.attach = function(session) { + RangeList.prototype.attach = function (session) { if (this.session) this.detach(); - this.session = session; this.onChange = this.$onChange.bind(this); - this.session.on('change', this.onChange); }; - - this.detach = function() { + RangeList.prototype.detach = function () { if (!this.session) return; this.session.removeListener('change', this.onChange); this.session = null; }; - - this.$onChange = function(delta) { - if (delta.action == "insert"){ - var start = delta.start; - var end = delta.end; - } else { - var end = delta.start; - var start = delta.end; - } + RangeList.prototype.$onChange = function (delta) { + var start = delta.start; + var end = delta.end; var startRow = start.row; var endRow = end.row; - var lineDif = endRow - startRow; - - var colDiff = -start.column + end.column; var ranges = this.ranges; - for (var i = 0, n = ranges.length; i < n; i++) { var r = ranges[i]; - if (r.end.row < startRow) - continue; - if (r.start.row > startRow) + if (r.end.row >= startRow) break; - - if (r.start.row == startRow && r.start.column >= start.column ) { - if (r.start.column == start.column && this.$insertRight) { - } else { - r.start.column += colDiff; + } + if (delta.action == "insert") { + var lineDif = endRow - startRow; + var colDiff = -start.column + end.column; + for (; i < n; i++) { + var r = ranges[i]; + if (r.start.row > startRow) + break; + if (r.start.row == startRow && r.start.column >= start.column) { + if (r.start.column == start.column && this.$bias <= 0) { + } + else { + r.start.column += colDiff; + r.start.row += lineDif; + } + } + if (r.end.row == startRow && r.end.column >= start.column) { + if (r.end.column == start.column && this.$bias < 0) { + continue; + } + if (r.end.column == start.column && colDiff > 0 && i < n - 1) { + if (r.end.column > r.start.column && r.end.column == ranges[i + 1].start.column) + r.end.column -= colDiff; + } + r.end.column += colDiff; + r.end.row += lineDif; + } + } + } + else { + var lineDif = startRow - endRow; + var colDiff = start.column - end.column; + for (; i < n; i++) { + var r = ranges[i]; + if (r.start.row > endRow) + break; + if (r.end.row < endRow + && (startRow < r.end.row + || startRow == r.end.row && start.column < r.end.column)) { + r.end.row = startRow; + r.end.column = start.column; + } + else if (r.end.row == endRow) { + if (r.end.column <= end.column) { + if (lineDif || r.end.column > start.column) { + r.end.column = start.column; + r.end.row = start.row; + } + } + else { + r.end.column += colDiff; + r.end.row += lineDif; + } + } + else if (r.end.row > endRow) { + r.end.row += lineDif; + } + if (r.start.row < endRow + && (startRow < r.start.row + || startRow == r.start.row && start.column < r.start.column)) { + r.start.row = startRow; + r.start.column = start.column; + } + else if (r.start.row == endRow) { + if (r.start.column <= end.column) { + if (lineDif || r.start.column > start.column) { + r.start.column = start.column; + r.start.row = start.row; + } + } + else { + r.start.column += colDiff; + r.start.row += lineDif; + } + } + else if (r.start.row > endRow) { r.start.row += lineDif; } } - if (r.end.row == startRow && r.end.column >= start.column) { - if (r.end.column == start.column && this.$insertRight) { - continue; - } - if (r.end.column == start.column && colDiff > 0 && i < n - 1) { - if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column) - r.end.column -= colDiff; - } - r.end.column += colDiff; - r.end.row += lineDif; - } } - if (lineDif != 0 && i < n) { for (; i < n; i++) { var r = ranges[i]; @@ -8632,62 +8613,65 @@ var RangeList = function() { } } }; - -}).call(RangeList.prototype); - + return RangeList; +}()); +RangeList.prototype.comparePoints = comparePoints; exports.RangeList = RangeList; + }); -define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; +define("ace/edit_session/fold",["require","exports","module","ace/range_list"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var RangeList = require("../range_list").RangeList; -var oop = require("../lib/oop"); -var Fold = exports.Fold = function(range, placeholder) { - this.foldLine = null; - this.placeholder = placeholder; - this.range = range; - this.start = range.start; - this.end = range.end; - - this.sameRow = range.start.row == range.end.row; - this.subFolds = this.ranges = []; -}; - -oop.inherits(Fold, RangeList); - -(function() { - - this.toString = function() { +var Fold = /** @class */ (function (_super) { + __extends(Fold, _super); + function Fold(range, placeholder) { + var _this = _super.call(this) || this; + _this.foldLine = null; + _this.placeholder = placeholder; + _this.range = range; + _this.start = range.start; + _this.end = range.end; + _this.sameRow = range.start.row == range.end.row; + _this.subFolds = _this.ranges = []; + return _this; + } + Fold.prototype.toString = function () { return '"' + this.placeholder + '" ' + this.range.toString(); }; - - this.setFoldLine = function(foldLine) { + Fold.prototype.setFoldLine = function (foldLine) { this.foldLine = foldLine; - this.subFolds.forEach(function(fold) { + this.subFolds.forEach(function (fold) { fold.setFoldLine(foldLine); }); }; - - this.clone = function() { + Fold.prototype.clone = function () { var range = this.range.clone(); var fold = new Fold(range, this.placeholder); - this.subFolds.forEach(function(subFold) { + this.subFolds.forEach(function (subFold) { fold.subFolds.push(subFold.clone()); }); fold.collapseChildren = this.collapseChildren; return fold; }; - - this.addSubFold = function(fold) { + Fold.prototype.addSubFold = function (fold) { if (this.range.isEqual(fold)) return; - - if (!this.range.containsRange(fold)) - throw new Error("A fold can't intersect already existing fold" + fold.range + this.range); consumeRange(fold, this.start); - var row = fold.start.row, column = fold.start.column; for (var i = 0, cmp = -1; i < this.subFolds.length; i++) { cmp = this.subFolds[i].range.compare(row, column); @@ -8695,32 +8679,34 @@ oop.inherits(Fold, RangeList); break; } var afterStart = this.subFolds[i]; - - if (cmp == 0) - return afterStart.addSubFold(fold); + var firstConsumed = 0; + if (cmp == 0) { + if (afterStart.range.containsRange(fold)) + return afterStart.addSubFold(fold); + else + firstConsumed = 1; + } var row = fold.range.end.row, column = fold.range.end.column; for (var j = i, cmp = -1; j < this.subFolds.length; j++) { cmp = this.subFolds[j].range.compare(row, column); if (cmp != 1) break; } - var afterEnd = this.subFolds[j]; - if (cmp == 0) - throw new Error("A fold can't intersect already existing fold" + fold.range + this.range); - + j++; var consumedFolds = this.subFolds.splice(i, j - i, fold); + var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length; + for (var k = firstConsumed; k < last; k++) { + fold.addSubFold(consumedFolds[k]); + } fold.setFoldLine(this.foldLine); - return fold; }; - - this.restoreRange = function(range) { + Fold.prototype.restoreRange = function (range) { return restoreRange(range, this.start); }; - -}).call(Fold.prototype); - + return Fold; +}(RangeList)); function consumePoint(point, anchor) { point.row -= anchor.row; if (point.row == 0) @@ -8739,45 +8725,43 @@ function restoreRange(range, anchor) { restorePoint(range.start, anchor); restorePoint(range.end, anchor); } +exports.Fold = Fold; }); -define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"], function(require, exports, module) { +define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator","ace/mouse/mouse_event"], function(require, exports, module){// @ts-nocheck "use strict"; - var Range = require("../range").Range; var FoldLine = require("./fold_line").FoldLine; var Fold = require("./fold").Fold; var TokenIterator = require("../token_iterator").TokenIterator; - +var MouseEvent = require("../mouse/mouse_event").MouseEvent; function Folding() { - this.getFoldAt = function(row, column, side) { + this.getFoldAt = function (row, column, side) { var foldLine = this.getFoldLine(row); if (!foldLine) return null; - var folds = foldLine.folds; for (var i = 0; i < folds.length; i++) { - var fold = folds[i]; - if (fold.range.contains(row, column)) { - if (side == 1 && fold.range.isEnd(row, column)) { - continue; - } else if (side == -1 && fold.range.isStart(row, column)) { + var range = folds[i].range; + if (range.contains(row, column)) { + if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) { continue; } - return fold; + else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) { + continue; + } + return folds[i]; } } }; - this.getFoldsInRange = function(range) { + this.getFoldsInRange = function (range) { var start = range.start; var end = range.end; var foldLines = this.$foldData; var foundFolds = []; - start.column += 1; end.column -= 1; - for (var i = 0; i < foldLines.length; i++) { var cmp = foldLines[i].range.compareRange(range); if (cmp == 2) { @@ -8786,16 +8770,17 @@ function Folding() { else if (cmp == -2) { break; } - var folds = foldLines[i].folds; for (var j = 0; j < folds.length; j++) { var fold = folds[j]; cmp = fold.range.compareRange(range); if (cmp == -2) { break; - } else if (cmp == 2) { + } + else if (cmp == 2) { continue; - } else + } + else if (cmp == 42) { break; } @@ -8804,36 +8789,32 @@ function Folding() { } start.column -= 1; end.column += 1; - return foundFolds; }; - - this.getFoldsInRangeList = function(ranges) { + this.getFoldsInRangeList = function (ranges) { if (Array.isArray(ranges)) { var folds = []; - ranges.forEach(function(range) { + ranges.forEach(function (range) { folds = folds.concat(this.getFoldsInRange(range)); }, this); - } else { + } + else { var folds = this.getFoldsInRange(ranges); } return folds; }; - this.getAllFolds = function() { + this.getAllFolds = function () { var folds = []; var foldLines = this.$foldData; - for (var i = 0; i < foldLines.length; i++) for (var j = 0; j < foldLines[i].folds.length; j++) folds.push(foldLines[i].folds[j]); - return folds; }; - this.getFoldStringAt = function(row, column, trim, foldLine) { + this.getFoldStringAt = function (row, column, trim, foldLine) { foldLine = foldLine || this.getFoldLine(row); if (!foldLine) return null; - var lastFold = { end: { column: 0 } }; @@ -8854,7 +8835,6 @@ function Folding() { } if (!str) str = this.getLine(fold.start.row).substring(lastFold.end.column); - if (trim == -1) return str.substring(0, column - lastFold.end.column); else if (trim == 1) @@ -8862,8 +8842,7 @@ function Folding() { else return str; }; - - this.getFoldLine = function(docRow, startFoldLine) { + this.getFoldLine = function (docRow, startFoldLine) { var foldData = this.$foldData; var i = 0; if (startFoldLine) @@ -8874,13 +8853,14 @@ function Folding() { var foldLine = foldData[i]; if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) { return foldLine; - } else if (foldLine.end.row > docRow) { + } + else if (foldLine.end.row > docRow) { return null; } } return null; }; - this.getNextFoldLine = function(docRow, startFoldLine) { + this.getNextFoldLine = function (docRow, startFoldLine) { var foldData = this.$foldData; var i = 0; if (startFoldLine) @@ -8895,43 +8875,39 @@ function Folding() { } return null; }; - - this.getFoldedRowCount = function(first, last) { - var foldData = this.$foldData, rowCount = last-first+1; + this.getFoldedRowCount = function (first, last) { + var foldData = this.$foldData, rowCount = last - first + 1; for (var i = 0; i < foldData.length; i++) { - var foldLine = foldData[i], - end = foldLine.end.row, - start = foldLine.start.row; + var foldLine = foldData[i], end = foldLine.end.row, start = foldLine.start.row; if (end >= last) { if (start < last) { if (start >= first) - rowCount -= last-start; + rowCount -= last - start; else rowCount = 0; // in one fold } break; - } else if (end >= first){ + } + else if (end >= first) { if (start >= first) // fold inside range - rowCount -= end-start; + rowCount -= end - start; else - rowCount -= end-first+1; + rowCount -= end - first + 1; } } return rowCount; }; - - this.$addFoldLine = function(foldLine) { + this.$addFoldLine = function (foldLine) { this.$foldData.push(foldLine); - this.$foldData.sort(function(a, b) { + this.$foldData.sort(function (a, b) { return a.start.row - b.start.row; }); return foldLine; }; - this.addFold = function(placeholder, range) { + this.addFold = function (placeholder, range) { var foldData = this.$foldData; var added = false; var fold; - if (placeholder instanceof Fold) fold = placeholder; else { @@ -8939,40 +8915,35 @@ function Folding() { fold.collapseChildren = range.collapseChildren; } this.$clipRangeToDocument(fold.range); - var startRow = fold.start.row; var startColumn = fold.start.column; var endRow = fold.end.row; var endColumn = fold.end.column; - if (!(startRow < endRow || - startRow == endRow && startColumn <= endColumn - 2)) - throw new Error("The range has to be at least 2 characters width"); - var startFold = this.getFoldAt(startRow, startColumn, 1); var endFold = this.getFoldAt(endRow, endColumn, -1); if (startFold && endFold == startFold) return startFold.addSubFold(fold); - if (startFold && !startFold.range.isStart(startRow, startColumn)) this.removeFold(startFold); - if (endFold && !endFold.range.isEnd(endRow, endColumn)) this.removeFold(endFold); var folds = this.getFoldsInRange(fold.range); if (folds.length > 0) { this.removeFolds(folds); - folds.forEach(function(subFold) { - fold.addSubFold(subFold); - }); + if (!fold.collapseChildren) { + folds.forEach(function (subFold) { + fold.addSubFold(subFold); + }); + } } - for (var i = 0; i < foldData.length; i++) { var foldLine = foldData[i]; if (endRow == foldLine.start.row) { foldLine.addFold(fold); added = true; break; - } else if (startRow == foldLine.end.row) { + } + else if (startRow == foldLine.end.row) { foldLine.addFold(fold); added = true; if (!fold.sameRow) { @@ -8983,53 +8954,52 @@ function Folding() { } } break; - } else if (endRow <= foldLine.start.row) { + } + else if (endRow <= foldLine.start.row) { break; } } - if (!added) foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold)); - if (this.$useWrapMode) this.$updateWrapData(foldLine.start.row, foldLine.start.row); else this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row); this.$modified = true; this._signal("changeFold", { data: fold, action: "add" }); - return fold; }; - - this.addFolds = function(folds) { - folds.forEach(function(fold) { + this.addFolds = function (folds) { + folds.forEach(function (fold) { this.addFold(fold); }, this); }; - - this.removeFold = function(fold) { + this.removeFold = function (fold) { var foldLine = fold.foldLine; var startRow = foldLine.start.row; var endRow = foldLine.end.row; - var foldLines = this.$foldData; var folds = foldLine.folds; if (folds.length == 1) { foldLines.splice(foldLines.indexOf(foldLine), 1); - } else + } + else if (foldLine.range.isEnd(fold.end.row, fold.end.column)) { folds.pop(); foldLine.end.row = folds[folds.length - 1].end.row; foldLine.end.column = folds[folds.length - 1].end.column; - } else + } + else if (foldLine.range.isStart(fold.start.row, fold.start.column)) { folds.shift(); foldLine.start.row = folds[0].start.row; foldLine.start.column = folds[0].start.column; - } else + } + else if (fold.sameRow) { folds.splice(folds.indexOf(fold), 1); - } else + } + else { var newFoldLine = foldLine.split(fold.start.row, fold.start.column); folds = newFoldLine.folds; @@ -9037,7 +9007,6 @@ function Folding() { newFoldLine.start.row = folds[0].start.row; newFoldLine.start.column = folds[0].start.column; } - if (!this.$updating) { if (this.$useWrapMode) this.$updateWrapData(startRow, endRow); @@ -9047,77 +9016,84 @@ function Folding() { this.$modified = true; this._signal("changeFold", { data: fold, action: "remove" }); }; - - this.removeFolds = function(folds) { + this.removeFolds = function (folds) { var cloneFolds = []; for (var i = 0; i < folds.length; i++) { cloneFolds.push(folds[i]); } - - cloneFolds.forEach(function(fold) { + cloneFolds.forEach(function (fold) { this.removeFold(fold); }, this); this.$modified = true; }; - - this.expandFold = function(fold) { + this.expandFold = function (fold) { this.removeFold(fold); - fold.subFolds.forEach(function(subFold) { + fold.subFolds.forEach(function (subFold) { fold.restoreRange(subFold); this.addFold(subFold); }, this); if (fold.collapseChildren > 0) { - this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1); + this.foldAll(fold.start.row + 1, fold.end.row, fold.collapseChildren - 1); } fold.subFolds = []; }; - - this.expandFolds = function(folds) { - folds.forEach(function(fold) { + this.expandFolds = function (folds) { + folds.forEach(function (fold) { this.expandFold(fold); }, this); }; - - this.unfold = function(location, expandInner) { + this.unfold = function (location, expandInner) { var range, folds; if (location == null) { range = new Range(0, 0, this.getLength(), 0); - expandInner = true; - } else if (typeof location == "number") - range = new Range(location, 0, location, this.getLine(location).length); - else if ("row" in location) - range = Range.fromPoints(location, location); - else - range = location; - - folds = this.getFoldsInRangeList(range); - if (expandInner) { - this.removeFolds(folds); - } else { - var subFolds = folds; - while (subFolds.length) { - this.expandFolds(subFolds); - subFolds = this.getFoldsInRangeList(range); - } + if (expandInner == null) + expandInner = true; } - if (folds.length) + else if (typeof location == "number") { + range = new Range(location, 0, location, this.getLine(location).length); + } + else if ("row" in location) { + range = Range.fromPoints(location, location); + } + else if (Array.isArray(location)) { + folds = []; + location.forEach(function (range) { + folds = folds.concat(this.unfold(range)); + }, this); return folds; + } + else { + range = location; + } + folds = this.getFoldsInRangeList(range); + var outermostFolds = folds; + while (folds.length == 1 + && Range.comparePoints(folds[0].start, range.start) < 0 + && Range.comparePoints(folds[0].end, range.end) > 0) { + this.expandFolds(folds); + folds = this.getFoldsInRangeList(range); + } + if (expandInner != false) { + this.removeFolds(folds); + } + else { + this.expandFolds(folds); + } + if (outermostFolds.length) + return outermostFolds; }; - this.isRowFolded = function(docRow, startFoldRow) { + this.isRowFolded = function (docRow, startFoldRow) { return !!this.getFoldLine(docRow, startFoldRow); }; - - this.getRowFoldEnd = function(docRow, startFoldRow) { + this.getRowFoldEnd = function (docRow, startFoldRow) { var foldLine = this.getFoldLine(docRow, startFoldRow); return foldLine ? foldLine.end.row : docRow; }; - - this.getRowFoldStart = function(docRow, startFoldRow) { + this.getRowFoldStart = function (docRow, startFoldRow) { var foldLine = this.getFoldLine(docRow, startFoldRow); return foldLine ? foldLine.start.row : docRow; }; - - this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) { + this.getFoldDisplayLine = function (foldLine, endRow, endColumn, startRow, startColumn) { if (startRow == null) startRow = foldLine.start.row; if (startColumn == null) @@ -9128,8 +9104,7 @@ function Folding() { endColumn = this.getLine(endRow).length; var doc = this.doc; var textLine = ""; - - foldLine.walk(function(placeholder, row, column, lastColumn) { + foldLine.walk(function (placeholder, row, column, lastColumn) { if (row < startRow) return; if (row == startRow) { @@ -9137,90 +9112,85 @@ function Folding() { return; lastColumn = Math.max(startColumn, lastColumn); } - if (placeholder != null) { textLine += placeholder; - } else { + } + else { textLine += doc.getLine(row).substring(lastColumn, column); } }, endRow, endColumn); return textLine; }; - - this.getDisplayLine = function(row, endColumn, startRow, startColumn) { + this.getDisplayLine = function (row, endColumn, startRow, startColumn) { var foldLine = this.getFoldLine(row); - if (!foldLine) { var line; line = this.doc.getLine(row); return line.substring(startColumn || 0, endColumn || line.length); - } else { - return this.getFoldDisplayLine( - foldLine, row, endColumn, startRow, startColumn); + } + else { + return this.getFoldDisplayLine(foldLine, row, endColumn, startRow, startColumn); } }; - - this.$cloneFoldData = function() { + this.$cloneFoldData = function () { var fd = []; - fd = this.$foldData.map(function(foldLine) { - var folds = foldLine.folds.map(function(fold) { + fd = this.$foldData.map(function (foldLine) { + var folds = foldLine.folds.map(function (fold) { return fold.clone(); }); return new FoldLine(fd, folds); }); - return fd; }; - - this.toggleFold = function(tryToUnfold) { + this.toggleFold = function (tryToUnfold) { var selection = this.selection; var range = selection.getRange(); var fold; var bracketPos; - if (range.isEmpty()) { var cursor = range.start; fold = this.getFoldAt(cursor.row, cursor.column); - if (fold) { this.expandFold(fold); return; - } else if (bracketPos = this.findMatchingBracket(cursor)) { + } + else if (bracketPos = this.findMatchingBracket(cursor)) { if (range.comparePoint(bracketPos) == 1) { range.end = bracketPos; - } else { + } + else { range.start = bracketPos; range.start.column++; range.end.column--; } - } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) { + } + else if (bracketPos = this.findMatchingBracket({ row: cursor.row, column: cursor.column + 1 })) { if (range.comparePoint(bracketPos) == 1) range.end = bracketPos; else range.start = bracketPos; - range.start.column++; - } else { + } + else { range = this.getCommentFoldRange(cursor.row, cursor.column) || range; } - } else { + } + else { var folds = this.getFoldsInRange(range); if (tryToUnfold && folds.length) { this.expandFolds(folds); return; - } else if (folds.length == 1 ) { + } + else if (folds.length == 1) { fold = folds[0]; } } - if (!fold) fold = this.getFoldAt(range.start.row, range.start.column); - if (fold && fold.range.toString() == range.toString()) { this.expandFold(fold); return; } - var placeholder = "..."; if (!range.isMultiLine()) { placeholder = this.getTextRange(range); @@ -9228,32 +9198,27 @@ function Folding() { return; placeholder = placeholder.trim().substring(0, 2) + ".."; } - this.addFold(placeholder, range); }; - - this.getCommentFoldRange = function(row, column, dir) { + this.getCommentFoldRange = function (row, column, dir) { var iterator = new TokenIterator(this, row, column); var token = iterator.getCurrentToken(); - var type = token.type; + var type = token && token.type; if (token && /^comment|string/.test(type)) { type = type.match(/comment|string/)[0]; if (type == "comment") - type += "|doc-start"; + type += "|doc-start|\\.doc"; var re = new RegExp(type); var range = new Range(); if (dir != 1) { do { token = iterator.stepBackward(); - } while (token && re.test(token.type)); - iterator.stepForward(); + } while (token && re.test(token.type) && !/^comment.end/.test(token.type)); + token = iterator.stepForward(); } - range.start.row = iterator.getCurrentTokenRow(); - range.start.column = iterator.getCurrentTokenColumn() + 2; - + range.start.column = iterator.getCurrentTokenColumn() + (/^comment.start/.test(token.type) ? token.value.length : 2); iterator = new TokenIterator(this, row, column); - if (dir != -1) { var lastRow = -1; do { @@ -9262,21 +9227,24 @@ function Folding() { var state = this.getState(iterator.$row); if (!re.test(state)) lastRow = iterator.$row; - } else if (iterator.$row > lastRow) { + } + else if (iterator.$row > lastRow) { break; } - } while (token && re.test(token.type)); + } while (token && re.test(token.type) && !/^comment.start/.test(token.type)); token = iterator.stepBackward(); - } else + } + else token = iterator.getCurrentToken(); - range.end.row = iterator.getCurrentTokenRow(); - range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2; + range.end.column = iterator.getCurrentTokenColumn(); + if (!/^comment.end/.test(token.type)) { + range.end.column += token.value.length - 2; + } return range; } }; - - this.foldAll = function(startRow, endRow, depth) { + this.foldAll = function (startRow, endRow, depth, test) { if (depth == undefined) depth = 100000; // JSON.stringify doesn't hanle Infinity var foldWidgets = this.foldWidgets; @@ -9289,79 +9257,83 @@ function Folding() { foldWidgets[row] = this.getFoldWidget(row); if (foldWidgets[row] != "start") continue; - + if (test && !test(row)) + continue; var range = this.getFoldWidgetRange(row); if (range && range.isMultiLine() && range.end.row <= endRow - && range.start.row >= startRow - ) { + && range.start.row >= startRow) { row = range.end.row; - try { - var fold = this.addFold("...", range); - if (fold) - fold.collapseChildren = depth; - } catch(e) {} + range.collapseChildren = depth; + this.addFold("...", range); } } }; + this.foldToLevel = function (level) { + this.foldAll(); + while (level-- > 0) + this.unfold(null, false); + }; + this.foldAllComments = function () { + var session = this; + this.foldAll(null, null, null, function (row) { + var tokens = session.getTokens(row); + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token.type == "text" && /^\s+$/.test(token.value)) + continue; + if (/comment/.test(token.type)) + return true; + return false; + } + }); + }; this.$foldStyles = { "manual": 1, "markbegin": 1, "markbeginend": 1 }; this.$foldStyle = "markbegin"; - this.setFoldStyle = function(style) { + this.setFoldStyle = function (style) { if (!this.$foldStyles[style]) throw new Error("invalid fold style: " + style + "[" + Object.keys(this.$foldStyles).join(", ") + "]"); - if (this.$foldStyle == style) return; - this.$foldStyle = style; - if (style == "manual") this.unfold(); var mode = this.$foldMode; this.$setFolding(null); this.$setFolding(mode); }; - - this.$setFolding = function(foldMode) { + this.$setFolding = function (foldMode) { if (this.$foldMode == foldMode) return; - this.$foldMode = foldMode; - this.off('change', this.$updateFoldWidgets); this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); this._signal("changeAnnotation"); - if (!foldMode || this.$foldStyle == "manual") { this.foldWidgets = null; return; } - this.foldWidgets = []; this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle); this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle); - this.$updateFoldWidgets = this.updateFoldWidgets.bind(this); this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this); this.on('change', this.$updateFoldWidgets); this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets); }; - this.getParentFoldRangeData = function (row, ignoreCurrent) { var fw = this.foldWidgets; if (!fw || (ignoreCurrent && fw[row])) return {}; - var i = row - 1, firstRange; while (i >= 0) { var c = fw[i]; if (c == null) c = fw[i] = this.getFoldWidget(i); - if (c == "start") { var range = this.getFoldWidgetRange(i); if (!firstRange) @@ -9371,21 +9343,19 @@ function Folding() { } i--; } - return { range: i !== -1 && range, firstRange: firstRange }; }; - - this.onFoldWidgetClick = function(row, e) { - e = e.domEvent; + this.onFoldWidgetClick = function (row, e) { + if (e instanceof MouseEvent) + e = e.domEvent; var options = { children: e.shiftKey, all: e.ctrlKey || e.metaKey, siblings: e.altKey }; - var range = this.$toggleFoldWidget(row, options); if (!range) { var el = (e.target || e.srcElement); @@ -9393,16 +9363,13 @@ function Folding() { el.className += " ace_invalid"; } }; - - this.$toggleFoldWidget = function(row, options) { + this.$toggleFoldWidget = function (row, options) { if (!this.getFoldWidget) return; var type = this.getFoldWidget(row); var line = this.getLine(row); - var dir = type === "end" ? -1 : 1; var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir); - if (fold) { if (options.children || options.all) this.removeFold(fold); @@ -9410,7 +9377,6 @@ function Folding() { this.expandFold(fold); return fold; } - var range = this.getFoldWidgetRange(row, true); if (range && !range.isMultiLine()) { fold = this.getFoldAt(range.start.row, range.start.column, 1); @@ -9419,7 +9385,6 @@ function Folding() { return fold; } } - if (options.siblings) { var data = this.getParentFoldRangeData(row); if (data.range) { @@ -9427,57 +9392,53 @@ function Folding() { var endRow = data.range.end.row; } this.foldAll(startRow, endRow, options.all ? 10000 : 0); - } else if (options.children) { + } + else if (options.children) { endRow = range ? range.end.row : this.getLength(); this.foldAll(row + 1, endRow, options.all ? 10000 : 0); - } else if (range) { - if (options.all) + } + else if (range) { + if (options.all) range.collapseChildren = 10000; this.addFold("...", range); } - return range; }; - - - - this.toggleFoldWidget = function(toggleParent) { + this.toggleFoldWidget = function (toggleParent) { var row = this.selection.getCursor().row; row = this.getRowFoldStart(row); var range = this.$toggleFoldWidget(row, {}); - if (range) return; var data = this.getParentFoldRangeData(row, true); range = data.range || data.firstRange; - if (range) { row = range.start.row; var fold = this.getFoldAt(row, this.getLine(row).length, 1); - if (fold) { this.removeFold(fold); - } else { + } + else { this.addFold("...", range); } } }; - - this.updateFoldWidgets = function(delta) { + this.updateFoldWidgets = function (delta) { var firstRow = delta.start.row; var len = delta.end.row - firstRow; - if (len === 0) { this.foldWidgets[firstRow] = null; - } else if (delta.action == 'remove') { + } + else if (delta.action == 'remove') { this.foldWidgets.splice(firstRow, len + 1, null); - } else { + } + else { var args = Array(len + 1); args.unshift(firstRow, 1); this.foldWidgets.splice.apply(this.foldWidgets, args); } }; - this.tokenizerUpdateFoldWidgets = function(e) { + this.tokenizerUpdateFoldWidgets = function (e) { var rows = e.data; if (rows.first != rows.last) { if (this.foldWidgets.length > rows.first) @@ -9485,51 +9446,41 @@ function Folding() { } }; } - exports.Folding = Folding; }); -define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; var Range = require("../range").Range; - - function BracketMatch() { - - this.findMatchingBracket = function(position, chr) { - if (position.column == 0) return null; - - var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1); - if (charBeforeCursor == "") return null; - + this.findMatchingBracket = function (position, chr) { + if (position.column == 0) + return null; + var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column - 1); + if (charBeforeCursor == "") + return null; var match = charBeforeCursor.match(/([\(\[\{])|([\)\]\}])/); if (!match) return null; - if (match[1]) return this.$findClosingBracket(match[1], position); else return this.$findOpeningBracket(match[2], position); }; - - this.getBracketRange = function(pos) { + this.getBracketRange = function (pos) { var line = this.getLine(pos.row); var before = true, range; - - var chr = line.charAt(pos.column-1); + var chr = line.charAt(pos.column - 1); var match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); if (!match) { chr = line.charAt(pos.column); - pos = {row: pos.row, column: pos.column + 1}; + pos = { row: pos.row, column: pos.column + 1 }; match = chr && chr.match(/([\(\[\{])|([\)\]\}])/); before = false; } if (!match) return null; - if (match[1]) { var bracketPos = this.$findClosingBracket(match[1], pos); if (!bracketPos) @@ -9540,7 +9491,8 @@ function BracketMatch() { range.start.column--; } range.cursor = range.end; - } else { + } + else { var bracketPos = this.$findOpeningBracket(match[2], pos); if (!bracketPos) return null; @@ -9551,50 +9503,67 @@ function BracketMatch() { } range.cursor = range.start; } - return range; }; - + this.getMatchingBracketRanges = function (pos, isBackwards) { + var line = this.getLine(pos.row); + var bracketsRegExp = /([\(\[\{])|([\)\]\}])/; + var chr = !isBackwards && line.charAt(pos.column - 1); + var match = chr && chr.match(bracketsRegExp); + if (!match) { + chr = (isBackwards === undefined || isBackwards) && line.charAt(pos.column); + pos = { + row: pos.row, + column: pos.column + 1 + }; + match = chr && chr.match(bracketsRegExp); + } + if (!match) + return null; + var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column); + var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos) + : this.$findOpeningBracket(match[2], pos); + if (!bracketPos) + return [startRange]; + var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1); + return [startRange, endRange]; + }; this.$brackets = { ")": "(", "(": ")", "]": "[", "[": "]", "{": "}", - "}": "{" + "}": "{", + "<": ">", + ">": "<" }; - - this.$findOpeningBracket = function(bracket, position, typeRe) { + this.$findOpeningBracket = function (bracket, position, typeRe) { var openBracket = this.$brackets[bracket]; var depth = 1; - var iterator = new TokenIterator(this, position.row, position.column); var token = iterator.getCurrentToken(); if (!token) token = iterator.stepForward(); if (!token) return; - - if (!typeRe){ - typeRe = new RegExp( - "(\\.?" + + if (!typeRe) { + typeRe = new RegExp("(\\.?" + token.type.replace(".", "\\.").replace("rparen", ".paren") .replace(/\b(?:end)\b/, "(?:start|begin|end)") - + ")+" - ); + .replace(/-close\b/, "-(close|open)") + + ")+"); } var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2; var value = token.value; - while (true) { - while (valueIndex >= 0) { var chr = value.charAt(valueIndex); if (chr == openBracket) { depth -= 1; if (depth == 0) { - return {row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn()}; + return { row: iterator.getCurrentTokenRow(), + column: valueIndex + iterator.getCurrentTokenColumn() }; } } else if (chr == bracket) { @@ -9605,40 +9574,31 @@ function BracketMatch() { do { token = iterator.stepBackward(); } while (token && !typeRe.test(token.type)); - if (token == null) break; - value = token.value; valueIndex = value.length - 1; } - return null; }; - - this.$findClosingBracket = function(bracket, position, typeRe) { + this.$findClosingBracket = function (bracket, position, typeRe) { var closingBracket = this.$brackets[bracket]; var depth = 1; - var iterator = new TokenIterator(this, position.row, position.column); var token = iterator.getCurrentToken(); if (!token) token = iterator.stepForward(); if (!token) return; - - if (!typeRe){ - typeRe = new RegExp( - "(\\.?" + + if (!typeRe) { + typeRe = new RegExp("(\\.?" + token.type.replace(".", "\\.").replace("lparen", ".paren") .replace(/\b(?:start|begin)\b/, "(?:start|begin|end)") - + ")+" - ); + .replace(/-open\b/, "-(close|open)") + + ")+"); } var valueIndex = position.column - iterator.getCurrentTokenColumn(); - while (true) { - var value = token.value; var valueLength = value.length; while (valueIndex < valueLength) { @@ -9646,8 +9606,8 @@ function BracketMatch() { if (chr == closingBracket) { depth -= 1; if (depth == 0) { - return {row: iterator.getCurrentTokenRow(), - column: valueIndex + iterator.getCurrentTokenColumn()}; + return { row: iterator.getCurrentTokenRow(), + column: valueIndex + iterator.getCurrentTokenColumn() }; } } else if (chr == bracket) { @@ -9658,23 +9618,184 @@ function BracketMatch() { do { token = iterator.stepForward(); } while (token && !typeRe.test(token.type)); - if (token == null) break; - valueIndex = 0; } - return null; }; + this.getMatchingTags = function (pos) { + var iterator = new TokenIterator(this, pos.row, pos.column); + var token = this.$findTagName(iterator); + if (!token) + return; + var prevToken = iterator.stepBackward(); + if (prevToken.value === '<') { + return this.$findClosingTag(iterator, token); + } + else { + return this.$findOpeningTag(iterator, token); + } + }; + this.$findTagName = function (iterator) { + var token = iterator.getCurrentToken(); + var found = false; + var backward = false; + if (token && token.type.indexOf('tag-name') === -1) { + do { + if (backward) + token = iterator.stepBackward(); + else + token = iterator.stepForward(); + if (token) { + if (token.value === "/>") { + backward = true; + } + else if (token.type.indexOf('tag-name') !== -1) { + found = true; + } + } + } while (token && !found); + } + return token; + }; + this.$findClosingTag = function (iterator, token) { + var prevToken; + var currentTag = token.value; + var tag = token.value; + var depth = 0; + var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); + token = iterator.stepForward(); + var openTagName = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + token.value.length); + var foundOpenTagEnd = false; + do { + prevToken = token; + token = iterator.stepForward(); + if (token) { + if (token.value === '>' && !foundOpenTagEnd) { + var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for `>` + foundOpenTagEnd = true; + } + if (token.type.indexOf('tag-name') !== -1) { + currentTag = token.value; + if (tag === currentTag) { + if (prevToken.value === '<') { + depth++; + } + else if (prevToken.value === '') { + var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + } + else { + return; + } + } + } + } + } + else if (tag === currentTag && token.value === '/>') { // self-closing tag + depth--; + if (depth < 0) { //found self-closing tag end + var closeTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 2); + var closeTagName = closeTagStart; + var closeTagEnd = closeTagName; + var openTagEnd = new Range(openTagName.end.row, openTagName.end.column, openTagName.end.row, openTagName.end.column + 1); + } + } + } + } while (token && depth >= 0); + if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { + return { + openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), + closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), + openTagName: openTagName, + closeTagName: closeTagName + }; + } + }; + this.$findOpeningTag = function (iterator, token) { + var prevToken = iterator.getCurrentToken(); + var tag = token.value; + var depth = 0; + var startRow = iterator.getCurrentTokenRow(); + var startColumn = iterator.getCurrentTokenColumn(); + var endColumn = startColumn + 2; + var closeTagStart = new Range(startRow, startColumn, startRow, endColumn); //Range for ") + return; + var closeTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + iterator.stepBackward(); + iterator.stepBackward(); + do { + token = prevToken; + startRow = iterator.getCurrentTokenRow(); + startColumn = iterator.getCurrentTokenColumn(); + endColumn = startColumn + token.value.length; + prevToken = iterator.stepBackward(); + if (token) { + if (token.type.indexOf('tag-name') !== -1) { + if (tag === token.value) { + if (prevToken.value === '<') { + depth++; + if (depth > 0) { //found opening tag + var openTagName = new Range(startRow, startColumn, startRow, endColumn); + var openTagStart = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for < + do { + token = iterator.stepForward(); + } while (token && token.value !== '>'); + var openTagEnd = new Range(iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn(), iterator.getCurrentTokenRow(), iterator.getCurrentTokenColumn() + 1); //Range for > + } + } + else if (prevToken.value === '') { // self-closing tag + var stepCount = 0; + var tmpToken = prevToken; + while (tmpToken) { + if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) { + depth--; + break; + } + else if (tmpToken.value === '<') { + break; + } + tmpToken = iterator.stepBackward(); + stepCount++; + } + for (var i = 0; i < stepCount; i++) { + iterator.stepForward(); + } + } + } + } while (prevToken && depth <= 0); + if (openTagStart && openTagEnd && closeTagStart && closeTagEnd && openTagName && closeTagName) { + return { + openTag: new Range(openTagStart.start.row, openTagStart.start.column, openTagEnd.end.row, openTagEnd.end.column), + closeTag: new Range(closeTagStart.start.row, closeTagStart.start.column, closeTagEnd.end.row, closeTagEnd.end.column), + openTagName: openTagName, + closeTagName: closeTagName + }; + } + }; } exports.BracketMatch = BracketMatch; }); -define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"], function(require, exports, module) { -"use strict"; - +define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/bidihandler","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/undomanager","ace/edit_session/folding","ace/edit_session/bracket_match"], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var lang = require("./lib/lang"); var BidiHandler = require("./bidihandler").BidiHandler; @@ -9686,57 +9807,49 @@ var Range = require("./range").Range; var Document = require("./document").Document; var BackgroundTokenizer = require("./background_tokenizer").BackgroundTokenizer; var SearchHighlight = require("./search_highlight").SearchHighlight; - -var EditSession = function(text, mode) { - this.$breakpoints = []; - this.$decorations = []; - this.$frontMarkers = {}; - this.$backMarkers = {}; - this.$markerId = 1; - this.$undoSelect = true; - - this.$foldData = []; - this.id = "session" + (++EditSession.$uid); - this.$foldData.toString = function() { - return this.join("\n"); - }; - this.on("changeFold", this.onChangeFold.bind(this)); - this.$onChange = this.onChange.bind(this); - - if (typeof text != "object" || !text.getLine) - text = new Document(text); - - this.$bidiHandler = new BidiHandler(this); - this.setDocument(text); - this.selection = new Selection(this); - - config.resetOptions(this); - this.setMode(mode); - config._signal("session", this); -}; - - -EditSession.$uid = 0; - -(function() { - - oop.implement(this, EventEmitter); - this.setDocument = function(doc) { +var UndoManager = require("./undomanager").UndoManager; +var EditSession = /** @class */ (function () { + function EditSession(text, mode) { this.doc; + this.$breakpoints = []; + this.$decorations = []; + this.$frontMarkers = {}; + this.$backMarkers = {}; + this.$markerId = 1; + this.$undoSelect = true; + this.$foldData = []; + this.id = "session" + (++EditSession.$uid); + this.$foldData.toString = function () { + return this.join("\n"); + }; + this.bgTokenizer = new BackgroundTokenizer((new TextMode()).getTokenizer(), this); + var _self = this; + this.bgTokenizer.on("update", function (e) { + _self._signal("tokenizerUpdate", e); + }); + this.on("changeFold", this.onChangeFold.bind(this)); + this.$onChange = this.onChange.bind(this); + if (typeof text != "object" || !text.getLine) + text = new Document(/**@type{string}*/ (text)); + this.setDocument(text); + this.selection = new Selection(this); + this.$bidiHandler = new BidiHandler(this); + config.resetOptions(this); + this.setMode(mode); + config._signal("session", this); + this.destroyed = false; + } + EditSession.prototype.setDocument = function (doc) { if (this.doc) - this.doc.removeListener("change", this.$onChange); - + this.doc.off("change", this.$onChange); this.doc = doc; - doc.on("change", this.$onChange); - - if (this.bgTokenizer) - this.bgTokenizer.setDocument(this.getDocument()); - + doc.on("change", this.$onChange, true); + this.bgTokenizer.setDocument(this.getDocument()); this.resetCaches(); }; - this.getDocument = function() { + EditSession.prototype.getDocument = function () { return this.doc; }; - this.$resetRowCache = function(docRow) { + EditSession.prototype.$resetRowCache = function (docRow) { if (!docRow) { this.$docRowCache = []; this.$screenRowCache = []; @@ -9749,15 +9862,12 @@ EditSession.$uid = 0; this.$screenRowCache.splice(i, l); } }; - - this.$getRowCacheIndex = function(cacheArray, val) { + EditSession.prototype.$getRowCacheIndex = function (cacheArray, val) { var low = 0; var hi = cacheArray.length - 1; - while (low <= hi) { var mid = (low + hi) >> 1; var c = cacheArray[mid]; - if (val > c) low = mid + 1; else if (val < c) @@ -9765,76 +9875,103 @@ EditSession.$uid = 0; else return mid; } - - return low -1; + return low - 1; }; - - this.resetCaches = function() { + EditSession.prototype.resetCaches = function () { this.$modified = true; this.$wrapData = []; this.$rowLengthCache = []; this.$resetRowCache(0); - if (this.bgTokenizer) + if (!this.destroyed) this.bgTokenizer.start(0); }; - - this.onChangeFold = function(e) { + EditSession.prototype.onChangeFold = function (e) { var fold = e.data; this.$resetRowCache(fold.start.row); }; - - this.onChange = function(delta) { + EditSession.prototype.onChange = function (delta) { this.$modified = true; this.$bidiHandler.onChange(delta); this.$resetRowCache(delta.start.row); - var removedFolds = this.$updateInternalDataOnChange(delta); - if (!this.$fromUndo && this.$undoManager && !delta.ignore) { - this.$deltasDoc.push(delta); - if (removedFolds && removedFolds.length != 0) { - this.$deltasFold.push({ + if (!this.$fromUndo && this.$undoManager) { + if (removedFolds && removedFolds.length) { + this.$undoManager.add({ action: "removeFolds", - folds: removedFolds - }); + folds: removedFolds + }, this.mergeUndoDeltas); + this.mergeUndoDeltas = true; } - + this.$undoManager.add(delta, this.mergeUndoDeltas); + this.mergeUndoDeltas = true; this.$informUndoManager.schedule(); } - - this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta); + this.bgTokenizer.$updateOnChange(delta); this._signal("change", delta); }; - this.setValue = function(text) { + EditSession.prototype.setValue = function (text) { this.doc.setValue(text); this.selection.moveTo(0, 0); - this.$resetRowCache(0); - this.$deltas = []; - this.$deltasDoc = []; - this.$deltasFold = []; this.setUndoManager(this.$undoManager); this.getUndoManager().reset(); }; - this.getValue = - this.toString = function() { + EditSession.fromJSON = function (session) { + if (typeof session == "string") + session = JSON.parse(session); + var undoManager = new UndoManager(); + undoManager.$undoStack = session.history.undo; + undoManager.$redoStack = session.history.redo; + undoManager.mark = session.history.mark; + undoManager.$rev = session.history.rev; + var editSession = new EditSession(session.value); + session.folds.forEach(function (fold) { + editSession.addFold("...", Range.fromPoints(fold.start, fold.end)); + }); + editSession.setAnnotations(session.annotations); + editSession.setBreakpoints(session.breakpoints); + editSession.setMode(session.mode); + editSession.setScrollLeft(session.scrollLeft); + editSession.setScrollTop(session.scrollTop); + editSession.setUndoManager(undoManager); + editSession.selection.fromJSON(session.selection); + return editSession; + }; + EditSession.prototype.toJSON = function () { + return { + annotations: this.$annotations, + breakpoints: this.$breakpoints, + folds: this.getAllFolds().map(function (fold) { + return fold.range; + }), + history: this.getUndoManager(), + mode: this.$mode.$id, + scrollLeft: this.$scrollLeft, + scrollTop: this.$scrollTop, + selection: this.selection.toJSON(), + value: this.doc.getValue() + }; + }; + EditSession.prototype.toString = function () { return this.doc.getValue(); }; - this.getSelection = function() { + EditSession.prototype.getSelection = function () { return this.selection; }; - this.getState = function(row) { + EditSession.prototype.getState = function (row) { return this.bgTokenizer.getState(row); }; - this.getTokens = function(row) { + EditSession.prototype.getTokens = function (row) { return this.bgTokenizer.getTokens(row); }; - this.getTokenAt = function(row, column) { + EditSession.prototype.getTokenAt = function (row, column) { var tokens = this.bgTokenizer.getTokens(row); var token, c = 0; if (column == null) { var i = tokens.length - 1; c = this.getLine(row).length; - } else { + } + else { for (var i = 0; i < tokens.length; i++) { c += tokens[i].value.length; if (c >= column) @@ -9848,127 +9985,93 @@ EditSession.$uid = 0; token.start = c - token.value.length; return token; }; - this.setUndoManager = function(undoManager) { + EditSession.prototype.setUndoManager = function (undoManager) { this.$undoManager = undoManager; - this.$deltas = []; - this.$deltasDoc = []; - this.$deltasFold = []; - if (this.$informUndoManager) this.$informUndoManager.cancel(); - if (undoManager) { var self = this; - - this.$syncInformUndoManager = function() { + undoManager.addSession(this); + this.$syncInformUndoManager = function () { self.$informUndoManager.cancel(); - - if (self.$deltasFold.length) { - self.$deltas.push({ - group: "fold", - deltas: self.$deltasFold - }); - self.$deltasFold = []; - } - - if (self.$deltasDoc.length) { - self.$deltas.push({ - group: "doc", - deltas: self.$deltasDoc - }); - self.$deltasDoc = []; - } - - if (self.$deltas.length > 0) { - undoManager.execute({ - action: "aceupdate", - args: [self.$deltas, self], - merge: self.mergeUndoDeltas - }); - } self.mergeUndoDeltas = false; - self.$deltas = []; }; this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager); } + else { + this.$syncInformUndoManager = function () { }; + } }; - this.markUndoGroup = function() { + EditSession.prototype.markUndoGroup = function () { if (this.$syncInformUndoManager) this.$syncInformUndoManager(); }; - - this.$defaultUndoManager = { - undo: function() {}, - redo: function() {}, - reset: function() {} - }; - this.getUndoManager = function() { + EditSession.prototype.getUndoManager = function () { return this.$undoManager || this.$defaultUndoManager; }; - this.getTabString = function() { + EditSession.prototype.getTabString = function () { if (this.getUseSoftTabs()) { return lang.stringRepeat(" ", this.getTabSize()); - } else { + } + else { return "\t"; } }; - this.setUseSoftTabs = function(val) { + EditSession.prototype.setUseSoftTabs = function (val) { this.setOption("useSoftTabs", val); }; - this.getUseSoftTabs = function() { + EditSession.prototype.getUseSoftTabs = function () { return this.$useSoftTabs && !this.$mode.$indentWithTabs; }; - this.setTabSize = function(tabSize) { + EditSession.prototype.setTabSize = function (tabSize) { this.setOption("tabSize", tabSize); }; - this.getTabSize = function() { + EditSession.prototype.getTabSize = function () { return this.$tabSize; }; - this.isTabStop = function(position) { + EditSession.prototype.isTabStop = function (position) { return this.$useSoftTabs && (position.column % this.$tabSize === 0); }; - this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { + EditSession.prototype.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { this.setOption("navigateWithinSoftTabs", navigateWithinSoftTabs); }; - this.getNavigateWithinSoftTabs = function() { + EditSession.prototype.getNavigateWithinSoftTabs = function () { return this.$navigateWithinSoftTabs; }; - - this.$overwrite = false; - this.setOverwrite = function(overwrite) { + EditSession.prototype.setOverwrite = function (overwrite) { this.setOption("overwrite", overwrite); }; - this.getOverwrite = function() { + EditSession.prototype.getOverwrite = function () { return this.$overwrite; }; - this.toggleOverwrite = function() { + EditSession.prototype.toggleOverwrite = function () { this.setOverwrite(!this.$overwrite); }; - this.addGutterDecoration = function(row, className) { + EditSession.prototype.addGutterDecoration = function (row, className) { if (!this.$decorations[row]) this.$decorations[row] = ""; this.$decorations[row] += " " + className; this._signal("changeBreakpoint", {}); }; - this.removeGutterDecoration = function(row, className) { + EditSession.prototype.removeGutterDecoration = function (row, className) { this.$decorations[row] = (this.$decorations[row] || "").replace(" " + className, ""); this._signal("changeBreakpoint", {}); }; - this.getBreakpoints = function() { + EditSession.prototype.getBreakpoints = function () { return this.$breakpoints; }; - this.setBreakpoints = function(rows) { + EditSession.prototype.setBreakpoints = function (rows) { this.$breakpoints = []; - for (var i=0; i 0) inToken = !!line.charAt(column - 1).match(this.tokenRe); - if (!inToken) inToken = !!line.charAt(column).match(this.tokenRe); - if (inToken) var re = this.tokenRe; - else if (/^\s+$/.test(line.slice(column-1, column+1))) + else if (/^\s+$/.test(line.slice(column - 1, column + 1))) var re = /\s/; else var re = this.nonTokenRe; - var start = column; if (start > 0) { do { start--; - } - while (start >= 0 && line.charAt(start).match(re)); + } while (start >= 0 && line.charAt(start).match(re)); start++; } - var end = column; while (end < line.length && line.charAt(end).match(re)) { end++; } - return new Range(row, start, row, end); }; - this.getAWordRange = function(row, column) { + EditSession.prototype.getAWordRange = function (row, column) { var wordRange = this.getWordRange(row, column); var line = this.getLine(wordRange.end.row); - while (line.charAt(wordRange.end.column).match(/[ \t]/)) { wordRange.end.column += 1; } return wordRange; }; - this.setNewLineMode = function(newLineMode) { + EditSession.prototype.setNewLineMode = function (newLineMode) { this.doc.setNewLineMode(newLineMode); }; - this.getNewLineMode = function() { + EditSession.prototype.getNewLineMode = function () { return this.doc.getNewLineMode(); }; - this.setUseWorker = function(useWorker) { this.setOption("useWorker", useWorker); }; - this.getUseWorker = function() { return this.$useWorker; }; - this.onReloadTokenizer = function(e) { + EditSession.prototype.setUseWorker = function (useWorker) { this.setOption("useWorker", useWorker); }; + EditSession.prototype.getUseWorker = function () { return this.$useWorker; }; + EditSession.prototype.onReloadTokenizer = function (e) { var rows = e.data; this.bgTokenizer.start(rows.first); this._signal("tokenizerUpdate", e); }; - - this.$modes = {}; - this.$mode = null; - this.$modeId = null; - this.setMode = function(mode, cb) { + EditSession.prototype.setMode = function (mode, cb) { if (mode && typeof mode === "object") { if (mode.getTokenizer) return this.$onChangeMode(mode); var options = mode; var path = options.path; - } else { - path = mode || "ace/mode/text"; + } + else { + path = /**@type{string}*/ (mode) || "ace/mode/text"; } if (!this.$modes["ace/mode/text"]) this.$modes["ace/mode/text"] = new TextMode(); - if (this.$modes[path] && !options) { this.$onChangeMode(this.$modes[path]); cb && cb(); return; } this.$modeId = path; - config.loadModule(["mode", path], function(m) { + config.loadModule(["mode", path], function (m) { if (this.$modeId !== path) return cb && cb(); if (this.$modes[path] && !options) { this.$onChangeMode(this.$modes[path]); - } else if (m && m.Mode) { + } + else if (m && m.Mode) { m = new m.Mode(options); if (!options) { this.$modes[path] = m; @@ -10167,119 +10252,91 @@ EditSession.$uid = 0; if (!this.$mode) this.$onChangeMode(this.$modes["ace/mode/text"], true); }; - - this.$onChangeMode = function(mode, $isPlaceholder) { + EditSession.prototype.$onChangeMode = function (mode, $isPlaceholder) { if (!$isPlaceholder) this.$modeId = mode.$id; - if (this.$mode === mode) + if (this.$mode === mode) return; - + var oldMode = this.$mode; this.$mode = mode; - this.$stopWorker(); - if (this.$useWorker) this.$startWorker(); - var tokenizer = mode.getTokenizer(); - - if(tokenizer.addEventListener !== undefined) { + if (tokenizer.on !== undefined) { var onReloadTokenizer = this.onReloadTokenizer.bind(this); - tokenizer.addEventListener("update", onReloadTokenizer); + tokenizer.on("update", onReloadTokenizer); } - - if (!this.bgTokenizer) { - this.bgTokenizer = new BackgroundTokenizer(tokenizer); - var _self = this; - this.bgTokenizer.addEventListener("update", function(e) { - _self._signal("tokenizerUpdate", e); - }); - } else { - this.bgTokenizer.setTokenizer(tokenizer); - } - + this.bgTokenizer.setTokenizer(tokenizer); this.bgTokenizer.setDocument(this.getDocument()); - this.tokenRe = mode.tokenRe; this.nonTokenRe = mode.nonTokenRe; - - if (!$isPlaceholder) { if (mode.attachToSession) mode.attachToSession(this); this.$options.wrapMethod.set.call(this, this.$wrapMethod); this.$setFolding(mode.foldingRules); this.bgTokenizer.start(0); - this._emit("changeMode"); + this._emit("changeMode", { oldMode: oldMode, mode: mode }); } }; - - this.$stopWorker = function() { + EditSession.prototype.$stopWorker = function () { if (this.$worker) { this.$worker.terminate(); this.$worker = null; } }; - - this.$startWorker = function() { + EditSession.prototype.$startWorker = function () { try { this.$worker = this.$mode.createWorker(this); - } catch (e) { + } + catch (e) { config.warn("Could not load worker", e); this.$worker = null; } }; - this.getMode = function() { + EditSession.prototype.getMode = function () { return this.$mode; }; - - this.$scrollTop = 0; - this.setScrollTop = function(scrollTop) { + EditSession.prototype.setScrollTop = function (scrollTop) { if (this.$scrollTop === scrollTop || isNaN(scrollTop)) return; - this.$scrollTop = scrollTop; this._signal("changeScrollTop", scrollTop); }; - this.getScrollTop = function() { + EditSession.prototype.getScrollTop = function () { return this.$scrollTop; }; - - this.$scrollLeft = 0; - this.setScrollLeft = function(scrollLeft) { + EditSession.prototype.setScrollLeft = function (scrollLeft) { if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft)) return; - this.$scrollLeft = scrollLeft; this._signal("changeScrollLeft", scrollLeft); }; - this.getScrollLeft = function() { + EditSession.prototype.getScrollLeft = function () { return this.$scrollLeft; }; - this.getScreenWidth = function() { + EditSession.prototype.getScreenWidth = function () { this.$computeWidth(); - if (this.lineWidgets) + if (this.lineWidgets) return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth); return this.screenWidth; }; - - this.getLineWidgetMaxWidth = function() { - if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth; + EditSession.prototype.getLineWidgetMaxWidth = function () { + if (this.lineWidgetsWidth != null) + return this.lineWidgetsWidth; var width = 0; - this.lineWidgets.forEach(function(w) { + this.lineWidgets.forEach(function (w) { if (w && w.screenWidth > width) width = w.screenWidth; }); return this.lineWidgetWidth = width; }; - - this.$computeWidth = function(force) { + EditSession.prototype.$computeWidth = function (force) { if (this.$modified || force) { this.$modified = false; - if (this.$useWrapMode) return this.screenWidth = this.$wrapLimit; - var lines = this.doc.getAllLines(); var cache = this.$rowLengthCache; var longestScreenLine = 0; @@ -10287,7 +10344,6 @@ EditSession.$uid = 0; var foldLine = this.$foldData[foldIndex]; var foldStart = foldLine ? foldLine.start.row : Infinity; var len = lines.length; - for (var i = 0; i < len; i++) { if (i > foldStart) { i = foldLine.end.row + 1; @@ -10296,105 +10352,95 @@ EditSession.$uid = 0; foldLine = this.$foldData[foldIndex++]; foldStart = foldLine ? foldLine.start.row : Infinity; } - if (cache[i] == null) cache[i] = this.$getStringScreenWidth(lines[i])[0]; - if (cache[i] > longestScreenLine) longestScreenLine = cache[i]; } this.screenWidth = longestScreenLine; } }; - this.getLine = function(row) { + EditSession.prototype.getLine = function (row) { return this.doc.getLine(row); }; - this.getLines = function(firstRow, lastRow) { + EditSession.prototype.getLines = function (firstRow, lastRow) { return this.doc.getLines(firstRow, lastRow); }; - this.getLength = function() { + EditSession.prototype.getLength = function () { return this.doc.getLength(); }; - this.getTextRange = function(range) { + EditSession.prototype.getTextRange = function (range) { return this.doc.getTextRange(range || this.selection.getRange()); }; - this.insert = function(position, text) { + EditSession.prototype.insert = function (position, text) { return this.doc.insert(position, text); }; - this.remove = function(range) { + EditSession.prototype.remove = function (range) { return this.doc.remove(range); }; - this.removeFullLines = function(firstRow, lastRow){ + EditSession.prototype.removeFullLines = function (firstRow, lastRow) { return this.doc.removeFullLines(firstRow, lastRow); }; - this.undoChanges = function(deltas, dontSelect) { + EditSession.prototype.undoChanges = function (deltas, dontSelect) { if (!deltas.length) return; - this.$fromUndo = true; - var lastUndoRange = null; for (var i = deltas.length - 1; i != -1; i--) { var delta = deltas[i]; - if (delta.group == "doc") { - this.doc.revertDeltas(delta.deltas); - lastUndoRange = - this.$getUndoSelection(delta.deltas, true, lastUndoRange); - } else { - delta.deltas.forEach(function(foldDelta) { - this.addFolds(foldDelta.folds); - }, this); + if (delta.action == "insert" || delta.action == "remove") { + this.doc.revertDelta(delta); + } + else if (delta.folds) { + this.addFolds(delta.folds); } } + if (!dontSelect && this.$undoSelect) { + if (deltas.selectionBefore) + this.selection.fromJSON(deltas.selectionBefore); + else + this.selection.setRange(this.$getUndoSelection(deltas, true)); + } this.$fromUndo = false; - lastUndoRange && - this.$undoSelect && - !dontSelect && - this.selection.setSelectionRange(lastUndoRange); - return lastUndoRange; }; - this.redoChanges = function(deltas, dontSelect) { + EditSession.prototype.redoChanges = function (deltas, dontSelect) { if (!deltas.length) return; - this.$fromUndo = true; - var lastUndoRange = null; for (var i = 0; i < deltas.length; i++) { var delta = deltas[i]; - if (delta.group == "doc") { - this.doc.applyDeltas(delta.deltas); - lastUndoRange = - this.$getUndoSelection(delta.deltas, false, lastUndoRange); + if (delta.action == "insert" || delta.action == "remove") { + this.doc.$safeApplyDelta(delta); } } + if (!dontSelect && this.$undoSelect) { + if (deltas.selectionAfter) + this.selection.fromJSON(deltas.selectionAfter); + else + this.selection.setRange(this.$getUndoSelection(deltas, false)); + } this.$fromUndo = false; - lastUndoRange && - this.$undoSelect && - !dontSelect && - this.selection.setSelectionRange(lastUndoRange); - return lastUndoRange; }; - this.setUndoSelect = function(enable) { + EditSession.prototype.setUndoSelect = function (enable) { this.$undoSelect = enable; }; - - this.$getUndoSelection = function(deltas, isUndo, lastUndoRange) { + EditSession.prototype.$getUndoSelection = function (deltas, isUndo) { function isInsert(delta) { return isUndo ? delta.action !== "insert" : delta.action === "insert"; } - - var delta = deltas[0]; var range, point; - var lastDeltaIsInsert = false; - if (isInsert(delta)) { - range = Range.fromPoints(delta.start, delta.end); - lastDeltaIsInsert = true; - } else { - range = Range.fromPoints(delta.start, delta.start); - lastDeltaIsInsert = false; - } - - for (var i = 1; i < deltas.length; i++) { - delta = deltas[i]; + for (var i = 0; i < deltas.length; i++) { + var delta = deltas[i]; + if (!delta.start) + continue; // skip folds + if (!range) { + if (isInsert(delta)) { + range = Range.fromPoints(delta.start, delta.end); + } + else { + range = Range.fromPoints(delta.start, delta.start); + } + continue; + } if (isInsert(delta)) { point = delta.start; if (range.compare(point.row, point.column) == -1) { @@ -10404,38 +10450,22 @@ EditSession.$uid = 0; if (range.compare(point.row, point.column) == 1) { range.setEnd(point); } - lastDeltaIsInsert = true; - } else { + } + else { point = delta.start; if (range.compare(point.row, point.column) == -1) { range = Range.fromPoints(delta.start, delta.start); } - lastDeltaIsInsert = false; } } - if (lastUndoRange != null) { - if (Range.comparePoints(lastUndoRange.start, range.start) === 0) { - lastUndoRange.start.column += range.end.column - range.start.column; - lastUndoRange.end.column += range.end.column - range.start.column; - } - - var cmp = lastUndoRange.compareRange(range); - if (cmp == 1) { - range.setStart(lastUndoRange.start); - } else if (cmp == -1) { - range.setEnd(lastUndoRange.end); - } - } - return range; }; - this.replace = function(range, text) { + EditSession.prototype.replace = function (range, text) { return this.doc.replace(range, text); }; - this.moveText = function(fromRange, toPosition, copy) { + EditSession.prototype.moveText = function (fromRange, toPosition, copy) { var text = this.getTextRange(fromRange); var folds = this.getFoldsInRange(fromRange); - var toRange = Range.fromPoints(toPosition, toPosition); if (!copy) { this.remove(fromRange); @@ -10452,14 +10482,13 @@ EditSession.$uid = 0; toRange.end.row += rowDiff; } } - toRange.end = this.insert(toRange.start, text); if (folds.length) { var oldStart = fromRange.start; var newStart = toRange.start; var rowDiff = newStart.row - oldStart.row; var collDiff = newStart.column - oldStart.column; - this.addFolds(folds.map(function(x) { + this.addFolds(folds.map(function (x) { x = x.clone(); if (x.start.row == oldStart.row) x.start.column += collDiff; @@ -10470,22 +10499,19 @@ EditSession.$uid = 0; return x; })); } - return toRange; }; - this.indentRows = function(startRow, endRow, indentString) { + EditSession.prototype.indentRows = function (startRow, endRow, indentString) { indentString = indentString.replace(/\t/g, this.getTabString()); - for (var row=startRow; row<=endRow; row++) - this.doc.insertInLine({row: row, column: 0}, indentString); + for (var row = startRow; row <= endRow; row++) + this.doc.insertInLine({ row: row, column: 0 }, indentString); }; - this.outdentRows = function (range) { + EditSession.prototype.outdentRows = function (range) { var rowRange = range.collapseRows(); var deleteRange = new Range(0, 0, 0, 0); var size = this.getTabSize(); - for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) { var line = this.getLine(i); - deleteRange.start.row = i; deleteRange.end.row = i; for (var j = 0; j < size; ++j) @@ -10494,120 +10520,105 @@ EditSession.$uid = 0; if (j < size && line.charAt(j) == '\t') { deleteRange.start.column = j; deleteRange.end.column = j + 1; - } else { + } + else { deleteRange.start.column = 0; deleteRange.end.column = j; } this.remove(deleteRange); } }; - - this.$moveLines = function(firstRow, lastRow, dir) { + EditSession.prototype.$moveLines = function (firstRow, lastRow, dir) { firstRow = this.getRowFoldStart(firstRow); lastRow = this.getRowFoldEnd(lastRow); if (dir < 0) { var row = this.getRowFoldStart(firstRow + dir); - if (row < 0) return 0; - var diff = row-firstRow; - } else if (dir > 0) { + if (row < 0) + return 0; + var diff = row - firstRow; + } + else if (dir > 0) { var row = this.getRowFoldEnd(lastRow + dir); - if (row > this.doc.getLength()-1) return 0; - var diff = row-lastRow; - } else { + if (row > this.doc.getLength() - 1) + return 0; + var diff = row - lastRow; + } + else { firstRow = this.$clipRowToDocument(firstRow); lastRow = this.$clipRowToDocument(lastRow); var diff = lastRow - firstRow + 1; } - var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE); - var folds = this.getFoldsInRange(range).map(function(x){ + var folds = this.getFoldsInRange(range).map(function (x) { x = x.clone(); x.start.row += diff; x.end.row += diff; return x; }); - var lines = dir == 0 ? this.doc.getLines(firstRow, lastRow) : this.doc.removeFullLines(firstRow, lastRow); - this.doc.insertFullLines(firstRow+diff, lines); + this.doc.insertFullLines(firstRow + diff, lines); folds.length && this.addFolds(folds); return diff; }; - this.moveLinesUp = function(firstRow, lastRow) { + EditSession.prototype.moveLinesUp = function (firstRow, lastRow) { return this.$moveLines(firstRow, lastRow, -1); }; - this.moveLinesDown = function(firstRow, lastRow) { + EditSession.prototype.moveLinesDown = function (firstRow, lastRow) { return this.$moveLines(firstRow, lastRow, 1); }; - this.duplicateLines = function(firstRow, lastRow) { + EditSession.prototype.duplicateLines = function (firstRow, lastRow) { return this.$moveLines(firstRow, lastRow, 0); }; - - - this.$clipRowToDocument = function(row) { - return Math.max(0, Math.min(row, this.doc.getLength()-1)); + EditSession.prototype.$clipRowToDocument = function (row) { + return Math.max(0, Math.min(row, this.doc.getLength() - 1)); }; - - this.$clipColumnToRow = function(row, column) { + EditSession.prototype.$clipColumnToRow = function (row, column) { if (column < 0) return 0; return Math.min(this.doc.getLine(row).length, column); }; - - - this.$clipPositionToDocument = function(row, column) { + EditSession.prototype.$clipPositionToDocument = function (row, column) { column = Math.max(0, column); - if (row < 0) { row = 0; column = 0; - } else { + } + else { var len = this.doc.getLength(); if (row >= len) { row = len - 1; - column = this.doc.getLine(len-1).length; - } else { + column = this.doc.getLine(len - 1).length; + } + else { column = Math.min(this.doc.getLine(row).length, column); } } - return { row: row, column: column }; }; - - this.$clipRangeToDocument = function(range) { + EditSession.prototype.$clipRangeToDocument = function (range) { if (range.start.row < 0) { range.start.row = 0; range.start.column = 0; - } else { - range.start.column = this.$clipColumnToRow( - range.start.row, - range.start.column - ); } - + else { + range.start.column = this.$clipColumnToRow(range.start.row, range.start.column); + } var len = this.doc.getLength() - 1; if (range.end.row > len) { range.end.row = len; range.end.column = this.doc.getLine(len).length; - } else { - range.end.column = this.$clipColumnToRow( - range.end.row, - range.end.column - ); + } + else { + range.end.column = this.$clipColumnToRow(range.end.row, range.end.column); } return range; }; - this.$wrapLimit = 80; - this.$useWrapMode = false; - this.$wrapLimitRange = { - min : null, - max : null - }; - this.setUseWrapMode = function(useWrapMode) { + EditSession.prototype.setUseWrapMode = function (useWrapMode) { if (useWrapMode != this.$useWrapMode) { this.$useWrapMode = useWrapMode; this.$modified = true; @@ -10617,14 +10628,13 @@ EditSession.$uid = 0; this.$wrapData = Array(len); this.$updateWrapData(0, len - 1); } - this._signal("changeWrapMode"); } }; - this.getUseWrapMode = function() { + EditSession.prototype.getUseWrapMode = function () { return this.$useWrapMode; }; - this.setWrapLimitRange = function(min, max) { + EditSession.prototype.setWrapLimitRange = function (min, max) { if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) { this.$wrapLimitRange = { min: min, max: max }; this.$modified = true; @@ -10633,10 +10643,10 @@ EditSession.$uid = 0; this._signal("changeWrapMode"); } }; - this.adjustWrapLimit = function(desiredLimit, $printMargin) { + EditSession.prototype.adjustWrapLimit = function (desiredLimit, $printMargin) { var limits = this.$wrapLimitRange; if (limits.max < 0) - limits = {min: $printMargin, max: $printMargin}; + limits = { min: $printMargin, max: $printMargin }; var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max); if (wrapLimit != this.$wrapLimit && wrapLimit > 1) { this.$wrapLimit = wrapLimit; @@ -10650,30 +10660,26 @@ EditSession.$uid = 0; } return false; }; - - this.$constrainWrapLimit = function(wrapLimit, min, max) { + EditSession.prototype.$constrainWrapLimit = function (wrapLimit, min, max) { if (min) wrapLimit = Math.max(min, wrapLimit); - if (max) wrapLimit = Math.min(max, wrapLimit); - return wrapLimit; }; - this.getWrapLimit = function() { + EditSession.prototype.getWrapLimit = function () { return this.$wrapLimit; }; - this.setWrapLimit = function (limit) { + EditSession.prototype.setWrapLimit = function (limit) { this.setWrapLimitRange(limit, limit); }; - this.getWrapLimitRange = function() { + EditSession.prototype.getWrapLimitRange = function () { return { - min : this.$wrapLimitRange.min, - max : this.$wrapLimitRange.max + min: this.$wrapLimitRange.min, + max: this.$wrapLimitRange.max }; }; - - this.$updateInternalDataOnChange = function(delta) { + EditSession.prototype.$updateInternalDataOnChange = function (delta) { var useWrapMode = this.$useWrapMode; var action = delta.action; var start = delta.start; @@ -10682,22 +10688,18 @@ EditSession.$uid = 0; var lastRow = end.row; var len = lastRow - firstRow; var removedFolds = null; - this.$updating = true; if (len != 0) { if (action === "remove") { this[useWrapMode ? "$wrapData" : "$rowLengthCache"].splice(firstRow, len); - var foldLines = this.$foldData; removedFolds = this.getFoldsInRange(delta); this.removeFolds(removedFolds); - var foldLine = this.getFoldLine(end.row); var idx = 0; if (foldLine) { foldLine.addRemoveChars(end.row, end.column, start.column - end.column); foldLine.shiftRow(-len); - var foldLineBefore = this.getFoldLine(firstRow); if (foldLineBefore && foldLineBefore !== foldLine) { foldLineBefore.merge(foldLine); @@ -10705,16 +10707,15 @@ EditSession.$uid = 0; } idx = foldLines.indexOf(foldLine) + 1; } - for (idx; idx < foldLines.length; idx++) { var foldLine = foldLines[idx]; if (foldLine.start.row >= end.row) { foldLine.shiftRow(-len); } } - lastRow = firstRow; - } else { + } + else { var args = Array(len); args.unshift(firstRow, 0); var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache; @@ -10730,14 +10731,14 @@ EditSession.$uid = 0; foldLine.shiftRow(len); foldLine.addRemoveChars(lastRow, 0, end.column - start.column); } - } else + } + else if (cmp == -1) { foldLine.addRemoveChars(firstRow, 0, end.column - start.column); foldLine.shiftRow(len); } idx = foldLines.indexOf(foldLine) + 1; } - for (idx; idx < foldLines.length; idx++) { var foldLine = foldLines[idx]; if (foldLine.start.row >= firstRow) { @@ -10745,12 +10746,12 @@ EditSession.$uid = 0; } } } - } else { + } + else { len = Math.abs(delta.start.column - delta.end.column); if (action === "remove") { removedFolds = this.getFoldsInRange(delta); this.removeFolds(removedFolds); - len = -len; } var foldLine = this.getFoldLine(firstRow); @@ -10758,33 +10759,27 @@ EditSession.$uid = 0; foldLine.addRemoveChars(firstRow, start.column, len); } } - if (useWrapMode && this.$wrapData.length != this.doc.getLength()) { console.error("doc.getLength() and $wrapData.length have to be the same!"); } this.$updating = false; - if (useWrapMode) this.$updateWrapData(firstRow, lastRow); else this.$updateRowLengthCache(firstRow, lastRow); - return removedFolds; }; - - this.$updateRowLengthCache = function(firstRow, lastRow, b) { + EditSession.prototype.$updateRowLengthCache = function (firstRow, lastRow) { this.$rowLengthCache[firstRow] = null; this.$rowLengthCache[lastRow] = null; }; - - this.$updateWrapData = function(firstRow, lastRow) { + EditSession.prototype.$updateWrapData = function (firstRow, lastRow) { var lines = this.doc.getAllLines(); var tabSize = this.getTabSize(); var wrapData = this.$wrapData; var wrapLimit = this.$wrapLimit; var tokens; var foldLine; - var row = firstRow; lastRow = Math.min(lastRow, lines.length - 1); while (row <= lastRow) { @@ -10792,59 +10787,40 @@ EditSession.$uid = 0; if (!foldLine) { tokens = this.$getDisplayTokens(lines[row]); wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); - row ++; - } else { + row++; + } + else { tokens = []; - foldLine.walk(function(placeholder, row, column, lastColumn) { - var walkTokens; - if (placeholder != null) { - walkTokens = this.$getDisplayTokens( - placeholder, tokens.length); - walkTokens[0] = PLACEHOLDER_START; - for (var i = 1; i < walkTokens.length; i++) { - walkTokens[i] = PLACEHOLDER_BODY; - } - } else { - walkTokens = this.$getDisplayTokens( - lines[row].substring(lastColumn, column), - tokens.length); + foldLine.walk(function (placeholder, row, column, lastColumn) { + var walkTokens; + if (placeholder != null) { + walkTokens = this.$getDisplayTokens(placeholder, tokens.length); + walkTokens[0] = PLACEHOLDER_START; + for (var i = 1; i < walkTokens.length; i++) { + walkTokens[i] = PLACEHOLDER_BODY; } - tokens = tokens.concat(walkTokens); - }.bind(this), - foldLine.end.row, - lines[foldLine.end.row].length + 1 - ); - + } + else { + walkTokens = this.$getDisplayTokens(lines[row].substring(lastColumn, column), tokens.length); + } + tokens = tokens.concat(walkTokens); + }.bind(this), foldLine.end.row, lines[foldLine.end.row].length + 1); wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize); row = foldLine.end.row + 1; } } }; - var CHAR = 1, - CHAR_EXT = 2, - PLACEHOLDER_START = 3, - PLACEHOLDER_BODY = 4, - PUNCTUATION = 9, - SPACE = 10, - TAB = 11, - TAB_SPACE = 12; - - - this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) { + EditSession.prototype.$computeWrapSplits = function (tokens, wrapLimit, tabSize) { if (tokens.length == 0) { return []; } - var splits = []; var displayLength = tokens.length; var lastSplit = 0, lastDocSplit = 0; - var isCode = this.$wrapAsCode; - var indentedSoftWrap = this.$indentedSoftWrap; var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8) || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2); - function getWrapIndent() { var indentation = 0; if (maxIndent === 0) @@ -10867,16 +10843,12 @@ EditSession.$uid = 0; return Math.min(indentation, maxIndent); } function addSplit(screenPos) { - var displayed = tokens.slice(lastSplit, screenPos); - var len = displayed.length; - displayed.join("") - .replace(/12/g, function() { + var len = screenPos - lastSplit; + for (var i = lastSplit; i < screenPos; i++) { + var ch = tokens[i]; + if (ch === 12 || ch === 2) len -= 1; - }) - .replace(/2/g, function() { - len -= 1; - }); - + } if (!splits.length) { indent = getWrapIndent(); splits.indent = indent; @@ -10909,25 +10881,26 @@ EditSession.$uid = 0; } } if (split == tokens.length) { - break; // Breaks the while-loop. + break; // Breaks the while-loop. } addSplit(split); continue; } - var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1); + var minSplit = Math.max(split - (wrapLimit - (wrapLimit >> 2)), lastSplit - 1); while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split --; + split--; } if (isCode) { while (split > minSplit && tokens[split] < PLACEHOLDER_START) { - split --; + split--; } while (split > minSplit && tokens[split] == PUNCTUATION) { - split --; + split--; } - } else { + } + else { while (split > minSplit && tokens[split] < SPACE) { - split --; + split--; } } if (split > minSplit) { @@ -10941,11 +10914,10 @@ EditSession.$uid = 0; } return splits; }; - this.$getDisplayTokens = function(str, offset) { + EditSession.prototype.$getDisplayTokens = function (str, offset) { var arr = []; var tabSize; offset = offset || 0; - for (var i = 0; i < str.length; i++) { var c = str.charCodeAt(i); if (c == 9) { @@ -10957,24 +10929,25 @@ EditSession.$uid = 0; } else if (c == 32) { arr.push(SPACE); - } else if((c > 39 && c < 48) || (c > 57 && c < 64)) { + } + else if ((c > 39 && c < 48) || (c > 57 && c < 64)) { arr.push(PUNCTUATION); } else if (c >= 0x1100 && isFullWidth(c)) { arr.push(CHAR, CHAR_EXT); - } else { + } + else { arr.push(CHAR); } } return arr; }; - this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) { + EditSession.prototype.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { if (maxScreenColumn == 0) return [0, 0]; if (maxScreenColumn == null) maxScreenColumn = Infinity; screenColumn = screenColumn || 0; - var c, column; for (column = 0; column < str.length; column++) { c = str.charCodeAt(column); @@ -10983,89 +10956,81 @@ EditSession.$uid = 0; } else if (c >= 0x1100 && isFullWidth(c)) { screenColumn += 2; - } else { + } + else { screenColumn += 1; } if (screenColumn > maxScreenColumn) { break; } } - return [screenColumn, column]; }; - - this.lineWidgets = null; - this.getRowLength = function(row) { + EditSession.prototype.getRowLength = function (row) { + var h = 1; if (this.lineWidgets) - var h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - else - h = 0; - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1 + h; - } else { - return this.$wrapData[row].length + 1 + h; - } + h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; + if (!this.$useWrapMode || !this.$wrapData[row]) + return h; + else + return this.$wrapData[row].length + h; }; - this.getRowLineCount = function(row) { + EditSession.prototype.getRowLineCount = function (row) { if (!this.$useWrapMode || !this.$wrapData[row]) { return 1; - } else { + } + else { return this.$wrapData[row].length + 1; } }; - - this.getRowWrapIndent = function(screenRow) { + EditSession.prototype.getRowWrapIndent = function (screenRow) { if (this.$useWrapMode) { var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); var splits = this.$wrapData[pos.row]; return splits.length && splits[0] < pos.column ? splits.indent : 0; - } else { + } + else { return 0; } }; - this.getScreenLastRowColumn = function(screenRow) { + EditSession.prototype.getScreenLastRowColumn = function (screenRow) { var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE); return this.documentToScreenColumn(pos.row, pos.column); }; - this.getDocumentLastRowColumn = function(docRow, docColumn) { + EditSession.prototype.getDocumentLastRowColumn = function (docRow, docColumn) { var screenRow = this.documentToScreenRow(docRow, docColumn); return this.getScreenLastRowColumn(screenRow); }; - this.getDocumentLastRowColumnPosition = function(docRow, docColumn) { + EditSession.prototype.getDocumentLastRowColumnPosition = function (docRow, docColumn) { var screenRow = this.documentToScreenRow(docRow, docColumn); return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10); }; - this.getRowSplitData = function(row) { + EditSession.prototype.getRowSplitData = function (row) { if (!this.$useWrapMode) { return undefined; - } else { + } + else { return this.$wrapData[row]; } }; - this.getScreenTabSize = function(screenColumn) { - return this.$tabSize - screenColumn % this.$tabSize; + EditSession.prototype.getScreenTabSize = function (screenColumn) { + return this.$tabSize - (screenColumn % this.$tabSize | 0); }; - - - this.screenToDocumentRow = function(screenRow, screenColumn) { + EditSession.prototype.screenToDocumentRow = function (screenRow, screenColumn) { return this.screenToDocumentPosition(screenRow, screenColumn).row; }; - - - this.screenToDocumentColumn = function(screenRow, screenColumn) { + EditSession.prototype.screenToDocumentColumn = function (screenRow, screenColumn) { return this.screenToDocumentPosition(screenRow, screenColumn).column; }; - this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) { + EditSession.prototype.screenToDocumentPosition = function (screenRow, screenColumn, offsetX) { if (screenRow < 0) - return {row: 0, column: 0}; - + return { row: 0, column: 0 }; var line; var docRow = 0; var docColumn = 0; var column; var row = 0; var rowLength = 0; - var rowCache = this.$screenRowCache; var i = this.$getRowCacheIndex(rowCache, screenRow); var l = rowCache.length; @@ -11073,43 +11038,43 @@ EditSession.$uid = 0; var row = rowCache[i]; var docRow = this.$docRowCache[i]; var doCache = screenRow > rowCache[l - 1]; - } else { + } + else { var doCache = !l; } - var maxRow = this.getLength() - 1; var foldLine = this.getNextFoldLine(docRow); var foldStart = foldLine ? foldLine.start.row : Infinity; - while (row <= screenRow) { rowLength = this.getRowLength(docRow); if (row + rowLength > screenRow || docRow >= maxRow) { break; - } else { + } + else { row += rowLength; docRow++; if (docRow > foldStart) { - docRow = foldLine.end.row+1; + docRow = foldLine.end.row + 1; foldLine = this.getNextFoldLine(docRow, foldLine); foldStart = foldLine ? foldLine.start.row : Infinity; } } - if (doCache) { this.$docRowCache.push(docRow); this.$screenRowCache.push(row); } } - if (foldLine && foldLine.start.row <= docRow) { line = this.getFoldDisplayLine(foldLine); docRow = foldLine.start.row; - } else if (row + rowLength <= screenRow || docRow > maxRow) { + } + else if (row + rowLength <= screenRow || docRow > maxRow) { return { row: maxRow, column: this.getLine(maxRow).length }; - } else { + } + else { line = this.getLine(docRow); foldLine = null; } @@ -11118,35 +11083,29 @@ EditSession.$uid = 0; var splits = this.$wrapData[docRow]; if (splits) { column = splits[splitIndex]; - if(splitIndex > 0 && splits.length) { + if (splitIndex > 0 && splits.length) { wrapIndent = splits.indent; docColumn = splits[splitIndex - 1] || splits[splits.length - 1]; line = line.substring(docColumn); } } } - if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex)) screenColumn = this.$bidiHandler.offsetToCol(offsetX); - docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1]; if (this.$useWrapMode && docColumn >= column) docColumn = column - 1; - if (foldLine) return foldLine.idxToPosition(docColumn); - - return {row: docRow, column: docColumn}; + return { row: docRow, column: docColumn }; }; - this.documentToScreenPosition = function(docRow, docColumn) { + EditSession.prototype.documentToScreenPosition = function (docRow, docColumn) { if (typeof docColumn === "undefined") - var pos = this.$clipPositionToDocument(docRow.row, docRow.column); + var pos = this.$clipPositionToDocument(/**@type{Point}*/ (docRow).row, /**@type{Point}*/ (docRow).column); else - pos = this.$clipPositionToDocument(docRow, docColumn); - + pos = this.$clipPositionToDocument(/**@type{number}*/ (docRow), docColumn); docRow = pos.row; docColumn = pos.column; - var screenRow = 0; var foldStartRow = null; var fold = null; @@ -11155,10 +11114,7 @@ EditSession.$uid = 0; docRow = fold.start.row; docColumn = fold.start.column; } - var rowEnd, row = 0; - - var rowCache = this.$docRowCache; var i = this.$getRowCacheIndex(rowCache, docRow); var l = rowCache.length; @@ -11166,28 +11122,25 @@ EditSession.$uid = 0; var row = rowCache[i]; var screenRow = this.$screenRowCache[i]; var doCache = docRow > rowCache[l - 1]; - } else { + } + else { var doCache = !l; } - var foldLine = this.getNextFoldLine(row); - var foldStart = foldLine ?foldLine.start.row :Infinity; - + var foldStart = foldLine ? foldLine.start.row : Infinity; while (row < docRow) { if (row >= foldStart) { rowEnd = foldLine.end.row + 1; if (rowEnd > docRow) break; foldLine = this.getNextFoldLine(rowEnd, foldLine); - foldStart = foldLine ?foldLine.start.row :Infinity; + foldStart = foldLine ? foldLine.start.row : Infinity; } else { rowEnd = row + 1; } - screenRow += this.getRowLength(row); row = rowEnd; - if (doCache) { this.$docRowCache.push(row); this.$screenRowCache.push(screenRow); @@ -11197,7 +11150,8 @@ EditSession.$uid = 0; if (foldLine && row >= foldStart) { textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn); foldStartRow = foldLine.start.row; - } else { + } + else { textLine = this.getLine(docRow).substring(0, docColumn); foldStartRow = docRow; } @@ -11207,28 +11161,27 @@ EditSession.$uid = 0; if (wrapRow) { var screenRowOffset = 0; while (textLine.length >= wrapRow[screenRowOffset]) { - screenRow ++; + screenRow++; screenRowOffset++; } - textLine = textLine.substring( - wrapRow[screenRowOffset - 1] || 0, textLine.length - ); + textLine = textLine.substring(wrapRow[screenRowOffset - 1] || 0, textLine.length); wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0; } } - + if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove) + screenRow += this.lineWidgets[row].rowsAbove; return { row: screenRow, column: wrapIndent + this.$getStringScreenWidth(textLine)[0] }; }; - this.documentToScreenColumn = function(row, docColumn) { + EditSession.prototype.documentToScreenColumn = function (row, docColumn) { return this.documentToScreenPosition(row, docColumn).column; }; - this.documentToScreenRow = function(docRow, docColumn) { + EditSession.prototype.documentToScreenRow = function (docRow, docColumn) { return this.documentToScreenPosition(docRow, docColumn).row; }; - this.getScreenLength = function() { + EditSession.prototype.getScreenLength = function () { var screenRows = 0; var fold = null; if (!this.$useWrapMode) { @@ -11238,109 +11191,137 @@ EditSession.$uid = 0; fold = foldData[i]; screenRows -= fold.end.row - fold.start.row; } - } else { + } + else { var lastRow = this.$wrapData.length; var row = 0, i = 0; var fold = this.$foldData[i++]; - var foldStart = fold ? fold.start.row :Infinity; - + var foldStart = fold ? fold.start.row : Infinity; while (row < lastRow) { var splits = this.$wrapData[row]; screenRows += splits ? splits.length + 1 : 1; - row ++; + row++; if (row > foldStart) { - row = fold.end.row+1; + row = fold.end.row + 1; fold = this.$foldData[i++]; - foldStart = fold ?fold.start.row :Infinity; + foldStart = fold ? fold.start.row : Infinity; } } } if (this.lineWidgets) screenRows += this.$getWidgetScreenLength(); - return screenRows; }; - this.$setFontMetrics = function(fm) { - if (!this.$enableVarChar) return; - this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) { + EditSession.prototype.$setFontMetrics = function (fm) { + if (!this.$enableVarChar) + return; + this.$getStringScreenWidth = function (str, maxScreenColumn, screenColumn) { if (maxScreenColumn === 0) return [0, 0]; if (!maxScreenColumn) maxScreenColumn = Infinity; screenColumn = screenColumn || 0; - var c, column; for (column = 0; column < str.length; column++) { c = str.charAt(column); if (c === "\t") { screenColumn += this.getScreenTabSize(screenColumn); - } else { + } + else { screenColumn += fm.getCharacterWidth(c); } if (screenColumn > maxScreenColumn) { break; } } - return [screenColumn, column]; }; }; - - this.destroy = function() { - if (this.bgTokenizer) { + EditSession.prototype.destroy = function () { + if (!this.destroyed) { this.bgTokenizer.setDocument(null); - this.bgTokenizer = null; + this.bgTokenizer.cleanup(); + this.destroyed = true; } this.$stopWorker(); + this.removeAllListeners(); + if (this.doc) { + this.doc.off("change", this.$onChange); + } + this.selection.detach(); }; - - this.isFullWidth = isFullWidth; - function isFullWidth(c) { - if (c < 0x1100) - return false; - return c >= 0x1100 && c <= 0x115F || - c >= 0x11A3 && c <= 0x11A7 || - c >= 0x11FA && c <= 0x11FF || - c >= 0x2329 && c <= 0x232A || - c >= 0x2E80 && c <= 0x2E99 || - c >= 0x2E9B && c <= 0x2EF3 || - c >= 0x2F00 && c <= 0x2FD5 || - c >= 0x2FF0 && c <= 0x2FFB || - c >= 0x3000 && c <= 0x303E || - c >= 0x3041 && c <= 0x3096 || - c >= 0x3099 && c <= 0x30FF || - c >= 0x3105 && c <= 0x312D || - c >= 0x3131 && c <= 0x318E || - c >= 0x3190 && c <= 0x31BA || - c >= 0x31C0 && c <= 0x31E3 || - c >= 0x31F0 && c <= 0x321E || - c >= 0x3220 && c <= 0x3247 || - c >= 0x3250 && c <= 0x32FE || - c >= 0x3300 && c <= 0x4DBF || - c >= 0x4E00 && c <= 0xA48C || - c >= 0xA490 && c <= 0xA4C6 || - c >= 0xA960 && c <= 0xA97C || - c >= 0xAC00 && c <= 0xD7A3 || - c >= 0xD7B0 && c <= 0xD7C6 || - c >= 0xD7CB && c <= 0xD7FB || - c >= 0xF900 && c <= 0xFAFF || - c >= 0xFE10 && c <= 0xFE19 || - c >= 0xFE30 && c <= 0xFE52 || - c >= 0xFE54 && c <= 0xFE66 || - c >= 0xFE68 && c <= 0xFE6B || - c >= 0xFF01 && c <= 0xFF60 || - c >= 0xFFE0 && c <= 0xFFE6; - } - -}).call(EditSession.prototype); - + return EditSession; +}()); +EditSession.$uid = 0; +EditSession.prototype.$modes = config.$modes; +EditSession.prototype.getValue = EditSession.prototype.toString; +EditSession.prototype.$defaultUndoManager = { + undo: function () { }, + redo: function () { }, + hasUndo: function () { }, + hasRedo: function () { }, + reset: function () { }, + add: function () { }, + addSelection: function () { }, + startNewGroup: function () { }, + addSession: function () { } +}; +EditSession.prototype.$overwrite = false; +EditSession.prototype.$mode = null; +EditSession.prototype.$modeId = null; +EditSession.prototype.$scrollTop = 0; +EditSession.prototype.$scrollLeft = 0; +EditSession.prototype.$wrapLimit = 80; +EditSession.prototype.$useWrapMode = false; +EditSession.prototype.$wrapLimitRange = { + min: null, + max: null +}; +EditSession.prototype.lineWidgets = null; +EditSession.prototype.isFullWidth = isFullWidth; +oop.implement(EditSession.prototype, EventEmitter); +var CHAR = 1, CHAR_EXT = 2, PLACEHOLDER_START = 3, PLACEHOLDER_BODY = 4, PUNCTUATION = 9, SPACE = 10, TAB = 11, TAB_SPACE = 12; +function isFullWidth(c) { + if (c < 0x1100) + return false; + return c >= 0x1100 && c <= 0x115F || + c >= 0x11A3 && c <= 0x11A7 || + c >= 0x11FA && c <= 0x11FF || + c >= 0x2329 && c <= 0x232A || + c >= 0x2E80 && c <= 0x2E99 || + c >= 0x2E9B && c <= 0x2EF3 || + c >= 0x2F00 && c <= 0x2FD5 || + c >= 0x2FF0 && c <= 0x2FFB || + c >= 0x3000 && c <= 0x303E || + c >= 0x3041 && c <= 0x3096 || + c >= 0x3099 && c <= 0x30FF || + c >= 0x3105 && c <= 0x312D || + c >= 0x3131 && c <= 0x318E || + c >= 0x3190 && c <= 0x31BA || + c >= 0x31C0 && c <= 0x31E3 || + c >= 0x31F0 && c <= 0x321E || + c >= 0x3220 && c <= 0x3247 || + c >= 0x3250 && c <= 0x32FE || + c >= 0x3300 && c <= 0x4DBF || + c >= 0x4E00 && c <= 0xA48C || + c >= 0xA490 && c <= 0xA4C6 || + c >= 0xA960 && c <= 0xA97C || + c >= 0xAC00 && c <= 0xD7A3 || + c >= 0xD7B0 && c <= 0xD7C6 || + c >= 0xD7CB && c <= 0xD7FB || + c >= 0xF900 && c <= 0xFAFF || + c >= 0xFE10 && c <= 0xFE19 || + c >= 0xFE30 && c <= 0xFE52 || + c >= 0xFE54 && c <= 0xFE66 || + c >= 0xFE68 && c <= 0xFE6B || + c >= 0xFF01 && c <= 0xFF60 || + c >= 0xFFE0 && c <= 0xFFE6; +} require("./edit_session/folding").Folding.call(EditSession.prototype); require("./edit_session/bracket_match").BracketMatch.call(EditSession.prototype); - - config.defineOptions(EditSession.prototype, "session", { wrap: { - set: function(value) { + set: function (value) { if (!value || value == "off") value = false; else if (value == "free") @@ -11349,19 +11330,19 @@ config.defineOptions(EditSession.prototype, "session", { value = -1; else if (typeof value == "string") value = parseInt(value, 10) || false; - if (this.$wrap == value) return; this.$wrap = value; if (!value) { this.setUseWrapMode(false); - } else { + } + else { var col = typeof value == "number" ? value : null; this.setWrapLimitRange(col, col); this.setUseWrapMode(true); } }, - get: function() { + get: function () { if (this.getUseWrapMode()) { if (this.$wrap == -1) return "printMargin"; @@ -11372,124 +11353,126 @@ config.defineOptions(EditSession.prototype, "session", { return "off"; }, handlesSet: true - }, + }, wrapMethod: { - set: function(val) { + set: function (val) { val = val == "auto" ? this.$mode.type != "text" : val != "text"; if (val != this.$wrapAsCode) { this.$wrapAsCode = val; if (this.$useWrapMode) { - this.$modified = true; - this.$resetRowCache(0); - this.$updateWrapData(0, this.getLength() - 1); + this.$useWrapMode = false; + this.setUseWrapMode(true); } } }, initialValue: "auto" }, - indentedSoftWrap: { initialValue: true }, + indentedSoftWrap: { + set: function () { + if (this.$useWrapMode) { + this.$useWrapMode = false; + this.setUseWrapMode(true); + } + }, + initialValue: true + }, firstLineNumber: { - set: function() {this._signal("changeBreakpoint");}, + set: function () { this._signal("changeBreakpoint"); }, initialValue: 1 }, useWorker: { - set: function(useWorker) { + set: function (useWorker) { this.$useWorker = useWorker; - this.$stopWorker(); if (useWorker) this.$startWorker(); }, initialValue: true }, - useSoftTabs: {initialValue: true}, + useSoftTabs: { initialValue: true }, tabSize: { - set: function(tabSize) { - if (isNaN(tabSize) || this.$tabSize === tabSize) return; - - this.$modified = true; - this.$rowLengthCache = []; - this.$tabSize = tabSize; - this._signal("changeTabSize"); + set: function (tabSize) { + tabSize = parseInt(tabSize); + if (tabSize > 0 && this.$tabSize !== tabSize) { + this.$modified = true; + this.$rowLengthCache = []; + this.$tabSize = tabSize; + this._signal("changeTabSize"); + } }, initialValue: 4, handlesSet: true }, - navigateWithinSoftTabs: {initialValue: false}, + navigateWithinSoftTabs: { initialValue: false }, + foldStyle: { + set: function (val) { this.setFoldStyle(val); }, + handlesSet: true + }, overwrite: { - set: function(val) {this._signal("changeOverwrite");}, + set: function (val) { this._signal("changeOverwrite"); }, initialValue: false }, newLineMode: { - set: function(val) {this.doc.setNewLineMode(val);}, - get: function() {return this.doc.getNewLineMode();}, + set: function (val) { this.doc.setNewLineMode(val); }, + get: function () { return this.doc.getNewLineMode(); }, handlesSet: true }, mode: { - set: function(val) { this.setMode(val); }, - get: function() { return this.$modeId; } + set: function (val) { this.setMode(val); }, + get: function () { return this.$modeId; }, + handlesSet: true } }); - exports.EditSession = EditSession; + }); -define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"], function(require, exports, module){"use strict"; var lang = require("./lib/lang"); var oop = require("./lib/oop"); var Range = require("./range").Range; - -var Search = function() { - this.$options = {}; -}; - -(function() { - this.set = function(options) { +var Search = /** @class */ (function () { + function Search() { + this.$options = {}; + } + Search.prototype.set = function (options) { oop.mixin(this.$options, options); return this; }; - this.getOptions = function() { + Search.prototype.getOptions = function () { return lang.copyObject(this.$options); }; - this.setOptions = function(options) { + Search.prototype.setOptions = function (options) { this.$options = options; }; - this.find = function(session) { + Search.prototype.find = function (session) { var options = this.$options; var iterator = this.$matchIterator(session, options); if (!iterator) return false; - var firstRange = null; - iterator.forEach(function(sr, sc, er, ec) { + iterator.forEach(function (sr, sc, er, ec) { firstRange = new Range(sr, sc, er, ec); - if (sc == ec && options.start && options.start.start - && options.skipCurrent != false && firstRange.isEqual(options.start) - ) { + if (sc == ec && options.start && /**@type{Range}*/ (options.start).start + && options.skipCurrent != false && firstRange.isEqual(/**@type{Range}*/ (options.start))) { firstRange = null; return false; } - return true; }); - return firstRange; }; - this.findAll = function(session) { + Search.prototype.findAll = function (session) { var options = this.$options; if (!options.needle) return []; this.$assembleRegExp(options); - var range = options.range; var lines = range ? session.getLines(range.start.row, range.end.row) : session.doc.getAllLines(); - var ranges = []; var re = options.re; if (options.$isMultiLine) { @@ -11500,24 +11483,20 @@ var Search = function() { for (var j = 0; j < len; j++) if (lines[row + j].search(re[j]) == -1) continue outer; - var startLine = lines[row]; var line = lines[row + len - 1]; var startIndex = startLine.length - startLine.match(re[0])[0].length; var endIndex = line.match(re[len - 1])[0].length; - if (prevRange && prevRange.end.row === row && - prevRange.end.column > startIndex - ) { + prevRange.end.column > startIndex) { continue; } - ranges.push(prevRange = new Range( - row, startIndex, row + len - 1, endIndex - )); + ranges.push(prevRange = new Range(row, startIndex, row + len - 1, endIndex)); if (len > 2) row = row + len - 2; } - } else { + } + else { for (var i = 0; i < lines.length; i++) { var matches = lang.getMatchOffsets(lines[i], re); for (var j = 0; j < matches.length; j++) { @@ -11526,44 +11505,37 @@ var Search = function() { } } } - if (range) { var startColumn = range.start.column; - var endColumn = range.start.column; + var endColumn = range.end.column; var i = 0, j = ranges.length - 1; - while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row) + while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == 0) i++; - - while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row) + var endRow = range.end.row - range.start.row; + while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == endRow) j--; - ranges = ranges.slice(i, j + 1); for (i = 0, j = ranges.length; i < j; i++) { ranges[i].start.row += range.start.row; ranges[i].end.row += range.start.row; } } - return ranges; }; - this.replace = function(input, replacement) { + Search.prototype.replace = function (input, replacement) { var options = this.$options; - var re = this.$assembleRegExp(options); if (options.$isMultiLine) return replacement; - if (!re) return; - var match = re.exec(input); if (!match || match[0].length != input.length) return null; - replacement = input.replace(re, replacement); if (options.preserveCase) { replacement = replacement.split(""); - for (var i = Math.min(input.length, input.length); i--; ) { + for (var i = Math.min(input.length, input.length); i--;) { var ch = input[i]; if (ch && ch.toLowerCase() != ch) replacement[i] = replacement[i].toUpperCase(); @@ -11572,70 +11544,67 @@ var Search = function() { } replacement = replacement.join(""); } - return replacement; }; - - this.$assembleRegExp = function(options, $disableFakeMultiline) { + Search.prototype.$assembleRegExp = function (options, $disableFakeMultiline) { if (options.needle instanceof RegExp) return options.re = options.needle; - var needle = options.needle; - if (!options.needle) return options.re = false; - if (!options.regExp) needle = lang.escapeRegExp(needle); - + var modifier = options.caseSensitive ? "gm" : "gmi"; + try { + new RegExp(needle, "u"); + options.$supportsUnicodeFlag = true; + modifier += "u"; + } + catch (e) { + options.$supportsUnicodeFlag = false; //left for backward compatibility with previous versions for cases like /ab\{2}/gu + } if (options.wholeWord) needle = addWordBoundary(needle, options); - - var modifier = options.caseSensitive ? "gm" : "gmi"; - options.$isMultiLine = !$disableFakeMultiline && /[\n\r]/.test(needle); if (options.$isMultiLine) return options.re = this.$assembleMultilineRegExp(needle, modifier); - try { var re = new RegExp(needle, modifier); - } catch(e) { + } + catch (e) { re = false; } return options.re = re; }; - - this.$assembleMultilineRegExp = function(needle, modifier) { + Search.prototype.$assembleMultilineRegExp = function (needle, modifier) { var parts = needle.replace(/\r\n|\r|\n/g, "$\n^").split("\n"); var re = []; - for (var i = 0; i < parts.length; i++) try { - re.push(new RegExp(parts[i], modifier)); - } catch(e) { - return false; - } + for (var i = 0; i < parts.length; i++) + try { + re.push(new RegExp(parts[i], modifier)); + } + catch (e) { + return false; + } return re; }; - - this.$matchIterator = function(session, options) { + Search.prototype.$matchIterator = function (session, options) { var re = this.$assembleRegExp(options); if (!re) return false; var backwards = options.backwards == true; var skipCurrent = options.skipCurrent != false; - + var supportsUnicodeFlag = re.unicode; var range = options.range; var start = options.start; if (!start) start = range ? range[backwards ? "end" : "start"] : session.selection.getRange(); - if (start.start) start = start[skipCurrent != backwards ? "end" : "start"]; - var firstRow = range ? range.start.row : 0; var lastRow = range ? range.end.row : session.getLength() - 1; - if (backwards) { - var forEach = function(callback) { + var forEach = function (callback) { var row = start.row; if (forEachInLine(row, start.column, callback)) return; @@ -11650,7 +11619,7 @@ var Search = function() { }; } else { - var forEach = function(callback) { + var forEach = function (callback) { var row = start.row; if (forEachInLine(row, start.column, callback)) return; @@ -11664,38 +11633,41 @@ var Search = function() { return; }; } - if (options.$isMultiLine) { var len = re.length; - var forEachInLine = function(row, offset, callback) { + var forEachInLine = function (row, offset, callback) { var startRow = backwards ? row - len + 1 : row; - if (startRow < 0) return; + if (startRow < 0 || startRow + len > session.getLength()) + return; var line = session.getLine(startRow); var startIndex = line.search(re[0]); - if (!backwards && startIndex < offset || startIndex === -1) return; + if (!backwards && startIndex < offset || startIndex === -1) + return; for (var i = 1; i < len; i++) { line = session.getLine(startRow + i); if (line.search(re[i]) == -1) return; } var endIndex = line.match(re[len - 1])[0].length; - if (backwards && endIndex > offset) return; + if (backwards && endIndex > offset) + return; if (callback(startRow, startIndex, startRow + len - 1, endIndex)) return true; }; } else if (backwards) { - var forEachInLine = function(row, endIndex, callback) { + var forEachInLine = function (row, endIndex, callback) { var line = session.getLine(row); var matches = []; var m, last = 0; re.lastIndex = 0; - while((m = re.exec(line))) { + while ((m = re.exec(line))) { var length = m[0].length; last = m.index; if (!length) { - if (last >= line.length) break; - re.lastIndex = last += 1; + if (last >= line.length) + break; + re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); } if (m.index + length > endIndex) break; @@ -11710,76 +11682,89 @@ var Search = function() { }; } else { - var forEachInLine = function(row, startIndex, callback) { + var forEachInLine = function (row, startIndex, callback) { var line = session.getLine(row); + var last; var m; - var last = startIndex; re.lastIndex = startIndex; - while((m = re.exec(line))) { + while ((m = re.exec(line))) { var length = m[0].length; last = m.index; - if (callback(row, last, row,last + length)) + if (callback(row, last, row, last + length)) return true; if (!length) { - re.lastIndex = last += 1; - if (last >= line.length) return false; + re.lastIndex = last += lang.skipEmptyMatch(line, last, supportsUnicodeFlag); + if (last >= line.length) + return false; } } }; } - return {forEach: forEach}; + return { forEach: forEach }; }; - -}).call(Search.prototype); - + return Search; +}()); function addWordBoundary(needle, options) { - function wordBoundary(c) { - if (/\w/.test(c) || options.regExp) return "\\b"; + var supportsLookbehind = lang.supportsLookbehind(); + function wordBoundary(c, firstChar) { + if (firstChar === void 0) { firstChar = true; } + var wordRegExp = supportsLookbehind && options.$supportsUnicodeFlag ? new RegExp("[\\p{L}\\p{N}_]", "u") : new RegExp("\\w"); + if (wordRegExp.test(c) || options.regExp) { + if (supportsLookbehind && options.$supportsUnicodeFlag) { + if (firstChar) + return "(?<=^|[^\\p{L}\\p{N}_])"; + return "(?=[^\\p{L}\\p{N}_]|$)"; + } + return "\\b"; + } return ""; } - return wordBoundary(needle[0]) + needle - + wordBoundary(needle[needle.length - 1]); + var needleArray = Array.from(needle); + var firstChar = needleArray[0]; + var lastChar = needleArray[needleArray.length - 1]; + return wordBoundary(firstChar) + needle + wordBoundary(lastChar, false); } - exports.Search = Search; + }); -define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module) { -"use strict"; - -var keyUtil = require("../lib/keys"); +define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var keyUtil = require("../lib/keys"); var useragent = require("../lib/useragent"); var KEY_MODS = keyUtil.KEY_MODS; - -function HashHandler(config, platform) { - this.platform = platform || (useragent.isMac ? "mac" : "win"); - this.commands = {}; - this.commandKeyBinding = {}; - this.addCommands(config); - this.$singleCommand = true; -} - -function MultiHashHandler(config, platform) { - HashHandler.call(this, config, platform); - this.$singleCommand = false; -} - -MultiHashHandler.prototype = HashHandler.prototype; - -(function() { - - - this.addCommand = function(command) { +var MultiHashHandler = /** @class */ (function () { + function MultiHashHandler(config, platform) { + this.$init(config, platform, false); + } + MultiHashHandler.prototype.$init = function (config, platform, $singleCommand) { + this.platform = platform || (useragent.isMac ? "mac" : "win"); + this.commands = {}; + this.commandKeyBinding = {}; + this.addCommands(config); + this.$singleCommand = $singleCommand; + }; + MultiHashHandler.prototype.addCommand = function (command) { if (this.commands[command.name]) this.removeCommand(command); - this.commands[command.name] = command; - if (command.bindKey) this._buildKeyHash(command); }; - - this.removeCommand = function(command, keepCommand) { + MultiHashHandler.prototype.removeCommand = function (command, keepCommand) { var name = command && (typeof command === 'string' ? command : command.name); command = this.commands[name]; if (!keepCommand) @@ -11789,7 +11774,8 @@ MultiHashHandler.prototype = HashHandler.prototype; var cmdGroup = ckb[keyId]; if (cmdGroup == command) { delete ckb[keyId]; - } else if (Array.isArray(cmdGroup)) { + } + else if (Array.isArray(cmdGroup)) { var i = cmdGroup.indexOf(command); if (i != -1) { cmdGroup.splice(i, 1); @@ -11799,8 +11785,7 @@ MultiHashHandler.prototype = HashHandler.prototype; } } }; - - this.bindKey = function(key, command, position) { + MultiHashHandler.prototype.bindKey = function (key, command, position) { if (typeof key == "object" && key) { if (position == undefined) position = key.position; @@ -11809,14 +11794,12 @@ MultiHashHandler.prototype = HashHandler.prototype; if (!key) return; if (typeof command == "function") - return this.addCommand({exec: command, bindKey: key, name: command.name || key}); - - key.split("|").forEach(function(keyPart) { + return this.addCommand({ exec: command, bindKey: key, name: command.name || /**@type{string}*/ (key) }); (key).split("|").forEach(function (keyPart) { var chain = ""; if (keyPart.indexOf(" ") != -1) { var parts = keyPart.split(/\s+/); keyPart = parts.pop(); - parts.forEach(function(keyPart) { + parts.forEach(function (keyPart) { var binding = this.parseKeys(keyPart); var id = KEY_MODS[binding.hashId] + binding.key; chain += (chain ? " " : "") + id; @@ -11829,29 +11812,24 @@ MultiHashHandler.prototype = HashHandler.prototype; this._addCommandToBinding(chain + id, command, position); }, this); }; - - function getPosition(command) { - return typeof command == "object" && command.bindKey - && command.bindKey.position - || (command.isDefault ? -100 : 0); - } - this._addCommandToBinding = function(keyId, command, position) { + MultiHashHandler.prototype._addCommandToBinding = function (keyId, command, position) { var ckb = this.commandKeyBinding, i; if (!command) { delete ckb[keyId]; - } else if (!ckb[keyId] || this.$singleCommand) { + } + else if (!ckb[keyId] || this.$singleCommand) { ckb[keyId] = command; - } else { + } + else { if (!Array.isArray(ckb[keyId])) { ckb[keyId] = [ckb[keyId]]; - } else if ((i = ckb[keyId].indexOf(command)) != -1) { + } + else if ((i = ckb[keyId].indexOf(command)) != -1) { ckb[keyId].splice(i, 1); } - if (typeof position != "number") { position = getPosition(command); } - var commands = ckb[keyId]; for (i = 0; i < commands.length; i++) { var other = commands[i]; @@ -11862,56 +11840,45 @@ MultiHashHandler.prototype = HashHandler.prototype; commands.splice(i, 0, command); } }; - - this.addCommands = function(commands) { - commands && Object.keys(commands).forEach(function(name) { + MultiHashHandler.prototype.addCommands = function (commands) { + commands && Object.keys(commands).forEach(function (name) { var command = commands[name]; if (!command) return; - if (typeof command === "string") return this.bindKey(command, name); - if (typeof command === "function") command = { exec: command }; - if (typeof command !== "object") return; - if (!command.name) command.name = name; - this.addCommand(command); }, this); }; - - this.removeCommands = function(commands) { - Object.keys(commands).forEach(function(name) { + MultiHashHandler.prototype.removeCommands = function (commands) { + Object.keys(commands).forEach(function (name) { this.removeCommand(commands[name]); }, this); }; - - this.bindKeys = function(keyList) { - Object.keys(keyList).forEach(function(key) { + MultiHashHandler.prototype.bindKeys = function (keyList) { + Object.keys(keyList).forEach(function (key) { this.bindKey(key, keyList[key]); }, this); }; - - this._buildKeyHash = function(command) { + MultiHashHandler.prototype._buildKeyHash = function (command) { this.bindKey(command.bindKey, command); }; - this.parseKeys = function(keys) { - var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(x){return x;}); + MultiHashHandler.prototype.parseKeys = function (keys) { + var parts = keys.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function (x) { return x; }); var key = parts.pop(); - var keyCode = keyUtil[key]; if (keyUtil.FUNCTION_KEYS[keyCode]) key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase(); else if (!parts.length) - return {key: key, hashId: -1}; + return { key: key, hashId: -1 }; else if (parts.length == 1 && parts[0] == "shift") - return {key: key.toUpperCase(), hashId: -1}; - + return { key: key.toUpperCase(), hashId: -1 }; var hashId = 0; for (var i = parts.length; i--;) { var modifier = keyUtil.KEY_MODS[parts[i]]; @@ -11922,145 +11889,159 @@ MultiHashHandler.prototype = HashHandler.prototype; } hashId |= modifier; } - return {key: key, hashId: hashId}; + return { key: key, hashId: hashId }; }; - - this.findKeyCommand = function findKeyCommand(hashId, keyString) { + MultiHashHandler.prototype.findKeyCommand = function (hashId, keyString) { var key = KEY_MODS[hashId] + keyString; return this.commandKeyBinding[key]; }; - - this.handleKeyboard = function(data, hashId, keyString, keyCode) { - if (keyCode < 0) return; + MultiHashHandler.prototype.handleKeyboard = function (data, hashId, keyString, keyCode) { + if (keyCode < 0) + return; var key = KEY_MODS[hashId] + keyString; var command = this.commandKeyBinding[key]; if (data.$keyChain) { data.$keyChain += " " + key; command = this.commandKeyBinding[data.$keyChain] || command; } - if (command) { if (command == "chainKeys" || command[command.length - 1] == "chainKeys") { data.$keyChain = data.$keyChain || key; - return {command: "null"}; + return { command: "null" }; } } - if (data.$keyChain) { if ((!hashId || hashId == 4) && keyString.length == 1) data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input else if (hashId == -1 || keyCode > 0) data.$keyChain = ""; // reset keyChain } - return {command: command}; + return { command: command }; }; - - this.getStatusText = function(editor, data) { + MultiHashHandler.prototype.getStatusText = function (editor, data) { return data.$keyChain || ""; }; - -}).call(HashHandler.prototype); - + return MultiHashHandler; +}()); +function getPosition(command) { + return typeof command == "object" && command.bindKey + && command.bindKey.position + || (command.isDefault ? -100 : 0); +} +var HashHandler = /** @class */ (function (_super) { + __extends(HashHandler, _super); + function HashHandler(config, platform) { + var _this = _super.call(this, config, platform) || this; + _this.$singleCommand = true; + return _this; + } + return HashHandler; +}(MultiHashHandler)); +HashHandler.call = function (thisArg, config, platform) { + MultiHashHandler.prototype.$init.call(thisArg, config, platform, true); +}; +MultiHashHandler.call = function (thisArg, config, platform) { + MultiHashHandler.prototype.$init.call(thisArg, config, platform, false); +}; exports.HashHandler = HashHandler; exports.MultiHashHandler = MultiHashHandler; + }); -define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - +define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var oop = require("../lib/oop"); var MultiHashHandler = require("../keyboard/hash_handler").MultiHashHandler; var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var CommandManager = function(platform, commands) { - MultiHashHandler.call(this, commands, platform); - this.byName = this.commands; - this.setDefaultHandler("exec", function(e) { - return e.command.exec(e.editor, e.args || {}); - }); -}; - -oop.inherits(CommandManager, MultiHashHandler); - -(function() { - - oop.implement(this, EventEmitter); - - this.exec = function(command, editor, args) { +var CommandManager = /** @class */ (function (_super) { + __extends(CommandManager, _super); + function CommandManager(platform, commands) { + var _this = _super.call(this, commands, platform) || this; + _this.byName = _this.commands; + _this.setDefaultHandler("exec", function (e) { + if (!e.args) { + return e.command.exec(e.editor, {}, e.event, true); + } + return e.command.exec(e.editor, e.args, e.event, false); + }); + return _this; + } + CommandManager.prototype.exec = function (command, editor, args) { if (Array.isArray(command)) { - for (var i = command.length; i--; ) { - if (this.exec(command[i], editor, args)) return true; + for (var i = command.length; i--;) { + if (this.exec(command[i], editor, args)) + return true; } return false; } - if (typeof command === "string") command = this.commands[command]; - if (!command) return false; - if (editor && editor.$readOnly && !command.readOnly) return false; - - if (command.isAvailable && !command.isAvailable(editor)) + if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor)) return false; - - var e = {editor: editor, command: command, args: args}; + var e = { editor: editor, command: command, args: args }; e.returnValue = this._emit("exec", e); this._signal("afterExec", e); - return e.returnValue === false ? false : true; }; - - this.toggleRecording = function(editor) { + CommandManager.prototype.toggleRecording = function (editor) { if (this.$inReplay) return; - editor && editor._emit("changeStatus"); if (this.recording) { this.macro.pop(); - this.removeEventListener("exec", this.$addCommandToMacro); - + this.off("exec", this.$addCommandToMacro); if (!this.macro.length) this.macro = this.oldMacro; - return this.recording = false; } if (!this.$addCommandToMacro) { - this.$addCommandToMacro = function(e) { + this.$addCommandToMacro = function (e) { this.macro.push([e.command, e.args]); }.bind(this); } - this.oldMacro = this.macro; this.macro = []; this.on("exec", this.$addCommandToMacro); return this.recording = true; }; - - this.replay = function(editor) { + CommandManager.prototype.replay = function (editor) { if (this.$inReplay || !this.macro) return; - if (this.recording) return this.toggleRecording(editor); - try { this.$inReplay = true; - this.macro.forEach(function(x) { + this.macro.forEach(function (x) { if (typeof x == "string") this.exec(x, editor); else this.exec(x[0], editor, x[1]); }, this); - } finally { + } + finally { this.$inReplay = false; } }; - - this.trimMacro = function(m) { - return m.map(function(x){ + CommandManager.prototype.trimMacro = function (m) { + return m.map(function (x) { if (typeof x[0] != "string") x[0] = x[0].name; if (!x[1]) @@ -12068,731 +12049,1592 @@ oop.inherits(CommandManager, MultiHashHandler); return x; }); }; - -}).call(CommandManager.prototype); - + return CommandManager; +}(MultiHashHandler)); +oop.implement(CommandManager.prototype, EventEmitter); exports.CommandManager = CommandManager; }); -define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"], function(require, exports, module){"use strict"; var lang = require("../lib/lang"); var config = require("../config"); var Range = require("../range").Range; - function bindKey(win, mac) { - return {win: win, mac: mac}; + return { win: win, mac: mac }; } exports.commands = [{ - name: "showSettingsMenu", - bindKey: bindKey("Ctrl-,", "Command-,"), - exec: function(editor) { - config.loadModule("ace/ext/settings_menu", function(module) { - module.init(editor); - editor.showSettingsMenu(); - }); + name: "showSettingsMenu", + description: "Show settings menu", + bindKey: bindKey("Ctrl-,", "Command-,"), + exec: function (editor) { + config.loadModule("ace/ext/settings_menu", function (module) { + module.init(editor); + editor.showSettingsMenu(); + }); + }, + readOnly: true + }, { + name: "goToNextError", + description: "Go to next error", + bindKey: bindKey("Alt-E", "F4"), + exec: function (editor) { + config.loadModule("ace/ext/error_marker", function (module) { + module.showErrorMarker(editor, 1); + }); + }, + scrollIntoView: "animate", + readOnly: true + }, { + name: "goToPreviousError", + description: "Go to previous error", + bindKey: bindKey("Alt-Shift-E", "Shift-F4"), + exec: function (editor) { + config.loadModule("ace/ext/error_marker", function (module) { + module.showErrorMarker(editor, -1); + }); + }, + scrollIntoView: "animate", + readOnly: true + }, { + name: "selectall", + description: "Select all", + bindKey: bindKey("Ctrl-A", "Command-A"), + exec: function (editor) { editor.selectAll(); }, + readOnly: true + }, { + name: "centerselection", + description: "Center selection", + bindKey: bindKey(null, "Ctrl-L"), + exec: function (editor) { editor.centerSelection(); }, + readOnly: true + }, { + name: "gotoline", + description: "Go to line...", + bindKey: bindKey("Ctrl-L", "Command-L"), + exec: function (editor, line) { + if (typeof line === "number" && !isNaN(line)) + editor.gotoLine(line); + editor.prompt({ $type: "gotoLine" }); + }, + readOnly: true + }, { + name: "fold", + bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), + exec: function (editor) { editor.session.toggleFold(false); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "unfold", + bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), + exec: function (editor) { editor.session.toggleFold(true); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "toggleFoldWidget", + description: "Toggle fold widget", + bindKey: bindKey("F2", "F2"), + exec: function (editor) { editor.session.toggleFoldWidget(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "toggleParentFoldWidget", + description: "Toggle parent fold widget", + bindKey: bindKey("Alt-F2", "Alt-F2"), + exec: function (editor) { editor.session.toggleFoldWidget(true); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "foldall", + description: "Fold all", + bindKey: bindKey(null, "Ctrl-Command-Option-0"), + exec: function (editor) { editor.session.foldAll(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "foldAllComments", + description: "Fold all comments", + bindKey: bindKey(null, "Ctrl-Command-Option-0"), + exec: function (editor) { editor.session.foldAllComments(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "foldOther", + description: "Fold other", + bindKey: bindKey("Alt-0", "Command-Option-0"), + exec: function (editor) { + editor.session.foldAll(); + editor.session.unfold(editor.selection.getAllRanges()); + }, + scrollIntoView: "center", + readOnly: true + }, { + name: "unfoldall", + description: "Unfold all", + bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), + exec: function (editor) { editor.session.unfold(); }, + scrollIntoView: "center", + readOnly: true + }, { + name: "findnext", + description: "Find next", + bindKey: bindKey("Ctrl-K", "Command-G"), + exec: function (editor) { editor.findNext(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "findprevious", + description: "Find previous", + bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), + exec: function (editor) { editor.findPrevious(); }, + multiSelectAction: "forEach", + scrollIntoView: "center", + readOnly: true + }, { + name: "selectOrFindNext", + description: "Select or find next", + bindKey: bindKey("Alt-K", "Ctrl-G"), + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + else + editor.findNext(); + }, + readOnly: true + }, { + name: "selectOrFindPrevious", + description: "Select or find previous", + bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + else + editor.findPrevious(); + }, + readOnly: true + }, { + name: "find", + description: "Find", + bindKey: bindKey("Ctrl-F", "Command-F"), + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor); }); + }, + readOnly: true + }, { + name: "overwrite", + description: "Overwrite", + bindKey: "Insert", + exec: function (editor) { editor.toggleOverwrite(); }, + readOnly: true + }, { + name: "selecttostart", + description: "Select to start", + bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), + exec: function (editor) { editor.getSelection().selectFileStart(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "gotostart", + description: "Go to start", + bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), + exec: function (editor) { editor.navigateFileStart(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "selectup", + description: "Select up", + bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), + exec: function (editor) { editor.getSelection().selectUp(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "golineup", + description: "Go line up", + bindKey: bindKey("Up", "Up|Ctrl-P"), + exec: function (editor, args) { editor.navigateUp(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttoend", + description: "Select to end", + bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), + exec: function (editor) { editor.getSelection().selectFileEnd(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "gotoend", + description: "Go to end", + bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), + exec: function (editor) { editor.navigateFileEnd(); }, + multiSelectAction: "forEach", + readOnly: true, + scrollIntoView: "animate", + aceCommandGroup: "fileJump" + }, { + name: "selectdown", + description: "Select down", + bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), + exec: function (editor) { editor.getSelection().selectDown(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "golinedown", + description: "Go line down", + bindKey: bindKey("Down", "Down|Ctrl-N"), + exec: function (editor, args) { editor.navigateDown(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectwordleft", + description: "Select word left", + bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), + exec: function (editor) { editor.getSelection().selectWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotowordleft", + description: "Go to word left", + bindKey: bindKey("Ctrl-Left", "Option-Left"), + exec: function (editor) { editor.navigateWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttolinestart", + description: "Select to line start", + bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), + exec: function (editor) { editor.getSelection().selectLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotolinestart", + description: "Go to line start", + bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), + exec: function (editor) { editor.navigateLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectleft", + description: "Select left", + bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), + exec: function (editor) { editor.getSelection().selectLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotoleft", + description: "Go to left", + bindKey: bindKey("Left", "Left|Ctrl-B"), + exec: function (editor, args) { editor.navigateLeft(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectwordright", + description: "Select word right", + bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), + exec: function (editor) { editor.getSelection().selectWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotowordright", + description: "Go to word right", + bindKey: bindKey("Ctrl-Right", "Option-Right"), + exec: function (editor) { editor.navigateWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selecttolineend", + description: "Select to line end", + bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), + exec: function (editor) { editor.getSelection().selectLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotolineend", + description: "Go to line end", + bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), + exec: function (editor) { editor.navigateLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectright", + description: "Select right", + bindKey: bindKey("Shift-Right", "Shift-Right"), + exec: function (editor) { editor.getSelection().selectRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "gotoright", + description: "Go to right", + bindKey: bindKey("Right", "Right|Ctrl-F"), + exec: function (editor, args) { editor.navigateRight(args.times); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectpagedown", + description: "Select page down", + bindKey: "Shift-PageDown", + exec: function (editor) { editor.selectPageDown(); }, + readOnly: true + }, { + name: "pagedown", + description: "Page down", + bindKey: bindKey(null, "Option-PageDown"), + exec: function (editor) { editor.scrollPageDown(); }, + readOnly: true + }, { + name: "gotopagedown", + description: "Go to page down", + bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), + exec: function (editor) { editor.gotoPageDown(); }, + readOnly: true + }, { + name: "selectpageup", + description: "Select page up", + bindKey: "Shift-PageUp", + exec: function (editor) { editor.selectPageUp(); }, + readOnly: true + }, { + name: "pageup", + description: "Page up", + bindKey: bindKey(null, "Option-PageUp"), + exec: function (editor) { editor.scrollPageUp(); }, + readOnly: true + }, { + name: "gotopageup", + description: "Go to page up", + bindKey: "PageUp", + exec: function (editor) { editor.gotoPageUp(); }, + readOnly: true + }, { + name: "scrollup", + description: "Scroll up", + bindKey: bindKey("Ctrl-Up", null), + exec: function (e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, + readOnly: true + }, { + name: "scrolldown", + description: "Scroll down", + bindKey: bindKey("Ctrl-Down", null), + exec: function (e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, + readOnly: true + }, { + name: "selectlinestart", + description: "Select line start", + bindKey: "Shift-Home", + exec: function (editor) { editor.getSelection().selectLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectlineend", + description: "Select line end", + bindKey: "Shift-End", + exec: function (editor) { editor.getSelection().selectLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "togglerecording", + description: "Toggle recording", + bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), + exec: function (editor) { editor.commands.toggleRecording(editor); }, + readOnly: true + }, { + name: "replaymacro", + description: "Replay macro", + bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), + exec: function (editor) { editor.commands.replay(editor); }, + readOnly: true + }, { + name: "jumptomatching", + description: "Jump to matching", + bindKey: bindKey("Ctrl-\\|Ctrl-P", "Command-\\"), + exec: function (editor) { editor.jumpToMatching(); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "selecttomatching", + description: "Select to matching", + bindKey: bindKey("Ctrl-Shift-\\|Ctrl-Shift-P", "Command-Shift-\\"), + exec: function (editor) { editor.jumpToMatching(true); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "expandToMatching", + description: "Expand to matching", + bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"), + exec: function (editor) { editor.jumpToMatching(true, true); }, + multiSelectAction: "forEach", + scrollIntoView: "animate", + readOnly: true + }, { + name: "passKeysToBrowser", + description: "Pass keys to browser", + bindKey: bindKey(null, null), + exec: function () { }, + passEvent: true, + readOnly: true + }, { + name: "copy", + description: "Copy", + exec: function (editor) { + }, + readOnly: true }, - readOnly: true -}, { - name: "goToNextError", - bindKey: bindKey("Alt-E", "F4"), - exec: function(editor) { - config.loadModule("ace/ext/error_marker", function(module) { - module.showErrorMarker(editor, 1); - }); - }, - scrollIntoView: "animate", - readOnly: true -}, { - name: "goToPreviousError", - bindKey: bindKey("Alt-Shift-E", "Shift-F4"), - exec: function(editor) { - config.loadModule("ace/ext/error_marker", function(module) { - module.showErrorMarker(editor, -1); - }); - }, - scrollIntoView: "animate", - readOnly: true -}, { - name: "selectall", - bindKey: bindKey("Ctrl-A", "Command-A"), - exec: function(editor) { editor.selectAll(); }, - readOnly: true -}, { - name: "centerselection", - bindKey: bindKey(null, "Ctrl-L"), - exec: function(editor) { editor.centerSelection(); }, - readOnly: true -}, { - name: "gotoline", - bindKey: bindKey("Ctrl-L", "Command-L"), - exec: function(editor) { - var line = parseInt(prompt("Enter line number:"), 10); - if (!isNaN(line)) { - editor.gotoLine(line); - } - }, - readOnly: true -}, { - name: "fold", - bindKey: bindKey("Alt-L|Ctrl-F1", "Command-Alt-L|Command-F1"), - exec: function(editor) { editor.session.toggleFold(false); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "unfold", - bindKey: bindKey("Alt-Shift-L|Ctrl-Shift-F1", "Command-Alt-Shift-L|Command-Shift-F1"), - exec: function(editor) { editor.session.toggleFold(true); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "toggleFoldWidget", - bindKey: bindKey("F2", "F2"), - exec: function(editor) { editor.session.toggleFoldWidget(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "toggleParentFoldWidget", - bindKey: bindKey("Alt-F2", "Alt-F2"), - exec: function(editor) { editor.session.toggleFoldWidget(true); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "foldall", - bindKey: bindKey(null, "Ctrl-Command-Option-0"), - exec: function(editor) { editor.session.foldAll(); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "foldOther", - bindKey: bindKey("Alt-0", "Command-Option-0"), - exec: function(editor) { - editor.session.foldAll(); - editor.session.unfold(editor.selection.getAllRanges()); - }, - scrollIntoView: "center", - readOnly: true -}, { - name: "unfoldall", - bindKey: bindKey("Alt-Shift-0", "Command-Option-Shift-0"), - exec: function(editor) { editor.session.unfold(); }, - scrollIntoView: "center", - readOnly: true -}, { - name: "findnext", - bindKey: bindKey("Ctrl-K", "Command-G"), - exec: function(editor) { editor.findNext(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "findprevious", - bindKey: bindKey("Ctrl-Shift-K", "Command-Shift-G"), - exec: function(editor) { editor.findPrevious(); }, - multiSelectAction: "forEach", - scrollIntoView: "center", - readOnly: true -}, { - name: "selectOrFindNext", - bindKey: bindKey("Alt-K", "Ctrl-G"), - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findNext(); - }, - readOnly: true -}, { - name: "selectOrFindPrevious", - bindKey: bindKey("Alt-Shift-K", "Ctrl-Shift-G"), - exec: function(editor) { - if (editor.selection.isEmpty()) - editor.selection.selectWord(); - else - editor.findPrevious(); - }, - readOnly: true -}, { - name: "find", - bindKey: bindKey("Ctrl-F", "Command-F"), - exec: function(editor) { - config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor);}); - }, - readOnly: true -}, { - name: "overwrite", - bindKey: "Insert", - exec: function(editor) { editor.toggleOverwrite(); }, - readOnly: true -}, { - name: "selecttostart", - bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), - exec: function(editor) { editor.getSelection().selectFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "gotostart", - bindKey: bindKey("Ctrl-Home", "Command-Home|Command-Up"), - exec: function(editor) { editor.navigateFileStart(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "selectup", - bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), - exec: function(editor) { editor.getSelection().selectUp(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "golineup", - bindKey: bindKey("Up", "Up|Ctrl-P"), - exec: function(editor, args) { editor.navigateUp(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selecttoend", - bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), - exec: function(editor) { editor.getSelection().selectFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "gotoend", - bindKey: bindKey("Ctrl-End", "Command-End|Command-Down"), - exec: function(editor) { editor.navigateFileEnd(); }, - multiSelectAction: "forEach", - readOnly: true, - scrollIntoView: "animate", - aceCommandGroup: "fileJump" -}, { - name: "selectdown", - bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), - exec: function(editor) { editor.getSelection().selectDown(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "golinedown", - bindKey: bindKey("Down", "Down|Ctrl-N"), - exec: function(editor, args) { editor.navigateDown(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectwordleft", - bindKey: bindKey("Ctrl-Shift-Left", "Option-Shift-Left"), - exec: function(editor) { editor.getSelection().selectWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotowordleft", - bindKey: bindKey("Ctrl-Left", "Option-Left"), - exec: function(editor) { editor.navigateWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selecttolinestart", - bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), - exec: function(editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotolinestart", - bindKey: bindKey("Alt-Left|Home", "Command-Left|Home|Ctrl-A"), - exec: function(editor) { editor.navigateLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectleft", - bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), - exec: function(editor) { editor.getSelection().selectLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotoleft", - bindKey: bindKey("Left", "Left|Ctrl-B"), - exec: function(editor, args) { editor.navigateLeft(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectwordright", - bindKey: bindKey("Ctrl-Shift-Right", "Option-Shift-Right"), - exec: function(editor) { editor.getSelection().selectWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotowordright", - bindKey: bindKey("Ctrl-Right", "Option-Right"), - exec: function(editor) { editor.navigateWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selecttolineend", - bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), - exec: function(editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotolineend", - bindKey: bindKey("Alt-Right|End", "Command-Right|End|Ctrl-E"), - exec: function(editor) { editor.navigateLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectright", - bindKey: bindKey("Shift-Right", "Shift-Right"), - exec: function(editor) { editor.getSelection().selectRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "gotoright", - bindKey: bindKey("Right", "Right|Ctrl-F"), - exec: function(editor, args) { editor.navigateRight(args.times); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectpagedown", - bindKey: "Shift-PageDown", - exec: function(editor) { editor.selectPageDown(); }, - readOnly: true -}, { - name: "pagedown", - bindKey: bindKey(null, "Option-PageDown"), - exec: function(editor) { editor.scrollPageDown(); }, - readOnly: true -}, { - name: "gotopagedown", - bindKey: bindKey("PageDown", "PageDown|Ctrl-V"), - exec: function(editor) { editor.gotoPageDown(); }, - readOnly: true -}, { - name: "selectpageup", - bindKey: "Shift-PageUp", - exec: function(editor) { editor.selectPageUp(); }, - readOnly: true -}, { - name: "pageup", - bindKey: bindKey(null, "Option-PageUp"), - exec: function(editor) { editor.scrollPageUp(); }, - readOnly: true -}, { - name: "gotopageup", - bindKey: "PageUp", - exec: function(editor) { editor.gotoPageUp(); }, - readOnly: true -}, { - name: "scrollup", - bindKey: bindKey("Ctrl-Up", null), - exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true -}, { - name: "scrolldown", - bindKey: bindKey("Ctrl-Down", null), - exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); }, - readOnly: true -}, { - name: "selectlinestart", - bindKey: "Shift-Home", - exec: function(editor) { editor.getSelection().selectLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectlineend", - bindKey: "Shift-End", - exec: function(editor) { editor.getSelection().selectLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "togglerecording", - bindKey: bindKey("Ctrl-Alt-E", "Command-Option-E"), - exec: function(editor) { editor.commands.toggleRecording(editor); }, - readOnly: true -}, { - name: "replaymacro", - bindKey: bindKey("Ctrl-Shift-E", "Command-Shift-E"), - exec: function(editor) { editor.commands.replay(editor); }, - readOnly: true -}, { - name: "jumptomatching", - bindKey: bindKey("Ctrl-P", "Ctrl-P"), - exec: function(editor) { editor.jumpToMatching(); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true -}, { - name: "selecttomatching", - bindKey: bindKey("Ctrl-Shift-P", "Ctrl-Shift-P"), - exec: function(editor) { editor.jumpToMatching(true); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true -}, { - name: "expandToMatching", - bindKey: bindKey("Ctrl-Shift-M", "Ctrl-Shift-M"), - exec: function(editor) { editor.jumpToMatching(true, true); }, - multiSelectAction: "forEach", - scrollIntoView: "animate", - readOnly: true -}, { - name: "passKeysToBrowser", - bindKey: bindKey(null, null), - exec: function() {}, - passEvent: true, - readOnly: true -}, { - name: "copy", - exec: function(editor) { - }, - readOnly: true -}, -{ - name: "cut", - exec: function(editor) { - var range = editor.getSelectionRange(); - editor._emit("cut", range); - - if (!editor.selection.isEmpty()) { - editor.session.remove(range); + { + name: "cut", + description: "Cut", + exec: function (editor) { + var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty(); + var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange(); + editor._emit("cut", range); + if (!range.isEmpty()) + editor.session.remove(range); editor.clearSelection(); + }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "paste", + description: "Paste", + exec: function (editor, args) { + editor.$handlePaste(args); + }, + scrollIntoView: "cursor" + }, { + name: "removeline", + description: "Remove line", + bindKey: bindKey("Ctrl-D", "Command-D"), + exec: function (editor) { editor.removeLines(); }, + scrollIntoView: "cursor", + multiSelectAction: "forEachLine" + }, { + name: "duplicateSelection", + description: "Duplicate selection", + bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), + exec: function (editor) { editor.duplicateSelection(); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "sortlines", + description: "Sort lines", + bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), + exec: function (editor) { editor.sortLines(); }, + scrollIntoView: "selection", + multiSelectAction: "forEachLine" + }, { + name: "togglecomment", + description: "Toggle comment", + bindKey: bindKey("Ctrl-/", "Command-/"), + exec: function (editor) { editor.toggleCommentLines(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "toggleBlockComment", + description: "Toggle block comment", + bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), + exec: function (editor) { editor.toggleBlockComment(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "modifyNumberUp", + description: "Modify number up", + bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), + exec: function (editor) { editor.modifyNumber(1); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "modifyNumberDown", + description: "Modify number down", + bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), + exec: function (editor) { editor.modifyNumber(-1); }, + scrollIntoView: "cursor", + multiSelectAction: "forEach" + }, { + name: "replace", + description: "Replace", + bindKey: bindKey("Ctrl-H", "Command-Option-F"), + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { e.Search(editor, true); }); } - }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" -}, { - name: "paste", - exec: function(editor, args) { - editor.$handlePaste(args); - }, - scrollIntoView: "cursor" -}, { - name: "removeline", - bindKey: bindKey("Ctrl-D", "Command-D"), - exec: function(editor) { editor.removeLines(); }, - scrollIntoView: "cursor", - multiSelectAction: "forEachLine" -}, { - name: "duplicateSelection", - bindKey: bindKey("Ctrl-Shift-D", "Command-Shift-D"), - exec: function(editor) { editor.duplicateSelection(); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" -}, { - name: "sortlines", - bindKey: bindKey("Ctrl-Alt-S", "Command-Alt-S"), - exec: function(editor) { editor.sortLines(); }, - scrollIntoView: "selection", - multiSelectAction: "forEachLine" -}, { - name: "togglecomment", - bindKey: bindKey("Ctrl-/", "Command-/"), - exec: function(editor) { editor.toggleCommentLines(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "toggleBlockComment", - bindKey: bindKey("Ctrl-Shift-/", "Command-Shift-/"), - exec: function(editor) { editor.toggleBlockComment(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" -}, { - name: "modifyNumberUp", - bindKey: bindKey("Ctrl-Shift-Up", "Alt-Shift-Up"), - exec: function(editor) { editor.modifyNumber(1); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" -}, { - name: "modifyNumberDown", - bindKey: bindKey("Ctrl-Shift-Down", "Alt-Shift-Down"), - exec: function(editor) { editor.modifyNumber(-1); }, - scrollIntoView: "cursor", - multiSelectAction: "forEach" -}, { - name: "replace", - bindKey: bindKey("Ctrl-H", "Command-Option-F"), - exec: function(editor) { - config.loadModule("ace/ext/searchbox", function(e) {e.Search(editor, true);}); - } -}, { - name: "undo", - bindKey: bindKey("Ctrl-Z", "Command-Z"), - exec: function(editor) { editor.undo(); } -}, { - name: "redo", - bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), - exec: function(editor) { editor.redo(); } -}, { - name: "copylinesup", - bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), - exec: function(editor) { editor.copyLinesUp(); }, - scrollIntoView: "cursor" -}, { - name: "movelinesup", - bindKey: bindKey("Alt-Up", "Option-Up"), - exec: function(editor) { editor.moveLinesUp(); }, - scrollIntoView: "cursor" -}, { - name: "copylinesdown", - bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), - exec: function(editor) { editor.copyLinesDown(); }, - scrollIntoView: "cursor" -}, { - name: "movelinesdown", - bindKey: bindKey("Alt-Down", "Option-Down"), - exec: function(editor) { editor.moveLinesDown(); }, - scrollIntoView: "cursor" -}, { - name: "del", - bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), - exec: function(editor) { editor.remove("right"); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "backspace", - bindKey: bindKey( - "Shift-Backspace|Backspace", - "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H" - ), - exec: function(editor) { editor.remove("left"); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "cut_or_delete", - bindKey: bindKey("Shift-Delete", null), - exec: function(editor) { - if (editor.selection.isEmpty()) { - editor.remove("left"); - } else { - return false; - } - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removetolinestart", - bindKey: bindKey("Alt-Backspace", "Command-Backspace"), - exec: function(editor) { editor.removeToLineStart(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removetolineend", - bindKey: bindKey("Alt-Delete", "Ctrl-K|Command-Delete"), - exec: function(editor) { editor.removeToLineEnd(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removetolinestarthard", - bindKey: bindKey("Ctrl-Shift-Backspace", null), - exec: function(editor) { - var range = editor.selection.getRange(); - range.start.column = 0; - editor.session.remove(range); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removetolineendhard", - bindKey: bindKey("Ctrl-Shift-Delete", null), - exec: function(editor) { - var range = editor.selection.getRange(); - range.end.column = Number.MAX_VALUE; - editor.session.remove(range); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removewordleft", - bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), - exec: function(editor) { editor.removeWordLeft(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "removewordright", - bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), - exec: function(editor) { editor.removeWordRight(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "outdent", - bindKey: bindKey("Shift-Tab", "Shift-Tab"), - exec: function(editor) { editor.blockOutdent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" -}, { - name: "indent", - bindKey: bindKey("Tab", "Tab"), - exec: function(editor) { editor.indent(); }, - multiSelectAction: "forEach", - scrollIntoView: "selectionPart" -}, { - name: "blockoutdent", - bindKey: bindKey("Ctrl-[", "Ctrl-["), - exec: function(editor) { editor.blockOutdent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "blockindent", - bindKey: bindKey("Ctrl-]", "Ctrl-]"), - exec: function(editor) { editor.blockIndent(); }, - multiSelectAction: "forEachLine", - scrollIntoView: "selectionPart" -}, { - name: "insertstring", - exec: function(editor, str) { editor.insert(str); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "inserttext", - exec: function(editor, args) { - editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "splitline", - bindKey: bindKey(null, "Ctrl-O"), - exec: function(editor) { editor.splitLine(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "transposeletters", - bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), - exec: function(editor) { editor.transposeLetters(); }, - multiSelectAction: function(editor) {editor.transposeSelections(1); }, - scrollIntoView: "cursor" -}, { - name: "touppercase", - bindKey: bindKey("Ctrl-U", "Ctrl-U"), - exec: function(editor) { editor.toUpperCase(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "tolowercase", - bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), - exec: function(editor) { editor.toLowerCase(); }, - multiSelectAction: "forEach", - scrollIntoView: "cursor" -}, { - name: "expandtoline", - bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"), - exec: function(editor) { - var range = editor.selection.getRange(); - - range.start.column = range.end.column = 0; - range.end.row++; - editor.selection.setRange(range, false); - }, - multiSelectAction: "forEach", - scrollIntoView: "cursor", - readOnly: true -}, { - name: "joinlines", - bindKey: bindKey(null, null), - exec: function(editor) { - var isBackwards = editor.selection.isBackwards(); - var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); - var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); - var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length; - var selectedText = editor.session.doc.getTextRange(editor.selection.getRange()); - var selectedCount = selectedText.replace(/\n\s*/, " ").length; - var insertLine = editor.session.doc.getLine(selectionStart.row); - - for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) { - var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i))); - if (curLine.length !== 0) { - curLine = " " + curLine; + }, { + name: "undo", + description: "Undo", + bindKey: bindKey("Ctrl-Z", "Command-Z"), + exec: function (editor) { editor.undo(); } + }, { + name: "redo", + description: "Redo", + bindKey: bindKey("Ctrl-Shift-Z|Ctrl-Y", "Command-Shift-Z|Command-Y"), + exec: function (editor) { editor.redo(); } + }, { + name: "copylinesup", + description: "Copy lines up", + bindKey: bindKey("Alt-Shift-Up", "Command-Option-Up"), + exec: function (editor) { editor.copyLinesUp(); }, + scrollIntoView: "cursor" + }, { + name: "movelinesup", + description: "Move lines up", + bindKey: bindKey("Alt-Up", "Option-Up"), + exec: function (editor) { editor.moveLinesUp(); }, + scrollIntoView: "cursor" + }, { + name: "copylinesdown", + description: "Copy lines down", + bindKey: bindKey("Alt-Shift-Down", "Command-Option-Down"), + exec: function (editor) { editor.copyLinesDown(); }, + scrollIntoView: "cursor" + }, { + name: "movelinesdown", + description: "Move lines down", + bindKey: bindKey("Alt-Down", "Option-Down"), + exec: function (editor) { editor.moveLinesDown(); }, + scrollIntoView: "cursor" + }, { + name: "del", + description: "Delete", + bindKey: bindKey("Delete", "Delete|Ctrl-D|Shift-Delete"), + exec: function (editor) { editor.remove("right"); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "backspace", + description: "Backspace", + bindKey: bindKey("Shift-Backspace|Backspace", "Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"), + exec: function (editor) { editor.remove("left"); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "cut_or_delete", + description: "Cut or delete", + bindKey: bindKey("Shift-Delete", null), + exec: function (editor) { + if (editor.selection.isEmpty()) { + editor.remove("left"); } - insertLine += curLine; - } - - if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) { - insertLine += editor.session.doc.getNewLineCharacter(); - } - - editor.clearSelection(); - editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine); - - if (selectedCount > 0) { - editor.selection.moveCursorTo(selectionStart.row, selectionStart.column); - editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount); - } else { - firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol; - editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol); - } - }, - multiSelectAction: "forEach", - readOnly: true -}, { - name: "invertSelection", - bindKey: bindKey(null, null), - exec: function(editor) { - var endRow = editor.session.doc.getLength() - 1; - var endCol = editor.session.doc.getLine(endRow).length; - var ranges = editor.selection.rangeList.ranges; - var newRanges = []; - if (ranges.length < 1) { - ranges = [editor.selection.getRange()]; - } - - for (var i = 0; i < ranges.length; i++) { - if (i == (ranges.length - 1)) { - if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) { - newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol)); + else { + return false; + } + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolinestart", + description: "Remove to line start", + bindKey: bindKey("Alt-Backspace", "Command-Backspace"), + exec: function (editor) { editor.removeToLineStart(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolineend", + description: "Remove to line end", + bindKey: bindKey("Alt-Delete", "Ctrl-K|Command-Delete"), + exec: function (editor) { editor.removeToLineEnd(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolinestarthard", + description: "Remove to line start hard", + bindKey: bindKey("Ctrl-Shift-Backspace", null), + exec: function (editor) { + var range = editor.selection.getRange(); + range.start.column = 0; + editor.session.remove(range); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removetolineendhard", + description: "Remove to line end hard", + bindKey: bindKey("Ctrl-Shift-Delete", null), + exec: function (editor) { + var range = editor.selection.getRange(); + range.end.column = Number.MAX_VALUE; + editor.session.remove(range); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removewordleft", + description: "Remove word left", + bindKey: bindKey("Ctrl-Backspace", "Alt-Backspace|Ctrl-Alt-Backspace"), + exec: function (editor) { editor.removeWordLeft(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "removewordright", + description: "Remove word right", + bindKey: bindKey("Ctrl-Delete", "Alt-Delete"), + exec: function (editor) { editor.removeWordRight(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "outdent", + description: "Outdent", + bindKey: bindKey("Shift-Tab", "Shift-Tab"), + exec: function (editor) { editor.blockOutdent(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "indent", + description: "Indent", + bindKey: bindKey("Tab", "Tab"), + exec: function (editor) { editor.indent(); }, + multiSelectAction: "forEach", + scrollIntoView: "selectionPart" + }, { + name: "blockoutdent", + description: "Block outdent", + bindKey: bindKey("Ctrl-[", "Ctrl-["), + exec: function (editor) { editor.blockOutdent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "blockindent", + description: "Block indent", + bindKey: bindKey("Ctrl-]", "Ctrl-]"), + exec: function (editor) { editor.blockIndent(); }, + multiSelectAction: "forEachLine", + scrollIntoView: "selectionPart" + }, { + name: "insertstring", + description: "Insert string", + exec: function (editor, str) { editor.insert(str); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "inserttext", + description: "Insert text", + exec: function (editor, args) { + editor.insert(lang.stringRepeat(args.text || "", args.times || 1)); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "splitline", + description: "Split line", + bindKey: bindKey(null, "Ctrl-O"), + exec: function (editor) { editor.splitLine(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "transposeletters", + description: "Transpose letters", + bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), + exec: function (editor) { editor.transposeLetters(); }, + multiSelectAction: function (editor) { editor.transposeSelections(1); }, + scrollIntoView: "cursor" + }, { + name: "touppercase", + description: "To uppercase", + bindKey: bindKey("Ctrl-U", "Ctrl-U"), + exec: function (editor) { editor.toUpperCase(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "tolowercase", + description: "To lowercase", + bindKey: bindKey("Ctrl-Shift-U", "Ctrl-Shift-U"), + exec: function (editor) { editor.toLowerCase(); }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "autoindent", + description: "Auto Indent", + bindKey: bindKey(null, null), + exec: function (editor) { editor.autoIndent(); }, + scrollIntoView: "animate" + }, { + name: "expandtoline", + description: "Expand to line", + bindKey: bindKey("Ctrl-Shift-L", "Command-Shift-L"), + exec: function (editor) { + var range = editor.selection.getRange(); + range.start.column = range.end.column = 0; + range.end.row++; + editor.selection.setRange(range, false); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "openlink", + bindKey: bindKey("Ctrl+F3", "F3"), + exec: function (editor) { editor.openLink(); } + }, { + name: "joinlines", + description: "Join lines", + bindKey: bindKey(null, null), + exec: function (editor) { + var isBackwards = editor.selection.isBackwards(); + var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor(); + var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead(); + var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length; + var selectedText = editor.session.doc.getTextRange(editor.selection.getRange()); + var selectedCount = selectedText.replace(/\n\s*/, " ").length; + var insertLine = editor.session.doc.getLine(selectionStart.row); + for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) { + var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i))); + if (curLine.length !== 0) { + curLine = " " + curLine; + } + insertLine += curLine; + } + if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) { + insertLine += editor.session.doc.getNewLineCharacter(); + } + editor.clearSelection(); + editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine); + if (selectedCount > 0) { + editor.selection.moveCursorTo(selectionStart.row, selectionStart.column); + editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount); + } + else { + firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol; + editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol); + } + }, + multiSelectAction: "forEach", + readOnly: true + }, { + name: "invertSelection", + description: "Invert selection", + bindKey: bindKey(null, null), + exec: function (editor) { + var endRow = editor.session.doc.getLength() - 1; + var endCol = editor.session.doc.getLine(endRow).length; + var ranges = editor.selection.rangeList.ranges; + var newRanges = []; + if (ranges.length < 1) { + ranges = [editor.selection.getRange()]; + } + for (var i = 0; i < ranges.length; i++) { + if (i == (ranges.length - 1)) { + if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) { + newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol)); + } + } + if (i === 0) { + if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) { + newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column)); + } + } + else { + newRanges.push(new Range(ranges[i - 1].end.row, ranges[i - 1].end.column, ranges[i].start.row, ranges[i].start.column)); } } - - if (i === 0) { - if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) { - newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column)); - } - } else { - newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column)); + editor.exitMultiSelectMode(); + editor.clearSelection(); + for (var i = 0; i < newRanges.length; i++) { + editor.selection.addRange(newRanges[i], false); } - } - - editor.exitMultiSelectMode(); - editor.clearSelection(); - - for(var i = 0; i < newRanges.length; i++) { - editor.selection.addRange(newRanges[i], false); - } - }, - readOnly: true, - scrollIntoView: "none" -}]; + }, + readOnly: true, + scrollIntoView: "none" + }, { + name: "addLineAfter", + description: "Add new line after the current line", + exec: function (editor) { + editor.selection.clearSelection(); + editor.navigateLineEnd(); + editor.insert("\n"); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "addLineBefore", + description: "Add new line before the current line", + exec: function (editor) { + editor.selection.clearSelection(); + var cursor = editor.getCursorPosition(); + editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE); + editor.insert("\n"); + if (cursor.row === 0) + editor.navigateUp(); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "openCommandPallete", + exec: function (editor) { + console.warn("This is an obsolete command. Please use `openCommandPalette` instead."); + editor.prompt({ $type: "commands" }); + }, + readOnly: true + }, { + name: "openCommandPalette", + description: "Open command palette", + bindKey: bindKey("F1", "F1"), + exec: function (editor) { + editor.prompt({ $type: "commands" }); + }, + readOnly: true + }, { + name: "modeSelect", + description: "Change language mode...", + bindKey: bindKey(null, null), + exec: function (editor) { + editor.prompt({ $type: "modes" }); + }, + readOnly: true + }]; +for (var i = 1; i < 9; i++) { + exports.commands.push({ + name: "foldToLevel" + i, + description: "Fold To Level " + i, + level: i, + exec: function (editor) { editor.session.foldToLevel(this.level); }, + scrollIntoView: "center", + readOnly: true + }); +} }); -define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator"], function(require, exports, module) { -"use strict"; +define("ace/line_widgets",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("./lib/dom"); +var LineWidgets = /** @class */ (function () { + function LineWidgets(session) { + this.session = session; + this.session.widgetManager = this; + this.session.getRowLength = this.getRowLength; + this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; + this.updateOnChange = this.updateOnChange.bind(this); + this.renderWidgets = this.renderWidgets.bind(this); + this.measureWidgets = this.measureWidgets.bind(this); + this.session._changedWidgets = []; + this.$onChangeEditor = this.$onChangeEditor.bind(this); + this.session.on("change", this.updateOnChange); + this.session.on("changeFold", this.updateOnFold); + this.session.on("changeEditor", this.$onChangeEditor); + } + LineWidgets.prototype.getRowLength = function (row) { + var h; + if (this.lineWidgets) + h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; + else + h = 0; + if (!this["$useWrapMode"] || !this["$wrapData"][row]) { + return 1 + h; + } + else { + return this["$wrapData"][row].length + 1 + h; + } + }; + LineWidgets.prototype.$getWidgetScreenLength = function () { + var screenRows = 0; + this.lineWidgets.forEach(function (w) { + if (w && w.rowCount && !w.hidden) + screenRows += w.rowCount; + }); + return screenRows; + }; + LineWidgets.prototype.$onChangeEditor = function (e) { + this.attach(e.editor); + }; + LineWidgets.prototype.attach = function (editor) { + if (editor && editor.widgetManager && editor.widgetManager != this) + editor.widgetManager.detach(); + if (this.editor == editor) + return; + this.detach(); + this.editor = editor; + if (editor) { + editor.widgetManager = this; + editor.renderer.on("beforeRender", this.measureWidgets); + editor.renderer.on("afterRender", this.renderWidgets); + } + }; + LineWidgets.prototype.detach = function (e) { + var editor = this.editor; + if (!editor) + return; + this.editor = null; + editor.widgetManager = null; + editor.renderer.off("beforeRender", this.measureWidgets); + editor.renderer.off("afterRender", this.renderWidgets); + var lineWidgets = this.session.lineWidgets; + lineWidgets && lineWidgets.forEach(function (w) { + if (w && w.el && w.el.parentNode) { + w._inDocument = false; + w.el.parentNode.removeChild(w.el); + } + }); + }; + LineWidgets.prototype.updateOnFold = function (e, session) { + var lineWidgets = session.lineWidgets; + if (!lineWidgets || !e.action) + return; + var fold = e.data; + var start = fold.start.row; + var end = fold.end.row; + var hide = e.action == "add"; + for (var i = start + 1; i < end; i++) { + if (lineWidgets[i]) + lineWidgets[i].hidden = hide; + } + if (lineWidgets[end]) { + if (hide) { + if (!lineWidgets[start]) + lineWidgets[start] = lineWidgets[end]; + else + lineWidgets[end].hidden = hide; + } + else { + if (lineWidgets[start] == lineWidgets[end]) + lineWidgets[start] = undefined; + lineWidgets[end].hidden = hide; + } + } + }; + LineWidgets.prototype.updateOnChange = function (delta) { + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var startRow = delta.start.row; + var len = delta.end.row - startRow; + if (len === 0) { + } + else if (delta.action == "remove") { + var removed = lineWidgets.splice(startRow + 1, len); + if (!lineWidgets[startRow] && removed[removed.length - 1]) { + lineWidgets[startRow] = removed.pop(); + } + removed.forEach(function (w) { + w && this.removeLineWidget(w); + }, this); + this.$updateRows(); + } + else { + var args = new Array(len); + if (lineWidgets[startRow] && lineWidgets[startRow].column != null) { + if (delta.start.column > lineWidgets[startRow].column) + startRow++; + } + args.unshift(startRow, 0); + lineWidgets.splice.apply(lineWidgets, args); + this.$updateRows(); + } + }; + LineWidgets.prototype.$updateRows = function () { + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var noWidgets = true; + lineWidgets.forEach(function (w, i) { + if (w) { + noWidgets = false; + w.row = i; + while (w.$oldWidget) { + w.$oldWidget.row = i; + w = w.$oldWidget; + } + } + }); + if (noWidgets) + this.session.lineWidgets = null; + }; + LineWidgets.prototype.$registerLineWidget = function (w) { + if (!this.session.lineWidgets) + this.session.lineWidgets = new Array(this.session.getLength()); + var old = this.session.lineWidgets[w.row]; + if (old) { + w.$oldWidget = old; + if (old.el && old.el.parentNode) { + old.el.parentNode.removeChild(old.el); + old._inDocument = false; + } + } + this.session.lineWidgets[w.row] = w; + return w; + }; + LineWidgets.prototype.addLineWidget = function (w) { + this.$registerLineWidget(w); + w.session = this.session; + if (!this.editor) + return w; + var renderer = this.editor.renderer; + if (w.html && !w.el) { + w.el = dom.createElement("div"); + w.el.innerHTML = w.html; + } + if (w.text && !w.el) { + w.el = dom.createElement("div"); + w.el.textContent = w.text; + } + if (w.el) { + dom.addCssClass(w.el, "ace_lineWidgetContainer"); + if (w.className) { + dom.addCssClass(w.el, w.className); + } + w.el.style.position = "absolute"; + w.el.style.zIndex = "5"; + renderer.container.appendChild(w.el); + w._inDocument = true; + if (!w.coverGutter) { + w.el.style.zIndex = "3"; + } + if (w.pixelHeight == null) { + w.pixelHeight = w.el.offsetHeight; + } + } + if (w.rowCount == null) { + w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; + } + var fold = this.session.getFoldAt(w.row, 0); + w.$fold = fold; + if (fold) { + var lineWidgets = this.session.lineWidgets; + if (w.row == fold.end.row && !lineWidgets[fold.start.row]) + lineWidgets[fold.start.row] = w; + else + w.hidden = true; + } + this.session._emit("changeFold", { data: { start: { row: w.row } } }); + this.$updateRows(); + this.renderWidgets(null, renderer); + this.onWidgetChanged(w); + return w; + }; + LineWidgets.prototype.removeLineWidget = function (w) { + w._inDocument = false; + w.session = null; + if (w.el && w.el.parentNode) + w.el.parentNode.removeChild(w.el); + if (w.editor && w.editor.destroy) + try { + w.editor.destroy(); + } + catch (e) { } + if (this.session.lineWidgets) { + var w1 = this.session.lineWidgets[w.row]; + if (w1 == w) { + this.session.lineWidgets[w.row] = w.$oldWidget; + if (w.$oldWidget) + this.onWidgetChanged(w.$oldWidget); + } + else { + while (w1) { + if (w1.$oldWidget == w) { + w1.$oldWidget = w.$oldWidget; + break; + } + w1 = w1.$oldWidget; + } + } + } + this.session._emit("changeFold", { data: { start: { row: w.row } } }); + this.$updateRows(); + }; + LineWidgets.prototype.getWidgetsAtRow = function (row) { + var lineWidgets = this.session.lineWidgets; + var w = lineWidgets && lineWidgets[row]; + var list = []; + while (w) { + list.push(w); + w = w.$oldWidget; + } + return list; + }; + LineWidgets.prototype.onWidgetChanged = function (w) { + this.session._changedWidgets.push(w); + this.editor && this.editor.renderer.updateFull(); + }; + LineWidgets.prototype.measureWidgets = function (e, renderer) { + var changedWidgets = this.session._changedWidgets; + var config = renderer.layerConfig; + if (!changedWidgets || !changedWidgets.length) + return; + var min = Infinity; + for (var i = 0; i < changedWidgets.length; i++) { + var w = changedWidgets[i]; + if (!w || !w.el) + continue; + if (w.session != this.session) + continue; + if (!w._inDocument) { + if (this.session.lineWidgets[w.row] != w) + continue; + w._inDocument = true; + renderer.container.appendChild(w.el); + } + w.h = w.el.offsetHeight; + if (!w.fixedWidth) { + w.w = w.el.offsetWidth; + w.screenWidth = Math.ceil(w.w / config.characterWidth); + } + var rowCount = w.h / config.lineHeight; + if (w.coverLine) { + rowCount -= this.session.getRowLineCount(w.row); + if (rowCount < 0) + rowCount = 0; + } + if (w.rowCount != rowCount) { + w.rowCount = rowCount; + if (w.row < min) + min = w.row; + } + } + if (min != Infinity) { + this.session._emit("changeFold", { data: { start: { row: min } } }); + this.session.lineWidgetWidth = null; + } + this.session._changedWidgets = []; + }; + LineWidgets.prototype.renderWidgets = function (e, renderer) { + var config = renderer.layerConfig; + var lineWidgets = this.session.lineWidgets; + if (!lineWidgets) + return; + var first = Math.min(this.firstRow, config.firstRow); + var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); + while (first > 0 && !lineWidgets[first]) + first--; + this.firstRow = config.firstRow; + this.lastRow = config.lastRow; + renderer.$cursorLayer.config = config; + for (var i = first; i <= last; i++) { + var w = lineWidgets[i]; + if (!w || !w.el) + continue; + if (w.hidden) { + w.el.style.top = -100 - (w.pixelHeight || 0) + "px"; + continue; + } + if (!w._inDocument) { + w._inDocument = true; + renderer.container.appendChild(w.el); + } + var top = renderer.$cursorLayer.getPixelPosition({ row: i, column: 0 }, true).top; + if (!w.coverLine) + top += config.lineHeight * this.session.getRowLineCount(w.row); + w.el.style.top = top - config.offset + "px"; + var left = w.coverGutter ? 0 : renderer.gutterWidth; + if (!w.fixedWidth) + left -= renderer.scrollLeft; + w.el.style.left = left + "px"; + if (w.fullWidth && w.screenWidth) { + w.el.style.minWidth = config.width + 2 * config.padding + "px"; + } + if (w.fixedWidth) { + w.el.style.right = renderer.scrollBar.getWidth() + "px"; + } + else { + w.el.style.right = ""; + } + } + }; + return LineWidgets; +}()); +exports.LineWidgets = LineWidgets; -require("./lib/fixoldbrowsers"); +}); +define("ace/keyboard/gutter_handler",["require","exports","module","ace/lib/keys","ace/mouse/default_gutter_handler"], function(require, exports, module){"use strict"; +var keys = require('../lib/keys'); +var GutterTooltip = require("../mouse/default_gutter_handler").GutterTooltip; +var GutterKeyboardHandler = /** @class */ (function () { + function GutterKeyboardHandler(editor) { + this.editor = editor; + this.gutterLayer = editor.renderer.$gutterLayer; + this.element = editor.renderer.$gutter; + this.lines = editor.renderer.$gutterLayer.$lines; + this.activeRowIndex = null; + this.activeLane = null; + this.annotationTooltip = new GutterTooltip(this.editor); + } + GutterKeyboardHandler.prototype.addListener = function () { + this.element.addEventListener("keydown", this.$onGutterKeyDown.bind(this)); + this.element.addEventListener("focusout", this.$blurGutter.bind(this)); + this.editor.on("mousewheel", this.$blurGutter.bind(this)); + }; + GutterKeyboardHandler.prototype.removeListener = function () { + this.element.removeEventListener("keydown", this.$onGutterKeyDown.bind(this)); + this.element.removeEventListener("focusout", this.$blurGutter.bind(this)); + this.editor.off("mousewheel", this.$blurGutter.bind(this)); + }; + GutterKeyboardHandler.prototype.$onGutterKeyDown = function (e) { + if (this.annotationTooltip.isOpen) { + e.preventDefault(); + if (e.keyCode === keys["escape"]) + this.annotationTooltip.hideTooltip(); + return; + } + if (e.target === this.element) { + if (e.keyCode != keys["enter"]) { + return; + } + e.preventDefault(); + var row = this.editor.getCursorPosition().row; + if (!this.editor.isRowVisible(row)) + this.editor.scrollToLine(row, true, true); + setTimeout( + function () { + var index = this.$rowToRowIndex(this.gutterLayer.$cursorCell.row); + var nearestFoldIndex = this.$findNearestFoldWidget(index); + var nearestAnnotationIndex = this.$findNearestAnnotation(index); + if (nearestFoldIndex === null && nearestAnnotationIndex === null) + return; + if (nearestFoldIndex === null && nearestAnnotationIndex !== null) { + this.activeRowIndex = nearestAnnotationIndex; + this.activeLane = "annotation"; + this.$focusAnnotation(this.activeRowIndex); + return; + } + if (nearestFoldIndex !== null && nearestAnnotationIndex === null) { + this.activeRowIndex = nearestFoldIndex; + this.activeLane = "fold"; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + if (Math.abs(nearestAnnotationIndex - index) < Math.abs(nearestFoldIndex - index)) { + this.activeRowIndex = nearestAnnotationIndex; + this.activeLane = "annotation"; + this.$focusAnnotation(this.activeRowIndex); + return; + } + else { + this.activeRowIndex = nearestFoldIndex; + this.activeLane = "fold"; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + }.bind(this), 10); + return; + } + this.$handleGutterKeyboardInteraction(e); + setTimeout(function () { + this.editor._signal("gutterkeydown", new GutterKeyboardEvent(e, this)); + }.bind(this), 10); + }; + GutterKeyboardHandler.prototype.$handleGutterKeyboardInteraction = function (e) { + if (e.keyCode === keys["tab"]) { + e.preventDefault(); + return; + } + if (e.keyCode === keys["escape"]) { + e.preventDefault(); + this.$blurGutter(); + this.element.focus(); + this.lane = null; + return; + } + if (e.keyCode === keys["up"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + this.$moveFoldWidgetUp(); + break; + case "annotation": + this.$moveAnnotationUp(); + break; + } + return; + } + if (e.keyCode === keys["down"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + this.$moveFoldWidgetDown(); + break; + case "annotation": + this.$moveAnnotationDown(); + break; + } + return; + } + if (e.keyCode === keys["left"]) { + e.preventDefault(); + this.$switchLane("annotation"); + return; + } + if (e.keyCode === keys["right"]) { + e.preventDefault(); + this.$switchLane("fold"); + return; + } + if (e.keyCode === keys["enter"] || e.keyCode === keys["space"]) { + e.preventDefault(); + switch (this.activeLane) { + case "fold": + if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'start') { + var rowFoldingWidget = this.$rowIndexToRow(this.activeRowIndex); + this.editor.session.onFoldWidgetClick(this.$rowIndexToRow(this.activeRowIndex), e); + setTimeout( + function () { + if (this.$rowIndexToRow(this.activeRowIndex) !== rowFoldingWidget) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = this.$rowToRowIndex(rowFoldingWidget); + this.$focusFoldWidget(this.activeRowIndex); + } + }.bind(this), 10); + break; + } + else if (this.gutterLayer.session.foldWidgets[this.$rowIndexToRow(this.activeRowIndex)] === 'end') { + break; + } + return; + case "annotation": + var gutterElement = this.lines.cells[this.activeRowIndex].element.childNodes[2]; + var rect = gutterElement.getBoundingClientRect(); + var style = this.annotationTooltip.getElement().style; + style.left = rect.right + "px"; + style.top = rect.bottom + "px"; + this.annotationTooltip.showTooltip(this.$rowIndexToRow(this.activeRowIndex)); + break; + } + return; + } + }; + GutterKeyboardHandler.prototype.$blurGutter = function () { + if (this.activeRowIndex !== null) { + switch (this.activeLane) { + case "fold": + this.$blurFoldWidget(this.activeRowIndex); + break; + case "annotation": + this.$blurAnnotation(this.activeRowIndex); + break; + } + } + if (this.annotationTooltip.isOpen) + this.annotationTooltip.hideTooltip(); + return; + }; + GutterKeyboardHandler.prototype.$isFoldWidgetVisible = function (index) { + var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); + var isIconVisible = this.$getFoldWidget(index).style.display !== "none"; + return isRowFullyVisible && isIconVisible; + }; + GutterKeyboardHandler.prototype.$isAnnotationVisible = function (index) { + var isRowFullyVisible = this.editor.isRowFullyVisible(this.$rowIndexToRow(index)); + var isIconVisible = this.$getAnnotation(index).style.display !== "none"; + return isRowFullyVisible && isIconVisible; + }; + GutterKeyboardHandler.prototype.$getFoldWidget = function (index) { + var cell = this.lines.get(index); + var element = cell.element; + return element.childNodes[1]; + }; + GutterKeyboardHandler.prototype.$getAnnotation = function (index) { + var cell = this.lines.get(index); + var element = cell.element; + return element.childNodes[2]; + }; + GutterKeyboardHandler.prototype.$findNearestFoldWidget = function (index) { + if (this.$isFoldWidgetVisible(index)) + return index; + var i = 0; + while (index - i > 0 || index + i < this.lines.getLength() - 1) { + i++; + if (index - i >= 0 && this.$isFoldWidgetVisible(index - i)) + return index - i; + if (index + i <= this.lines.getLength() - 1 && this.$isFoldWidgetVisible(index + i)) + return index + i; + } + return null; + }; + GutterKeyboardHandler.prototype.$findNearestAnnotation = function (index) { + if (this.$isAnnotationVisible(index)) + return index; + var i = 0; + while (index - i > 0 || index + i < this.lines.getLength() - 1) { + i++; + if (index - i >= 0 && this.$isAnnotationVisible(index - i)) + return index - i; + if (index + i <= this.lines.getLength() - 1 && this.$isAnnotationVisible(index + i)) + return index + i; + } + return null; + }; + GutterKeyboardHandler.prototype.$focusFoldWidget = function (index) { + if (index == null) + return; + var foldWidget = this.$getFoldWidget(index); + foldWidget.classList.add(this.editor.renderer.keyboardFocusClassName); + foldWidget.focus(); + }; + GutterKeyboardHandler.prototype.$focusAnnotation = function (index) { + if (index == null) + return; + var annotation = this.$getAnnotation(index); + annotation.classList.add(this.editor.renderer.keyboardFocusClassName); + annotation.focus(); + }; + GutterKeyboardHandler.prototype.$blurFoldWidget = function (index) { + var foldWidget = this.$getFoldWidget(index); + foldWidget.classList.remove(this.editor.renderer.keyboardFocusClassName); + foldWidget.blur(); + }; + GutterKeyboardHandler.prototype.$blurAnnotation = function (index) { + var annotation = this.$getAnnotation(index); + annotation.classList.remove(this.editor.renderer.keyboardFocusClassName); + annotation.blur(); + }; + GutterKeyboardHandler.prototype.$moveFoldWidgetUp = function () { + var index = this.activeRowIndex; + while (index > 0) { + index--; + if (this.$isFoldWidgetVisible(index)) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveFoldWidgetDown = function () { + var index = this.activeRowIndex; + while (index < this.lines.getLength() - 1) { + index++; + if (this.$isFoldWidgetVisible(index)) { + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusFoldWidget(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveAnnotationUp = function () { + var index = this.activeRowIndex; + while (index > 0) { + index--; + if (this.$isAnnotationVisible(index)) { + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusAnnotation(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$moveAnnotationDown = function () { + var index = this.activeRowIndex; + while (index < this.lines.getLength() - 1) { + index++; + if (this.$isAnnotationVisible(index)) { + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = index; + this.$focusAnnotation(this.activeRowIndex); + return; + } + } + return; + }; + GutterKeyboardHandler.prototype.$switchLane = function (desinationLane) { + switch (desinationLane) { + case "annotation": + if (this.activeLane === "annotation") { + break; + } + var annotationIndex = this.$findNearestAnnotation(this.activeRowIndex); + if (annotationIndex == null) { + break; + } + this.activeLane = "annotation"; + this.$blurFoldWidget(this.activeRowIndex); + this.activeRowIndex = annotationIndex; + this.$focusAnnotation(this.activeRowIndex); + break; + case "fold": + if (this.activeLane === "fold") { + break; + } + var foldWidgetIndex = this.$findNearestFoldWidget(this.activeRowIndex); + if (foldWidgetIndex == null) { + break; + } + this.activeLane = "fold"; + this.$blurAnnotation(this.activeRowIndex); + this.activeRowIndex = foldWidgetIndex; + this.$focusFoldWidget(this.activeRowIndex); + break; + } + return; + }; + GutterKeyboardHandler.prototype.$rowIndexToRow = function (index) { + var cell = this.lines.get(index); + if (cell) + return cell.row; + return null; + }; + GutterKeyboardHandler.prototype.$rowToRowIndex = function (row) { + for (var i = 0; i < this.lines.getLength(); i++) { + var cell = this.lines.get(i); + if (cell.row == row) + return i; + } + return null; + }; + return GutterKeyboardHandler; +}()); +exports.GutterKeyboardHandler = GutterKeyboardHandler; +var GutterKeyboardEvent = /** @class */ (function () { + function GutterKeyboardEvent(domEvent, gutterKeyboardHandler) { + this.gutterKeyboardHandler = gutterKeyboardHandler; + this.domEvent = domEvent; + } + GutterKeyboardEvent.prototype.getKey = function () { + return keys.keyCodeToString(this.domEvent.keyCode); + }; + GutterKeyboardEvent.prototype.getRow = function () { + return this.gutterKeyboardHandler.$rowIndexToRow(this.gutterKeyboardHandler.activeRowIndex); + }; + GutterKeyboardEvent.prototype.isInAnnotationLane = function () { + return this.gutterKeyboardHandler.activeLane === "annotation"; + }; + GutterKeyboardEvent.prototype.isInFoldLane = function () { + return this.gutterKeyboardHandler.activeLane === "fold"; + }; + return GutterKeyboardEvent; +}()); +exports.GutterKeyboardEvent = GutterKeyboardEvent; + +}); + +define("ace/editor",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config","ace/token_iterator","ace/line_widgets","ace/keyboard/gutter_handler","ace/config","ace/clipboard","ace/lib/keys"], function(require, exports, module){"use strict"; +var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; var oop = require("./lib/oop"); var dom = require("./lib/dom"); var lang = require("./lib/lang"); @@ -12809,104 +13651,93 @@ var CommandManager = require("./commands/command_manager").CommandManager; var defaultCommands = require("./commands/default_commands").commands; var config = require("./config"); var TokenIterator = require("./token_iterator").TokenIterator; -var Editor = function(renderer, session) { - var container = renderer.getContainerElement(); - this.container = container; - this.renderer = renderer; - this.id = "editor" + (++Editor.$uid); - - this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); - if (typeof document == "object") { - this.textInput = new TextInput(renderer.getTextAreaContainer(), this); - this.renderer.textarea = this.textInput.getElement(); - this.$mouseHandler = new MouseHandler(this); - new FoldHandler(this); +var LineWidgets = require("./line_widgets").LineWidgets; +var GutterKeyboardHandler = require("./keyboard/gutter_handler").GutterKeyboardHandler; +var nls = require("./config").nls; +var clipboard = require("./clipboard"); +var keys = require('./lib/keys'); +var Editor = /** @class */ (function () { + function Editor(renderer, session, options) { this.session; + this.$toDestroy = []; + var container = renderer.getContainerElement(); + this.container = container; + this.renderer = renderer; + this.id = "editor" + (++Editor.$uid); + this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); + if (typeof document == "object") { + this.textInput = new TextInput(renderer.getTextAreaContainer(), this); + this.renderer.textarea = this.textInput.getElement(); + this.$mouseHandler = new MouseHandler(this); + new FoldHandler(this); + } + this.keyBinding = new KeyBinding(this); + this.$search = new Search().set({ + wrap: true + }); + this.$historyTracker = this.$historyTracker.bind(this); + this.commands.on("exec", this.$historyTracker); + this.$initOperationListeners(); + this._$emitInputEvent = lang.delayedCall(function () { + this._signal("input", {}); + if (this.session && !this.session.destroyed) + this.session.bgTokenizer.scheduleStart(); + }.bind(this)); + this.on("change", function (_, _self) { + _self._$emitInputEvent.schedule(31); + }); + this.setSession(session || options && options.session || new EditSession("")); + config.resetOptions(this); + if (options) + this.setOptions(options); + config._signal("editor", this); } - - this.keyBinding = new KeyBinding(this); - - this.$blockScrolling = 0; - this.$search = new Search().set({ - wrap: true - }); - - this.$historyTracker = this.$historyTracker.bind(this); - this.commands.on("exec", this.$historyTracker); - - this.$initOperationListeners(); - - this._$emitInputEvent = lang.delayedCall(function() { - this._signal("input", {}); - if (this.session && this.session.bgTokenizer) - this.session.bgTokenizer.scheduleStart(); - }.bind(this)); - - this.on("change", function(_, _self) { - _self._$emitInputEvent.schedule(31); - }); - - this.setSession(session || new EditSession("")); - config.resetOptions(this); - config._signal("editor", this); -}; - -Editor.$uid = 0; - -(function(){ - - oop.implement(this, EventEmitter); - - this.$initOperationListeners = function() { - function last(a) {return a[a.length - 1];} - - this.selections = []; + Editor.prototype.$initOperationListeners = function () { this.commands.on("exec", this.startOperation.bind(this), true); this.commands.on("afterExec", this.endOperation.bind(this), true); - - this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this)); - - this.on("change", function() { - this.curOp || this.startOperation(); + this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true)); + this.on("change", function () { + if (!this.curOp) { + this.startOperation(); + this.curOp.selectionBefore = this.$lastSel; + } this.curOp.docChanged = true; }.bind(this), true); - - this.on("changeSelection", function() { - this.curOp || this.startOperation(); + this.on("changeSelection", function () { + if (!this.curOp) { + this.startOperation(); + this.curOp.selectionBefore = this.$lastSel; + } this.curOp.selectionChanged = true; }.bind(this), true); }; - - this.curOp = null; - this.prevOp = {}; - this.startOperation = function(commadEvent) { + Editor.prototype.startOperation = function (commandEvent) { if (this.curOp) { - if (!commadEvent || this.curOp.command) + if (!commandEvent || this.curOp.command) return; this.prevOp = this.curOp; } - if (!commadEvent) { + if (!commandEvent) { this.previousCommand = null; - commadEvent = {}; + commandEvent = {}; } - this.$opResetTimer.schedule(); - this.curOp = { - command: commadEvent.command || {}, - args: commadEvent.args, + this.curOp = this.session.curOp = { + command: commandEvent.command || {}, + args: commandEvent.args, scrollTop: this.renderer.scrollTop }; - if (this.curOp.command.name && this.curOp.command.scrollIntoView !== undefined) - this.$blockScrolling++; + this.curOp.selectionBefore = this.selection.toJSON(); }; - - this.endOperation = function(e) { - if (this.curOp) { - if (e && e.returnValue === false) - return this.curOp = null; + Editor.prototype.endOperation = function (e) { + if (this.curOp && this.session) { + if (e && e.returnValue === false || !this.session) + return (this.curOp = null); + if (e == true && this.curOp.command && this.curOp.command.name == "mouse") + return; this._signal("beforeEndOperation"); + if (!this.curOp) + return; var command = this.curOp.command; - if (command.name && this.$blockScrolling > 0) - this.$blockScrolling--; var scrollIntoView = command && command.scrollIntoView; if (scrollIntoView) { switch (scrollIntoView) { @@ -12932,16 +13763,17 @@ Editor.$uid = 0; if (scrollIntoView == "animate") this.renderer.animateScrolling(this.curOp.scrollTop); } - + var sel = this.selection.toJSON(); + this.curOp.selectionAfter = sel; + this.$lastSel = this.selection.toJSON(); + this.session.getUndoManager().addSelection(sel); this.prevOp = this.curOp; this.curOp = null; } }; - this.$mergeableCommands = ["backspace", "del", "insertstring"]; - this.$historyTracker = function(e) { + Editor.prototype.$historyTracker = function (e) { if (!this.$mergeUndoDeltas) return; - var prev = this.prevOp; var mergeableCommands = this.$mergeableCommands; var shouldMerge = prev.command && (e.command.name == prev.command.name); @@ -12949,53 +13781,49 @@ Editor.$uid = 0; var text = e.args; if (this.mergeNextCommand === undefined) this.mergeNextCommand = true; - shouldMerge = shouldMerge && this.mergeNextCommand // previous command allows to coalesce with && (!/\s/.test(text) || /\s/.test(prev.args)); // previous insertion was of same type - this.mergeNextCommand = true; - } else { + } + else { shouldMerge = shouldMerge && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable } - - if ( - this.$mergeUndoDeltas != "always" - && Date.now() - this.sequenceStartTime > 2000 - ) { + if (this.$mergeUndoDeltas != "always" + && Date.now() - this.sequenceStartTime > 2000) { shouldMerge = false; // the sequence is too long } - if (shouldMerge) this.session.mergeUndoDeltas = true; else if (mergeableCommands.indexOf(e.command.name) !== -1) this.sequenceStartTime = Date.now(); }; - this.setKeyboardHandler = function(keyboardHandler, cb) { - if (keyboardHandler && typeof keyboardHandler === "string") { + Editor.prototype.setKeyboardHandler = function (keyboardHandler, cb) { + if (keyboardHandler && typeof keyboardHandler === "string" && keyboardHandler != "ace") { this.$keybindingId = keyboardHandler; var _self = this; - config.loadModule(["keybinding", keyboardHandler], function(module) { + config.loadModule(["keybinding", keyboardHandler], function (module) { if (_self.$keybindingId == keyboardHandler) _self.keyBinding.setKeyboardHandler(module && module.handler); cb && cb(); }); - } else { + } + else { this.$keybindingId = null; this.keyBinding.setKeyboardHandler(keyboardHandler); cb && cb(); } }; - this.getKeyboardHandler = function() { + Editor.prototype.getKeyboardHandler = function () { return this.keyBinding.getKeyboardHandler(); }; - this.setSession = function(session) { + Editor.prototype.setSession = function (session) { if (this.session == session) return; - if (this.curOp) this.endOperation(); + if (this.curOp) + this.endOperation(); this.curOp = {}; - var oldSession = this.session; if (oldSession) { this.session.off("change", this.$onDocumentChange); @@ -13012,69 +13840,47 @@ Editor.$uid = 0; this.session.off("changeOverwrite", this.$onCursorChange); this.session.off("changeScrollTop", this.$onScrollTopChange); this.session.off("changeScrollLeft", this.$onScrollLeftChange); - var selection = this.session.getSelection(); selection.off("changeCursor", this.$onCursorChange); selection.off("changeSelection", this.$onSelectionChange); } - this.session = session; if (session) { this.$onDocumentChange = this.onDocumentChange.bind(this); session.on("change", this.$onDocumentChange); this.renderer.setSession(session); - this.$onChangeMode = this.onChangeMode.bind(this); session.on("changeMode", this.$onChangeMode); - this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this); session.on("tokenizerUpdate", this.$onTokenizerUpdate); - this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer); session.on("changeTabSize", this.$onChangeTabSize); - this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this); session.on("changeWrapLimit", this.$onChangeWrapLimit); - this.$onChangeWrapMode = this.onChangeWrapMode.bind(this); session.on("changeWrapMode", this.$onChangeWrapMode); - this.$onChangeFold = this.onChangeFold.bind(this); session.on("changeFold", this.$onChangeFold); - this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this); this.session.on("changeFrontMarker", this.$onChangeFrontMarker); - this.$onChangeBackMarker = this.onChangeBackMarker.bind(this); this.session.on("changeBackMarker", this.$onChangeBackMarker); - this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this); this.session.on("changeBreakpoint", this.$onChangeBreakpoint); - this.$onChangeAnnotation = this.onChangeAnnotation.bind(this); this.session.on("changeAnnotation", this.$onChangeAnnotation); - this.$onCursorChange = this.onCursorChange.bind(this); this.session.on("changeOverwrite", this.$onCursorChange); - this.$onScrollTopChange = this.onScrollTopChange.bind(this); this.session.on("changeScrollTop", this.$onScrollTopChange); - this.$onScrollLeftChange = this.onScrollLeftChange.bind(this); this.session.on("changeScrollLeft", this.$onScrollLeftChange); - this.selection = session.getSelection(); this.selection.on("changeCursor", this.$onCursorChange); - this.$onSelectionChange = this.onSelectionChange.bind(this); this.selection.on("changeSelection", this.$onSelectionChange); - this.onChangeMode(); - - this.$blockScrolling += 1; this.onCursorChange(); - this.$blockScrolling -= 1; - this.onScrollTopChange(); this.onScrollLeftChange(); this.onSelectionChange(); @@ -13084,187 +13890,132 @@ Editor.$uid = 0; this.onChangeAnnotation(); this.session.getUseWrapMode() && this.renderer.adjustWrapLimit(); this.renderer.updateFull(); - } else { + } + else { this.selection = null; this.renderer.setSession(session); } - this._signal("changeSession", { session: session, oldSession: oldSession }); - this.curOp = null; - - oldSession && oldSession._signal("changeEditor", {oldEditor: this}); - session && session._signal("changeEditor", {editor: this}); - - if (session && session.bgTokenizer) + oldSession && oldSession._signal("changeEditor", { oldEditor: this }); + session && session._signal("changeEditor", { editor: this }); + if (session && !session.destroyed) session.bgTokenizer.scheduleStart(); }; - this.getSession = function() { + Editor.prototype.getSession = function () { return this.session; }; - this.setValue = function(val, cursorPos) { + Editor.prototype.setValue = function (val, cursorPos) { this.session.doc.setValue(val); - if (!cursorPos) this.selectAll(); else if (cursorPos == 1) this.navigateFileEnd(); else if (cursorPos == -1) this.navigateFileStart(); - return val; }; - this.getValue = function() { + Editor.prototype.getValue = function () { return this.session.getValue(); }; - this.getSelection = function() { + Editor.prototype.getSelection = function () { return this.selection; }; - this.resize = function(force) { + Editor.prototype.resize = function (force) { this.renderer.onResize(force); }; - this.setTheme = function(theme, cb) { + Editor.prototype.setTheme = function (theme, cb) { this.renderer.setTheme(theme, cb); }; - this.getTheme = function() { + Editor.prototype.getTheme = function () { return this.renderer.getTheme(); }; - this.setStyle = function(style) { + Editor.prototype.setStyle = function (style) { this.renderer.setStyle(style); }; - this.unsetStyle = function(style) { + Editor.prototype.unsetStyle = function (style) { this.renderer.unsetStyle(style); }; - this.getFontSize = function () { + Editor.prototype.getFontSize = function () { return this.getOption("fontSize") || - dom.computedStyle(this.container, "fontSize"); + dom.computedStyle(this.container).fontSize; }; - this.setFontSize = function(size) { + Editor.prototype.setFontSize = function (size) { this.setOption("fontSize", size); }; - - this.$highlightBrackets = function() { - if (this.session.$bracketHighlight) { - this.session.removeMarker(this.session.$bracketHighlight); - this.session.$bracketHighlight = null; - } - + Editor.prototype.$highlightBrackets = function () { if (this.$highlightPending) { return; } var self = this; this.$highlightPending = true; - setTimeout(function() { + setTimeout(function () { self.$highlightPending = false; var session = self.session; - if (!session || !session.bgTokenizer) return; - var pos = session.findMatchingBracket(self.getCursorPosition()); - if (pos) { - var range = new Range(pos.row, pos.column, pos.row, pos.column + 1); - } else if (session.$mode.getMatching) { - var range = session.$mode.getMatching(self.session); + if (!session || session.destroyed) + return; + if (session.$bracketHighlight) { + session.$bracketHighlight.markerIds.forEach(function (id) { + session.removeMarker(id); + }); + session.$bracketHighlight = null; } - if (range) - session.$bracketHighlight = session.addMarker(range, "ace_bracket", "text"); - }, 50); - }; - this.$highlightTags = function() { - if (this.$highlightTagPending) - return; - var self = this; - this.$highlightTagPending = true; - setTimeout(function() { - self.$highlightTagPending = false; - - var session = self.session; - if (!session || !session.bgTokenizer) return; - var pos = self.getCursorPosition(); - var iterator = new TokenIterator(self.session, pos.row, pos.column); - var token = iterator.getCurrentToken(); - - if (!token || !/\b(?:tag-open|tag-name)/.test(token.type)) { - session.removeMarker(session.$tagHighlight); - session.$tagHighlight = null; + var handler = self.getKeyboardHandler(); + var isBackwards = handler && handler.$getDirectionForHighlight && handler.$getDirectionForHighlight(self); + var ranges = session.getMatchingBracketRanges(pos, isBackwards); + if (!ranges) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + if (token && /\b(?:tag-open|tag-name)/.test(token.type)) { + var tagNamesRanges = session.getMatchingTags(pos); + if (tagNamesRanges) + ranges = [tagNamesRanges.openTagName, tagNamesRanges.closeTagName]; + } + } + if (!ranges && session.$mode.getMatching) + ranges = session.$mode.getMatching(self.session); + if (!ranges) { + if (self.getHighlightIndentGuides()) + self.renderer.$textLayer.$highlightIndentGuide(); return; } - - if (token.type.indexOf("tag-open") != -1) { - token = iterator.stepForward(); - if (!token) - return; + var markerType = "ace_bracket"; + if (!Array.isArray(ranges)) { + ranges = [ranges]; } - - var tag = token.value; - var depth = 0; - var prevToken = iterator.stepBackward(); - - if (prevToken.value == '<'){ - do { - prevToken = token; - token = iterator.stepForward(); - - if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) { - if (prevToken.value === '<'){ - depth++; - } else if (prevToken.value === '= 0); - } else { - do { - token = prevToken; - prevToken = iterator.stepBackward(); - - if (token && token.value === tag && token.type.indexOf('tag-name') !== -1) { - if (prevToken.value === '<') { - depth++; - } else if (prevToken.value === ' 1)) highlight = false; } - if (session.$highlightLineMarker && !highlight) { session.removeMarker(session.$highlightLineMarker.id); session.$highlightLineMarker = null; - } else if (!session.$highlightLineMarker && highlight) { + } + else if (!session.$highlightLineMarker && highlight) { var range = new Range(highlight.row, highlight.column, highlight.row, Infinity); range.id = session.addMarker(range, "ace_active-line", "screenLine"); session.$highlightLineMarker = range; - } else if (highlight) { + } + else if (highlight) { session.$highlightLineMarker.start.row = highlight.row; session.$highlightLineMarker.end.row = highlight.row; session.$highlightLineMarker.start.column = highlight.column; session._signal("changeBackMarker"); } }; - - this.onSelectionChange = function(e) { + Editor.prototype.onSelectionChange = function (e) { var session = this.session; - if (session.$selectionMarker) { session.removeMarker(session.$selectionMarker); } session.$selectionMarker = null; - if (!this.selection.isEmpty()) { var range = this.selection.getRange(); var style = this.getSelectionStyle(); session.$selectionMarker = session.addMarker(range, "ace_selection", style); - } else { + } + else { this.$updateHighlightActiveLine(); } - var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp(); this.session.highlight(re); - this._signal("changeSelection"); }; - - this.$getSelectionHighLightRegexp = function() { + Editor.prototype.$getSelectionHighLightRegexp = function () { var session = this.session; - var selection = this.getSelectionRange(); if (selection.isEmpty() || selection.isMultiLine()) return; - - var startOuter = selection.start.column - 1; - var endOuter = selection.end.column + 1; + var startColumn = selection.start.column; + var endColumn = selection.end.column; var line = session.getLine(selection.start.row); - var lineCols = line.length; - var needle = line.substring(Math.max(startOuter, 0), - Math.min(endOuter, lineCols)); - if ((startOuter >= 0 && /^[\w\d]/.test(needle)) || - (endOuter <= lineCols && /[\w\d]$/.test(needle))) + var needle = line.substring(startColumn, endColumn); + if (needle.length > 5000 || !/[\w\d]/.test(needle)) return; - - needle = line.substring(selection.start.column, selection.end.column); - if (!/^[\w\d]+$/.test(needle)) - return; - var re = this.$search.$assembleRegExp({ wholeWord: true, caseSensitive: true, needle: needle }); - + var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1); + if (!re.test(wordWithBoundary)) + return; return re; }; - - - this.onChangeFrontMarker = function() { + Editor.prototype.onChangeFrontMarker = function () { this.renderer.updateFrontMarkers(); }; - - this.onChangeBackMarker = function() { + Editor.prototype.onChangeBackMarker = function () { this.renderer.updateBackMarkers(); }; - - - this.onChangeBreakpoint = function() { + Editor.prototype.onChangeBreakpoint = function () { this.renderer.updateBreakpoints(); }; - - this.onChangeAnnotation = function() { + Editor.prototype.onChangeAnnotation = function () { this.renderer.setAnnotations(this.session.getAnnotations()); }; - - - this.onChangeMode = function(e) { + Editor.prototype.onChangeMode = function (e) { this.renderer.updateText(); this._emit("changeMode", e); }; - - - this.onChangeWrapLimit = function() { + Editor.prototype.onChangeWrapLimit = function () { this.renderer.updateFull(); }; - - this.onChangeWrapMode = function() { + Editor.prototype.onChangeWrapMode = function () { this.renderer.onResize(true); }; - - - this.onChangeFold = function() { + Editor.prototype.onChangeFold = function () { this.$updateHighlightActiveLine(); this.renderer.updateFull(); }; - this.getSelectedText = function() { + Editor.prototype.getSelectedText = function () { return this.session.getTextRange(this.getSelectionRange()); }; - this.getCopyText = function() { + Editor.prototype.getCopyText = function () { var text = this.getSelectedText(); - this._signal("copy", text); - return text; + var nl = this.session.doc.getNewLineCharacter(); + var copyLine = false; + if (!text && this.$copyWithEmptySelection) { + copyLine = true; + var ranges = this.selection.getAllRanges(); + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (i && ranges[i - 1].start.row == range.start.row) + continue; + text += this.session.getLine(range.start.row) + nl; + } + } + var e = { text: text }; + this._signal("copy", e); + clipboard.lineMode = copyLine ? e.text : false; + return e.text; }; - this.onCopy = function() { + Editor.prototype.onCopy = function () { this.commands.exec("copy", this); }; - this.onCut = function() { + Editor.prototype.onCut = function () { this.commands.exec("cut", this); }; - this.onPaste = function(text, event) { - var e = {text: text, event: event}; + Editor.prototype.onPaste = function (text, event) { + var e = { text: text, event: event }; this.commands.exec("paste", this, e); }; - - this.$handlePaste = function(e) { - if (typeof e == "string") - e = {text: e}; + Editor.prototype.$handlePaste = function (e) { + if (typeof e == "string") + e = { text: e }; this._signal("paste", e); var text = e.text; + var lineMode = text === clipboard.lineMode; + var session = this.session; if (!this.inMultiSelectMode || this.inVirtualSelectionMode) { - this.insert(text); - } else { + if (lineMode) + session.insert({ row: this.selection.lead.row, column: 0 }, text); + else + this.insert(text); + } + else if (lineMode) { + this.selection.rangeList.ranges.forEach(function (range) { + session.insert({ row: range.start.row, column: 0 }, text); + }); + } + else { var lines = text.split(/\r\n|\r|\n/); var ranges = this.selection.rangeList.ranges; - - if (lines.length > ranges.length || lines.length < 2 || !lines[1]) + var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]); + if (lines.length != ranges.length || isFullLine) return this.commands.exec("insertstring", this, text); - for (var i = ranges.length; i--;) { var range = ranges[i]; if (!range.isEmpty()) - this.session.remove(range); - - this.session.insert(range.start, lines[i]); + session.remove(range); + session.insert(range.start, lines[i]); } } }; - - this.execCommand = function(command, args) { + Editor.prototype.execCommand = function (command, args) { return this.commands.exec(command, this, args); }; - this.insert = function(text, pasted) { + Editor.prototype.insert = function (text, pasted) { var session = this.session; var mode = session.getMode(); var cursor = this.getCursorPosition(); - if (this.getBehavioursEnabled() && !pasted) { var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text); if (transform) { if (text !== transform.text) { - this.session.mergeUndoDeltas = false; - this.$mergeNextCommand = false; + if (!this.inVirtualSelectionMode) { + this.session.mergeUndoDeltas = false; + this.mergeNextCommand = false; + } } text = transform.text; - } } - if (text == "\t") text = this.session.getTabString(); if (!this.selection.isEmpty()) { @@ -13511,11 +14240,10 @@ Editor.$uid = 0; this.clearSelection(); } else if (this.session.getOverwrite() && text.indexOf("\n") == -1) { - var range = new Range.fromPoints(cursor, cursor); + var range = Range.fromPoints(cursor, cursor); range.end.column += text.length; this.session.remove(range); } - if (text == "\n" || text == "\r\n") { var line = session.getLine(cursor.row); if (cursor.column > line.search(/\S|$/)) { @@ -13524,170 +14252,221 @@ Editor.$uid = 0; } } this.clearSelection(); - var start = cursor.column; var lineState = session.getState(cursor.row); var line = session.getLine(cursor.row); var shouldOutdent = mode.checkOutdent(lineState, line, text); - var end = session.insert(cursor, text); - + session.insert(cursor, text); if (transform && transform.selection) { if (transform.selection.length == 2) { // Transform relative to the current column - this.selection.setSelectionRange( - new Range(cursor.row, start + transform.selection[0], - cursor.row, start + transform.selection[1])); - } else { // Transform relative to the current row. - this.selection.setSelectionRange( - new Range(cursor.row + transform.selection[0], - transform.selection[1], - cursor.row + transform.selection[2], - transform.selection[3])); + this.selection.setSelectionRange(new Range(cursor.row, start + transform.selection[0], cursor.row, start + transform.selection[1])); + } + else { // Transform relative to the current row. + this.selection.setSelectionRange(new Range(cursor.row + transform.selection[0], transform.selection[1], cursor.row + transform.selection[2], transform.selection[3])); } } - - if (session.getDocument().isNewLine(text)) { - var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); - - session.insert({row: cursor.row+1, column: 0}, lineIndent); + if (this.$enableAutoIndent) { + if (session.getDocument().isNewLine(text)) { + var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString()); + session.insert({ row: cursor.row + 1, column: 0 }, lineIndent); + } + if (shouldOutdent) + mode.autoOutdent(lineState, session, cursor.row); } - if (shouldOutdent) - mode.autoOutdent(lineState, session, cursor.row); }; - - this.onTextInput = function(text) { - this.keyBinding.onTextInput(text); + Editor.prototype.autoIndent = function () { + var session = this.session; + var mode = session.getMode(); + var ranges = this.selection.isEmpty() + ? [new Range(0, 0, session.doc.getLength() - 1, 0)] + : this.selection.getAllRanges(); + var prevLineState = ""; + var prevLine = ""; + var lineIndent = ""; + var tab = session.getTabString(); + for (var i = 0; i < ranges.length; i++) { + var startRow = ranges[i].start.row; + var endRow = ranges[i].end.row; + for (var row = startRow; row <= endRow; row++) { + if (row > 0) { + prevLineState = session.getState(row - 1); + prevLine = session.getLine(row - 1); + lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab); + } + var line = session.getLine(row); + var currIndent = mode.$getIndent(line); + if (lineIndent !== currIndent) { + if (currIndent.length > 0) { + var range = new Range(row, 0, row, currIndent.length); + session.remove(range); + } + if (lineIndent.length > 0) { + session.insert({ row: row, column: 0 }, lineIndent); + } + } + mode.autoOutdent(prevLineState, session, row); + } + } }; - - this.onCommandKey = function(e, hashId, keyCode) { - this.keyBinding.onCommandKey(e, hashId, keyCode); + Editor.prototype.onTextInput = function (text, composition) { + if (!composition) + return this.keyBinding.onTextInput(text); + this.startOperation({ command: { name: "insertstring" } }); + var applyComposition = this.applyComposition.bind(this, text, composition); + if (this.selection.rangeCount) + this.forEachSelection(applyComposition); + else + applyComposition(); + this.endOperation(); }; - this.setOverwrite = function(overwrite) { + Editor.prototype.applyComposition = function (text, composition) { + if (composition.extendLeft || composition.extendRight) { + var r = this.selection.getRange(); + r.start.column -= composition.extendLeft; + r.end.column += composition.extendRight; + if (r.start.column < 0) { + r.start.row--; + r.start.column += this.session.getLine(r.start.row).length + 1; + } + this.selection.setRange(r); + if (!text && !r.isEmpty()) + this.remove(); + } + if (text || !this.selection.isEmpty()) + this.insert(text, true); + if (composition.restoreStart || composition.restoreEnd) { + var r = this.selection.getRange(); + r.start.column -= composition.restoreStart; + r.end.column -= composition.restoreEnd; + this.selection.setRange(r); + } + }; + Editor.prototype.onCommandKey = function (e, hashId, keyCode) { + return this.keyBinding.onCommandKey(e, hashId, keyCode); + }; + Editor.prototype.setOverwrite = function (overwrite) { this.session.setOverwrite(overwrite); }; - this.getOverwrite = function() { + Editor.prototype.getOverwrite = function () { return this.session.getOverwrite(); }; - this.toggleOverwrite = function() { + Editor.prototype.toggleOverwrite = function () { this.session.toggleOverwrite(); }; - this.setScrollSpeed = function(speed) { + Editor.prototype.setScrollSpeed = function (speed) { this.setOption("scrollSpeed", speed); }; - this.getScrollSpeed = function() { + Editor.prototype.getScrollSpeed = function () { return this.getOption("scrollSpeed"); }; - this.setDragDelay = function(dragDelay) { + Editor.prototype.setDragDelay = function (dragDelay) { this.setOption("dragDelay", dragDelay); }; - this.getDragDelay = function() { + Editor.prototype.getDragDelay = function () { return this.getOption("dragDelay"); }; - this.setSelectionStyle = function(val) { + Editor.prototype.setSelectionStyle = function (val) { this.setOption("selectionStyle", val); }; - this.getSelectionStyle = function() { + Editor.prototype.getSelectionStyle = function () { return this.getOption("selectionStyle"); }; - this.setHighlightActiveLine = function(shouldHighlight) { + Editor.prototype.setHighlightActiveLine = function (shouldHighlight) { this.setOption("highlightActiveLine", shouldHighlight); }; - this.getHighlightActiveLine = function() { + Editor.prototype.getHighlightActiveLine = function () { return this.getOption("highlightActiveLine"); }; - this.setHighlightGutterLine = function(shouldHighlight) { + Editor.prototype.setHighlightGutterLine = function (shouldHighlight) { this.setOption("highlightGutterLine", shouldHighlight); }; - - this.getHighlightGutterLine = function() { + Editor.prototype.getHighlightGutterLine = function () { return this.getOption("highlightGutterLine"); }; - this.setHighlightSelectedWord = function(shouldHighlight) { + Editor.prototype.setHighlightSelectedWord = function (shouldHighlight) { this.setOption("highlightSelectedWord", shouldHighlight); }; - this.getHighlightSelectedWord = function() { + Editor.prototype.getHighlightSelectedWord = function () { return this.$highlightSelectedWord; }; - - this.setAnimatedScroll = function(shouldAnimate){ + Editor.prototype.setAnimatedScroll = function (shouldAnimate) { this.renderer.setAnimatedScroll(shouldAnimate); }; - - this.getAnimatedScroll = function(){ + Editor.prototype.getAnimatedScroll = function () { return this.renderer.getAnimatedScroll(); }; - this.setShowInvisibles = function(showInvisibles) { + Editor.prototype.setShowInvisibles = function (showInvisibles) { this.renderer.setShowInvisibles(showInvisibles); }; - this.getShowInvisibles = function() { + Editor.prototype.getShowInvisibles = function () { return this.renderer.getShowInvisibles(); }; - - this.setDisplayIndentGuides = function(display) { + Editor.prototype.setDisplayIndentGuides = function (display) { this.renderer.setDisplayIndentGuides(display); }; - - this.getDisplayIndentGuides = function() { + Editor.prototype.getDisplayIndentGuides = function () { return this.renderer.getDisplayIndentGuides(); }; - this.setShowPrintMargin = function(showPrintMargin) { + Editor.prototype.setHighlightIndentGuides = function (highlight) { + this.renderer.setHighlightIndentGuides(highlight); + }; + Editor.prototype.getHighlightIndentGuides = function () { + return this.renderer.getHighlightIndentGuides(); + }; + Editor.prototype.setShowPrintMargin = function (showPrintMargin) { this.renderer.setShowPrintMargin(showPrintMargin); }; - this.getShowPrintMargin = function() { + Editor.prototype.getShowPrintMargin = function () { return this.renderer.getShowPrintMargin(); }; - this.setPrintMarginColumn = function(showPrintMargin) { + Editor.prototype.setPrintMarginColumn = function (showPrintMargin) { this.renderer.setPrintMarginColumn(showPrintMargin); }; - this.getPrintMarginColumn = function() { + Editor.prototype.getPrintMarginColumn = function () { return this.renderer.getPrintMarginColumn(); }; - this.setReadOnly = function(readOnly) { + Editor.prototype.setReadOnly = function (readOnly) { this.setOption("readOnly", readOnly); }; - this.getReadOnly = function() { + Editor.prototype.getReadOnly = function () { return this.getOption("readOnly"); }; - this.setBehavioursEnabled = function (enabled) { + Editor.prototype.setBehavioursEnabled = function (enabled) { this.setOption("behavioursEnabled", enabled); }; - this.getBehavioursEnabled = function () { + Editor.prototype.getBehavioursEnabled = function () { return this.getOption("behavioursEnabled"); }; - this.setWrapBehavioursEnabled = function (enabled) { + Editor.prototype.setWrapBehavioursEnabled = function (enabled) { this.setOption("wrapBehavioursEnabled", enabled); }; - this.getWrapBehavioursEnabled = function () { + Editor.prototype.getWrapBehavioursEnabled = function () { return this.getOption("wrapBehavioursEnabled"); }; - this.setShowFoldWidgets = function(show) { + Editor.prototype.setShowFoldWidgets = function (show) { this.setOption("showFoldWidgets", show); - }; - this.getShowFoldWidgets = function() { + Editor.prototype.getShowFoldWidgets = function () { return this.getOption("showFoldWidgets"); }; - - this.setFadeFoldWidgets = function(fade) { + Editor.prototype.setFadeFoldWidgets = function (fade) { this.setOption("fadeFoldWidgets", fade); }; - - this.getFadeFoldWidgets = function() { + Editor.prototype.getFadeFoldWidgets = function () { return this.getOption("fadeFoldWidgets"); }; - this.remove = function(dir) { - if (this.selection.isEmpty()){ + Editor.prototype.remove = function (dir) { + if (this.selection.isEmpty()) { if (dir == "left") this.selection.selectLeft(); else this.selection.selectRight(); } - var range = this.getSelectionRange(); if (this.getBehavioursEnabled()) { var session = this.session; var state = session.getState(range.start.row); var new_range = session.getMode().transformAction(state, 'deletion', this, session, range); - if (range.end.column === 0) { var text = session.getTextRange(range); if (text[text.length - 1] == "\n") { @@ -13700,108 +14479,111 @@ Editor.$uid = 0; if (new_range) range = new_range; } - this.session.remove(range); this.clearSelection(); }; - this.removeWordRight = function() { + Editor.prototype.removeWordRight = function () { if (this.selection.isEmpty()) this.selection.selectWordRight(); - this.session.remove(this.getSelectionRange()); this.clearSelection(); }; - this.removeWordLeft = function() { + Editor.prototype.removeWordLeft = function () { if (this.selection.isEmpty()) this.selection.selectWordLeft(); - this.session.remove(this.getSelectionRange()); this.clearSelection(); }; - this.removeToLineStart = function() { + Editor.prototype.removeToLineStart = function () { if (this.selection.isEmpty()) this.selection.selectLineStart(); - + if (this.selection.isEmpty()) + this.selection.selectLeft(); this.session.remove(this.getSelectionRange()); this.clearSelection(); }; - this.removeToLineEnd = function() { + Editor.prototype.removeToLineEnd = function () { if (this.selection.isEmpty()) this.selection.selectLineEnd(); - var range = this.getSelectionRange(); if (range.start.column == range.end.column && range.start.row == range.end.row) { range.end.column = 0; range.end.row++; } - this.session.remove(range); this.clearSelection(); }; - this.splitLine = function() { + Editor.prototype.splitLine = function () { if (!this.selection.isEmpty()) { this.session.remove(this.getSelectionRange()); this.clearSelection(); } - var cursor = this.getCursorPosition(); this.insert("\n"); this.moveCursorToPosition(cursor); }; - this.transposeLetters = function() { + Editor.prototype.setGhostText = function (text, position) { + if (!this.session.widgetManager) { + this.session.widgetManager = new LineWidgets(this.session); + this.session.widgetManager.attach(this); + } + this.renderer.setGhostText(text, position); + }; + Editor.prototype.removeGhostText = function () { + if (!this.session.widgetManager) + return; + this.renderer.removeGhostText(); + }; + Editor.prototype.transposeLetters = function () { if (!this.selection.isEmpty()) { return; } - var cursor = this.getCursorPosition(); var column = cursor.column; if (column === 0) return; - var line = this.session.getLine(cursor.row); var swap, range; if (column < line.length) { - swap = line.charAt(column) + line.charAt(column-1); - range = new Range(cursor.row, column-1, cursor.row, column+1); + swap = line.charAt(column) + line.charAt(column - 1); + range = new Range(cursor.row, column - 1, cursor.row, column + 1); } else { - swap = line.charAt(column-1) + line.charAt(column-2); - range = new Range(cursor.row, column-2, cursor.row, column); + swap = line.charAt(column - 1) + line.charAt(column - 2); + range = new Range(cursor.row, column - 2, cursor.row, column); } this.session.replace(range, swap); this.session.selection.moveToPosition(range.end); }; - this.toLowerCase = function() { + Editor.prototype.toLowerCase = function () { var originalRange = this.getSelectionRange(); if (this.selection.isEmpty()) { this.selection.selectWord(); } - var range = this.getSelectionRange(); var text = this.session.getTextRange(range); this.session.replace(range, text.toLowerCase()); this.selection.setSelectionRange(originalRange); }; - this.toUpperCase = function() { + Editor.prototype.toUpperCase = function () { var originalRange = this.getSelectionRange(); if (this.selection.isEmpty()) { this.selection.selectWord(); } - var range = this.getSelectionRange(); var text = this.session.getTextRange(range); this.session.replace(range, text.toUpperCase()); this.selection.setSelectionRange(originalRange); }; - this.indent = function() { + Editor.prototype.indent = function () { var session = this.session; var range = this.getSelectionRange(); - if (range.start.row < range.end.row) { var rows = this.$getSelectedRows(); session.indentRows(rows.first, rows.last, "\t"); return; - } else if (range.start.column < range.end.column) { + } + else if (range.start.column < range.end.column) { var text = session.getTextRange(range); if (!/^\s+$/.test(text)) { var rows = this.$getSelectedRows(); @@ -13809,16 +14591,15 @@ Editor.$uid = 0; return; } } - var line = session.getLine(range.start.row); var position = range.start; var size = session.getTabSize(); var column = session.documentToScreenColumn(position.row, position.column); - if (this.session.getUseSoftTabs()) { var count = (size - column % size); var indentString = lang.stringRepeat(" ", count); - } else { + } + else { var count = column % size; while (line[range.start.column - 1] == " " && count) { range.start.column--; @@ -13829,106 +14610,188 @@ Editor.$uid = 0; } return this.insert(indentString); }; - this.blockIndent = function() { + Editor.prototype.blockIndent = function () { var rows = this.$getSelectedRows(); this.session.indentRows(rows.first, rows.last, "\t"); }; - this.blockOutdent = function() { + Editor.prototype.blockOutdent = function () { var selection = this.session.getSelection(); this.session.outdentRows(selection.getRange()); }; - this.sortLines = function() { + Editor.prototype.sortLines = function () { var rows = this.$getSelectedRows(); var session = this.session; - var lines = []; for (var i = rows.first; i <= rows.last; i++) lines.push(session.getLine(i)); - - lines.sort(function(a, b) { - if (a.toLowerCase() < b.toLowerCase()) return -1; - if (a.toLowerCase() > b.toLowerCase()) return 1; + lines.sort(function (a, b) { + if (a.toLowerCase() < b.toLowerCase()) + return -1; + if (a.toLowerCase() > b.toLowerCase()) + return 1; return 0; }); - var deleteRange = new Range(0, 0, 0, 0); for (var i = rows.first; i <= rows.last; i++) { var line = session.getLine(i); deleteRange.start.row = i; deleteRange.end.row = i; deleteRange.end.column = line.length; - session.replace(deleteRange, lines[i-rows.first]); + session.replace(deleteRange, lines[i - rows.first]); } }; - this.toggleCommentLines = function() { + Editor.prototype.toggleCommentLines = function () { var state = this.session.getState(this.getCursorPosition().row); var rows = this.$getSelectedRows(); this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last); }; - - this.toggleBlockComment = function() { + Editor.prototype.toggleBlockComment = function () { var cursor = this.getCursorPosition(); var state = this.session.getState(cursor.row); var range = this.getSelectionRange(); this.session.getMode().toggleBlockComment(state, this.session, range, cursor); }; - this.getNumberAt = function(row, column) { + Editor.prototype.getNumberAt = function (row, column) { var _numberRx = /[\-]?[0-9]+(?:\.[0-9]+)?/g; _numberRx.lastIndex = 0; - var s = this.session.getLine(row); while (_numberRx.lastIndex < column) { var m = _numberRx.exec(s); - if(m.index <= column && m.index+m[0].length >= column){ + if (m.index <= column && m.index + m[0].length >= column) { var number = { value: m[0], start: m.index, - end: m.index+m[0].length + end: m.index + m[0].length }; return number; } } return null; }; - this.modifyNumber = function(amount) { + Editor.prototype.modifyNumber = function (amount) { var row = this.selection.getCursor().row; var column = this.selection.getCursor().column; - var charRange = new Range(row, column-1, row, column); - + var charRange = new Range(row, column - 1, row, column); var c = this.session.getTextRange(charRange); if (!isNaN(parseFloat(c)) && isFinite(c)) { var nr = this.getNumberAt(row, column); if (nr) { var fp = nr.value.indexOf(".") >= 0 ? nr.start + nr.value.indexOf(".") + 1 : nr.end; var decimals = nr.start + nr.value.length - fp; - var t = parseFloat(nr.value); t *= Math.pow(10, decimals); - - - if(fp !== nr.end && column < fp){ + if (fp !== nr.end && column < fp) { amount *= Math.pow(10, nr.end - column - 1); - } else { + } + else { amount *= Math.pow(10, nr.end - column); } - t += amount; t /= Math.pow(10, decimals); var nnr = t.toFixed(decimals); var replaceRange = new Range(row, nr.start, row, nr.end); this.session.replace(replaceRange, nnr); - this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length)); - + this.moveCursorTo(row, Math.max(nr.start + 1, column + nnr.length - nr.value.length)); + } + } + else { + this.toggleWord(); + } + }; + Editor.prototype.toggleWord = function () { + var row = this.selection.getCursor().row; + var column = this.selection.getCursor().column; + this.selection.selectWord(); + var currentState = this.getSelectedText(); + var currWordStart = this.selection.getWordRange().start.column; + var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\s/); + var delta = column - currWordStart - 1; + if (delta < 0) + delta = 0; + var curLength = 0, itLength = 0; + var that = this; + if (currentState.match(/[A-Za-z0-9_]+/)) { + wordParts.forEach(function (item, i) { + itLength = curLength + item.length; + if (delta >= curLength && delta <= itLength) { + currentState = item; + that.selection.clearSelection(); + that.moveCursorTo(row, curLength + currWordStart); + that.selection.selectTo(row, itLength + currWordStart); + } + curLength = itLength; + }); + } + var wordPairs = this.$toggleWordPairs; + var reg; + for (var i = 0; i < wordPairs.length; i++) { + var item = wordPairs[i]; + for (var j = 0; j <= 1; j++) { + var negate = +!j; + var firstCondition = currentState.match(new RegExp('^\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\s?$', 'i')); + if (firstCondition) { + var secondCondition = currentState.match(new RegExp('([_]|^|\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\s)', 'g')); + if (secondCondition) { + reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) { + var res = item[negate]; + if (result.toUpperCase() == result) { + res = res.toUpperCase(); + } + else if (result.charAt(0).toUpperCase() == result.charAt(0)) { + res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1); + } + return res; + }); + this.insert(reg); + reg = ""; + } + } } } }; - this.removeLines = function() { + Editor.prototype.findLinkAt = function (row, column) { + var e_1, _a; + var line = this.session.getLine(row); + var wordParts = line.split(/((?:https?|ftp):\/\/[\S]+)/); + var columnPosition = column; + if (columnPosition < 0) + columnPosition = 0; + var previousPosition = 0, currentPosition = 0, match; + try { + for (var wordParts_1 = __values(wordParts), wordParts_1_1 = wordParts_1.next(); !wordParts_1_1.done; wordParts_1_1 = wordParts_1.next()) { + var item = wordParts_1_1.value; + currentPosition = previousPosition + item.length; + if (columnPosition >= previousPosition && columnPosition <= currentPosition) { + if (item.match(/((?:https?|ftp):\/\/[\S]+)/)) { + match = item.replace(/[\s:.,'";}\]]+$/, ""); + break; + } + } + previousPosition = currentPosition; + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (wordParts_1_1 && !wordParts_1_1.done && (_a = wordParts_1.return)) _a.call(wordParts_1); + } + finally { if (e_1) throw e_1.error; } + } + return match; + }; + Editor.prototype.openLink = function () { + var cursor = this.selection.getCursor(); + var url = this.findLinkAt(cursor.row, cursor.column); + if (url) + window.open(url, '_blank'); + return url != null; + }; + Editor.prototype.removeLines = function () { var rows = this.$getSelectedRows(); this.session.removeFullLines(rows.first, rows.last); this.clearSelection(); }; - - this.duplicateSelection = function() { + Editor.prototype.duplicateSelection = function () { var sel = this.selection; var doc = this.session; var range = sel.getRange(); @@ -13936,45 +14799,46 @@ Editor.$uid = 0; if (range.isEmpty()) { var row = range.start.row; doc.duplicateLines(row, row); - } else { + } + else { var point = reverse ? range.start : range.end; - var endPoint = doc.insert(point, doc.getTextRange(range), false); + var endPoint = doc.insert(point, doc.getTextRange(range)); range.start = point; range.end = endPoint; - sel.setSelectionRange(range, reverse); } }; - this.moveLinesDown = function() { + Editor.prototype.moveLinesDown = function () { this.$moveLines(1, false); }; - this.moveLinesUp = function() { + Editor.prototype.moveLinesUp = function () { this.$moveLines(-1, false); }; - this.moveText = function(range, toPosition, copy) { + Editor.prototype.moveText = function (range, toPosition, copy) { return this.session.moveText(range, toPosition, copy); }; - this.copyLinesUp = function() { + Editor.prototype.copyLinesUp = function () { this.$moveLines(-1, true); }; - this.copyLinesDown = function() { + Editor.prototype.copyLinesDown = function () { this.$moveLines(1, true); }; - this.$moveLines = function(dir, copy) { + Editor.prototype.$moveLines = function (dir, copy) { var rows, moved; var selection = this.selection; if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) { var range = selection.toOrientedRange(); rows = this.$getSelectedRows(range); moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir); - if (copy && dir == -1) moved = 0; + if (copy && dir == -1) + moved = 0; range.moveBy(moved, 0); selection.fromOrientedRange(range); - } else { + } + else { var ranges = selection.rangeList.ranges; selection.rangeList.detach(this.session); this.inVirtualSelectionMode = true; - var diff = 0; var totalDiff = 0; var l = ranges.length; @@ -13985,7 +14849,8 @@ Editor.$uid = 0; var first = rows.first; var last = rows.last; while (++i < l) { - if (totalDiff) ranges[i].moveBy(totalDiff, 0); + if (totalDiff) + ranges[i].moveBy(totalDiff, 0); var subRows = this.$getSelectedRows(ranges[i]); if (copy && subRows.first != last) break; @@ -13995,105 +14860,96 @@ Editor.$uid = 0; } i--; diff = this.session.$moveLines(first, last, copy ? 0 : dir); - if (copy && dir == -1) rangeIndex = i + 1; + if (copy && dir == -1) + rangeIndex = i + 1; while (rangeIndex <= i) { ranges[rangeIndex].moveBy(diff, 0); rangeIndex++; } - if (!copy) diff = 0; + if (!copy) + diff = 0; totalDiff += diff; } - selection.fromOrientedRange(selection.ranges[0]); selection.rangeList.attach(this.session); this.inVirtualSelectionMode = false; } }; - this.$getSelectedRows = function(range) { + Editor.prototype.$getSelectedRows = function (range) { range = (range || this.getSelectionRange()).collapseRows(); - return { first: this.session.getRowFoldStart(range.start.row), last: this.session.getRowFoldEnd(range.end.row) }; }; - - this.onCompositionStart = function(text) { - this.renderer.showComposition(this.getCursorPosition()); + Editor.prototype.onCompositionStart = function (compositionState) { + this.renderer.showComposition(compositionState); }; - - this.onCompositionUpdate = function(text) { + Editor.prototype.onCompositionUpdate = function (text) { this.renderer.setCompositionText(text); }; - - this.onCompositionEnd = function() { + Editor.prototype.onCompositionEnd = function () { this.renderer.hideComposition(); }; - this.getFirstVisibleRow = function() { + Editor.prototype.getFirstVisibleRow = function () { return this.renderer.getFirstVisibleRow(); }; - this.getLastVisibleRow = function() { + Editor.prototype.getLastVisibleRow = function () { return this.renderer.getLastVisibleRow(); }; - this.isRowVisible = function(row) { + Editor.prototype.isRowVisible = function (row) { return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow()); }; - this.isRowFullyVisible = function(row) { + Editor.prototype.isRowFullyVisible = function (row) { return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow()); }; - this.$getVisibleRowCount = function() { + Editor.prototype.$getVisibleRowCount = function () { return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1; }; - - this.$moveByPage = function(dir, select) { + Editor.prototype.$moveByPage = function (dir, select) { var renderer = this.renderer; var config = this.renderer.layerConfig; var rows = dir * Math.floor(config.height / config.lineHeight); - - this.$blockScrolling++; if (select === true) { - this.selection.$moveSelection(function(){ + this.selection.$moveSelection(function () { this.moveCursorBy(rows, 0); }); - } else if (select === false) { + } + else if (select === false) { this.selection.moveCursorBy(rows, 0); this.selection.clearSelection(); } - this.$blockScrolling--; - var scrollTop = renderer.scrollTop; - renderer.scrollBy(0, rows * config.lineHeight); if (select != null) renderer.scrollCursorIntoView(null, 0.5); - renderer.animateScrolling(scrollTop); }; - this.selectPageDown = function() { + Editor.prototype.selectPageDown = function () { this.$moveByPage(1, true); }; - this.selectPageUp = function() { + Editor.prototype.selectPageUp = function () { this.$moveByPage(-1, true); }; - this.gotoPageDown = function() { - this.$moveByPage(1, false); + Editor.prototype.gotoPageDown = function () { + this.$moveByPage(1, false); }; - this.gotoPageUp = function() { + Editor.prototype.gotoPageUp = function () { this.$moveByPage(-1, false); }; - this.scrollPageDown = function() { + Editor.prototype.scrollPageDown = function () { this.$moveByPage(1); }; - this.scrollPageUp = function() { + Editor.prototype.scrollPageUp = function () { this.$moveByPage(-1); }; - this.scrollToRow = function(row) { + Editor.prototype.scrollToRow = function (row) { this.renderer.scrollToRow(row); }; - this.scrollToLine = function(line, center, animate, callback) { + Editor.prototype.scrollToLine = function (line, center, animate, callback) { this.renderer.scrollToLine(line, center, animate, callback); }; - this.centerSelection = function() { + Editor.prototype.centerSelection = function () { var range = this.getSelectionRange(); var pos = { row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2), @@ -14101,36 +14957,38 @@ Editor.$uid = 0; }; this.renderer.alignCursor(pos, 0.5); }; - this.getCursorPosition = function() { + Editor.prototype.getCursorPosition = function () { return this.selection.getCursor(); }; - this.getCursorPositionScreen = function() { + Editor.prototype.getCursorPositionScreen = function () { return this.session.documentToScreenPosition(this.getCursorPosition()); }; - this.getSelectionRange = function() { + Editor.prototype.getSelectionRange = function () { return this.selection.getRange(); }; - this.selectAll = function() { - this.$blockScrolling += 1; + Editor.prototype.selectAll = function () { this.selection.selectAll(); - this.$blockScrolling -= 1; }; - this.clearSelection = function() { + Editor.prototype.clearSelection = function () { this.selection.clearSelection(); }; - this.moveCursorTo = function(row, column) { + Editor.prototype.moveCursorTo = function (row, column) { this.selection.moveCursorTo(row, column); }; - this.moveCursorToPosition = function(pos) { + Editor.prototype.moveCursorToPosition = function (pos) { this.selection.moveCursorToPosition(pos); }; - this.jumpToMatching = function(select, expand) { + Editor.prototype.jumpToMatching = function (select, expand) { var cursor = this.getCursorPosition(); var iterator = new TokenIterator(this.session, cursor.row, cursor.column); var prevToken = iterator.getCurrentToken(); + var tokenCount = 0; + if (prevToken && prevToken.type.indexOf('tag-name') !== -1) { + prevToken = iterator.stepBackward(); + } var token = prevToken || iterator.stepForward(); - - if (!token) return; + if (!token) + return; var matchType; var found = false; var depth = {}; @@ -14144,20 +15002,16 @@ Editor.$uid = 0; "{": "{", "}": "{" }; - do { if (token.value.match(/[{}()\[\]]/g)) { for (; i < token.value.length && !found; i++) { if (!brackets[token.value[i]]) { continue; } - bracketType = brackets[token.value[i]] + '.' + token.type.replace("rparen", "lparen"); - if (isNaN(depth[bracketType])) { depth[bracketType] = 0; } - switch (token.value[i]) { case '(': case '[': @@ -14168,132 +15022,102 @@ Editor.$uid = 0; case ']': case '}': depth[bracketType]--; - if (depth[bracketType] === -1) { matchType = 'bracket'; found = true; } - break; + break; } } } - else if (token && token.type.indexOf('tag-name') !== -1) { + else if (token.type.indexOf('tag-name') !== -1) { if (isNaN(depth[token.value])) { depth[token.value] = 0; } - - if (prevToken.value === '<') { + if (prevToken.value === '<' && tokenCount > 1) { depth[token.value]++; } else if (prevToken.value === '= 0; --i) { - if(this.$tryReplace(ranges[i], replacement)) { + if (this.$tryReplace(ranges[i], replacement)) { replaced++; } } - this.selection.setSelectionRange(selection); - this.$blockScrolling -= 1; - return replaced; }; - - this.$tryReplace = function(range, replacement) { + Editor.prototype.$tryReplace = function (range, replacement) { var input = this.session.getTextRange(range); replacement = this.$search.replace(input, replacement); if (replacement !== null) { range.end = this.session.replace(range, replacement); return range; - } else { + } + else { return null; } }; - this.getLastSearchOptions = function() { + Editor.prototype.getLastSearchOptions = function () { return this.$search.getOptions(); }; - this.find = function(needle, options, animate) { + Editor.prototype.find = function (needle, options, animate) { if (!options) options = {}; - if (typeof needle == "string" || needle instanceof RegExp) options.needle = needle; else if (typeof needle == "object") oop.mixin(options, needle); - var range = this.selection.getRange(); if (options.needle == null) { needle = this.session.getTextRange(range) @@ -14435,13 +15244,11 @@ Editor.$uid = 0; range = this.session.getWordRange(range.start.row, range.start.column); needle = this.session.getTextRange(range); } - this.$search.set({needle: needle}); + this.$search.set({ needle: needle }); } - this.$search.set(options); if (!options.start) - this.$search.set({start: range}); - + this.$search.set({ start: range }); var newRange = this.$search.find(this.session); if (options.preventScroll) return newRange; @@ -14455,44 +15262,46 @@ Editor.$uid = 0; range.end = range.start; this.selection.setRange(range); }; - this.findNext = function(options, animate) { - this.find({skipCurrent: true, backwards: false}, options, animate); + Editor.prototype.findNext = function (options, animate) { + this.find({ skipCurrent: true, backwards: false }, options, animate); }; - this.findPrevious = function(options, animate) { - this.find(options, {skipCurrent: true, backwards: true}, animate); + Editor.prototype.findPrevious = function (options, animate) { + this.find(options, { skipCurrent: true, backwards: true }, animate); }; - - this.revealRange = function(range, animate) { - this.$blockScrolling += 1; + Editor.prototype.revealRange = function (range, animate) { this.session.unfold(range); this.selection.setSelectionRange(range); - this.$blockScrolling -= 1; - var scrollTop = this.renderer.scrollTop; this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5); if (animate !== false) this.renderer.animateScrolling(scrollTop); }; - this.undo = function() { - this.$blockScrolling++; - this.session.getUndoManager().undo(); - this.$blockScrolling--; + Editor.prototype.undo = function () { + this.session.getUndoManager().undo(this.session); this.renderer.scrollCursorIntoView(null, 0.5); }; - this.redo = function() { - this.$blockScrolling++; - this.session.getUndoManager().redo(); - this.$blockScrolling--; + Editor.prototype.redo = function () { + this.session.getUndoManager().redo(this.session); this.renderer.scrollCursorIntoView(null, 0.5); }; - this.destroy = function() { + Editor.prototype.destroy = function () { + if (this.$toDestroy) { + this.$toDestroy.forEach(function (el) { + el.destroy(); + }); + this.$toDestroy = null; + } + if (this.$mouseHandler) + this.$mouseHandler.destroy(); this.renderer.destroy(); this._signal("destroy", this); - if (this.session) { + if (this.session) this.session.destroy(); - } + if (this._$emitInputEvent) + this._$emitInputEvent.cancel(); + this.removeAllListeners(); }; - this.setAutoScrollEditorIntoView = function(enable) { + Editor.prototype.setAutoScrollEditorIntoView = function (enable) { if (!enable) return; var rect; @@ -14503,27 +15312,28 @@ Editor.$uid = 0; var scrollAnchor = this.$scrollAnchor; scrollAnchor.style.cssText = "position:absolute"; this.container.insertBefore(scrollAnchor, this.container.firstChild); - var onChangeSelection = this.on("changeSelection", function() { + var onChangeSelection = this.on("changeSelection", function () { shouldScroll = true; }); - var onBeforeRender = this.renderer.on("beforeRender", function() { + var onBeforeRender = this.renderer.on("beforeRender", function () { if (shouldScroll) rect = self.renderer.container.getBoundingClientRect(); }); - var onAfterRender = this.renderer.on("afterRender", function() { + var onAfterRender = this.renderer.on("afterRender", function () { if (shouldScroll && rect && (self.isFocused() - || self.searchBox && self.searchBox.isFocused()) - ) { + || self.searchBox && self.searchBox.isFocused())) { var renderer = self.renderer; var pos = renderer.$cursorLayer.$pixelPos; var config = renderer.layerConfig; var top = pos.top - config.offset; if (pos.top >= 0 && top + rect.top < 0) { shouldScroll = true; - } else if (pos.top < config.height && + } + else if (pos.top < config.height && pos.top + rect.top + config.lineHeight > window.innerHeight) { shouldScroll = false; - } else { + } + else { shouldScroll = null; } if (shouldScroll != null) { @@ -14535,7 +15345,7 @@ Editor.$uid = 0; shouldScroll = rect = null; } }); - this.setAutoScrollEditorIntoView = function(enable) { + this.setAutoScrollEditorIntoView = function (enable) { if (enable) return; delete this.setAutoScrollEditorIntoView; @@ -14544,9 +15354,7 @@ Editor.$uid = 0; this.renderer.off("beforeRender", onBeforeRender); }; }; - - - this.$resetCursorStyle = function() { + Editor.prototype.$resetCursorStyle = function () { var style = this.$cursorStyle || "ace"; var cursorLayer = this.renderer.$cursorLayer; if (!cursorLayer) @@ -14555,35 +15363,75 @@ Editor.$uid = 0; cursorLayer.isBlinking = !this.$readOnly && style != "wide"; dom.setCssClass(cursorLayer.element, "ace_slim-cursors", /slim/.test(style)); }; - -}).call(Editor.prototype); - - - + Editor.prototype.prompt = function (message, options, callback) { + var editor = this; + config.loadModule("ace/ext/prompt", function (module) { + module.prompt(editor, message, options, callback); + }); + }; + return Editor; +}()); +Editor.$uid = 0; +Editor.prototype.curOp = null; +Editor.prototype.prevOp = {}; +Editor.prototype.$mergeableCommands = ["backspace", "del", "insertstring"]; +Editor.prototype.$toggleWordPairs = [ + ["first", "last"], + ["true", "false"], + ["yes", "no"], + ["width", "height"], + ["top", "bottom"], + ["right", "left"], + ["on", "off"], + ["x", "y"], + ["get", "set"], + ["max", "min"], + ["horizontal", "vertical"], + ["show", "hide"], + ["add", "remove"], + ["up", "down"], + ["before", "after"], + ["even", "odd"], + ["in", "out"], + ["inside", "outside"], + ["next", "previous"], + ["increase", "decrease"], + ["attach", "detach"], + ["&&", "||"], + ["==", "!="] +]; +oop.implement(Editor.prototype, EventEmitter); config.defineOptions(Editor.prototype, "editor", { selectionStyle: { - set: function(style) { + set: function (style) { this.onSelectionChange(); - this._signal("changeSelectionStyle", {data: style}); + this._signal("changeSelectionStyle", { data: style }); }, initialValue: "line" }, highlightActiveLine: { - set: function() {this.$updateHighlightActiveLine();}, + set: function () { this.$updateHighlightActiveLine(); }, initialValue: true }, highlightSelectedWord: { - set: function(shouldHighlight) {this.$onSelectionChange();}, + set: function (shouldHighlight) { this.$onSelectionChange(); }, initialValue: true }, readOnly: { - set: function(readOnly) { - this.$resetCursorStyle(); + set: function (readOnly) { + this.textInput.setReadOnly(readOnly); + this.$resetCursorStyle(); + }, + initialValue: false + }, + copyWithEmptySelection: { + set: function (value) { + this.textInput.setCopyWithEmptySelection(value); }, initialValue: false }, cursorStyle: { - set: function(val) { this.$resetCursorStyle(); }, + set: function (val) { this.$resetCursorStyle(); }, values: ["ace", "slim", "smooth", "wide"], initialValue: "ace" }, @@ -14591,17 +15439,148 @@ config.defineOptions(Editor.prototype, "editor", { values: [false, true, "always"], initialValue: true }, - behavioursEnabled: {initialValue: true}, - wrapBehavioursEnabled: {initialValue: true}, + behavioursEnabled: { initialValue: true }, + wrapBehavioursEnabled: { initialValue: true }, + enableAutoIndent: { initialValue: true }, autoScrollEditorIntoView: { - set: function(val) {this.setAutoScrollEditorIntoView(val);} + set: function (val) { this.setAutoScrollEditorIntoView(val); } }, keyboardHandler: { - set: function(val) { this.setKeyboardHandler(val); }, - get: function() { return this.keybindingId; }, + set: function (val) { this.setKeyboardHandler(val); }, + get: function () { return this.$keybindingId; }, handlesSet: true }, - + value: { + set: function (val) { this.session.setValue(val); }, + get: function () { return this.getValue(); }, + handlesSet: true, + hidden: true + }, + session: { + set: function (val) { this.setSession(val); }, + get: function () { return this.session; }, + handlesSet: true, + hidden: true + }, + showLineNumbers: { + set: function (show) { + this.renderer.$gutterLayer.setShowLineNumbers(show); + this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER); + if (show && this.$relativeLineNumbers) + relativeNumberRenderer.attach(this); + else + relativeNumberRenderer.detach(this); + }, + initialValue: true + }, + relativeLineNumbers: { + set: function (value) { + if (this.$showLineNumbers && value) + relativeNumberRenderer.attach(this); + else + relativeNumberRenderer.detach(this); + } + }, + placeholder: { + set: function (message) { + if (!this.$updatePlaceholder) { + this.$updatePlaceholder = function () { + var hasValue = this.session && (this.renderer.$composition || + this.session.getLength() > 1 || this.session.getLine(0).length > 0); + if (hasValue && this.renderer.placeholderNode) { + this.renderer.off("afterRender", this.$updatePlaceholder); + dom.removeCssClass(this.container, "ace_hasPlaceholder"); + this.renderer.placeholderNode.remove(); + this.renderer.placeholderNode = null; + } + else if (!hasValue && !this.renderer.placeholderNode) { + this.renderer.on("afterRender", this.$updatePlaceholder); + dom.addCssClass(this.container, "ace_hasPlaceholder"); + var el = dom.createElement("div"); + el.className = "ace_placeholder"; + el.textContent = this.$placeholder || ""; + this.renderer.placeholderNode = el; + this.renderer.content.appendChild(this.renderer.placeholderNode); + } + else if (!hasValue && this.renderer.placeholderNode) { + this.renderer.placeholderNode.textContent = this.$placeholder || ""; + } + }.bind(this); + this.on("input", this.$updatePlaceholder); + } + this.$updatePlaceholder(); + } + }, + enableKeyboardAccessibility: { + set: function (value) { + var blurCommand = { + name: "blurTextInput", + description: "Set focus to the editor content div to allow tabbing through the page", + bindKey: "Esc", + exec: function (editor) { + editor.blur(); + editor.renderer.scroller.focus(); + }, + readOnly: true + }; + var focusOnEnterKeyup = function (e) { + if (e.target == this.renderer.scroller && e.keyCode === keys['enter']) { + e.preventDefault(); + var row = this.getCursorPosition().row; + if (!this.isRowVisible(row)) + this.scrollToLine(row, true, true); + this.focus(); + } + }; + var gutterKeyboardHandler; + if (value) { + this.renderer.enableKeyboardAccessibility = true; + this.renderer.keyboardFocusClassName = "ace_keyboard-focus"; + this.textInput.getElement().setAttribute("tabindex", -1); + this.textInput.setNumberOfExtraLines(useragent.isWin ? 3 : 0); + this.renderer.scroller.setAttribute("tabindex", 0); + this.renderer.scroller.setAttribute("role", "group"); + this.renderer.scroller.setAttribute("aria-roledescription", nls("editor")); + this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName); + this.renderer.scroller.setAttribute("aria-label", nls("Editor content, press Enter to start editing, press Escape to exit")); + this.renderer.scroller.addEventListener("keyup", focusOnEnterKeyup.bind(this)); + this.commands.addCommand(blurCommand); + this.renderer.$gutter.setAttribute("tabindex", 0); + this.renderer.$gutter.setAttribute("aria-hidden", false); + this.renderer.$gutter.setAttribute("role", "group"); + this.renderer.$gutter.setAttribute("aria-roledescription", nls("editor")); + this.renderer.$gutter.setAttribute("aria-label", nls("Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")); + this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName); + this.renderer.content.setAttribute("aria-hidden", true); + if (!gutterKeyboardHandler) + gutterKeyboardHandler = new GutterKeyboardHandler(this); + gutterKeyboardHandler.addListener(); + } + else { + this.renderer.enableKeyboardAccessibility = false; + this.textInput.getElement().setAttribute("tabindex", 0); + this.textInput.setNumberOfExtraLines(0); + this.renderer.scroller.setAttribute("tabindex", -1); + this.renderer.scroller.removeAttribute("role"); + this.renderer.scroller.removeAttribute("aria-roledescription"); + this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName); + this.renderer.scroller.removeAttribute("aria-label"); + this.renderer.scroller.removeEventListener("keyup", focusOnEnterKeyup.bind(this)); + this.commands.removeCommand(blurCommand); + this.renderer.content.removeAttribute("aria-hidden"); + this.renderer.$gutter.setAttribute("tabindex", -1); + this.renderer.$gutter.setAttribute("aria-hidden", true); + this.renderer.$gutter.removeAttribute("role"); + this.renderer.$gutter.removeAttribute("aria-roledescription"); + this.renderer.$gutter.removeAttribute("aria-label"); + this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName); + if (gutterKeyboardHandler) + gutterKeyboardHandler.removeListener(); + } + }, + initialValue: false + }, + customScrollbar: "renderer", hScrollBarAlwaysVisible: "renderer", vScrollBarAlwaysVisible: "renderer", highlightGutterLine: "renderer", @@ -14612,9 +15591,9 @@ config.defineOptions(Editor.prototype, "editor", { printMargin: "renderer", fadeFoldWidgets: "renderer", showFoldWidgets: "renderer", - showLineNumbers: "renderer", - showGutter: "renderer", displayIndentGuides: "renderer", + highlightIndentGuides: "renderer", + showGutter: "renderer", fontSize: "renderer", fontFamily: "renderer", maxLines: "renderer", @@ -14622,238 +15601,249 @@ config.defineOptions(Editor.prototype, "editor", { scrollPastEnd: "renderer", fixedWidthGutter: "renderer", theme: "renderer", - + hasCssTransforms: "renderer", + maxPixelHeight: "renderer", + useTextareaForIME: "renderer", + useResizeObserver: "renderer", + useSvgGutterIcons: "renderer", + showFoldedAnnotations: "renderer", scrollSpeed: "$mouseHandler", dragDelay: "$mouseHandler", dragEnabled: "$mouseHandler", - focusTimout: "$mouseHandler", + focusTimeout: "$mouseHandler", tooltipFollowsMouse: "$mouseHandler", - firstLineNumber: "session", overwrite: "session", newLineMode: "session", useWorker: "session", useSoftTabs: "session", + navigateWithinSoftTabs: "session", tabSize: "session", wrap: "session", indentedSoftWrap: "session", foldStyle: "session", mode: "session" }); - -exports.Editor = Editor; -}); - -define("ace/undomanager",["require","exports","module"], function(require, exports, module) { -"use strict"; -var UndoManager = function() { - this.reset(); +var relativeNumberRenderer = { + getText: function (/**@type{EditSession}*/ session, /**@type{number}*/ row) { + return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? "\xb7" : ""))) + ""; + }, + getWidth: function (session, /**@type{number}*/ lastLineNumber, config) { + return Math.max(lastLineNumber.toString().length, (config.lastRow + 1).toString().length, 2) * config.characterWidth; + }, + update: function (e, /**@type{Editor}*/ editor) { + editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER); + }, + attach: function (/**@type{Editor}*/ editor) { + editor.renderer.$gutterLayer.$renderer = this; + editor.on("changeSelection", this.update); + this.update(null, editor); + }, + detach: function (/**@type{Editor}*/ editor) { + if (editor.renderer.$gutterLayer.$renderer == this) + editor.renderer.$gutterLayer.$renderer = null; + editor.off("changeSelection", this.update); + this.update(null, editor); + } }; +exports.Editor = Editor; -(function() { - this.execute = function(options) { - var deltaSets = options.args[0]; - this.$doc = options.args[1]; - if (options.merge && this.hasUndo()){ - this.dirtyCounter--; - deltaSets = this.$undoStack.pop().concat(deltaSets); - } - this.$undoStack.push(deltaSets); - this.$redoStack = []; - if (this.dirtyCounter < 0) { - this.dirtyCounter = NaN; - } - this.dirtyCounter++; - }; - this.undo = function(dontSelect) { - var deltaSets = this.$undoStack.pop(); - var undoSelectionRange = null; - if (deltaSets) { - undoSelectionRange = this.$doc.undoChanges(deltaSets, dontSelect); - this.$redoStack.push(deltaSets); - this.dirtyCounter--; - } - - return undoSelectionRange; - }; - this.redo = function(dontSelect) { - var deltaSets = this.$redoStack.pop(); - var redoSelectionRange = null; - if (deltaSets) { - redoSelectionRange = - this.$doc.redoChanges(this.$deserializeDeltas(deltaSets), dontSelect); - this.$undoStack.push(deltaSets); - this.dirtyCounter++; - } - return redoSelectionRange; - }; - this.reset = function() { - this.$undoStack = []; - this.$redoStack = []; - this.dirtyCounter = 0; - }; - this.hasUndo = function() { - return this.$undoStack.length > 0; - }; - this.hasRedo = function() { - return this.$redoStack.length > 0; - }; - this.markClean = function() { - this.dirtyCounter = 0; - }; - this.isClean = function() { - return this.dirtyCounter === 0; - }; - this.$serializeDeltas = function(deltaSets) { - return cloneDeltaSetsObj(deltaSets, $serializeDelta); - }; - this.$deserializeDeltas = function(deltaSets) { - return cloneDeltaSetsObj(deltaSets, $deserializeDelta); - }; - - function $serializeDelta(delta){ - return { - action: delta.action, - start: delta.start, - end: delta.end, - lines: delta.lines.length == 1 ? null : delta.lines, - text: delta.lines.length == 1 ? delta.lines[0] : null - }; - } - - function $deserializeDelta(delta) { - return { - action: delta.action, - start: delta.start, - end: delta.end, - lines: delta.lines || [delta.text] - }; - } - - function cloneDeltaSetsObj(deltaSets_old, fnGetModifiedDelta) { - var deltaSets_new = new Array(deltaSets_old.length); - for (var i = 0; i < deltaSets_old.length; i++) { - var deltaSet_old = deltaSets_old[i]; - var deltaSet_new = { group: deltaSet_old.group, deltas: new Array(deltaSet_old.length)}; - - for (var j = 0; j < deltaSet_old.deltas.length; j++) { - var delta_old = deltaSet_old.deltas[j]; - deltaSet_new.deltas[j] = fnGetModifiedDelta(delta_old); - } - - deltaSets_new[i] = deltaSet_new; - } - return deltaSets_new; - } - -}).call(UndoManager.prototype); - -exports.UndoManager = UndoManager; }); -define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; +define("ace/layer/lines",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var Lines = /** @class */ (function () { + function Lines(element, canvasHeight) { + this.element = element; + this.canvasHeight = canvasHeight || 500000; + this.element.style.height = (this.canvasHeight * 2) + "px"; + this.cells = []; + this.cellCache = []; + this.$offsetCoefficient = 0; + } + Lines.prototype.moveContainer = function (config) { + dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient); + }; + Lines.prototype.pageChanged = function (oldConfig, newConfig) { + return (Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !== + Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)); + }; + Lines.prototype.computeLineTop = function (row, config, session) { + var screenTop = config.firstRowScreen * config.lineHeight; + var screenPage = Math.floor(screenTop / this.canvasHeight); + var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight; + return lineTop - (screenPage * this.canvasHeight); + }; + Lines.prototype.computeLineHeight = function (row, config, session) { + return config.lineHeight * session.getRowLineCount(row); + }; + Lines.prototype.getLength = function () { + return this.cells.length; + }; + Lines.prototype.get = function (index) { + return this.cells[index]; + }; + Lines.prototype.shift = function () { + this.$cacheCell(this.cells.shift()); + }; + Lines.prototype.pop = function () { + this.$cacheCell(this.cells.pop()); + }; + Lines.prototype.push = function (cell) { + if (Array.isArray(cell)) { + this.cells.push.apply(this.cells, cell); + var fragment = dom.createFragment(this.element); + for (var i = 0; i < cell.length; i++) { + fragment.appendChild(cell[i].element); + } + this.element.appendChild(fragment); + } + else { + this.cells.push(cell); + this.element.appendChild(cell.element); + } + }; + Lines.prototype.unshift = function (cell) { + if (Array.isArray(cell)) { + this.cells.unshift.apply(this.cells, cell); + var fragment = dom.createFragment(this.element); + for (var i = 0; i < cell.length; i++) { + fragment.appendChild(cell[i].element); + } + if (this.element.firstChild) + this.element.insertBefore(fragment, this.element.firstChild); + else + this.element.appendChild(fragment); + } + else { + this.cells.unshift(cell); + this.element.insertAdjacentElement("afterbegin", cell.element); + } + }; + Lines.prototype.last = function () { + if (this.cells.length) + return this.cells[this.cells.length - 1]; + else + return null; + }; + Lines.prototype.$cacheCell = function (cell) { + if (!cell) + return; + cell.element.remove(); + this.cellCache.push(cell); + }; + Lines.prototype.createCell = function (row, config, session, initElement) { + var cell = this.cellCache.pop(); + if (!cell) { + var element = dom.createElement("div"); + if (initElement) + initElement(element); + this.element.appendChild(element); + cell = { + element: element, + text: "", + row: row + }; + } + cell.row = row; + return cell; + }; + return Lines; +}()); +exports.Lines = Lines; +}); + +define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/layer/lines","ace/config"], function(require, exports, module){"use strict"; var dom = require("../lib/dom"); var oop = require("../lib/oop"); var lang = require("../lib/lang"); var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var Gutter = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_gutter-layer"; - parentEl.appendChild(this.element); - this.setShowFoldWidgets(this.$showFoldWidgets); - - this.gutterWidth = 0; - - this.$annotations = []; - this.$updateAnnotations = this.$updateAnnotations.bind(this); - - this.$cells = []; -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.setSession = function(session) { +var Lines = require("./lines").Lines; +var nls = require("../config").nls; +var Gutter = /** @class */ (function () { + function Gutter(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_gutter-layer"; + parentEl.appendChild(this.element); + this.setShowFoldWidgets(this.$showFoldWidgets); + this.gutterWidth = 0; + this.$annotations = []; + this.$updateAnnotations = this.$updateAnnotations.bind(this); + this.$lines = new Lines(this.element); + this.$lines.$offsetCoefficient = 1; + } + Gutter.prototype.setSession = function (session) { if (this.session) - this.session.removeEventListener("change", this.$updateAnnotations); + this.session.off("change", this.$updateAnnotations); this.session = session; if (session) session.on("change", this.$updateAnnotations); }; - - this.addGutterDecoration = function(row, className){ + Gutter.prototype.addGutterDecoration = function (row, className) { if (window.console) console.warn && console.warn("deprecated use session.addGutterDecoration"); this.session.addGutterDecoration(row, className); }; - - this.removeGutterDecoration = function(row, className){ + Gutter.prototype.removeGutterDecoration = function (row, className) { if (window.console) console.warn && console.warn("deprecated use session.removeGutterDecoration"); this.session.removeGutterDecoration(row, className); }; - - this.setAnnotations = function(annotations) { + Gutter.prototype.setAnnotations = function (annotations) { this.$annotations = []; for (var i = 0; i < annotations.length; i++) { var annotation = annotations[i]; var row = annotation.row; var rowInfo = this.$annotations[row]; if (!rowInfo) - rowInfo = this.$annotations[row] = {text: []}; - + rowInfo = this.$annotations[row] = { text: [], type: [] }; var annoText = annotation.text; + var annoType = annotation.type; annoText = annoText ? lang.escapeHTML(annoText) : annotation.html || ""; - - if (rowInfo.text.indexOf(annoText) === -1) + if (rowInfo.text.indexOf(annoText) === -1) { rowInfo.text.push(annoText); - - var type = annotation.type; - if (type == "error") + rowInfo.type.push(annoType); + } + var className = annotation.className; + if (className) + rowInfo.className = className; + else if (annoType == "error") rowInfo.className = " ace_error"; - else if (type == "warning" && rowInfo.className != " ace_error") + else if (annoType == "warning" && rowInfo.className != " ace_error") rowInfo.className = " ace_warning"; - else if (type == "info" && (!rowInfo.className)) + else if (annoType == "info" && (!rowInfo.className)) rowInfo.className = " ace_info"; - else if (!!!type && annotation.className) - rowInfo.className = " " + annotation.className } }; - - this.$updateAnnotations = function (delta) { + Gutter.prototype.$updateAnnotations = function (delta) { if (!this.$annotations.length) return; var firstRow = delta.start.row; var len = delta.end.row - firstRow; if (len === 0) { - } else if (delta.action == 'remove') { + } + else if (delta.action == 'remove') { this.$annotations.splice(firstRow, len + 1, null); - } else { + } + else { var args = new Array(len + 1); args.unshift(firstRow, 1); this.$annotations.splice.apply(this.$annotations, args); } }; - - this.update = function(config) { + Gutter.prototype.update = function (config) { + this.config = config; var session = this.session; var firstRow = config.firstRow; - var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar - session.getLength() - 1); + var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar + session.getLength() - 1); + this.oldLastRow = lastRow; + this.config = config; + this.$lines.moveContainer(config); + this.$updateCursorRow(); var fold = session.getNextFoldLine(firstRow); var foldStart = fold ? fold.start.row : Infinity; - var foldWidgets = this.$showFoldWidgets && session.foldWidgets; - var breakpoints = session.$breakpoints; - var decorations = session.$decorations; - var firstLineNumber = session.$firstLineNumber; - var lastLineNumber = 0; - - var gutterRenderer = session.gutterRenderer || this.$renderer; - var cell = null; var index = -1; var row = firstRow; @@ -14864,134 +15854,305 @@ var Gutter = function(parentEl) { foldStart = fold ? fold.start.row : Infinity; } if (row > lastRow) { - while (this.$cells.length > index + 1) { - cell = this.$cells.pop(); - this.element.removeChild(cell.element); - } + while (this.$lines.getLength() > index + 1) + this.$lines.pop(); break; } - - cell = this.$cells[++index]; - if (!cell) { - cell = {element: null, textNode: null, foldWidget: null}; - cell.element = dom.createElement("div"); - cell.textNode = document.createTextNode(''); - cell.element.appendChild(cell.textNode); - this.element.appendChild(cell.element); - this.$cells[index] = cell; + cell = this.$lines.get(++index); + if (cell) { + cell.row = row; } - - var className = "ace_gutter-cell "; - if (breakpoints[row]) - className += breakpoints[row]; - if (decorations[row]) - className += decorations[row]; - if (this.$annotations[row]) - className += this.$annotations[row].className; - if (cell.element.className != className) - cell.element.className = className; - - var height = session.getRowLength(row) * config.lineHeight + "px"; - if (height != cell.element.style.height) - cell.element.style.height = height; - - if (foldWidgets) { - var c = foldWidgets[row]; - if (c == null) - c = foldWidgets[row] = session.getFoldWidget(row); + else { + cell = this.$lines.createCell(row, config, this.session, onCreateCell); + this.$lines.push(cell); } - - if (c) { - if (!cell.foldWidget) { - cell.foldWidget = dom.createElement("span"); - cell.element.appendChild(cell.foldWidget); - } - var className = "ace_fold-widget ace_" + c; - if (c == "start" && row == foldStart && row < fold.end.row) - className += " ace_closed"; - else - className += " ace_open"; - if (cell.foldWidget.className != className) - cell.foldWidget.className = className; - - var height = config.lineHeight + "px"; - if (cell.foldWidget.style.height != height) - cell.foldWidget.style.height = height; - } else { - if (cell.foldWidget) { - cell.element.removeChild(cell.foldWidget); - cell.foldWidget = null; - } - } - - var text = lastLineNumber = gutterRenderer - ? gutterRenderer.getText(session, row) - : row + firstLineNumber; - if (text !== cell.textNode.data) - cell.textNode.data = text; - + this.$renderCell(cell, config, fold, row); row++; } - - this.element.style.height = config.minHeight + "px"; - + this._signal("afterRender"); + this.$updateGutterWidth(config); + }; + Gutter.prototype.$updateGutterWidth = function (config) { + var session = this.session; + var gutterRenderer = session.gutterRenderer || this.$renderer; + var firstLineNumber = session.$firstLineNumber; + var lastLineText = this.$lines.last() ? this.$lines.last().text : ""; if (this.$fixedWidth || session.$useWrapMode) - lastLineNumber = session.getLength() + firstLineNumber; - - var gutterWidth = gutterRenderer - ? gutterRenderer.getWidth(session, lastLineNumber, config) - : lastLineNumber.toString().length * config.characterWidth; - + lastLineText = session.getLength() + firstLineNumber - 1; + var gutterWidth = gutterRenderer + ? gutterRenderer.getWidth(session, lastLineText, config) + : lastLineText.toString().length * config.characterWidth; var padding = this.$padding || this.$computePadding(); gutterWidth += padding.left + padding.right; if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) { - this.gutterWidth = gutterWidth; - this.element.style.width = Math.ceil(this.gutterWidth) + "px"; - this._emit("changeGutterWidth", gutterWidth); + this.gutterWidth = gutterWidth; (this.element.parentNode).style.width = + this.element.style.width = Math.ceil(this.gutterWidth) + "px"; + this._signal("changeGutterWidth", gutterWidth); } }; - - this.$fixedWidth = false; - - this.$showLineNumbers = true; - this.$renderer = ""; - this.setShowLineNumbers = function(show) { + Gutter.prototype.$updateCursorRow = function () { + if (!this.$highlightGutterLine) + return; + var position = this.session.selection.getCursor(); + if (this.$cursorRow === position.row) + return; + this.$cursorRow = position.row; + }; + Gutter.prototype.updateLineHighlight = function () { + if (!this.$highlightGutterLine) + return; + var row = this.session.selection.cursor.row; + this.$cursorRow = row; + if (this.$cursorCell && this.$cursorCell.row == row) + return; + if (this.$cursorCell) + this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); + var cells = this.$lines.cells; + this.$cursorCell = null; + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + if (cell.row >= this.$cursorRow) { + if (cell.row > this.$cursorRow) { + var fold = this.session.getFoldLine(this.$cursorRow); + if (i > 0 && fold && fold.start.row == cells[i - 1].row) + cell = cells[i - 1]; + else + break; + } + cell.element.className = "ace_gutter-active-line " + cell.element.className; + this.$cursorCell = cell; + break; + } + } + }; + Gutter.prototype.scrollLines = function (config) { + var oldConfig = this.config; + this.config = config; + this.$updateCursorRow(); + if (this.$lines.pageChanged(oldConfig, config)) + return this.update(config); + this.$lines.moveContainer(config); + var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar + this.session.getLength() - 1); + var oldLastRow = this.oldLastRow; + this.oldLastRow = lastRow; + if (!oldConfig || oldLastRow < config.firstRow) + return this.update(config); + if (lastRow < oldConfig.firstRow) + return this.update(config); + if (oldConfig.firstRow < config.firstRow) + for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) + this.$lines.shift(); + if (oldLastRow > lastRow) + for (var row = this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row > 0; row--) + this.$lines.pop(); + if (config.firstRow < oldConfig.firstRow) { + this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1)); + } + if (lastRow > oldLastRow) { + this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow)); + } + this.updateLineHighlight(); + this._signal("afterRender"); + this.$updateGutterWidth(config); + }; + Gutter.prototype.$renderLines = function (config, firstRow, lastRow) { + var fragment = []; + var row = firstRow; + var foldLine = this.session.getNextFoldLine(row); + var foldStart = foldLine ? foldLine.start.row : Infinity; + while (true) { + if (row > foldStart) { + row = foldLine.end.row + 1; + foldLine = this.session.getNextFoldLine(row, foldLine); + foldStart = foldLine ? foldLine.start.row : Infinity; + } + if (row > lastRow) + break; + var cell = this.$lines.createCell(row, config, this.session, onCreateCell); + this.$renderCell(cell, config, foldLine, row); + fragment.push(cell); + row++; + } + return fragment; + }; + Gutter.prototype.$renderCell = function (cell, config, fold, row) { + var element = cell.element; + var session = this.session; + var textNode = element.childNodes[0]; + var foldWidget = element.childNodes[1]; + var annotationNode = element.childNodes[2]; + var annotationIconNode = annotationNode.firstChild; + var firstLineNumber = session.$firstLineNumber; + var breakpoints = session.$breakpoints; + var decorations = session.$decorations; + var gutterRenderer = session.gutterRenderer || this.$renderer; + var foldWidgets = this.$showFoldWidgets && session.foldWidgets; + var foldStart = fold ? fold.start.row : Number.MAX_VALUE; + var lineHeight = config.lineHeight + "px"; + var className = this.$useSvgGutterIcons ? "ace_gutter-cell_svg-icons " : "ace_gutter-cell "; + var iconClassName = this.$useSvgGutterIcons ? "ace_icon_svg" : "ace_icon"; + var rowText = (gutterRenderer + ? gutterRenderer.getText(session, row) + : row + firstLineNumber).toString(); + if (this.$highlightGutterLine) { + if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) { + className += "ace_gutter-active-line "; + if (this.$cursorCell != cell) { + if (this.$cursorCell) + this.$cursorCell.element.className = this.$cursorCell.element.className.replace("ace_gutter-active-line ", ""); + this.$cursorCell = cell; + } + } + } + if (breakpoints[row]) + className += breakpoints[row]; + if (decorations[row]) + className += decorations[row]; + if (this.$annotations[row] && row !== foldStart) + className += this.$annotations[row].className; + if (foldWidgets) { + var c = foldWidgets[row]; + if (c == null) + c = foldWidgets[row] = session.getFoldWidget(row); + } + if (c) { + var foldClass = "ace_fold-widget ace_" + c; + var isClosedFold = c == "start" && row == foldStart && row < fold.end.row; + if (isClosedFold) { + foldClass += " ace_closed"; + var foldAnnotationClass = ''; + var annotationInFold = false; + for (var i = row + 1; i <= fold.end.row; i++) { + if (!this.$annotations[i]) + continue; + if (this.$annotations[i].className === " ace_error") { + annotationInFold = true; + foldAnnotationClass = " ace_error_fold"; + break; + } + if (this.$annotations[i].className === " ace_warning") { + annotationInFold = true; + foldAnnotationClass = " ace_warning_fold"; + continue; + } + } + className += foldAnnotationClass; + } + else + foldClass += " ace_open"; + if (foldWidget.className != foldClass) + foldWidget.className = foldClass; + dom.setStyle(foldWidget.style, "height", lineHeight); + dom.setStyle(foldWidget.style, "display", "inline-block"); + foldWidget.setAttribute("role", "button"); + foldWidget.setAttribute("tabindex", "-1"); + var foldRange = session.getFoldWidgetRange(row); + if (foldRange) + foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [foldRange.start.row + 1, foldRange.end.row + 1])); + else { + if (fold) + foldWidget.setAttribute("aria-label", nls("Toggle code folding, rows $0 through $1", [fold.start.row + 1, fold.end.row + 1])); + else + foldWidget.setAttribute("aria-label", nls("Toggle code folding, row $0", [row + 1])); + } + if (isClosedFold) { + foldWidget.setAttribute("aria-expanded", "false"); + foldWidget.setAttribute("title", nls("Unfold code")); + } + else { + foldWidget.setAttribute("aria-expanded", "true"); + foldWidget.setAttribute("title", nls("Fold code")); + } + } + else { + if (foldWidget) { + dom.setStyle(foldWidget.style, "display", "none"); + foldWidget.setAttribute("tabindex", "0"); + foldWidget.removeAttribute("role"); + foldWidget.removeAttribute("aria-label"); + } + } + if (annotationInFold && this.$showFoldedAnnotations) { + annotationNode.className = "ace_gutter_annotation"; + annotationIconNode.className = iconClassName; + annotationIconNode.className += foldAnnotationClass; + dom.setStyle(annotationIconNode.style, "height", lineHeight); + dom.setStyle(annotationNode.style, "display", "block"); + dom.setStyle(annotationNode.style, "height", lineHeight); + annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); + annotationNode.setAttribute("tabindex", "-1"); + annotationNode.setAttribute("role", "button"); + } + else if (this.$annotations[row]) { + annotationNode.className = "ace_gutter_annotation"; + annotationIconNode.className = iconClassName; + if (this.$useSvgGutterIcons) + annotationIconNode.className += this.$annotations[row].className; + else + element.classList.add(this.$annotations[row].className.replace(" ", "")); + dom.setStyle(annotationIconNode.style, "height", lineHeight); + dom.setStyle(annotationNode.style, "display", "block"); + dom.setStyle(annotationNode.style, "height", lineHeight); + annotationNode.setAttribute("aria-label", nls("Read annotations row $0", [rowText])); + annotationNode.setAttribute("tabindex", "-1"); + annotationNode.setAttribute("role", "button"); + } + else { + dom.setStyle(annotationNode.style, "display", "none"); + annotationNode.removeAttribute("aria-label"); + annotationNode.removeAttribute("role"); + annotationNode.setAttribute("tabindex", "0"); + } + if (rowText !== textNode.data) { + textNode.data = rowText; + } + if (element.className != className) + element.className = className; + dom.setStyle(cell.element.style, "height", this.$lines.computeLineHeight(row, config, session) + "px"); + dom.setStyle(cell.element.style, "top", this.$lines.computeLineTop(row, config, session) + "px"); + cell.text = rowText; + if (annotationNode.style.display === "none" && foldWidget.style.display === "none") + cell.element.setAttribute("aria-hidden", true); + else + cell.element.setAttribute("aria-hidden", false); + return cell; + }; + Gutter.prototype.setHighlightGutterLine = function (highlightGutterLine) { + this.$highlightGutterLine = highlightGutterLine; + }; + Gutter.prototype.setShowLineNumbers = function (show) { this.$renderer = !show && { - getWidth: function() {return "";}, - getText: function() {return "";} + getWidth: function () { return 0; }, + getText: function () { return ""; } }; }; - - this.getShowLineNumbers = function() { + Gutter.prototype.getShowLineNumbers = function () { return this.$showLineNumbers; }; - - this.$showFoldWidgets = true; - this.setShowFoldWidgets = function(show) { + Gutter.prototype.setShowFoldWidgets = function (show) { if (show) dom.addCssClass(this.element, "ace_folding-enabled"); else dom.removeCssClass(this.element, "ace_folding-enabled"); - this.$showFoldWidgets = show; this.$padding = null; }; - - this.getShowFoldWidgets = function() { + Gutter.prototype.getShowFoldWidgets = function () { return this.$showFoldWidgets; }; - - this.$computePadding = function() { + Gutter.prototype.$computePadding = function () { if (!this.element.firstChild) - return {left: 0, right: 0}; - var style = dom.computedStyle(this.element.firstChild); + return { left: 0, right: 0 }; + var style = dom.computedStyle(/**@type{Element}*/ (this.element.firstChild)); this.$padding = {}; - this.$padding.left = parseInt(style.paddingLeft) + 1 || 0; - this.$padding.right = parseInt(style.paddingRight) || 0; + this.$padding.left = (parseInt(style.borderLeftWidth) || 0) + + (parseInt(style.paddingLeft) || 0) + 1; + this.$padding.right = (parseInt(style.borderRightWidth) || 0) + + (parseInt(style.paddingRight) || 0); return this.$padding; }; - - this.getRegion = function(point) { + Gutter.prototype.getRegion = function (point) { var padding = this.$padding || this.$computePadding(); var rect = this.element.getBoundingClientRect(); if (point.x < padding.left + rect.left) @@ -14999,101 +16160,113 @@ var Gutter = function(parentEl) { if (this.$showFoldWidgets && point.x > rect.right - padding.right) return "foldWidgets"; }; - -}).call(Gutter.prototype); - + return Gutter; +}()); +Gutter.prototype.$fixedWidth = false; +Gutter.prototype.$highlightGutterLine = true; +Gutter.prototype.$renderer = ""; +Gutter.prototype.$showLineNumbers = true; +Gutter.prototype.$showFoldWidgets = true; +oop.implement(Gutter.prototype, EventEmitter); +function onCreateCell(element) { + var textNode = document.createTextNode(''); + element.appendChild(textNode); + var foldWidget = dom.createElement("span"); + element.appendChild(foldWidget); + var annotationNode = dom.createElement("span"); + element.appendChild(annotationNode); + var annotationIconNode = dom.createElement("span"); + annotationNode.appendChild(annotationIconNode); + return element; +} exports.Gutter = Gutter; }); -define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"], function(require, exports, module) { -"use strict"; - +define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"], function(require, exports, module){"use strict"; var Range = require("../range").Range; var dom = require("../lib/dom"); - -var Marker = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_marker-layer"; - parentEl.appendChild(this.element); -}; - -(function() { - - this.$padding = 0; - - this.setPadding = function(padding) { +var Marker = /** @class */ (function () { + function Marker(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_marker-layer"; + parentEl.appendChild(this.element); + } + Marker.prototype.setPadding = function (padding) { this.$padding = padding; }; - this.setSession = function(session) { + Marker.prototype.setSession = function (session) { this.session = session; }; - - this.setMarkers = function(markers) { + Marker.prototype.setMarkers = function (markers) { this.markers = markers; }; - - this.update = function(config) { - if (!config) return; - + Marker.prototype.elt = function (className, css) { + var x = this.i != -1 && this.element.childNodes[this.i]; + if (!x) { + x = document.createElement("div"); + this.element.appendChild(x); + this.i = -1; + } + else { + this.i++; + } + x.style.cssText = css; + x.className = className; + }; + Marker.prototype.update = function (config) { + if (!config) + return; this.config = config; - - - var html = []; + this.i = 0; + var html; for (var key in this.markers) { var marker = this.markers[key]; - if (!marker.range) { marker.update(html, this, this.session, config); continue; } - var range = marker.range.clipRows(config.firstRow, config.lastRow); - if (range.isEmpty()) continue; - + if (range.isEmpty()) + continue; range = range.toScreenRange(this.session); if (marker.renderer) { var top = this.$getTop(range.start.row, config); - var left = this.$padding + (this.session.$bidiHandler.isBidiRow(range.start.row) - ? this.session.$bidiHandler.getPosLeft(range.start.column) - : range.start.column * config.characterWidth); + var left = this.$padding + range.start.column * config.characterWidth; marker.renderer(html, range, left, top, config); - } else if (marker.type == "fullLine") { + } + else if (marker.type == "fullLine") { this.drawFullLineMarker(html, range, marker.clazz, config); - } else if (marker.type == "screenLine") { + } + else if (marker.type == "screenLine") { this.drawScreenLineMarker(html, range, marker.clazz, config); - } else if (range.isMultiLine()) { + } + else if (range.isMultiLine()) { if (marker.type == "text") this.drawTextMarker(html, range, marker.clazz, config); else this.drawMultiLineMarker(html, range, marker.clazz, config); - } else { - if (this.session.$bidiHandler.isBidiRow(range.start.row)) { - this.drawBidiSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); - } else { - this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); - } + } + else { + this.drawSingleLineMarker(html, range, marker.clazz + " ace_start" + " ace_br15", config); } } - this.element.innerHTML = html.join(""); + if (this.i != -1) { + while (this.i < this.element.childElementCount) + this.element.removeChild(this.element.lastChild); + } }; - - this.$getTop = function(row, layerConfig) { + Marker.prototype.$getTop = function (row, layerConfig) { return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight; }; - - function getBorderClass(tl, tr, br, bl) { - return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0); - } - this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) { + Marker.prototype.drawTextMarker = function (stringBuilder, range, clazz, layerConfig, extraStyle) { var session = this.session; var start = range.start.row; var end = range.end.row; var row = start; - var prev = 0; + var prev = 0; var curr = 0; var next = session.getScreenLastRowColumn(row); - var clazzModified = null; var lineRange = new Range(row, range.start.column, row, curr); for (; row <= end; row++) { lineRange.start.row = lineRange.end.row = row; @@ -15102,600 +16275,667 @@ var Marker = function(parentEl) { prev = curr; curr = next; next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column; - clazzModified = clazz + (row == start ? " ace_start" : "") + " ace_br" - + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end); - - if (this.session.$bidiHandler.isBidiRow(row)) { - this.drawBidiSingleLineMarker(stringBuilder, lineRange, clazzModified, - layerConfig, row == end ? 0 : 1, extraStyle); - } else { - this.drawSingleLineMarker(stringBuilder, lineRange, clazzModified, - layerConfig, row == end ? 0 : 1, extraStyle); - } + this.drawSingleLineMarker(stringBuilder, lineRange, clazz + (row == start ? " ace_start" : "") + " ace_br" + + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end), layerConfig, row == end ? 0 : 1, extraStyle); } }; - this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { + Marker.prototype.drawMultiLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { var padding = this.$padding; - var height, top, left; + var height = config.lineHeight; + var top = this.$getTop(range.start.row, config); + var left = padding + range.start.column * config.characterWidth; extraStyle = extraStyle || ""; - if (this.session.$bidiHandler.isBidiRow(range.start.row)) { - var range1 = range.clone(); - range1.end.row = range1.start.row; - range1.end.column = this.session.getLine(range1.start.row).length; - this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br1 ace_start", config, null, extraStyle); - } else { - height = config.lineHeight; - top = this.$getTop(range.start.row, config); - left = padding + range.start.column * config.characterWidth; - stringBuilder.push( - "
" - ); + if (this.session.$bidiHandler.isBidiRow(range.start.row)) { + var range1 = range.clone(); + range1.end.row = range1.start.row; + range1.end.column = this.session.getLine(range1.start.row).length; + this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br1 ace_start", config, null, extraStyle); + } + else { + this.elt(clazz + " ace_br1 ace_start", "height:" + height + "px;" + "right:0;" + "top:" + top + "px;left:" + left + "px;" + (extraStyle || "")); } if (this.session.$bidiHandler.isBidiRow(range.end.row)) { - var range1 = range.clone(); - range1.start.row = range1.end.row; - range1.start.column = 0; - this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br12", config, null, extraStyle); - } else { - var width = range.end.column * config.characterWidth; - height = config.lineHeight; - top = this.$getTop(range.end.row, config); - stringBuilder.push( - "
" - ); + var range1 = range.clone(); + range1.start.row = range1.end.row; + range1.start.column = 0; + this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + " ace_br12", config, null, extraStyle); + } + else { + top = this.$getTop(range.end.row, config); + var width = range.end.column * config.characterWidth; + this.elt(clazz + " ace_br12", "height:" + height + "px;" + + "width:" + width + "px;" + + "top:" + top + "px;" + + "left:" + padding + "px;" + (extraStyle || "")); } height = (range.end.row - range.start.row - 1) * config.lineHeight; if (height <= 0) return; top = this.$getTop(range.start.row + 1, config); - var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8); - - stringBuilder.push( - "
" - ); + this.elt(clazz + (radiusClass ? " ace_br" + radiusClass : ""), "height:" + height + "px;" + + "right:0;" + + "top:" + top + "px;" + + "left:" + padding + "px;" + (extraStyle || "")); }; - this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) { + Marker.prototype.drawSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { + if (this.session.$bidiHandler.isBidiRow(range.start.row)) + return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle); var height = config.lineHeight; var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth; - var top = this.$getTop(range.start.row, config); var left = this.$padding + range.start.column * config.characterWidth; - - stringBuilder.push( - "
" - ); + this.elt(clazz, "height:" + height + "px;" + + "width:" + width + "px;" + + "top:" + top + "px;" + + "left:" + left + "px;" + (extraStyle || "")); }; - this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) { + Marker.prototype.drawBidiSingleLineMarker = function (stringBuilder, range, clazz, config, extraLength, extraStyle) { var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding; var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column); - - selections.forEach(function(selection) { - stringBuilder.push( - "
" - ); - }); + selections.forEach(function (selection) { + this.elt(clazz, "height:" + height + "px;" + + "width:" + (selection.width + (extraLength || 0)) + "px;" + + "top:" + top + "px;" + + "left:" + (padding + selection.left) + "px;" + (extraStyle || "")); + }, this); }; - - this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { + Marker.prototype.drawFullLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { var top = this.$getTop(range.start.row, config); var height = config.lineHeight; if (range.start.row != range.end.row) height += this.$getTop(range.end.row, config) - top; - - stringBuilder.push( - "
" - ); + this.elt(clazz, "height:" + height + "px;" + + "top:" + top + "px;" + + "left:0;right:0;" + (extraStyle || "")); }; - - this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) { + Marker.prototype.drawScreenLineMarker = function (stringBuilder, range, clazz, config, extraStyle) { var top = this.$getTop(range.start.row, config); var height = config.lineHeight; - - stringBuilder.push( - "
" - ); + this.elt(clazz, "height:" + height + "px;" + + "top:" + top + "px;" + + "left:0;right:0;" + (extraStyle || "")); }; - -}).call(Marker.prototype); - + return Marker; +}()); +Marker.prototype.$padding = 0; +function getBorderClass(tl, tr, br, bl) { + return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0); +} exports.Marker = Marker; }); -define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; +define("ace/layer/text_util",["require","exports","module"], function(require, exports, module){// Tokens for which Ace just uses a simple TextNode and does not add any special className. +var textTokens = new Set(["text", "rparen", "lparen"]); +exports.isTextToken = function (tokenType) { + return textTokens.has(tokenType); +}; +}); + +define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var dom = require("../lib/dom"); var lang = require("../lib/lang"); -var useragent = require("../lib/useragent"); +var Lines = require("./lines").Lines; var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var Text = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_text-layer"; - parentEl.appendChild(this.element); - this.$updateEolChar = this.$updateEolChar.bind(this); -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.EOF_CHAR = "\xB6"; - this.EOL_CHAR_LF = "\xAC"; - this.EOL_CHAR_CRLF = "\xa4"; - this.EOL_CHAR = this.EOL_CHAR_LF; - this.TAB_CHAR = "\u2014"; //"\u21E5"; - this.SPACE_CHAR = "\xB7"; - this.$padding = 0; - - this.$updateEolChar = function() { - var EOL_CHAR = this.session.doc.getNewLineCharacter() == "\n" - ? this.EOL_CHAR_LF - : this.EOL_CHAR_CRLF; +var nls = require("../config").nls; +var isTextToken = require("./text_util").isTextToken; +var Text = /** @class */ (function () { + function Text(parentEl) { + this.dom = dom; + this.element = this.dom.createElement("div"); + this.element.className = "ace_layer ace_text-layer"; + parentEl.appendChild(this.element); + this.$updateEolChar = this.$updateEolChar.bind(this); + this.$lines = new Lines(this.element); + } + Text.prototype.$updateEolChar = function () { + var doc = this.session.doc; + var unixMode = doc.getNewLineCharacter() == "\n" && doc.getNewLineMode() != "windows"; + var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF; if (this.EOL_CHAR != EOL_CHAR) { this.EOL_CHAR = EOL_CHAR; return true; } }; - - this.setPadding = function(padding) { + Text.prototype.setPadding = function (padding) { this.$padding = padding; - this.element.style.padding = "0 " + padding + "px"; + this.element.style.margin = "0 " + padding + "px"; }; - - this.getLineHeight = function() { + Text.prototype.getLineHeight = function () { return this.$fontMetrics.$characterSize.height || 0; }; - - this.getCharacterWidth = function() { + Text.prototype.getCharacterWidth = function () { return this.$fontMetrics.$characterSize.width || 0; }; - - this.$setFontMetrics = function(measure) { + Text.prototype.$setFontMetrics = function (measure) { this.$fontMetrics = measure; - this.$fontMetrics.on("changeCharacterSize", function(e) { + this.$fontMetrics.on("changeCharacterSize", + function (e) { this._signal("changeCharacterSize", e); }.bind(this)); this.$pollSizeChanges(); }; - - this.checkForSizeChanges = function() { + Text.prototype.checkForSizeChanges = function () { this.$fontMetrics.checkForSizeChanges(); }; - this.$pollSizeChanges = function() { + Text.prototype.$pollSizeChanges = function () { return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges(); }; - this.setSession = function(session) { + Text.prototype.setSession = function (session) { this.session = session; if (session) this.$computeTabString(); }; - - this.showInvisibles = false; - this.setShowInvisibles = function(showInvisibles) { + Text.prototype.setShowInvisibles = function (showInvisibles) { if (this.showInvisibles == showInvisibles) return false; - this.showInvisibles = showInvisibles; + if (typeof showInvisibles == "string") { + this.showSpaces = /tab/i.test(showInvisibles); + this.showTabs = /space/i.test(showInvisibles); + this.showEOL = /eol/i.test(showInvisibles); + } + else { + this.showSpaces = this.showTabs = this.showEOL = showInvisibles; + } this.$computeTabString(); return true; }; - - this.displayIndentGuides = true; - this.setDisplayIndentGuides = function(display) { + Text.prototype.setDisplayIndentGuides = function (display) { if (this.displayIndentGuides == display) return false; - this.displayIndentGuides = display; this.$computeTabString(); return true; }; - - this.$tabStrings = []; - this.onChangeTabSize = - this.$computeTabString = function() { + Text.prototype.setHighlightIndentGuides = function (highlight) { + if (this.$highlightIndentGuides === highlight) + return false; + this.$highlightIndentGuides = highlight; + return highlight; + }; + Text.prototype.$computeTabString = function () { var tabSize = this.session.getTabSize(); - this.tabSize = tabSize; - var tabStr = this.$tabStrings = [0]; + this.tabSize = tabSize; var tabStr = this.$tabStrings = [0]; for (var i = 1; i < tabSize + 1; i++) { - if (this.showInvisibles) { - tabStr.push("" - + lang.stringRepeat(this.TAB_CHAR, i) - + ""); - } else { - tabStr.push(lang.stringRepeat(" ", i)); + if (this.showTabs) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_tab"; + span.textContent = lang.stringRepeat(this.TAB_CHAR, i); + tabStr.push(span); + } + else { + tabStr.push(this.dom.createTextNode(lang.stringRepeat(" ", i), this.element)); } } if (this.displayIndentGuides) { - this.$indentGuideRe = /\s\S| \t|\t |\s$/; + this.$indentGuideRe = /\s\S| \t|\t |\s$/; var className = "ace_indent-guide"; - var spaceClass = ""; - var tabClass = ""; - if (this.showInvisibles) { - className += " ace_invisible"; - spaceClass = " ace_invisible_space"; - tabClass = " ace_invisible_tab"; - var spaceContent = lang.stringRepeat(this.SPACE_CHAR, this.tabSize); - var tabContent = lang.stringRepeat(this.TAB_CHAR, this.tabSize); - } else{ - var spaceContent = lang.stringRepeat(" ", this.tabSize); - var tabContent = spaceContent; - } - - this.$tabStrings[" "] = "" + spaceContent + ""; - this.$tabStrings["\t"] = "" + tabContent + ""; + var spaceClass = this.showSpaces ? " ace_invisible ace_invisible_space" : ""; + var spaceContent = this.showSpaces + ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize) + : lang.stringRepeat(" ", this.tabSize); + var tabClass = this.showTabs ? " ace_invisible ace_invisible_tab" : ""; + var tabContent = this.showTabs + ? lang.stringRepeat(this.TAB_CHAR, this.tabSize) + : spaceContent; + var span = this.dom.createElement("span"); + span.className = className + spaceClass; + span.textContent = spaceContent; + this.$tabStrings[" "] = span; + var span = this.dom.createElement("span"); + span.className = className + tabClass; + span.textContent = tabContent; + this.$tabStrings["\t"] = span; } }; - - this.updateLines = function(config, firstRow, lastRow) { + Text.prototype.updateLines = function (config, firstRow, lastRow) { if (this.config.lastRow != config.lastRow || this.config.firstRow != config.firstRow) { - this.scrollLines(config); + return this.update(config); } this.config = config; - var first = Math.max(firstRow, config.firstRow); var last = Math.min(lastRow, config.lastRow); - var lineElements = this.element.childNodes; var lineElementsIdx = 0; - for (var row = config.firstRow; row < first; row++) { var foldLine = this.session.getFoldLine(row); if (foldLine) { if (foldLine.containsRow(first)) { first = foldLine.start.row; break; - } else { + } + else { row = foldLine.end.row; } } - lineElementsIdx ++; + lineElementsIdx++; } - + var heightChanged = false; var row = first; var foldLine = this.session.getNextFoldLine(row); var foldStart = foldLine ? foldLine.start.row : Infinity; - while (true) { if (row > foldStart) { - row = foldLine.end.row+1; + row = foldLine.end.row + 1; foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row :Infinity; + foldStart = foldLine ? foldLine.start.row : Infinity; } if (row > last) - break; - - var lineElement = lineElements[lineElementsIdx++]; + break; var lineElement = lineElements[lineElementsIdx++]; if (lineElement) { - var html = []; - this.$renderLine( - html, row, !this.$useLineGroups(), row == foldStart ? foldLine : false - ); - lineElement.style.height = config.lineHeight * this.session.getRowLength(row) + "px"; - lineElement.innerHTML = html.join(""); + this.dom.removeChildren(lineElement); + this.$renderLine(lineElement, row, row == foldStart ? foldLine : false); + if (heightChanged) + lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + "px"; + var height = (config.lineHeight * this.session.getRowLength(row)) + "px"; + if (lineElement.style.height != height) { + heightChanged = true; + lineElement.style.height = height; + } } row++; } + if (heightChanged) { + while (lineElementsIdx < this.$lines.cells.length) { + var cell = this.$lines.cells[lineElementsIdx++]; + cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + "px"; + } + } }; - - this.scrollLines = function(config) { + Text.prototype.scrollLines = function (config) { var oldConfig = this.config; this.config = config; - + if (this.$lines.pageChanged(oldConfig, config)) + return this.update(config); + this.$lines.moveContainer(config); + var lastRow = config.lastRow; + var oldLastRow = oldConfig ? oldConfig.lastRow : -1; + if (!oldConfig || oldLastRow < config.firstRow) + return this.update(config); + if (lastRow < oldConfig.firstRow) + return this.update(config); if (!oldConfig || oldConfig.lastRow < config.firstRow) return this.update(config); - if (config.lastRow < oldConfig.firstRow) return this.update(config); - - var el = this.element; if (oldConfig.firstRow < config.firstRow) - for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--) - el.removeChild(el.firstChild); - + for (var row = this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row > 0; row--) + this.$lines.shift(); if (oldConfig.lastRow > config.lastRow) - for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--) - el.removeChild(el.lastChild); - + for (var row = this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row > 0; row--) + this.$lines.pop(); if (config.firstRow < oldConfig.firstRow) { - var fragment = this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1); - if (el.firstChild) - el.insertBefore(fragment, el.firstChild); - else - el.appendChild(fragment); + this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1)); } - if (config.lastRow > oldConfig.lastRow) { - var fragment = this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow); - el.appendChild(fragment); + this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow)); } + this.$highlightIndentGuide(); }; - - this.$renderLinesFragment = function(config, firstRow, lastRow) { - var fragment = this.element.ownerDocument.createDocumentFragment(); + Text.prototype.$renderLinesFragment = function (config, firstRow, lastRow) { + var fragment = []; var row = firstRow; var foldLine = this.session.getNextFoldLine(row); var foldStart = foldLine ? foldLine.start.row : Infinity; - while (true) { if (row > foldStart) { - row = foldLine.end.row+1; + row = foldLine.end.row + 1; foldLine = this.session.getNextFoldLine(row, foldLine); foldStart = foldLine ? foldLine.start.row : Infinity; } if (row > lastRow) break; - - var container = dom.createElement("div"); - - var html = []; - this.$renderLine(html, row, false, row == foldStart ? foldLine : false); - container.innerHTML = html.join(""); + var line = this.$lines.createCell(row, config, this.session); + var lineEl = line.element; + this.dom.removeChildren(lineEl); + dom.setStyle(lineEl.style, "height", this.$lines.computeLineHeight(row, config, this.session) + "px"); + dom.setStyle(lineEl.style, "top", this.$lines.computeLineTop(row, config, this.session) + "px"); + this.$renderLine(lineEl, row, row == foldStart ? foldLine : false); if (this.$useLineGroups()) { - container.className = 'ace_line_group'; - fragment.appendChild(container); - container.style.height = config.lineHeight * this.session.getRowLength(row) + "px"; - - } else { - while(container.firstChild) - fragment.appendChild(container.firstChild); + lineEl.className = "ace_line_group"; } - + else { + lineEl.className = "ace_line"; + } + fragment.push(line); row++; } return fragment; }; - - this.update = function(config) { + Text.prototype.update = function (config) { + this.$lines.moveContainer(config); this.config = config; - - var html = []; - var firstRow = config.firstRow, lastRow = config.lastRow; - - var row = firstRow; - var foldLine = this.session.getNextFoldLine(row); - var foldStart = foldLine ? foldLine.start.row : Infinity; - - while (true) { - if (row > foldStart) { - row = foldLine.end.row+1; - foldLine = this.session.getNextFoldLine(row, foldLine); - foldStart = foldLine ? foldLine.start.row :Infinity; - } - if (row > lastRow) - break; - - if (this.$useLineGroups()) - html.push("
"); - - this.$renderLine(html, row, false, row == foldStart ? foldLine : false); - - if (this.$useLineGroups()) - html.push("
"); // end the line group - - row++; - } - this.element.innerHTML = html.join(""); + var firstRow = config.firstRow; + var lastRow = config.lastRow; + var lines = this.$lines; + while (lines.getLength()) + lines.pop(); + lines.push(this.$renderLinesFragment(config, firstRow, lastRow)); }; - - this.$textToken = { - "text": true, - "rparen": true, - "lparen": true - }; - - this.$renderToken = function(stringBuilder, screenColumn, token, value) { + Text.prototype.$renderToken = function (parent, screenColumn, token, value) { var self = this; - var replaceReg = /\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g; - var replaceFunc = function(c, a, b, tabIdx, idx4) { - if (a) { - return self.showInvisibles - ? "" + lang.stringRepeat(self.SPACE_CHAR, c.length) + "" - : c; - } else if (c == "&") { - return "&"; - } else if (c == "<") { - return "<"; - } else if (c == ">") { - return ">"; - } else if (c == "\t") { - var tabSize = self.session.getScreenTabSize(screenColumn + tabIdx); - screenColumn += tabSize - 1; - return self.$tabStrings[tabSize]; - } else if (c == "\u3000") { - var classToUse = self.showInvisibles ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk"; - var space = self.showInvisibles ? self.SPACE_CHAR : ""; - screenColumn += 1; - return "" + space + ""; - } else if (b) { - return "" + self.SPACE_CHAR + ""; - } else { - screenColumn += 1; - return "" + c + ""; + var re = /(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g; + var valueFragment = this.dom.createFragment(this.element); + var m; + var i = 0; + while (m = re.exec(value)) { + var tab = m[1]; + var simpleSpace = m[2]; + var controlCharacter = m[3]; + var cjkSpace = m[4]; + var cjk = m[5]; + if (!self.showSpaces && simpleSpace) + continue; + var before = i != m.index ? value.slice(i, m.index) : ""; + i = m.index + m[0].length; + if (before) { + valueFragment.appendChild(this.dom.createTextNode(before, this.element)); } - }; - - var output = value.replace(replaceReg, replaceFunc); - - if (!this.$textToken[token.type]) { + if (tab) { + var tabSize = self.session.getScreenTabSize(screenColumn + m.index); + valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true)); + screenColumn += tabSize - 1; + } + else if (simpleSpace) { + if (self.showSpaces) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_space"; + span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length); + valueFragment.appendChild(span); + } + else { + valueFragment.appendChild(this.dom.createTextNode(simpleSpace, this.element)); + } + } + else if (controlCharacter) { + var span = this.dom.createElement("span"); + span.className = "ace_invisible ace_invisible_space ace_invalid"; + span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length); + valueFragment.appendChild(span); + } + else if (cjkSpace) { + screenColumn += 1; + var span = this.dom.createElement("span"); + span.style.width = (self.config.characterWidth * 2) + "px"; + span.className = self.showSpaces ? "ace_cjk ace_invisible ace_invisible_space" : "ace_cjk"; + span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace; + valueFragment.appendChild(span); + } + else if (cjk) { + screenColumn += 1; + var span = this.dom.createElement("span"); + span.style.width = (self.config.characterWidth * 2) + "px"; + span.className = "ace_cjk"; + span.textContent = cjk; + valueFragment.appendChild(span); + } + } + valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element)); + if (!isTextToken(token.type)) { var classes = "ace_" + token.type.replace(/\./g, " ace_"); - var style = ""; - if (token.type == "fold") - style = " style='width:" + (token.value.length * this.config.characterWidth) + "px;' "; - stringBuilder.push("", output, ""); + var span = this.dom.createElement("span"); + if (token.type == "fold") { + span.style.width = (token.value.length * this.config.characterWidth) + "px"; + span.setAttribute("title", nls("Unfold code")); + } + span.className = classes; + span.appendChild(valueFragment); + parent.appendChild(span); } else { - stringBuilder.push(output); + parent.appendChild(valueFragment); } return screenColumn + value.length; }; - - this.renderIndentGuide = function(stringBuilder, value, max) { + Text.prototype.renderIndentGuide = function (parent, value, max) { var cols = value.search(this.$indentGuideRe); if (cols <= 0 || cols >= max) return value; if (value[0] == " ") { cols -= cols % this.tabSize; - stringBuilder.push(lang.stringRepeat(this.$tabStrings[" "], cols/this.tabSize)); - return value.substr(cols); - } else if (value[0] == "\t") { - stringBuilder.push(lang.stringRepeat(this.$tabStrings["\t"], cols)); + var count = cols / this.tabSize; + for (var i = 0; i < count; i++) { + parent.appendChild(this.$tabStrings[" "].cloneNode(true)); + } + this.$highlightIndentGuide(); return value.substr(cols); } + else if (value[0] == "\t") { + for (var i = 0; i < cols; i++) { + parent.appendChild(this.$tabStrings["\t"].cloneNode(true)); + } + this.$highlightIndentGuide(); + return value.substr(cols); + } + this.$highlightIndentGuide(); return value; }; - - this.$renderWrappedLine = function(stringBuilder, tokens, splits, onlyContents) { + Text.prototype.$highlightIndentGuide = function () { + if (!this.$highlightIndentGuides || !this.displayIndentGuides) + return; + this.$highlightIndentGuideMarker = { + indentLevel: undefined, + start: undefined, + end: undefined, + dir: undefined + }; + var lines = this.session.doc.$lines; + if (!lines) + return; + var cursor = this.session.selection.getCursor(); + var initialIndent = /^\s*/.exec(this.session.doc.getLine(cursor.row))[0].length; + var elementIndentLevel = Math.floor(initialIndent / this.tabSize); + this.$highlightIndentGuideMarker = { + indentLevel: elementIndentLevel, + start: cursor.row + }; + var bracketHighlight = this.session.$bracketHighlight; + if (bracketHighlight) { + var ranges = this.session.$bracketHighlight.ranges; + for (var i = 0; i < ranges.length; i++) { + if (cursor.row !== ranges[i].start.row) { + this.$highlightIndentGuideMarker.end = ranges[i].start.row; + if (cursor.row > ranges[i].start.row) { + this.$highlightIndentGuideMarker.dir = -1; + } + else { + this.$highlightIndentGuideMarker.dir = 1; + } + break; + } + } + } + if (!this.$highlightIndentGuideMarker.end) { + if (lines[cursor.row] !== '' && cursor.column === lines[cursor.row].length) { + this.$highlightIndentGuideMarker.dir = 1; + for (var i = cursor.row + 1; i < lines.length; i++) { + var line = lines[i]; + var currentIndent = /^\s*/.exec(line)[0].length; + if (line !== '') { + this.$highlightIndentGuideMarker.end = i; + if (currentIndent <= initialIndent) + break; + } + } + } + } + this.$renderHighlightIndentGuide(); + }; + Text.prototype.$clearActiveIndentGuide = function () { + var cells = this.$lines.cells; + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + var childNodes = cell.element.childNodes; + if (childNodes.length > 0) { + for (var j = 0; j < childNodes.length; j++) { + if (childNodes[j].classList && childNodes[j].classList.contains("ace_indent-guide-active")) { + childNodes[j].classList.remove("ace_indent-guide-active"); + break; + } + } + } + } + }; + Text.prototype.$setIndentGuideActive = function (cell, indentLevel) { + var line = this.session.doc.getLine(cell.row); + if (line !== "") { + var childNodes = cell.element.childNodes; + if (childNodes) { + var node = childNodes[indentLevel - 1]; + if (node && node.classList && node.classList.contains("ace_indent-guide")) + node.classList.add("ace_indent-guide-active"); + } + } + }; + Text.prototype.$renderHighlightIndentGuide = function () { + if (!this.$lines) + return; + var cells = this.$lines.cells; + this.$clearActiveIndentGuide(); + var indentLevel = this.$highlightIndentGuideMarker.indentLevel; + if (indentLevel !== 0) { + if (this.$highlightIndentGuideMarker.dir === 1) { + for (var i = 0; i < cells.length; i++) { + var cell = cells[i]; + if (this.$highlightIndentGuideMarker.end && cell.row >= this.$highlightIndentGuideMarker.start + + 1) { + if (cell.row >= this.$highlightIndentGuideMarker.end) + break; + this.$setIndentGuideActive(cell, indentLevel); + } + } + } + else { + for (var i = cells.length - 1; i >= 0; i--) { + var cell = cells[i]; + if (this.$highlightIndentGuideMarker.end && cell.row < this.$highlightIndentGuideMarker.start) { + if (cell.row <= this.$highlightIndentGuideMarker.end) + break; + this.$setIndentGuideActive(cell, indentLevel); + } + } + } + } + }; + Text.prototype.$createLineElement = function (parent) { + var lineEl = this.dom.createElement("div"); + lineEl.className = "ace_line"; + lineEl.style.height = this.config.lineHeight + "px"; + return lineEl; + }; + Text.prototype.$renderWrappedLine = function (parent, tokens, splits) { var chars = 0; var split = 0; var splitChars = splits[0]; var screenColumn = 0; - + var lineEl = this.$createLineElement(); + parent.appendChild(lineEl); for (var i = 0; i < tokens.length; i++) { var token = tokens[i]; var value = token.value; if (i == 0 && this.displayIndentGuides) { chars = value.length; - value = this.renderIndentGuide(stringBuilder, value, splitChars); + value = this.renderIndentGuide(lineEl, value, splitChars); if (!value) continue; chars -= value.length; } - if (chars + value.length < splitChars) { - screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); + screenColumn = this.$renderToken(lineEl, screenColumn, token, value); chars += value.length; - } else { + } + else { while (chars + value.length >= splitChars) { - screenColumn = this.$renderToken( - stringBuilder, screenColumn, - token, value.substring(0, splitChars - chars) - ); + screenColumn = this.$renderToken(lineEl, screenColumn, token, value.substring(0, splitChars - chars)); value = value.substring(splitChars - chars); chars = splitChars; - - if (!onlyContents) { - stringBuilder.push("", - "
" - ); - } - - stringBuilder.push(lang.stringRepeat("\xa0", splits.indent)); - - split ++; + lineEl = this.$createLineElement(); + parent.appendChild(lineEl); + lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat("\xa0", splits.indent), this.element)); + split++; screenColumn = 0; splitChars = splits[split] || Number.MAX_VALUE; } if (value.length != 0) { chars += value.length; - screenColumn = this.$renderToken( - stringBuilder, screenColumn, token, value - ); + screenColumn = this.$renderToken(lineEl, screenColumn, token, value); } } } + if (splits[splits.length - 1] > this.MAX_LINE_LENGTH) + this.$renderOverflowMessage(lineEl, screenColumn, null, "", true); }; - - this.$renderSimpleLine = function(stringBuilder, tokens) { + Text.prototype.$renderSimpleLine = function (parent, tokens) { var screenColumn = 0; - var token = tokens[0]; - var value = token.value; - if (this.displayIndentGuides) - value = this.renderIndentGuide(stringBuilder, value); - if (value) - screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); - for (var i = 1; i < tokens.length; i++) { - token = tokens[i]; - value = token.value; - screenColumn = this.$renderToken(stringBuilder, screenColumn, token, value); + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + var value = token.value; + if (i == 0 && this.displayIndentGuides) { + value = this.renderIndentGuide(parent, value); + if (!value) + continue; + } + if (screenColumn + value.length > this.MAX_LINE_LENGTH) + return this.$renderOverflowMessage(parent, screenColumn, token, value); + screenColumn = this.$renderToken(parent, screenColumn, token, value); } }; - this.$renderLine = function(stringBuilder, row, onlyContents, foldLine) { + Text.prototype.$renderOverflowMessage = function (parent, screenColumn, token, value, hide) { + token && this.$renderToken(parent, screenColumn, token, value.slice(0, this.MAX_LINE_LENGTH - screenColumn)); + var overflowEl = this.dom.createElement("span"); + overflowEl.className = "ace_inline_button ace_keyword ace_toggle_wrap"; + overflowEl.textContent = hide ? "" : ""; + parent.appendChild(overflowEl); + }; + Text.prototype.$renderLine = function (parent, row, foldLine) { if (!foldLine && foldLine != false) foldLine = this.session.getFoldLine(row); - if (foldLine) var tokens = this.$getFoldLineTokens(row, foldLine); else var tokens = this.session.getTokens(row); - - - if (!onlyContents) { - stringBuilder.push( - "
" - ); - } - + var lastLineEl = parent; if (tokens.length) { var splits = this.session.getRowSplitData(row); - if (splits && splits.length) - this.$renderWrappedLine(stringBuilder, tokens, splits, onlyContents); - else - this.$renderSimpleLine(stringBuilder, tokens); + if (splits && splits.length) { + this.$renderWrappedLine(parent, tokens, splits); + var lastLineEl = parent.lastChild; + } + else { + var lastLineEl = parent; + if (this.$useLineGroups()) { + lastLineEl = this.$createLineElement(); + parent.appendChild(lastLineEl); + } + this.$renderSimpleLine(lastLineEl, tokens); + } } - - if (this.showInvisibles) { + else if (this.$useLineGroups()) { + lastLineEl = this.$createLineElement(); + parent.appendChild(lastLineEl); + } + if (this.showEOL && lastLineEl) { if (foldLine) row = foldLine.end.row; - - stringBuilder.push( - "", - row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR, - "" - ); + var invisibleEl = this.dom.createElement("span"); + invisibleEl.className = "ace_invisible ace_invisible_eol"; + invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR; + lastLineEl.appendChild(invisibleEl); } - if (!onlyContents) - stringBuilder.push("
"); }; - - this.$getFoldLineTokens = function(row, foldLine) { + Text.prototype.$getFoldLineTokens = function (row, foldLine) { var session = this.session; var renderTokens = []; - function addTokens(tokens, from, to) { var idx = 0, col = 0; while ((col + tokens[idx].value.length) < from) { col += tokens[idx].value.length; idx++; - if (idx == tokens.length) return; } @@ -15703,16 +16943,13 @@ var Text = function(parentEl) { var value = tokens[idx].value.substring(from - col); if (value.length > (to - from)) value = value.substring(0, to - from); - renderTokens.push({ type: tokens[idx].type, value: value }); - col = from + value.length; idx += 1; } - while (col < to && idx < tokens.length) { var value = tokens[idx].value; if (value.length + col > to) { @@ -15720,241 +16957,235 @@ var Text = function(parentEl) { type: tokens[idx].type, value: value.substring(0, to - col) }); - } else + } + else renderTokens.push(tokens[idx]); col += value.length; idx += 1; } } - var tokens = session.getTokens(row); - foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) { + foldLine.walk(function (placeholder, row, column, lastColumn, isNewRow) { if (placeholder != null) { renderTokens.push({ type: "fold", value: placeholder }); - } else { + } + else { if (isNewRow) tokens = session.getTokens(row); - if (tokens.length) addTokens(tokens, lastColumn, column); } }, foldLine.end.row, this.session.getLine(foldLine.end.row).length); - return renderTokens; }; - - this.$useLineGroups = function() { + Text.prototype.$useLineGroups = function () { return this.session.getUseWrapMode(); }; - - this.destroy = function() { - clearInterval(this.$pollSizeChangesTimer); - if (this.$measureNode) - this.$measureNode.parentNode.removeChild(this.$measureNode); - delete this.$measureNode; - }; - -}).call(Text.prototype); - + return Text; +}()); +Text.prototype.EOF_CHAR = "\xB6"; +Text.prototype.EOL_CHAR_LF = "\xAC"; +Text.prototype.EOL_CHAR_CRLF = "\xa4"; +Text.prototype.EOL_CHAR = Text.prototype.EOL_CHAR_LF; +Text.prototype.TAB_CHAR = "\u2014"; //"\u21E5"; +Text.prototype.SPACE_CHAR = "\xB7"; +Text.prototype.$padding = 0; +Text.prototype.MAX_LINE_LENGTH = 10000; +Text.prototype.showInvisibles = false; +Text.prototype.showSpaces = false; +Text.prototype.showTabs = false; +Text.prototype.showEOL = false; +Text.prototype.displayIndentGuides = true; +Text.prototype.$highlightIndentGuides = true; +Text.prototype.$tabStrings = []; +Text.prototype.destroy = {}; +Text.prototype.onChangeTabSize = Text.prototype.$computeTabString; +oop.implement(Text.prototype, EventEmitter); exports.Text = Text; }); -define("ace/layer/cursor",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - +define("ace/layer/cursor",["require","exports","module","ace/lib/dom"], function(require, exports, module){"use strict"; var dom = require("../lib/dom"); -var isIE8; - -var Cursor = function(parentEl) { - this.element = dom.createElement("div"); - this.element.className = "ace_layer ace_cursor-layer"; - parentEl.appendChild(this.element); - - if (isIE8 === undefined) - isIE8 = !("opacity" in this.element.style); - - this.isVisible = false; - this.isBlinking = true; - this.blinkInterval = 1000; - this.smoothBlinking = false; - - this.cursors = []; - this.cursor = this.addCursor(); - dom.addCssClass(this.element, "ace_hidden-cursors"); - this.$updateCursors = (isIE8 - ? this.$updateVisibility - : this.$updateOpacity).bind(this); -}; - -(function() { - - this.$updateVisibility = function(val) { +var Cursor = /** @class */ (function () { + function Cursor(parentEl) { + this.element = dom.createElement("div"); + this.element.className = "ace_layer ace_cursor-layer"; + parentEl.appendChild(this.element); + this.isVisible = false; + this.isBlinking = true; + this.blinkInterval = 1000; + this.smoothBlinking = false; + this.cursors = []; + this.cursor = this.addCursor(); + dom.addCssClass(this.element, "ace_hidden-cursors"); + this.$updateCursors = this.$updateOpacity.bind(this); + } + Cursor.prototype.$updateOpacity = function (val) { var cursors = this.cursors; - for (var i = cursors.length; i--; ) - cursors[i].style.visibility = val ? "" : "hidden"; + for (var i = cursors.length; i--;) + dom.setStyle(cursors[i].style, "opacity", val ? "" : "0"); }; - this.$updateOpacity = function(val) { + Cursor.prototype.$startCssAnimation = function () { var cursors = this.cursors; - for (var i = cursors.length; i--; ) - cursors[i].style.opacity = val ? "" : "0"; + for (var i = cursors.length; i--;) + cursors[i].style.animationDuration = this.blinkInterval + "ms"; + this.$isAnimating = true; + setTimeout(function () { + if (this.$isAnimating) { + dom.addCssClass(this.element, "ace_animate-blinking"); + } + }.bind(this)); }; - - - this.$padding = 0; - this.setPadding = function(padding) { + Cursor.prototype.$stopCssAnimation = function () { + this.$isAnimating = false; + dom.removeCssClass(this.element, "ace_animate-blinking"); + }; + Cursor.prototype.setPadding = function (padding) { this.$padding = padding; }; - - this.setSession = function(session) { + Cursor.prototype.setSession = function (session) { this.session = session; }; - - this.setBlinking = function(blinking) { - if (blinking != this.isBlinking){ + Cursor.prototype.setBlinking = function (blinking) { + if (blinking != this.isBlinking) { this.isBlinking = blinking; this.restartTimer(); } }; - - this.setBlinkInterval = function(blinkInterval) { - if (blinkInterval != this.blinkInterval){ + Cursor.prototype.setBlinkInterval = function (blinkInterval) { + if (blinkInterval != this.blinkInterval) { this.blinkInterval = blinkInterval; this.restartTimer(); } }; - - this.setSmoothBlinking = function(smoothBlinking) { - if (smoothBlinking != this.smoothBlinking && !isIE8) { + Cursor.prototype.setSmoothBlinking = function (smoothBlinking) { + if (smoothBlinking != this.smoothBlinking) { this.smoothBlinking = smoothBlinking; dom.setCssClass(this.element, "ace_smooth-blinking", smoothBlinking); this.$updateCursors(true); - this.$updateCursors = (this.$updateOpacity).bind(this); this.restartTimer(); } }; - - this.addCursor = function() { + Cursor.prototype.addCursor = function () { var el = dom.createElement("div"); el.className = "ace_cursor"; this.element.appendChild(el); this.cursors.push(el); return el; }; - - this.removeCursor = function() { + Cursor.prototype.removeCursor = function () { if (this.cursors.length > 1) { var el = this.cursors.pop(); el.parentNode.removeChild(el); return el; } }; - - this.hideCursor = function() { + Cursor.prototype.hideCursor = function () { this.isVisible = false; dom.addCssClass(this.element, "ace_hidden-cursors"); this.restartTimer(); }; - - this.showCursor = function() { + Cursor.prototype.showCursor = function () { this.isVisible = true; dom.removeCssClass(this.element, "ace_hidden-cursors"); this.restartTimer(); }; - - this.restartTimer = function() { + Cursor.prototype.restartTimer = function () { var update = this.$updateCursors; clearInterval(this.intervalId); clearTimeout(this.timeoutId); + this.$stopCssAnimation(); if (this.smoothBlinking) { + this.$isSmoothBlinking = false; dom.removeCssClass(this.element, "ace_smooth-blinking"); } - update(true); - - if (!this.isBlinking || !this.blinkInterval || !this.isVisible) + if (!this.isBlinking || !this.blinkInterval || !this.isVisible) { + this.$stopCssAnimation(); return; - + } if (this.smoothBlinking) { - setTimeout(function(){ - dom.addCssClass(this.element, "ace_smooth-blinking"); + this.$isSmoothBlinking = true; + setTimeout(function () { + if (this.$isSmoothBlinking) { + dom.addCssClass(this.element, "ace_smooth-blinking"); + } }.bind(this)); } - - var blink = function(){ - this.timeoutId = setTimeout(function() { - update(false); - }, 0.6 * this.blinkInterval); - }.bind(this); - - this.intervalId = setInterval(function() { - update(true); + if (dom.HAS_CSS_ANIMATION) { + this.$startCssAnimation(); + } + else { + var blink = /**@this{Cursor}*/ function () { + this.timeoutId = setTimeout(function () { + update(false); + }, 0.6 * this.blinkInterval); + }.bind(this); + this.intervalId = setInterval(function () { + update(true); + blink(); + }, this.blinkInterval); blink(); - }, this.blinkInterval); - - blink(); + } }; - - this.getPixelPosition = function(position, onScreen) { + Cursor.prototype.getPixelPosition = function (position, onScreen) { if (!this.config || !this.session) - return {left : 0, top : 0}; - + return { left: 0, top: 0 }; if (!position) position = this.session.selection.getCursor(); var pos = this.session.documentToScreenPosition(position); var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row) ? this.session.$bidiHandler.getPosLeft(pos.column) : pos.column * this.config.characterWidth); - var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) * this.config.lineHeight; - - return {left : cursorLeft, top : cursorTop}; + return { left: cursorLeft, top: cursorTop }; }; - - this.update = function(config) { + Cursor.prototype.isCursorInView = function (pixelPos, config) { + return pixelPos.top >= 0 && pixelPos.top < config.maxHeight; + }; + Cursor.prototype.update = function (config) { this.config = config; - var selections = this.session.$selectionMarkers; var i = 0, cursorIndex = 0; - - if (selections === undefined || selections.length === 0){ - selections = [{cursor: null}]; + if (selections === undefined || selections.length === 0) { + selections = [{ cursor: null }]; } - for (var i = 0, n = selections.length; i < n; i++) { var pixelPos = this.getPixelPosition(selections[i].cursor, true); if ((pixelPos.top > config.height + config.offset || - pixelPos.top < 0) && i > 1) { + pixelPos.top < 0) && i > 1) { continue; } - - var style = (this.cursors[cursorIndex++] || this.addCursor()).style; - + var element = this.cursors[cursorIndex++] || this.addCursor(); + var style = element.style; if (!this.drawCursor) { - style.left = pixelPos.left + "px"; - style.top = pixelPos.top + "px"; - style.width = config.characterWidth + "px"; - style.height = config.lineHeight + "px"; - } else { - this.drawCursor(style, pixelPos, config, selections[i], this.session); + if (!this.isCursorInView(pixelPos, config)) { + dom.setStyle(style, "display", "none"); + } + else { + dom.setStyle(style, "display", "block"); + dom.translate(element, pixelPos.left, pixelPos.top); + dom.setStyle(style, "width", Math.round(config.characterWidth) + "px"); + dom.setStyle(style, "height", config.lineHeight + "px"); + } + } + else { + this.drawCursor(element, pixelPos, config, selections[i], this.session); } } while (this.cursors.length > cursorIndex) this.removeCursor(); - var overwrite = this.session.getOverwrite(); this.$setOverwrite(overwrite); this.$pixelPos = pixelPos; this.restartTimer(); }; - - this.drawCursor = null; - - this.$setOverwrite = function(overwrite) { + Cursor.prototype.$setOverwrite = function (overwrite) { if (overwrite != this.overwrite) { this.overwrite = overwrite; if (overwrite) @@ -15963,261 +17194,486 @@ var Cursor = function(parentEl) { dom.removeCssClass(this.element, "ace_overwrite-cursors"); } }; - - this.destroy = function() { + Cursor.prototype.destroy = function () { clearInterval(this.intervalId); clearTimeout(this.timeoutId); }; - -}).call(Cursor.prototype); - + return Cursor; +}()); +Cursor.prototype.$padding = 0; +Cursor.prototype.drawCursor = null; exports.Cursor = Cursor; }); -define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; - +define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var oop = require("./lib/oop"); var dom = require("./lib/dom"); var event = require("./lib/event"); var EventEmitter = require("./lib/event_emitter").EventEmitter; var MAX_SCROLL_H = 0x8000; -var ScrollBar = function(parent) { - this.element = dom.createElement("div"); - this.element.className = "ace_scrollbar ace_scrollbar" + this.classSuffix; - - this.inner = dom.createElement("div"); - this.inner.className = "ace_scrollbar-inner"; - this.element.appendChild(this.inner); - - parent.appendChild(this.element); - - this.setVisible(false); - this.skipEvent = false; - - event.addListener(this.element, "scroll", this.onScroll.bind(this)); - event.addListener(this.element, "mousedown", event.preventDefault); -}; - -(function() { - oop.implement(this, EventEmitter); - - this.setVisible = function(isVisible) { +var Scrollbar = /** @class */ (function () { + function Scrollbar(parent, classSuffix) { + this.element = dom.createElement("div"); + this.element.className = "ace_scrollbar ace_scrollbar" + classSuffix; + this.inner = dom.createElement("div"); + this.inner.className = "ace_scrollbar-inner"; + this.inner.textContent = "\xa0"; + this.element.appendChild(this.inner); + parent.appendChild(this.element); + this.setVisible(false); + this.skipEvent = false; + event.addListener(this.element, "scroll", this.onScroll.bind(this)); + event.addListener(this.element, "mousedown", event.preventDefault); + } + Scrollbar.prototype.setVisible = function (isVisible) { this.element.style.display = isVisible ? "" : "none"; this.isVisible = isVisible; this.coeff = 1; }; -}).call(ScrollBar.prototype); -var VScrollBar = function(parent, renderer) { - ScrollBar.call(this, parent); - this.scrollTop = 0; - this.scrollHeight = 0; - renderer.$scrollbarWidth = - this.width = dom.scrollbarWidth(parent.ownerDocument); - this.inner.style.width = - this.element.style.width = (this.width || 15) + 5 + "px"; - this.$minWidth = 0; -}; - -oop.inherits(VScrollBar, ScrollBar); - -(function() { - - this.classSuffix = '-v'; - this.onScroll = function() { + return Scrollbar; +}()); +oop.implement(Scrollbar.prototype, EventEmitter); +var VScrollBar = /** @class */ (function (_super) { + __extends(VScrollBar, _super); + function VScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-v') || this; + _this.scrollTop = 0; + _this.scrollHeight = 0; + renderer.$scrollbarWidth = + _this.width = dom.scrollbarWidth(parent.ownerDocument); + _this.inner.style.width = + _this.element.style.width = (_this.width || 15) + 5 + "px"; + _this.$minWidth = 0; + return _this; + } + VScrollBar.prototype.onScroll = function () { if (!this.skipEvent) { this.scrollTop = this.element.scrollTop; if (this.coeff != 1) { var h = this.element.clientHeight / this.scrollHeight; this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h); } - this._emit("scroll", {data: this.scrollTop}); + this._emit("scroll", { data: this.scrollTop }); } this.skipEvent = false; }; - this.getWidth = function() { + VScrollBar.prototype.getWidth = function () { return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); }; - this.setHeight = function(height) { + VScrollBar.prototype.setHeight = function (height) { this.element.style.height = height + "px"; }; - this.setInnerHeight = - this.setScrollHeight = function(height) { + VScrollBar.prototype.setScrollHeight = function (height) { this.scrollHeight = height; if (height > MAX_SCROLL_H) { this.coeff = MAX_SCROLL_H / height; height = MAX_SCROLL_H; - } else if (this.coeff != 1) { + } + else if (this.coeff != 1) { this.coeff = 1; } this.inner.style.height = height + "px"; }; - this.setScrollTop = function(scrollTop) { + VScrollBar.prototype.setScrollTop = function (scrollTop) { if (this.scrollTop != scrollTop) { this.skipEvent = true; this.scrollTop = scrollTop; this.element.scrollTop = scrollTop * this.coeff; } }; - -}).call(VScrollBar.prototype); -var HScrollBar = function(parent, renderer) { - ScrollBar.call(this, parent); - this.scrollLeft = 0; - this.height = renderer.$scrollbarWidth; - this.inner.style.height = - this.element.style.height = (this.height || 15) + 5 + "px"; -}; - -oop.inherits(HScrollBar, ScrollBar); - -(function() { - - this.classSuffix = '-h'; - this.onScroll = function() { + return VScrollBar; +}(Scrollbar)); +VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; +var HScrollBar = /** @class */ (function (_super) { + __extends(HScrollBar, _super); + function HScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-h') || this; + _this.scrollLeft = 0; + _this.height = renderer.$scrollbarWidth; + _this.inner.style.height = + _this.element.style.height = (_this.height || 15) + 5 + "px"; + return _this; + } + HScrollBar.prototype.onScroll = function () { if (!this.skipEvent) { this.scrollLeft = this.element.scrollLeft; - this._emit("scroll", {data: this.scrollLeft}); + this._emit("scroll", { data: this.scrollLeft }); } this.skipEvent = false; }; - this.getHeight = function() { + HScrollBar.prototype.getHeight = function () { return this.isVisible ? this.height : 0; }; - this.setWidth = function(width) { + HScrollBar.prototype.setWidth = function (width) { this.element.style.width = width + "px"; }; - this.setInnerWidth = function(width) { + HScrollBar.prototype.setInnerWidth = function (width) { this.inner.style.width = width + "px"; }; - this.setScrollWidth = function(width) { + HScrollBar.prototype.setScrollWidth = function (width) { this.inner.style.width = width + "px"; }; - this.setScrollLeft = function(scrollLeft) { + HScrollBar.prototype.setScrollLeft = function (scrollLeft) { if (this.scrollLeft != scrollLeft) { this.skipEvent = true; this.scrollLeft = this.element.scrollLeft = scrollLeft; } }; - -}).call(HScrollBar.prototype); - - + return HScrollBar; +}(Scrollbar)); exports.ScrollBar = VScrollBar; // backward compatibility exports.ScrollBarV = VScrollBar; // backward compatibility exports.ScrollBarH = HScrollBar; // backward compatibility - exports.VScrollBar = VScrollBar; exports.HScrollBar = HScrollBar; + }); -define("ace/renderloop",["require","exports","module","ace/lib/event"], function(require, exports, module) { -"use strict"; - +define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var oop = require("./lib/oop"); +var dom = require("./lib/dom"); var event = require("./lib/event"); - - -var RenderLoop = function(onRender, win) { - this.onRender = onRender; - this.pending = false; - this.changes = 0; - this.window = win || window; -}; - -(function() { - - - this.schedule = function(change) { - this.changes = this.changes | change; - if (!this.pending && this.changes) { - this.pending = true; - var _self = this; - event.nextFrame(function() { - _self.pending = false; - var changes; - while (changes = _self.changes) { - _self.changes = 0; - _self.onRender(changes); - } - }, this.window); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +dom.importCssString(".ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{\n position: absolute;\n background: rgba(128, 128, 128, 0.6);\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n border: 1px solid #bbb;\n border-radius: 2px;\n z-index: 8;\n}\n.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h {\n position: absolute;\n z-index: 6;\n background: none;\n overflow: hidden!important;\n}\n.ace_editor>.ace_sb-v {\n z-index: 6;\n right: 0;\n top: 0;\n width: 12px;\n}\n.ace_editor>.ace_sb-v div {\n z-index: 8;\n right: 0;\n width: 100%;\n}\n.ace_editor>.ace_sb-h {\n bottom: 0;\n left: 0;\n height: 12px;\n}\n.ace_editor>.ace_sb-h div {\n bottom: 0;\n height: 100%;\n}\n.ace_editor>.ace_sb_grabbed {\n z-index: 8;\n background: #000;\n}", "ace_scrollbar.css", false); +var ScrollBar = /** @class */ (function () { + function ScrollBar(parent, classSuffix) { + this.element = dom.createElement("div"); + this.element.className = "ace_sb" + classSuffix; + this.inner = dom.createElement("div"); + this.inner.className = ""; + this.element.appendChild(this.inner); + this.VScrollWidth = 12; + this.HScrollHeight = 12; + parent.appendChild(this.element); + this.setVisible(false); + this.skipEvent = false; + event.addMultiMouseDownListener(this.element, [500, 300, 300], this, "onMouseDown"); + } + ScrollBar.prototype.setVisible = function (isVisible) { + this.element.style.display = isVisible ? "" : "none"; + this.isVisible = isVisible; + this.coeff = 1; + }; + return ScrollBar; +}()); +oop.implement(ScrollBar.prototype, EventEmitter); +var VScrollBar = /** @class */ (function (_super) { + __extends(VScrollBar, _super); + function VScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-v') || this; + _this.scrollTop = 0; + _this.scrollHeight = 0; + _this.parent = parent; + _this.width = _this.VScrollWidth; + _this.renderer = renderer; + _this.inner.style.width = _this.element.style.width = (_this.width || 15) + "px"; + _this.$minWidth = 0; + return _this; + } + VScrollBar.prototype.onMouseDown = function (eType, e) { + if (eType !== "mousedown") + return; + if (event.getButton(e) !== 0 || e.detail === 2) { + return; + } + if (e.target === this.inner) { + var self = this; + var mousePageY = e.clientY; + var onMouseMove = function (e) { + mousePageY = e.clientY; + }; + var onMouseUp = function () { + clearInterval(timerId); + }; + var startY = e.clientY; + var startTop = this.thumbTop; + var onScrollInterval = function () { + if (mousePageY === undefined) + return; + var scrollTop = self.scrollTopFromThumbTop(startTop + mousePageY - startY); + if (scrollTop === self.scrollTop) + return; + self._emit("scroll", { data: scrollTop }); + }; + event.capture(this.inner, onMouseMove, onMouseUp); + var timerId = setInterval(onScrollInterval, 20); + return event.preventDefault(e); + } + var top = e.clientY - this.element.getBoundingClientRect().top - this.thumbHeight / 2; + this._emit("scroll", { data: this.scrollTopFromThumbTop(top) }); + return event.preventDefault(e); + }; + VScrollBar.prototype.getHeight = function () { + return this.height; + }; + VScrollBar.prototype.scrollTopFromThumbTop = function (thumbTop) { + var scrollTop = thumbTop * (this.pageHeight - this.viewHeight) / (this.slideHeight - this.thumbHeight); + scrollTop = scrollTop >> 0; + if (scrollTop < 0) { + scrollTop = 0; + } + else if (scrollTop > this.pageHeight - this.viewHeight) { + scrollTop = this.pageHeight - this.viewHeight; + } + return scrollTop; + }; + VScrollBar.prototype.getWidth = function () { + return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); + }; + VScrollBar.prototype.setHeight = function (height) { + this.height = Math.max(0, height); + this.slideHeight = this.height; + this.viewHeight = this.height; + this.setScrollHeight(this.pageHeight, true); + }; + VScrollBar.prototype.setScrollHeight = function (height, force) { + if (this.pageHeight === height && !force) + return; + this.pageHeight = height; + this.thumbHeight = this.slideHeight * this.viewHeight / this.pageHeight; + if (this.thumbHeight > this.slideHeight) + this.thumbHeight = this.slideHeight; + if (this.thumbHeight < 15) + this.thumbHeight = 15; + this.inner.style.height = this.thumbHeight + "px"; + if (this.scrollTop > (this.pageHeight - this.viewHeight)) { + this.scrollTop = (this.pageHeight - this.viewHeight); + if (this.scrollTop < 0) + this.scrollTop = 0; + this._emit("scroll", { data: this.scrollTop }); } }; + VScrollBar.prototype.setScrollTop = function (scrollTop) { + this.scrollTop = scrollTop; + if (scrollTop < 0) + scrollTop = 0; + this.thumbTop = scrollTop * (this.slideHeight - this.thumbHeight) / (this.pageHeight - this.viewHeight); + this.inner.style.top = this.thumbTop + "px"; + }; + return VScrollBar; +}(ScrollBar)); +VScrollBar.prototype.setInnerHeight = VScrollBar.prototype.setScrollHeight; +var HScrollBar = /** @class */ (function (_super) { + __extends(HScrollBar, _super); + function HScrollBar(parent, renderer) { + var _this = _super.call(this, parent, '-h') || this; + _this.scrollLeft = 0; + _this.scrollWidth = 0; + _this.height = _this.HScrollHeight; + _this.inner.style.height = _this.element.style.height = (_this.height || 12) + "px"; + _this.renderer = renderer; + return _this; + } + HScrollBar.prototype.onMouseDown = function (eType, e) { + if (eType !== "mousedown") + return; + if (event.getButton(e) !== 0 || e.detail === 2) { + return; + } + if (e.target === this.inner) { + var self = this; + var mousePageX = e.clientX; + var onMouseMove = function (e) { + mousePageX = e.clientX; + }; + var onMouseUp = function () { + clearInterval(timerId); + }; + var startX = e.clientX; + var startLeft = this.thumbLeft; + var onScrollInterval = function () { + if (mousePageX === undefined) + return; + var scrollLeft = self.scrollLeftFromThumbLeft(startLeft + mousePageX - startX); + if (scrollLeft === self.scrollLeft) + return; + self._emit("scroll", { data: scrollLeft }); + }; + event.capture(this.inner, onMouseMove, onMouseUp); + var timerId = setInterval(onScrollInterval, 20); + return event.preventDefault(e); + } + var left = e.clientX - this.element.getBoundingClientRect().left - this.thumbWidth / 2; + this._emit("scroll", { data: this.scrollLeftFromThumbLeft(left) }); + return event.preventDefault(e); + }; + HScrollBar.prototype.getHeight = function () { + return this.isVisible ? this.height : 0; + }; + HScrollBar.prototype.scrollLeftFromThumbLeft = function (thumbLeft) { + var scrollLeft = thumbLeft * (this.pageWidth - this.viewWidth) / (this.slideWidth - this.thumbWidth); + scrollLeft = scrollLeft >> 0; + if (scrollLeft < 0) { + scrollLeft = 0; + } + else if (scrollLeft > this.pageWidth - this.viewWidth) { + scrollLeft = this.pageWidth - this.viewWidth; + } + return scrollLeft; + }; + HScrollBar.prototype.setWidth = function (width) { + this.width = Math.max(0, width); + this.element.style.width = this.width + "px"; + this.slideWidth = this.width; + this.viewWidth = this.width; + this.setScrollWidth(this.pageWidth, true); + }; + HScrollBar.prototype.setScrollWidth = function (width, force) { + if (this.pageWidth === width && !force) + return; + this.pageWidth = width; + this.thumbWidth = this.slideWidth * this.viewWidth / this.pageWidth; + if (this.thumbWidth > this.slideWidth) + this.thumbWidth = this.slideWidth; + if (this.thumbWidth < 15) + this.thumbWidth = 15; + this.inner.style.width = this.thumbWidth + "px"; + if (this.scrollLeft > (this.pageWidth - this.viewWidth)) { + this.scrollLeft = (this.pageWidth - this.viewWidth); + if (this.scrollLeft < 0) + this.scrollLeft = 0; + this._emit("scroll", { data: this.scrollLeft }); + } + }; + HScrollBar.prototype.setScrollLeft = function (scrollLeft) { + this.scrollLeft = scrollLeft; + if (scrollLeft < 0) + scrollLeft = 0; + this.thumbLeft = scrollLeft * (this.slideWidth - this.thumbWidth) / (this.pageWidth - this.viewWidth); + this.inner.style.left = (this.thumbLeft) + "px"; + }; + return HScrollBar; +}(ScrollBar)); +HScrollBar.prototype.setInnerWidth = HScrollBar.prototype.setScrollWidth; +exports.ScrollBar = VScrollBar; // backward compatibility +exports.ScrollBarV = VScrollBar; // backward compatibility +exports.ScrollBarH = HScrollBar; // backward compatibility +exports.VScrollBar = VScrollBar; +exports.HScrollBar = HScrollBar; -}).call(RenderLoop.prototype); - -exports.RenderLoop = RenderLoop; }); -define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module) { +define("ace/renderloop",["require","exports","module","ace/lib/event"], function(require, exports, module){"use strict"; +var event = require("./lib/event"); +var RenderLoop = /** @class */ (function () { + function RenderLoop(onRender, win) { + this.onRender = onRender; + this.pending = false; + this.changes = 0; + this.$recursionLimit = 2; + this.window = win || window; + var _self = this; + this._flush = function (ts) { + _self.pending = false; + var changes = _self.changes; + if (changes) { + event.blockIdle(100); + _self.changes = 0; + _self.onRender(changes); + } + if (_self.changes) { + if (_self.$recursionLimit-- < 0) + return; + _self.schedule(); + } + else { + _self.$recursionLimit = 2; + } + }; + } + RenderLoop.prototype.schedule = function (change) { + this.changes = this.changes | change; + if (this.changes && !this.pending) { + event.nextFrame(this._flush); + this.pending = true; + } + }; + RenderLoop.prototype.clear = function (change) { + var changes = this.changes; + this.changes = 0; + return changes; + }; + return RenderLoop; +}()); +exports.RenderLoop = RenderLoop; -var oop = require("../lib/oop"); +}); + +define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"], function(require, exports, module){var oop = require("../lib/oop"); var dom = require("../lib/dom"); var lang = require("../lib/lang"); +var event = require("../lib/event"); var useragent = require("../lib/useragent"); var EventEmitter = require("../lib/event_emitter").EventEmitter; - -var CHAR_COUNT = 0; - -var FontMetrics = exports.FontMetrics = function(parentEl) { - this.el = dom.createElement("div"); - this.$setMeasureNodeStyles(this.el.style, true); - - this.$main = dom.createElement("div"); - this.$setMeasureNodeStyles(this.$main.style); - - this.$measureNode = dom.createElement("div"); - this.$setMeasureNodeStyles(this.$measureNode.style); - - - this.el.appendChild(this.$main); - this.el.appendChild(this.$measureNode); - parentEl.appendChild(this.el); - - if (!CHAR_COUNT) - this.$testFractionalRect(); - this.$measureNode.innerHTML = lang.stringRepeat("X", CHAR_COUNT); - - this.$characterSize = {width: 0, height: 0}; - this.checkForSizeChanges(); -}; - -(function() { - - oop.implement(this, EventEmitter); - - this.$characterSize = {width: 0, height: 0}; - - this.$testFractionalRect = function() { - var el = dom.createElement("div"); - this.$setMeasureNodeStyles(el.style); - el.style.width = "0.2px"; - document.documentElement.appendChild(el); - var w = el.getBoundingClientRect().width; - if (w > 0 && w < 1) - CHAR_COUNT = 50; +var CHAR_COUNT = 512; +var USE_OBSERVER = typeof ResizeObserver == "function"; +var L = 200; +var FontMetrics = /** @class */ (function () { + function FontMetrics(parentEl) { + this.el = dom.createElement("div"); + this.$setMeasureNodeStyles(this.el.style, true); + this.$main = dom.createElement("div"); + this.$setMeasureNodeStyles(this.$main.style); + this.$measureNode = dom.createElement("div"); + this.$setMeasureNodeStyles(this.$measureNode.style); + this.el.appendChild(this.$main); + this.el.appendChild(this.$measureNode); + parentEl.appendChild(this.el); + this.$measureNode.textContent = lang.stringRepeat("X", CHAR_COUNT); + this.$characterSize = { width: 0, height: 0 }; + if (USE_OBSERVER) + this.$addObserver(); else - CHAR_COUNT = 100; - el.parentNode.removeChild(el); - }; - - this.$setMeasureNodeStyles = function(style, isRoot) { + this.checkForSizeChanges(); + } + FontMetrics.prototype.$setMeasureNodeStyles = function (style, isRoot) { style.width = style.height = "auto"; style.left = style.top = "0px"; style.visibility = "hidden"; style.position = "absolute"; style.whiteSpace = "pre"; - if (useragent.isIE < 8) { style["font-family"] = "inherit"; - } else { + } + else { style.font = "inherit"; } style.overflow = isRoot ? "hidden" : "visible"; }; - - this.checkForSizeChanges = function() { - var size = this.$measureSizes(); + FontMetrics.prototype.checkForSizeChanges = function (size) { + if (size === undefined) + size = this.$measureSizes(); if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) { this.$measureNode.style.fontWeight = "bold"; var boldSize = this.$measureSizes(); @@ -16225,619 +17681,394 @@ var FontMetrics = exports.FontMetrics = function(parentEl) { this.$characterSize = size; this.charSizes = Object.create(null); this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height; - this._emit("changeCharacterSize", {data: size}); + this._emit("changeCharacterSize", { data: size }); } }; - - this.$pollSizeChanges = function() { - if (this.$pollSizeChangesTimer) + FontMetrics.prototype.$addObserver = function () { + var self = this; + this.$observer = new window.ResizeObserver(function (e) { + self.checkForSizeChanges(); + }); + this.$observer.observe(this.$measureNode); + }; + FontMetrics.prototype.$pollSizeChanges = function () { + if (this.$pollSizeChangesTimer || this.$observer) return this.$pollSizeChangesTimer; var self = this; - return this.$pollSizeChangesTimer = setInterval(function() { + return this.$pollSizeChangesTimer = event.onIdle(function cb() { self.checkForSizeChanges(); + event.onIdle(cb, 500); }, 500); }; - - this.setPolling = function(val) { + FontMetrics.prototype.setPolling = function (val) { if (val) { this.$pollSizeChanges(); - } else if (this.$pollSizeChangesTimer) { + } + else if (this.$pollSizeChangesTimer) { clearInterval(this.$pollSizeChangesTimer); this.$pollSizeChangesTimer = 0; } }; - - this.$measureSizes = function() { - if (CHAR_COUNT === 50) { - var rect = null; - try { - rect = this.$measureNode.getBoundingClientRect(); - } catch(e) { - rect = {width: 0, height:0 }; - } - var size = { - height: rect.height, - width: rect.width / CHAR_COUNT - }; - } else { - var size = { - height: this.$measureNode.clientHeight, - width: this.$measureNode.clientWidth / CHAR_COUNT - }; - } + FontMetrics.prototype.$measureSizes = function (node) { + var size = { + height: (node || this.$measureNode).clientHeight, + width: (node || this.$measureNode).clientWidth / CHAR_COUNT + }; if (size.width === 0 || size.height === 0) return null; return size; }; - - this.$measureCharWidth = function(ch) { - this.$main.innerHTML = lang.stringRepeat(ch, CHAR_COUNT); + FontMetrics.prototype.$measureCharWidth = function (ch) { + this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT); var rect = this.$main.getBoundingClientRect(); return rect.width / CHAR_COUNT; }; - - this.getCharacterWidth = function(ch) { + FontMetrics.prototype.getCharacterWidth = function (ch) { var w = this.charSizes[ch]; if (w === undefined) { w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width; } return w; }; - - this.destroy = function() { + FontMetrics.prototype.destroy = function () { clearInterval(this.$pollSizeChangesTimer); + if (this.$observer) + this.$observer.disconnect(); if (this.el && this.el.parentNode) this.el.parentNode.removeChild(this.el); }; - -}).call(FontMetrics.prototype); + FontMetrics.prototype.$getZoom = function (element) { + if (!element || !element.parentElement) + return 1; + return (window.getComputedStyle(element)["zoom"] || 1) * this.$getZoom(element.parentElement); + }; + FontMetrics.prototype.$initTransformMeasureNodes = function () { + var t = function (t, l) { + return ["div", { + style: "position: absolute;top:" + t + "px;left:" + l + "px;" + }]; + }; + this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el); + }; + FontMetrics.prototype.transformCoordinates = function (clientPos, elPos) { + if (clientPos) { + var zoom = this.$getZoom(this.el); + clientPos = mul(1 / zoom, clientPos); + } + function solve(l1, l2, r) { + var det = l1[1] * l2[0] - l1[0] * l2[1]; + return [ + (-l2[1] * r[0] + l2[0] * r[1]) / det, + (+l1[1] * r[0] - l1[0] * r[1]) / det + ]; + } + function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; } + function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; } + function mul(a, b) { return [a * b[0], a * b[1]]; } + if (!this.els) + this.$initTransformMeasureNodes(); + function p(el) { + var r = el.getBoundingClientRect(); + return [r.left, r.top]; + } + var a = p(this.els[0]); + var b = p(this.els[1]); + var c = p(this.els[2]); + var d = p(this.els[3]); + var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a))); + var m1 = mul(1 + h[0], sub(b, a)); + var m2 = mul(1 + h[1], sub(c, a)); + if (elPos) { + var x = elPos; + var k = h[0] * x[0] / L + h[1] * x[1] / L + 1; + var ut = add(mul(x[0], m1), mul(x[1], m2)); + return add(mul(1 / k / L, ut), a); + } + var u = sub(clientPos, a); + var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u); + return mul(L, f); + }; + return FontMetrics; +}()); +FontMetrics.prototype.$characterSize = { width: 0, height: 0 }; +oop.implement(FontMetrics.prototype, EventEmitter); +exports.FontMetrics = FontMetrics; }); -define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"], function(require, exports, module) { -"use strict"; +define("ace/css/editor-css",["require","exports","module"], function(require, exports, module){/* +styles = [] +for (var i = 1; i < 16; i++) { + styles.push(".ace_br" + i + "{" + ( + ["top-left", "top-right", "bottom-right", "bottom-left"] + ).map(function(x, j) { + return i & (1< .ace_line, .ace_text-layer > .ace_line_group {\n contain: style size layout;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n}\n\n.ace_hidpi .ace_text-layer,\n.ace_hidpi .ace_gutter-layer,\n.ace_hidpi .ace_content,\n.ace_hidpi .ace_gutter {\n contain: strict;\n}\n.ace_hidpi .ace_text-layer > .ace_line, \n.ace_hidpi .ace_text-layer > .ace_line_group {\n contain: strict;\n}\n\n.ace_cjk {\n display: inline-block;\n text-align: center;\n}\n\n.ace_cursor-layer {\n z-index: 4;\n}\n\n.ace_cursor {\n z-index: 4;\n position: absolute;\n box-sizing: border-box;\n border-left: 2px solid;\n /* workaround for smooth cursor repaintng whole screen in chrome */\n transform: translatez(0);\n}\n\n.ace_multiselect .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_slim-cursors .ace_cursor {\n border-left-width: 1px;\n}\n\n.ace_overwrite-cursors .ace_cursor {\n border-left-width: 0;\n border-bottom: 1px solid;\n}\n\n.ace_hidden-cursors .ace_cursor {\n opacity: 0.2;\n}\n\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\n opacity: 0;\n}\n\n.ace_smooth-blinking .ace_cursor {\n transition: opacity 0.18s;\n}\n\n.ace_animate-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: step-end;\n animation-name: blink-ace-animate;\n animation-iteration-count: infinite;\n}\n\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\n animation-duration: 1000ms;\n animation-timing-function: ease-in-out;\n animation-name: blink-ace-animate-smooth;\n}\n \n@keyframes blink-ace-animate {\n from, to { opacity: 1; }\n 60% { opacity: 0; }\n}\n\n@keyframes blink-ace-animate-smooth {\n from, to { opacity: 1; }\n 45% { opacity: 1; }\n 60% { opacity: 0; }\n 85% { opacity: 0; }\n}\n\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\n position: absolute;\n z-index: 3;\n}\n\n.ace_marker-layer .ace_selection {\n position: absolute;\n z-index: 5;\n}\n\n.ace_marker-layer .ace_bracket {\n position: absolute;\n z-index: 6;\n}\n\n.ace_marker-layer .ace_error_bracket {\n position: absolute;\n border-bottom: 1px solid #DE5555;\n border-radius: 0;\n}\n\n.ace_marker-layer .ace_active-line {\n position: absolute;\n z-index: 2;\n}\n\n.ace_marker-layer .ace_selected-word {\n position: absolute;\n z-index: 4;\n box-sizing: border-box;\n}\n\n.ace_line .ace_fold {\n box-sizing: border-box;\n\n display: inline-block;\n height: 11px;\n margin-top: -2px;\n vertical-align: middle;\n\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");\n background-repeat: no-repeat, repeat-x;\n background-position: center center, top left;\n color: transparent;\n\n border: 1px solid black;\n border-radius: 2px;\n\n cursor: pointer;\n pointer-events: auto;\n}\n\n.ace_dark .ace_fold {\n}\n\n.ace_fold:hover{\n background-image:\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\n url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");\n}\n\n.ace_tooltip {\n background-color: #f5f5f5;\n border: 1px solid gray;\n border-radius: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\n color: black;\n max-width: 100%;\n padding: 3px 4px;\n position: fixed;\n z-index: 999999;\n box-sizing: border-box;\n cursor: default;\n white-space: pre-wrap;\n word-wrap: break-word;\n line-height: normal;\n font-style: normal;\n font-weight: normal;\n letter-spacing: normal;\n pointer-events: none;\n overflow: auto;\n max-width: min(60em, 66vw);\n overscroll-behavior: contain;\n}\n.ace_tooltip pre {\n white-space: pre-wrap;\n}\n\n.ace_tooltip.ace_dark {\n background-color: #636363;\n color: #fff;\n}\n\n.ace_tooltip:focus {\n outline: 1px solid #5E9ED6;\n}\n\n.ace_icon {\n display: inline-block;\n width: 18px;\n vertical-align: top;\n}\n\n.ace_icon_svg {\n display: inline-block;\n width: 12px;\n vertical-align: top;\n -webkit-mask-repeat: no-repeat;\n -webkit-mask-size: 12px;\n -webkit-mask-position: center;\n}\n\n.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons {\n padding-right: 13px;\n}\n\n.ace_fold-widget {\n box-sizing: border-box;\n\n margin: 0 -12px 0 1px;\n display: none;\n width: 11px;\n vertical-align: top;\n\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");\n background-repeat: no-repeat;\n background-position: center;\n\n border-radius: 3px;\n \n border: 1px solid transparent;\n cursor: pointer;\n}\n\n.ace_folding-enabled .ace_fold-widget {\n display: inline-block; \n}\n\n.ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");\n}\n\n.ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");\n}\n\n.ace_fold-widget:hover {\n border: 1px solid rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.2);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\n}\n\n.ace_fold-widget:active {\n border: 1px solid rgba(0, 0, 0, 0.4);\n background-color: rgba(0, 0, 0, 0.05);\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\n}\n/**\n * Dark version for fold widgets\n */\n.ace_dark .ace_fold-widget {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\n}\n.ace_dark .ace_fold-widget.ace_end {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget.ace_closed {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\n}\n.ace_dark .ace_fold-widget:hover {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n background-color: rgba(255, 255, 255, 0.1);\n}\n.ace_dark .ace_fold-widget:active {\n box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\n}\n\n.ace_inline_button {\n border: 1px solid lightgray;\n display: inline-block;\n margin: -1px 8px;\n padding: 0 5px;\n pointer-events: auto;\n cursor: pointer;\n}\n.ace_inline_button:hover {\n border-color: gray;\n background: rgba(200,200,200,0.2);\n display: inline-block;\n pointer-events: auto;\n}\n\n.ace_fold-widget.ace_invalid {\n background-color: #FFB4B4;\n border-color: #DE5555;\n}\n\n.ace_fade-fold-widgets .ace_fold-widget {\n transition: opacity 0.4s ease 0.05s;\n opacity: 0;\n}\n\n.ace_fade-fold-widgets:hover .ace_fold-widget {\n transition: opacity 0.05s ease 0.05s;\n opacity:1;\n}\n\n.ace_underline {\n text-decoration: underline;\n}\n\n.ace_bold {\n font-weight: bold;\n}\n\n.ace_nobold .ace_bold {\n font-weight: normal;\n}\n\n.ace_italic {\n font-style: italic;\n}\n\n\n.ace_error-marker {\n background-color: rgba(255, 0, 0,0.2);\n position: absolute;\n z-index: 9;\n}\n\n.ace_highlight-marker {\n background-color: rgba(255, 255, 0,0.2);\n position: absolute;\n z-index: 8;\n}\n\n.ace_mobile-menu {\n position: absolute;\n line-height: 1.5;\n border-radius: 4px;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n background: white;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #dcdcdc;\n color: black;\n}\n.ace_dark > .ace_mobile-menu {\n background: #333;\n color: #ccc;\n box-shadow: 1px 3px 2px grey;\n border: 1px solid #444;\n\n}\n.ace_mobile-button {\n padding: 2px;\n cursor: pointer;\n overflow: hidden;\n}\n.ace_mobile-button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_mobile-button:active {\n background-color: #ddd;\n}\n\n.ace_placeholder {\n font-family: arial;\n transform: scale(0.9);\n transform-origin: left;\n white-space: pre;\n opacity: 0.7;\n margin: 0 10px;\n}\n\n.ace_ghost_text {\n opacity: 0.5;\n font-style: italic;\n white-space: pre;\n}\n\n.ace_screenreader-only {\n position:absolute;\n left:-10000px;\n top:auto;\n width:1px;\n height:1px;\n overflow:hidden;\n}"; +}); + +define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var Decorator = /** @class */ (function () { + function Decorator(parent, renderer) { + this.canvas = dom.createElement("canvas"); + this.renderer = renderer; + this.pixelRatio = 1; + this.maxHeight = renderer.layerConfig.maxHeight; + this.lineHeight = renderer.layerConfig.lineHeight; + this.canvasHeight = parent.parent.scrollHeight; + this.heightRatio = this.canvasHeight / this.maxHeight; + this.canvasWidth = parent.width; + this.minDecorationHeight = (2 * this.pixelRatio) | 0; + this.halfMinDecorationHeight = (this.minDecorationHeight / 2) | 0; + this.canvas.width = this.canvasWidth; + this.canvas.height = this.canvasHeight; + this.canvas.style.top = 0 + "px"; + this.canvas.style.right = 0 + "px"; + this.canvas.style.zIndex = 7 + "px"; + this.canvas.style.position = "absolute"; + this.colors = {}; + this.colors.dark = { + "error": "rgba(255, 18, 18, 1)", + "warning": "rgba(18, 136, 18, 1)", + "info": "rgba(18, 18, 136, 1)" + }; + this.colors.light = { + "error": "rgb(255,51,51)", + "warning": "rgb(32,133,72)", + "info": "rgb(35,68,138)" + }; + parent.element.appendChild(this.canvas); + } + Decorator.prototype.$updateDecorators = function (config) { + var colors = (this.renderer.theme.isDark === true) ? this.colors.dark : this.colors.light; + if (config) { + this.maxHeight = config.maxHeight; + this.lineHeight = config.lineHeight; + this.canvasHeight = config.height; + var allLineHeight = (config.lastRow + 1) * this.lineHeight; + if (allLineHeight < this.canvasHeight) { + this.heightRatio = 1; + } + else { + this.heightRatio = this.canvasHeight / this.maxHeight; + } + } + var ctx = this.canvas.getContext("2d"); + function compare(a, b) { + if (a.priority < b.priority) + return -1; + if (a.priority > b.priority) + return 1; + return 0; + } + var annotations = this.renderer.session.$annotations; + ctx.clearRect(0, 0, this.canvas.width, this.canvas.height); + if (annotations) { + var priorities = { + "info": 1, + "warning": 2, + "error": 3 + }; + annotations.forEach(function (item) { + item.priority = priorities[item.type] || null; + }); + annotations = annotations.sort(compare); + var foldData = this.renderer.session.$foldData; + for (var i = 0; i < annotations.length; i++) { + var row = annotations[i].row; + var compensateFold = this.compensateFoldRows(row, foldData); + var currentY = Math.round((row - compensateFold) * this.lineHeight * this.heightRatio); + var y1 = Math.round(((row - compensateFold) * this.lineHeight * this.heightRatio)); + var y2 = Math.round((((row - compensateFold) * this.lineHeight + this.lineHeight) * this.heightRatio)); + var height = y2 - y1; + if (height < this.minDecorationHeight) { + var yCenter = ((y1 + y2) / 2) | 0; + if (yCenter < this.halfMinDecorationHeight) { + yCenter = this.halfMinDecorationHeight; + } + else if (yCenter + this.halfMinDecorationHeight > this.canvasHeight) { + yCenter = this.canvasHeight - this.halfMinDecorationHeight; + } + y1 = Math.round(yCenter - this.halfMinDecorationHeight); + y2 = Math.round(yCenter + this.halfMinDecorationHeight); + } + ctx.fillStyle = colors[annotations[i].type] || null; + ctx.fillRect(0, currentY, this.canvasWidth, y2 - y1); + } + } + var cursor = this.renderer.session.selection.getCursor(); + if (cursor) { + var compensateFold = this.compensateFoldRows(cursor.row, foldData); + var currentY = Math.round((cursor.row - compensateFold) * this.lineHeight * this.heightRatio); + ctx.fillStyle = "rgba(0, 0, 0, 0.5)"; + ctx.fillRect(0, currentY, this.canvasWidth, 2); + } + }; + Decorator.prototype.compensateFoldRows = function (row, foldData) { + var compensateFold = 0; + if (foldData && foldData.length > 0) { + for (var j = 0; j < foldData.length; j++) { + if (row > foldData[j].start.row && row < foldData[j].end.row) { + compensateFold += row - foldData[j].start.row; + } + else if (row >= foldData[j].end.row) { + compensateFold += foldData[j].end.row - foldData[j].start.row; + } + } + } + return compensateFold; + }; + return Decorator; +}()); +oop.implement(Decorator.prototype, EventEmitter); +exports.Decorator = Decorator; + +}); + +define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/scrollbar_custom","ace/scrollbar_custom","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/css/editor-css","ace/layer/decorators","ace/lib/useragent"], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var dom = require("./lib/dom"); +var lang = require("./lib/lang"); var config = require("./config"); -var useragent = require("./lib/useragent"); var GutterLayer = require("./layer/gutter").Gutter; var MarkerLayer = require("./layer/marker").Marker; var TextLayer = require("./layer/text").Text; var CursorLayer = require("./layer/cursor").Cursor; var HScrollBar = require("./scrollbar").HScrollBar; var VScrollBar = require("./scrollbar").VScrollBar; +var HScrollBarCustom = require("./scrollbar_custom").HScrollBar; +var VScrollBarCustom = require("./scrollbar_custom").VScrollBar; var RenderLoop = require("./renderloop").RenderLoop; var FontMetrics = require("./layer/font_metrics").FontMetrics; var EventEmitter = require("./lib/event_emitter").EventEmitter; -var editorCss = ".ace_editor {\ -position: relative;\ -overflow: hidden;\ -font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\ -direction: ltr;\ -text-align: left;\ --webkit-tap-highlight-color: rgba(0, 0, 0, 0);\ -}\ -.ace_scroller {\ -position: absolute;\ -overflow: hidden;\ -top: 0;\ -bottom: 0;\ -background-color: inherit;\ --ms-user-select: none;\ --moz-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -cursor: text;\ -}\ -.ace_content {\ -position: absolute;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -min-width: 100%;\ -}\ -.ace_dragging .ace_scroller:before{\ -position: absolute;\ -top: 0;\ -left: 0;\ -right: 0;\ -bottom: 0;\ -content: '';\ -background: rgba(250, 250, 250, 0.01);\ -z-index: 1000;\ -}\ -.ace_dragging.ace_dark .ace_scroller:before{\ -background: rgba(0, 0, 0, 0.01);\ -}\ -.ace_selecting, .ace_selecting * {\ -cursor: text !important;\ -}\ -.ace_gutter {\ -position: absolute;\ -overflow : hidden;\ -width: auto;\ -top: 0;\ -bottom: 0;\ -left: 0;\ -cursor: default;\ -z-index: 4;\ --ms-user-select: none;\ --moz-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -}\ -.ace_gutter-active-line {\ -position: absolute;\ -left: 0;\ -right: 0;\ -}\ -.ace_scroller.ace_scroll-left {\ -box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\ -}\ -.ace_gutter-cell {\ -padding-left: 19px;\ -padding-right: 6px;\ -background-repeat: no-repeat;\ -}\ -.ace_gutter-cell.ace_error {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\");\ -background-repeat: no-repeat;\ -background-position: 2px center;\ -}\ -.ace_gutter-cell.ace_warning {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\");\ -background-position: 2px center;\ -}\ -.ace_gutter-cell.ace_info {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\");\ -background-position: 2px center;\ -}\ -.ace_dark .ace_gutter-cell.ace_info {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\");\ -}\ -.ace_scrollbar {\ -position: absolute;\ -right: 0;\ -bottom: 0;\ -z-index: 6;\ -}\ -.ace_scrollbar-inner {\ -position: absolute;\ -cursor: text;\ -left: 0;\ -top: 0;\ -}\ -.ace_scrollbar-v{\ -overflow-x: hidden;\ -overflow-y: scroll;\ -top: 0;\ -}\ -.ace_scrollbar-h {\ -overflow-x: scroll;\ -overflow-y: hidden;\ -left: 0;\ -}\ -.ace_print-margin {\ -position: absolute;\ -height: 100%;\ -}\ -.ace_text-input {\ -position: absolute;\ -z-index: 0;\ -width: 0.5em;\ -height: 1em;\ -opacity: 0;\ -background: transparent;\ --moz-appearance: none;\ -appearance: none;\ -border: none;\ -resize: none;\ -outline: none;\ -overflow: hidden;\ -font: inherit;\ -padding: 0 1px;\ -margin: 0 -1px;\ -text-indent: -1em;\ --ms-user-select: text;\ --moz-user-select: text;\ --webkit-user-select: text;\ -user-select: text;\ -white-space: pre!important;\ -}\ -.ace_text-input.ace_composition {\ -background: inherit;\ -color: inherit;\ -z-index: 1000;\ -opacity: 1;\ -text-indent: 0;\ -}\ -.ace_layer {\ -z-index: 1;\ -position: absolute;\ -overflow: hidden;\ -word-wrap: normal;\ -white-space: pre;\ -height: 100%;\ -width: 100%;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -pointer-events: none;\ -}\ -.ace_gutter-layer {\ -position: relative;\ -width: auto;\ -text-align: right;\ -pointer-events: auto;\ -}\ -.ace_text-layer {\ -font: inherit !important;\ -}\ -.ace_cjk {\ -display: inline-block;\ -text-align: center;\ -}\ -.ace_cursor-layer {\ -z-index: 4;\ -}\ -.ace_cursor {\ -z-index: 4;\ -position: absolute;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -border-left: 2px solid;\ -transform: translatez(0);\ -}\ -.ace_multiselect .ace_cursor {\ -border-left-width: 1px;\ -}\ -.ace_slim-cursors .ace_cursor {\ -border-left-width: 1px;\ -}\ -.ace_overwrite-cursors .ace_cursor {\ -border-left-width: 0;\ -border-bottom: 1px solid;\ -}\ -.ace_hidden-cursors .ace_cursor {\ -opacity: 0.2;\ -}\ -.ace_smooth-blinking .ace_cursor {\ --webkit-transition: opacity 0.18s;\ -transition: opacity 0.18s;\ -}\ -.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\ -position: absolute;\ -z-index: 3;\ -}\ -.ace_marker-layer .ace_selection {\ -position: absolute;\ -z-index: 5;\ -}\ -.ace_marker-layer .ace_bracket {\ -position: absolute;\ -z-index: 6;\ -}\ -.ace_marker-layer .ace_active-line {\ -position: absolute;\ -z-index: 2;\ -}\ -.ace_marker-layer .ace_selected-word {\ -position: absolute;\ -z-index: 4;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -}\ -.ace_line .ace_fold {\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -display: inline-block;\ -height: 11px;\ -margin-top: -2px;\ -vertical-align: middle;\ -background-image:\ -url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\ -url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\");\ -background-repeat: no-repeat, repeat-x;\ -background-position: center center, top left;\ -color: transparent;\ -border: 1px solid black;\ -border-radius: 2px;\ -cursor: pointer;\ -pointer-events: auto;\ -}\ -.ace_dark .ace_fold {\ -}\ -.ace_fold:hover{\ -background-image:\ -url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\"),\ -url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\");\ -}\ -.ace_tooltip {\ -background-color: #FFF;\ -background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));\ -background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\ -border: 1px solid gray;\ -border-radius: 1px;\ -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\ -color: black;\ -max-width: 100%;\ -padding: 3px 4px;\ -position: fixed;\ -z-index: 999999;\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -cursor: default;\ -white-space: pre;\ -word-wrap: break-word;\ -line-height: normal;\ -font-style: normal;\ -font-weight: normal;\ -letter-spacing: normal;\ -pointer-events: none;\ -}\ -.ace_folding-enabled > .ace_gutter-cell {\ -padding-right: 13px;\ -}\ -.ace_fold-widget {\ --moz-box-sizing: border-box;\ --webkit-box-sizing: border-box;\ -box-sizing: border-box;\ -margin: 0 -12px 0 1px;\ -display: none;\ -width: 11px;\ -vertical-align: top;\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\");\ -background-repeat: no-repeat;\ -background-position: center;\ -border-radius: 3px;\ -border: 1px solid transparent;\ -cursor: pointer;\ -}\ -.ace_folding-enabled .ace_fold-widget {\ -display: inline-block; \ -}\ -.ace_fold-widget.ace_end {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\");\ -}\ -.ace_fold-widget.ace_closed {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\");\ -}\ -.ace_fold-widget:hover {\ -border: 1px solid rgba(0, 0, 0, 0.3);\ -background-color: rgba(255, 255, 255, 0.2);\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\ -}\ -.ace_fold-widget:active {\ -border: 1px solid rgba(0, 0, 0, 0.4);\ -background-color: rgba(0, 0, 0, 0.05);\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\ -}\ -.ace_dark .ace_fold-widget {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");\ -}\ -.ace_dark .ace_fold-widget.ace_end {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");\ -}\ -.ace_dark .ace_fold-widget.ace_closed {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");\ -}\ -.ace_dark .ace_fold-widget:hover {\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\ -background-color: rgba(255, 255, 255, 0.1);\ -}\ -.ace_dark .ace_fold-widget:active {\ -box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\ -}\ -.ace_fold-widget.ace_invalid {\ -background-color: #FFB4B4;\ -border-color: #DE5555;\ -}\ -.ace_fade-fold-widgets .ace_fold-widget {\ --webkit-transition: opacity 0.4s ease 0.05s;\ -transition: opacity 0.4s ease 0.05s;\ -opacity: 0;\ -}\ -.ace_fade-fold-widgets:hover .ace_fold-widget {\ --webkit-transition: opacity 0.05s ease 0.05s;\ -transition: opacity 0.05s ease 0.05s;\ -opacity:1;\ -}\ -.ace_underline {\ -text-decoration: underline;\ -}\ -.ace_bold {\ -font-weight: bold;\ -}\ -.ace_nobold .ace_bold {\ -font-weight: normal;\ -}\ -.ace_italic {\ -font-style: italic;\ -}\ -.ace_error-marker {\ -background-color: rgba(255, 0, 0,0.2);\ -position: absolute;\ -z-index: 9;\ -}\ -.ace_highlight-marker {\ -background-color: rgba(255, 255, 0,0.2);\ -position: absolute;\ -z-index: 8;\ -}\ -.ace_br1 {border-top-left-radius : 3px;}\ -.ace_br2 {border-top-right-radius : 3px;}\ -.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\ -.ace_br4 {border-bottom-right-radius: 3px;}\ -.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\ -.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\ -.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\ -.ace_br8 {border-bottom-left-radius : 3px;}\ -.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\ -.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\ -.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ -.ace_text-input-ios {\ -position: absolute !important;\ -top: -100000px !important;\ -left: -100000px !important;\ -}\ -"; - -dom.importCssString(editorCss, "ace_editor.css"); - -var VirtualRenderer = function(container, theme) { - var _self = this; - - this.container = container || dom.createElement("div"); - this.$keepTextAreaAtCursor = !useragent.isOldIE; - - dom.addCssClass(this.container, "ace_editor"); - - this.setTheme(theme); - - this.$gutter = dom.createElement("div"); - this.$gutter.className = "ace_gutter"; - this.container.appendChild(this.$gutter); - this.$gutter.setAttribute("aria-hidden", true); - - this.scroller = dom.createElement("div"); - this.scroller.className = "ace_scroller"; - this.container.appendChild(this.scroller); - - this.content = dom.createElement("div"); - this.content.className = "ace_content"; - this.scroller.appendChild(this.content); - - this.$gutterLayer = new GutterLayer(this.$gutter); - this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); - - this.$markerBack = new MarkerLayer(this.content); - - var textLayer = this.$textLayer = new TextLayer(this.content); - this.canvas = textLayer.element; - - this.$markerFront = new MarkerLayer(this.content); - - this.$cursorLayer = new CursorLayer(this.content); - this.$horizScroll = false; - this.$vScroll = false; - - this.scrollBar = - this.scrollBarV = new VScrollBar(this.container, this); - this.scrollBarH = new HScrollBar(this.container, this); - this.scrollBarV.addEventListener("scroll", function(e) { - if (!_self.$scrollAnimation) - _self.session.setScrollTop(e.data - _self.scrollMargin.top); - }); - this.scrollBarH.addEventListener("scroll", function(e) { - if (!_self.$scrollAnimation) - _self.session.setScrollLeft(e.data - _self.scrollMargin.left); - }); - - this.scrollTop = 0; - this.scrollLeft = 0; - - this.cursorPos = { - row : 0, - column : 0 - }; - - this.$fontMetrics = new FontMetrics(this.container); - this.$textLayer.$setFontMetrics(this.$fontMetrics); - this.$textLayer.addEventListener("changeCharacterSize", function(e) { - _self.updateCharacterSize(); - _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); - _self._signal("changeCharacterSize", e); - }); - - this.$size = { - width: 0, - height: 0, - scrollerHeight: 0, - scrollerWidth: 0, - $dirty: true - }; - - this.layerConfig = { - width : 1, - padding : 0, - firstRow : 0, - firstRowScreen: 0, - lastRow : 0, - lineHeight : 0, - characterWidth : 0, - minHeight : 1, - maxHeight : 1, - offset : 0, - height : 1, - gutterOffset: 1 - }; - - this.scrollMargin = { - left: 0, - right: 0, - top: 0, - bottom: 0, - v: 0, - h: 0 - }; - - this.$loop = new RenderLoop( - this.$renderChanges.bind(this), - this.container.ownerDocument.defaultView - ); - this.$loop.schedule(this.CHANGE_FULL); - - this.updateCharacterSize(); - this.setPadding(4); - config.resetOptions(this); - config._emit("renderer", this); -}; - -(function() { - - this.CHANGE_CURSOR = 1; - this.CHANGE_MARKER = 2; - this.CHANGE_GUTTER = 4; - this.CHANGE_SCROLL = 8; - this.CHANGE_LINES = 16; - this.CHANGE_TEXT = 32; - this.CHANGE_SIZE = 64; - this.CHANGE_MARKER_BACK = 128; - this.CHANGE_MARKER_FRONT = 256; - this.CHANGE_FULL = 512; - this.CHANGE_H_SCROLL = 1024; - - oop.implement(this, EventEmitter); - - this.updateCharacterSize = function() { +var editorCss = require("./css/editor-css"); +var Decorator = require("./layer/decorators").Decorator; +var useragent = require("./lib/useragent"); +dom.importCssString(editorCss, "ace_editor.css", false); +var VirtualRenderer = /** @class */ (function () { + function VirtualRenderer(container, theme) { + var _self = this; + this.container = container || dom.createElement("div"); + dom.addCssClass(this.container, "ace_editor"); + if (dom.HI_DPI) + dom.addCssClass(this.container, "ace_hidpi"); + this.setTheme(theme); + if (config.get("useStrictCSP") == null) + config.set("useStrictCSP", false); + this.$gutter = dom.createElement("div"); + this.$gutter.className = "ace_gutter"; + this.container.appendChild(this.$gutter); + this.$gutter.setAttribute("aria-hidden", "true"); + this.scroller = dom.createElement("div"); + this.scroller.className = "ace_scroller"; + this.container.appendChild(this.scroller); + this.content = dom.createElement("div"); + this.content.className = "ace_content"; + this.scroller.appendChild(this.content); + this.$gutterLayer = new GutterLayer(this.$gutter); + this.$gutterLayer.on("changeGutterWidth", this.onGutterResize.bind(this)); + this.$markerBack = new MarkerLayer(this.content); + var textLayer = this.$textLayer = new TextLayer(this.content); + this.canvas = textLayer.element; + this.$markerFront = new MarkerLayer(this.content); + this.$cursorLayer = new CursorLayer(this.content); + this.$horizScroll = false; + this.$vScroll = false; + this.scrollBar = + this.scrollBarV = new VScrollBar(this.container, this); + this.scrollBarH = new HScrollBar(this.container, this); + this.scrollBarV.on("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.on("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + this.scrollTop = 0; + this.scrollLeft = 0; + this.cursorPos = { + row: 0, + column: 0 + }; + this.$fontMetrics = new FontMetrics(this.container); + this.$textLayer.$setFontMetrics(this.$fontMetrics); + this.$textLayer.on("changeCharacterSize", function (e) { + _self.updateCharacterSize(); + _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height); + _self._signal("changeCharacterSize", e); + }); + this.$size = { + width: 0, + height: 0, + scrollerHeight: 0, + scrollerWidth: 0, + $dirty: true + }; + this.layerConfig = { + width: 1, + padding: 0, + firstRow: 0, + firstRowScreen: 0, + lastRow: 0, + lineHeight: 0, + characterWidth: 0, + minHeight: 1, + maxHeight: 1, + offset: 0, + height: 1, + gutterOffset: 1 + }; + this.scrollMargin = { + left: 0, + right: 0, + top: 0, + bottom: 0, + v: 0, + h: 0 + }; + this.margin = { + left: 0, + right: 0, + top: 0, + bottom: 0, + v: 0, + h: 0 + }; + this.$keepTextAreaAtCursor = !useragent.isIOS; + this.$loop = new RenderLoop(this.$renderChanges.bind(this), this.container.ownerDocument.defaultView); + this.$loop.schedule(this.CHANGE_FULL); + this.updateCharacterSize(); + this.setPadding(4); + this.$addResizeObserver(); + config.resetOptions(this); + config._signal("renderer", this); + } + VirtualRenderer.prototype.updateCharacterSize = function () { if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) { this.$allowBoldFonts = this.$textLayer.allowBoldFonts; this.setStyle("ace_nobold", !this.$allowBoldFonts); } - this.layerConfig.characterWidth = - this.characterWidth = this.$textLayer.getCharacterWidth(); + this.characterWidth = this.$textLayer.getCharacterWidth(); this.layerConfig.lineHeight = - this.lineHeight = this.$textLayer.getLineHeight(); + this.lineHeight = this.$textLayer.getLineHeight(); this.$updatePrintMargin(); + dom.setStyle(this.scroller.style, "line-height", this.lineHeight + "px"); }; - this.setSession = function(session) { + VirtualRenderer.prototype.setSession = function (session) { if (this.session) this.session.doc.off("changeNewLineMode", this.onChangeNewLineMode); - this.session = session; if (session && this.scrollMargin.top && session.getScrollTop() <= 0) session.setScrollTop(-this.scrollMargin.top); - this.$cursorLayer.setSession(session); this.$markerBack.setSession(session); this.$markerFront.setSession(session); @@ -16845,19 +18076,16 @@ var VirtualRenderer = function(container, theme) { this.$textLayer.setSession(session); if (!session) return; - this.$loop.schedule(this.CHANGE_FULL); this.session.$setFontMetrics(this.$fontMetrics); this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; - this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); this.onChangeNewLineMode(); this.session.doc.on("changeNewLineMode", this.onChangeNewLineMode); }; - this.updateLines = function(firstRow, lastRow, force) { + VirtualRenderer.prototype.updateLines = function (firstRow, lastRow, force) { if (lastRow === undefined) lastRow = Infinity; - if (!this.$changedLines) { this.$changedLines = { firstRow: firstRow, @@ -16867,7 +18095,6 @@ var VirtualRenderer = function(container, theme) { else { if (this.$changedLines.firstRow > firstRow) this.$changedLines.firstRow = firstRow; - if (this.$changedLines.lastRow < lastRow) this.$changedLines.lastRow = lastRow; } @@ -16881,38 +18108,34 @@ var VirtualRenderer = function(container, theme) { return; this.$loop.schedule(this.CHANGE_LINES); }; - - this.onChangeNewLineMode = function() { + VirtualRenderer.prototype.onChangeNewLineMode = function () { this.$loop.schedule(this.CHANGE_TEXT); this.$textLayer.$updateEolChar(); this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR); }; - - this.onChangeTabSize = function() { + VirtualRenderer.prototype.onChangeTabSize = function () { this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER); this.$textLayer.onChangeTabSize(); }; - this.updateText = function() { + VirtualRenderer.prototype.updateText = function () { this.$loop.schedule(this.CHANGE_TEXT); }; - this.updateFull = function(force) { + VirtualRenderer.prototype.updateFull = function (force) { if (force) this.$renderChanges(this.CHANGE_FULL, true); else this.$loop.schedule(this.CHANGE_FULL); }; - this.updateFontSize = function() { + VirtualRenderer.prototype.updateFontSize = function () { this.$textLayer.checkForSizeChanges(); }; - - this.$changes = 0; - this.$updateSizeAsync = function() { + VirtualRenderer.prototype.$updateSizeAsync = function () { if (this.$loop.pending) this.$size.$dirty = true; else this.onResize(); }; - this.onResize = function(force, gutterWidth, width, height) { + VirtualRenderer.prototype.onResize = function (force, gutterWidth, width, height) { if (this.resizing > 2) return; else if (this.resizing > 0) @@ -16925,25 +18148,24 @@ var VirtualRenderer = function(container, theme) { if (!width) width = el.clientWidth || el.scrollWidth; var changes = this.$updateCachedSize(force, gutterWidth, width, height); - - + if (this.$resizeTimer) + this.$resizeTimer.cancel(); if (!this.$size.scrollerHeight || (!width && !height)) return this.resizing = 0; - if (force) this.$gutterLayer.$padding = null; - if (force) this.$renderChanges(changes | this.$changes, true); else this.$loop.schedule(changes | this.$changes); - if (this.resizing) this.resizing = 0; - this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null; + this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; + if (this.$customScrollbar) { + this.$updateCustomScrollbar(true); + } }; - - this.$updateCachedSize = function(force, gutterWidth, width, height) { + VirtualRenderer.prototype.$updateCachedSize = function (force, gutterWidth, width, height) { height -= (this.$extraHeight || 0); var changes = 0; var size = this.$size; @@ -16956,135 +18178,114 @@ var VirtualRenderer = function(container, theme) { if (height && (force || size.height != height)) { size.height = height; changes |= this.CHANGE_SIZE; - size.scrollerHeight = size.height; if (this.$horizScroll) size.scrollerHeight -= this.scrollBarH.getHeight(); + this.scrollBarV.setHeight(size.scrollerHeight); this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + "px"; - changes = changes | this.CHANGE_SCROLL; } - if (width && (force || size.width != width)) { changes |= this.CHANGE_SIZE; size.width = width; - if (gutterWidth == null) gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; - this.gutterWidth = gutterWidth; - - this.scrollBarH.element.style.left = - this.scroller.style.left = gutterWidth + "px"; - size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth()); - - this.scrollBarH.element.style.right = - this.scroller.style.right = this.scrollBarV.getWidth() + "px"; - this.scroller.style.bottom = this.scrollBarH.getHeight() + "px"; - - if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) + dom.setStyle(this.scrollBarH.element.style, "left", gutterWidth + "px"); + dom.setStyle(this.scroller.style, "left", gutterWidth + this.margin.left + "px"); + size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h); + dom.setStyle(this.$gutter.style, "left", this.margin.left + "px"); + var right = this.scrollBarV.getWidth() + "px"; + dom.setStyle(this.scrollBarH.element.style, "right", right); + dom.setStyle(this.scroller.style, "right", right); + dom.setStyle(this.scroller.style, "bottom", this.scrollBarH.getHeight()); + this.scrollBarH.setWidth(size.scrollerWidth); + if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) { changes |= this.CHANGE_FULL; + } } - size.$dirty = !width || !height; - if (changes) this._signal("resize", oldSize); - return changes; }; - - this.onGutterResize = function() { - var gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0; + VirtualRenderer.prototype.onGutterResize = function (width) { + var gutterWidth = this.$showGutter ? width : 0; if (gutterWidth != this.gutterWidth) this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height); - if (this.session.getUseWrapMode() && this.adjustWrapLimit()) { this.$loop.schedule(this.CHANGE_FULL); - } else if (this.$size.$dirty) { + } + else if (this.$size.$dirty) { this.$loop.schedule(this.CHANGE_FULL); - } else { + } + else { this.$computeLayerConfig(); - this.$loop.schedule(this.CHANGE_MARKER); } }; - this.adjustWrapLimit = function() { + VirtualRenderer.prototype.adjustWrapLimit = function () { var availableWidth = this.$size.scrollerWidth - this.$padding * 2; var limit = Math.floor(availableWidth / this.characterWidth); return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn); }; - this.setAnimatedScroll = function(shouldAnimate){ + VirtualRenderer.prototype.setAnimatedScroll = function (shouldAnimate) { this.setOption("animatedScroll", shouldAnimate); }; - this.getAnimatedScroll = function() { + VirtualRenderer.prototype.getAnimatedScroll = function () { return this.$animatedScroll; }; - this.setShowInvisibles = function(showInvisibles) { + VirtualRenderer.prototype.setShowInvisibles = function (showInvisibles) { this.setOption("showInvisibles", showInvisibles); this.session.$bidiHandler.setShowInvisibles(showInvisibles); }; - this.getShowInvisibles = function() { + VirtualRenderer.prototype.getShowInvisibles = function () { return this.getOption("showInvisibles"); }; - this.getDisplayIndentGuides = function() { + VirtualRenderer.prototype.getDisplayIndentGuides = function () { return this.getOption("displayIndentGuides"); }; - - this.setDisplayIndentGuides = function(display) { + VirtualRenderer.prototype.setDisplayIndentGuides = function (display) { this.setOption("displayIndentGuides", display); }; - this.setShowPrintMargin = function(showPrintMargin) { + VirtualRenderer.prototype.getHighlightIndentGuides = function () { + return this.getOption("highlightIndentGuides"); + }; + VirtualRenderer.prototype.setHighlightIndentGuides = function (highlight) { + this.setOption("highlightIndentGuides", highlight); + }; + VirtualRenderer.prototype.setShowPrintMargin = function (showPrintMargin) { this.setOption("showPrintMargin", showPrintMargin); }; - this.getShowPrintMargin = function() { + VirtualRenderer.prototype.getShowPrintMargin = function () { return this.getOption("showPrintMargin"); }; - this.setPrintMarginColumn = function(showPrintMargin) { - this.setOption("printMarginColumn", showPrintMargin); + VirtualRenderer.prototype.setPrintMarginColumn = function (printMarginColumn) { + this.setOption("printMarginColumn", printMarginColumn); }; - this.getPrintMarginColumn = function() { + VirtualRenderer.prototype.getPrintMarginColumn = function () { return this.getOption("printMarginColumn"); }; - this.getShowGutter = function(){ + VirtualRenderer.prototype.getShowGutter = function () { return this.getOption("showGutter"); }; - this.setShowGutter = function(show){ + VirtualRenderer.prototype.setShowGutter = function (show) { return this.setOption("showGutter", show); }; - - this.getFadeFoldWidgets = function(){ + VirtualRenderer.prototype.getFadeFoldWidgets = function () { return this.getOption("fadeFoldWidgets"); }; - - this.setFadeFoldWidgets = function(show) { + VirtualRenderer.prototype.setFadeFoldWidgets = function (show) { this.setOption("fadeFoldWidgets", show); }; - - this.setHighlightGutterLine = function(shouldHighlight) { + VirtualRenderer.prototype.setHighlightGutterLine = function (shouldHighlight) { this.setOption("highlightGutterLine", shouldHighlight); }; - - this.getHighlightGutterLine = function() { + VirtualRenderer.prototype.getHighlightGutterLine = function () { return this.getOption("highlightGutterLine"); }; - - this.$updateGutterLineHighlight = function() { - var pos = this.$cursorLayer.$pixelPos; - var height = this.layerConfig.lineHeight; - if (this.session.getUseWrapMode()) { - var cursor = this.session.selection.getCursor(); - cursor.column = 0; - pos = this.$cursorLayer.getPixelPosition(cursor, true); - height *= this.session.getRowLength(cursor.row); - } - this.$gutterLineHighlight.style.top = pos.top - this.layerConfig.offset + "px"; - this.$gutterLineHighlight.style.height = height + "px"; - }; - - this.$updatePrintMargin = function() { + VirtualRenderer.prototype.$updatePrintMargin = function () { if (!this.$showPrintMargin && !this.$printMarginEl) return; - if (!this.$printMarginEl) { var containerEl = dom.createElement("div"); containerEl.className = "ace_layer ace_print-margin-layer"; @@ -17093,61 +18294,73 @@ var VirtualRenderer = function(container, theme) { containerEl.appendChild(this.$printMarginEl); this.content.insertBefore(containerEl, this.content.firstChild); } - var style = this.$printMarginEl.style; - style.left = ((this.characterWidth * this.$printMarginColumn) + this.$padding) + "px"; + style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + "px"; style.visibility = this.$showPrintMargin ? "visible" : "hidden"; - if (this.session && this.session.$wrap == -1) this.adjustWrapLimit(); }; - this.getContainerElement = function() { + VirtualRenderer.prototype.getContainerElement = function () { return this.container; }; - this.getMouseEventTarget = function() { + VirtualRenderer.prototype.getMouseEventTarget = function () { return this.scroller; }; - this.getTextAreaContainer = function() { + VirtualRenderer.prototype.getTextAreaContainer = function () { return this.container; }; - this.$moveTextAreaToCursor = function() { - if (!this.$keepTextAreaAtCursor) + VirtualRenderer.prototype.$moveTextAreaToCursor = function () { + if (this.$isMousePressed) return; - var config = this.layerConfig; - var posTop = this.$cursorLayer.$pixelPos.top; - var posLeft = this.$cursorLayer.$pixelPos.left; - posTop -= config.offset; - var style = this.textarea.style; - var h = this.lineHeight; - if (posTop < 0 || posTop > config.height - h) { - style.top = style.left = "0"; + var composition = this.$composition; + if (!this.$keepTextAreaAtCursor && !composition) { + dom.translate(this.textarea, -100, 0); return; } - - var w = this.characterWidth; - if (this.$composition) { - var val = this.textarea.value.replace(/^\x01+/, ""); - w *= (this.session.$getStringScreenWidth(val)[0]+2); - h += 2; + var pixelPos = this.$cursorLayer.$pixelPos; + if (!pixelPos) + return; + if (composition && composition.markerRange) + pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true); + var config = this.layerConfig; + var posTop = pixelPos.top; + var posLeft = pixelPos.left; + posTop -= config.offset; + var h = composition && composition.useTextareaForIME || useragent.isMobile ? this.lineHeight : 1; + if (posTop < 0 || posTop > config.height - h) { + dom.translate(this.textarea, 0, 0); + return; + } + var w = 1; + var maxTop = this.$size.height - h; + if (!composition) { + posTop += this.lineHeight; + } + else { + if (composition.useTextareaForIME) { + var val = this.textarea.value; + w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]); + } + else { + posTop += this.lineHeight + 2; + } } posLeft -= this.scrollLeft; if (posLeft > this.$size.scrollerWidth - w) posLeft = this.$size.scrollerWidth - w; - - posLeft += this.gutterWidth; - style.height = h + "px"; - style.width = w + "px"; - style.left = Math.min(posLeft, this.$size.scrollerWidth - w) + "px"; - style.top = Math.min(posTop, this.$size.height - h) + "px"; + posLeft += this.gutterWidth + this.margin.left; + dom.setStyle(style, "height", h + "px"); + dom.setStyle(style, "width", w + "px"); + dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop)); }; - this.getFirstVisibleRow = function() { + VirtualRenderer.prototype.getFirstVisibleRow = function () { return this.layerConfig.firstRow; }; - this.getFirstFullyVisibleRow = function() { + VirtualRenderer.prototype.getFirstFullyVisibleRow = function () { return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1); }; - this.getLastFullyVisibleRow = function() { + VirtualRenderer.prototype.getLastFullyVisibleRow = function () { var config = this.layerConfig; var lastRow = config.lastRow; var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight; @@ -17155,12 +18368,10 @@ var VirtualRenderer = function(container, theme) { return lastRow - 1; return lastRow; }; - this.getLastVisibleRow = function() { + VirtualRenderer.prototype.getLastVisibleRow = function () { return this.layerConfig.lastRow; }; - - this.$padding = null; - this.setPadding = function(padding) { + VirtualRenderer.prototype.setPadding = function (padding) { this.$padding = padding; this.$textLayer.setPadding(padding); this.$cursorLayer.setPadding(padding); @@ -17169,33 +18380,42 @@ var VirtualRenderer = function(container, theme) { this.$loop.schedule(this.CHANGE_FULL); this.$updatePrintMargin(); }; - - this.setScrollMargin = function(top, bottom, left, right) { + VirtualRenderer.prototype.setScrollMargin = function (top, bottom, left, right) { var sm = this.scrollMargin; - sm.top = top|0; - sm.bottom = bottom|0; - sm.right = right|0; - sm.left = left|0; + sm.top = top | 0; + sm.bottom = bottom | 0; + sm.right = right | 0; + sm.left = left | 0; sm.v = sm.top + sm.bottom; sm.h = sm.left + sm.right; if (sm.top && this.scrollTop <= 0 && this.session) this.session.setScrollTop(-sm.top); this.updateFull(); }; - this.getHScrollBarAlwaysVisible = function() { + VirtualRenderer.prototype.setMargin = function (top, bottom, left, right) { + var sm = this.margin; + sm.top = top | 0; + sm.bottom = bottom | 0; + sm.right = right | 0; + sm.left = left | 0; + sm.v = sm.top + sm.bottom; + sm.h = sm.left + sm.right; + this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height); + this.updateFull(); + }; + VirtualRenderer.prototype.getHScrollBarAlwaysVisible = function () { return this.$hScrollBarAlwaysVisible; }; - this.setHScrollBarAlwaysVisible = function(alwaysVisible) { + VirtualRenderer.prototype.setHScrollBarAlwaysVisible = function (alwaysVisible) { this.setOption("hScrollBarAlwaysVisible", alwaysVisible); }; - this.getVScrollBarAlwaysVisible = function() { + VirtualRenderer.prototype.getVScrollBarAlwaysVisible = function () { return this.$vScrollBarAlwaysVisible; }; - this.setVScrollBarAlwaysVisible = function(alwaysVisible) { + VirtualRenderer.prototype.setVScrollBarAlwaysVisible = function (alwaysVisible) { this.setOption("vScrollBarAlwaysVisible", alwaysVisible); }; - - this.$updateScrollBarV = function() { + VirtualRenderer.prototype.$updateScrollBarV = function () { var scrollHeight = this.layerConfig.maxHeight; var scrollerHeight = this.$size.scrollerHeight; if (!this.$maxLines && this.$scrollPastEnd) { @@ -17208,29 +18428,25 @@ var VirtualRenderer = function(container, theme) { this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v); this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top); }; - this.$updateScrollBarH = function() { + VirtualRenderer.prototype.$updateScrollBarH = function () { this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h); this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left); }; - - this.$frozen = false; - this.freeze = function() { + VirtualRenderer.prototype.freeze = function () { this.$frozen = true; }; - - this.unfreeze = function() { + VirtualRenderer.prototype.unfreeze = function () { this.$frozen = false; }; - - this.$renderChanges = function(changes, force) { + VirtualRenderer.prototype.$renderChanges = function (changes, force) { if (this.$changes) { changes |= this.$changes; this.$changes = 0; } if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) { this.$changes |= changes; - return; - } + return; + } if (this.$size.$dirty) { this.$changes |= changes; return this.onResize(true); @@ -17238,144 +18454,152 @@ var VirtualRenderer = function(container, theme) { if (!this.lineHeight) { this.$textLayer.checkForSizeChanges(); } - - this._signal("beforeRender"); - + this._signal("beforeRender", changes); if (this.session && this.session.$bidiHandler) this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics); - var config = this.layerConfig; if (changes & this.CHANGE_FULL || changes & this.CHANGE_SIZE || changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES || changes & this.CHANGE_SCROLL || - changes & this.CHANGE_H_SCROLL - ) { - changes |= this.$computeLayerConfig(); + changes & this.CHANGE_H_SCROLL) { + changes |= this.$computeLayerConfig() | this.$loop.clear(); if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) { - var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight; + var st = this.scrollTop + (config.firstRow - Math.max(this.layerConfig.firstRow, 0)) * this.lineHeight; if (st > 0) { this.scrollTop = st; changes = changes | this.CHANGE_SCROLL; - changes |= this.$computeLayerConfig(); + changes |= this.$computeLayerConfig() | this.$loop.clear(); } } config = this.layerConfig; this.$updateScrollBarV(); if (changes & this.CHANGE_H_SCROLL) this.$updateScrollBarH(); - this.$gutterLayer.element.style.marginTop = (-config.offset) + "px"; - this.content.style.marginTop = (-config.offset) + "px"; - this.content.style.width = config.width + 2 * this.$padding + "px"; - this.content.style.height = config.minHeight + "px"; + dom.translate(this.content, -this.scrollLeft, -config.offset); + var width = config.width + 2 * this.$padding + "px"; + var height = config.minHeight + "px"; + dom.setStyle(this.content.style, "width", width); + dom.setStyle(this.content.style, "height", height); } if (changes & this.CHANGE_H_SCROLL) { - this.content.style.marginLeft = -this.scrollLeft + "px"; - this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller" : "ace_scroller ace_scroll-left"; + dom.translate(this.content, -this.scrollLeft, -config.offset); + this.scroller.className = this.scrollLeft <= 0 ? "ace_scroller " : "ace_scroller ace_scroll-left "; + if (this.enableKeyboardAccessibility) + this.scroller.className += this.keyboardFocusClassName; } if (changes & this.CHANGE_FULL) { + this.$changedLines = null; this.$textLayer.update(config); if (this.$showGutter) this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } this.$markerBack.update(config); this.$markerFront.update(config); this.$cursorLayer.update(config); this.$moveTextAreaToCursor(); - this.$highlightGutterLine && this.$updateGutterLineHighlight(); - this._signal("afterRender"); + this._signal("afterRender", changes); return; } if (changes & this.CHANGE_SCROLL) { + this.$changedLines = null; if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES) this.$textLayer.update(config); else this.$textLayer.scrollLines(config); - - if (this.$showGutter) - this.$gutterLayer.update(config); + if (this.$showGutter) { + if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES) + this.$gutterLayer.update(config); + else + this.$gutterLayer.scrollLines(config); + } + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } this.$markerBack.update(config); this.$markerFront.update(config); this.$cursorLayer.update(config); - this.$highlightGutterLine && this.$updateGutterLineHighlight(); this.$moveTextAreaToCursor(); - this._signal("afterRender"); + this._signal("afterRender", changes); return; } - if (changes & this.CHANGE_TEXT) { + this.$changedLines = null; this.$textLayer.update(config); if (this.$showGutter) this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } } else if (changes & this.CHANGE_LINES) { if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter) this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } } else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) { if (this.$showGutter) this.$gutterLayer.update(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } + } + else if (changes & this.CHANGE_CURSOR) { + if (this.$highlightGutterLine) + this.$gutterLayer.updateLineHighlight(config); + if (this.$customScrollbar) { + this.$scrollDecorator.$updateDecorators(config); + } } - if (changes & this.CHANGE_CURSOR) { this.$cursorLayer.update(config); this.$moveTextAreaToCursor(); - this.$highlightGutterLine && this.$updateGutterLineHighlight(); } - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) { this.$markerFront.update(config); } - if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) { this.$markerBack.update(config); } - - this._signal("afterRender"); + this._signal("afterRender", changes); }; - - - this.$autosize = function() { + VirtualRenderer.prototype.$autosize = function () { var height = this.session.getScreenLength() * this.lineHeight; var maxHeight = this.$maxLines * this.lineHeight; - var desiredHeight = Math.min(maxHeight, - Math.max((this.$minLines || 1) * this.lineHeight, height) - ) + this.scrollMargin.v + (this.$extraHeight || 0); + var desiredHeight = Math.min(maxHeight, Math.max((this.$minLines || 1) * this.lineHeight, height)) + this.scrollMargin.v + (this.$extraHeight || 0); if (this.$horizScroll) desiredHeight += this.scrollBarH.getHeight(); if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight) desiredHeight = this.$maxPixelHeight; - var vScroll = height > maxHeight; - + var hideScrollbars = desiredHeight <= 2 * this.lineHeight; + var vScroll = !hideScrollbars && height > maxHeight; if (desiredHeight != this.desiredHeight || this.$size.height != this.desiredHeight || vScroll != this.$vScroll) { if (vScroll != this.$vScroll) { this.$vScroll = vScroll; this.scrollBarV.setVisible(vScroll); } - var w = this.container.clientWidth; this.container.style.height = desiredHeight + "px"; this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight); this.desiredHeight = desiredHeight; - this._signal("autosize"); } }; - - this.$computeLayerConfig = function() { + VirtualRenderer.prototype.$computeLayerConfig = function () { var session = this.session; var size = this.$size; - var hideScrollbars = size.height <= 2 * this.lineHeight; var screenLines = this.session.getScreenLength(); var maxHeight = screenLines * this.lineHeight; - var longestLine = this.$getLongestLine(); - var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible || size.scrollerWidth - longestLine - 2 * this.$padding < 0); - var hScrollChanged = this.$horizScroll !== horizScroll; if (hScrollChanged) { this.$horizScroll = horizScroll; @@ -17384,22 +18608,14 @@ var VirtualRenderer = function(container, theme) { var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine if (this.$maxLines && this.lineHeight > 1) this.$autosize(); - - var offset = this.scrollTop % this.lineHeight; var minHeight = size.scrollerHeight + this.lineHeight; - var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd : 0; maxHeight += scrollPastEnd; - var sm = this.scrollMargin; - this.session.setScrollTop(Math.max(-sm.top, - Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom))); - - this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, - longestLine + 2 * this.$padding - size.scrollerWidth + sm.right))); - + this.session.setScrollTop(Math.max(-sm.top, Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom))); + this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, longestLine + 2 * this.$padding - size.scrollerWidth + sm.right))); var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible || size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top); var vScrollChanged = vScrollBefore !== vScroll; @@ -17407,7 +18623,7 @@ var VirtualRenderer = function(container, theme) { this.$vScroll = vScroll; this.scrollBarV.setVisible(vScroll); } - + var offset = this.scrollTop % this.lineHeight; var lineCount = Math.ceil(minHeight / this.lineHeight) - 1; var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight)); var lastRow = firstRow + lineCount; @@ -17418,54 +18634,52 @@ var VirtualRenderer = function(container, theme) { if (foldLine) { firstRow = foldLine.start.row; } - firstRowScreen = session.documentToScreenRow(firstRow, 0); firstRowHeight = session.getRowLength(firstRow) * lineHeight; - lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1); minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight + - firstRowHeight; - + firstRowHeight; offset = this.scrollTop - firstRowScreen * lineHeight; - var changes = 0; - if (this.layerConfig.width != longestLine) + if (this.layerConfig.width != longestLine || hScrollChanged) changes = this.CHANGE_H_SCROLL; if (hScrollChanged || vScrollChanged) { - changes = this.$updateCachedSize(true, this.gutterWidth, size.width, size.height); + changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height); this._signal("scrollbarVisibilityChanged"); if (vScrollChanged) longestLine = this.$getLongestLine(); } - this.layerConfig = { - width : longestLine, - padding : this.$padding, - firstRow : firstRow, + width: longestLine, + padding: this.$padding, + firstRow: firstRow, firstRowScreen: firstRowScreen, - lastRow : lastRow, - lineHeight : lineHeight, - characterWidth : this.characterWidth, - minHeight : minHeight, - maxHeight : maxHeight, - offset : offset, - gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, - height : this.$size.scrollerHeight + lastRow: lastRow, + lineHeight: lineHeight, + characterWidth: this.characterWidth, + minHeight: minHeight, + maxHeight: maxHeight, + offset: offset, + gutterOffset: lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0, + height: this.$size.scrollerHeight }; - + if (this.session.$bidiHandler) + this.session.$bidiHandler.setContentWidth(longestLine - this.$padding); return changes; }; - - this.$updateLines = function() { - if (!this.$changedLines) return; + VirtualRenderer.prototype.$updateLines = function () { + if (!this.$changedLines) + return; var firstRow = this.$changedLines.firstRow; var lastRow = this.$changedLines.lastRow; this.$changedLines = null; - var layerConfig = this.layerConfig; - - if (firstRow > layerConfig.lastRow + 1) { return; } - if (lastRow < layerConfig.firstRow) { return; } + if (firstRow > layerConfig.lastRow + 1) { + return; + } + if (lastRow < layerConfig.firstRow) { + return; + } if (lastRow === Infinity) { if (this.$showGutter) this.$gutterLayer.update(layerConfig); @@ -17475,151 +18689,144 @@ var VirtualRenderer = function(container, theme) { this.$textLayer.updateLines(layerConfig, firstRow, lastRow); return true; }; - - this.$getLongestLine = function() { + VirtualRenderer.prototype.$getLongestLine = function () { var charCount = this.session.getScreenWidth(); if (this.showInvisibles && !this.session.$useWrapMode) charCount += 1; - + if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH) + charCount = this.$textLayer.MAX_LINE_LENGTH + 30; return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth)); }; - this.updateFrontMarkers = function() { + VirtualRenderer.prototype.updateFrontMarkers = function () { this.$markerFront.setMarkers(this.session.getMarkers(true)); this.$loop.schedule(this.CHANGE_MARKER_FRONT); }; - this.updateBackMarkers = function() { + VirtualRenderer.prototype.updateBackMarkers = function () { this.$markerBack.setMarkers(this.session.getMarkers()); this.$loop.schedule(this.CHANGE_MARKER_BACK); }; - this.addGutterDecoration = function(row, className){ + VirtualRenderer.prototype.addGutterDecoration = function (row, className) { this.$gutterLayer.addGutterDecoration(row, className); }; - this.removeGutterDecoration = function(row, className){ + VirtualRenderer.prototype.removeGutterDecoration = function (row, className) { this.$gutterLayer.removeGutterDecoration(row, className); }; - this.updateBreakpoints = function(rows) { + VirtualRenderer.prototype.updateBreakpoints = function (rows) { + this._rows = rows; this.$loop.schedule(this.CHANGE_GUTTER); }; - this.setAnnotations = function(annotations) { + VirtualRenderer.prototype.setAnnotations = function (annotations) { this.$gutterLayer.setAnnotations(annotations); this.$loop.schedule(this.CHANGE_GUTTER); }; - this.updateCursor = function() { + VirtualRenderer.prototype.updateCursor = function () { this.$loop.schedule(this.CHANGE_CURSOR); }; - this.hideCursor = function() { + VirtualRenderer.prototype.hideCursor = function () { this.$cursorLayer.hideCursor(); }; - this.showCursor = function() { + VirtualRenderer.prototype.showCursor = function () { this.$cursorLayer.showCursor(); }; - - this.scrollSelectionIntoView = function(anchor, lead, offset) { + VirtualRenderer.prototype.scrollSelectionIntoView = function (anchor, lead, offset) { this.scrollCursorIntoView(anchor, offset); this.scrollCursorIntoView(lead, offset); }; - this.scrollCursorIntoView = function(cursor, offset, $viewMargin) { + VirtualRenderer.prototype.scrollCursorIntoView = function (cursor, offset, $viewMargin) { if (this.$size.scrollerHeight === 0) return; - var pos = this.$cursorLayer.getPixelPosition(cursor); - - var left = pos.left; - var top = pos.top; - + var newLeft = pos.left; + var newTop = pos.top; var topMargin = $viewMargin && $viewMargin.top || 0; var bottomMargin = $viewMargin && $viewMargin.bottom || 0; - - var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; - - if (scrollTop + topMargin > top) { - if (offset && scrollTop + topMargin > top + this.lineHeight) - top -= offset * this.$size.scrollerHeight; - if (top === 0) - top = -this.scrollMargin.top; - this.session.setScrollTop(top); - } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) { - if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight) - top += offset * this.$size.scrollerHeight; - this.session.setScrollTop(top + this.lineHeight - this.$size.scrollerHeight); + if (this.$scrollAnimation) { + this.$stopAnimation = true; } - - var scrollLeft = this.scrollLeft; - - if (scrollLeft > left) { - if (left < this.$padding + 2 * this.layerConfig.characterWidth) - left = -this.scrollMargin.left; - this.session.setScrollLeft(left); - } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) { - this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth)); - } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) { - this.session.setScrollLeft(0); + var currentTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop; + if (currentTop + topMargin > newTop) { + if (offset && currentTop + topMargin > newTop + this.lineHeight) + newTop -= offset * this.$size.scrollerHeight; + if (newTop === 0) + newTop = -this.scrollMargin.top; + this.session.setScrollTop(newTop); + } + else if (currentTop + this.$size.scrollerHeight - bottomMargin < newTop + this.lineHeight) { + if (offset && currentTop + this.$size.scrollerHeight - bottomMargin < newTop - this.lineHeight) + newTop += offset * this.$size.scrollerHeight; + this.session.setScrollTop(newTop + this.lineHeight + bottomMargin - this.$size.scrollerHeight); + } + var currentLeft = this.scrollLeft; + var twoCharsWidth = 2 * this.layerConfig.characterWidth; + if (newLeft - twoCharsWidth < currentLeft) { + newLeft -= twoCharsWidth; + if (newLeft < this.$padding + twoCharsWidth) { + newLeft = -this.scrollMargin.left; + } + this.session.setScrollLeft(newLeft); + } + else { + newLeft += twoCharsWidth; + if (currentLeft + this.$size.scrollerWidth < newLeft + this.characterWidth) { + this.session.setScrollLeft(Math.round(newLeft + this.characterWidth - this.$size.scrollerWidth)); + } + else if (currentLeft <= this.$padding && newLeft - currentLeft < this.characterWidth) { + this.session.setScrollLeft(0); + } } }; - this.getScrollTop = function() { + VirtualRenderer.prototype.getScrollTop = function () { return this.session.getScrollTop(); }; - this.getScrollLeft = function() { + VirtualRenderer.prototype.getScrollLeft = function () { return this.session.getScrollLeft(); }; - this.getScrollTopRow = function() { + VirtualRenderer.prototype.getScrollTopRow = function () { return this.scrollTop / this.lineHeight; }; - this.getScrollBottomRow = function() { + VirtualRenderer.prototype.getScrollBottomRow = function () { return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1); }; - this.scrollToRow = function(row) { + VirtualRenderer.prototype.scrollToRow = function (row) { this.session.setScrollTop(row * this.lineHeight); }; - - this.alignCursor = function(cursor, alignment) { + VirtualRenderer.prototype.alignCursor = function (cursor, alignment) { if (typeof cursor == "number") - cursor = {row: cursor, column: 0}; - + cursor = { row: cursor, column: 0 }; var pos = this.$cursorLayer.getPixelPosition(cursor); var h = this.$size.scrollerHeight - this.lineHeight; var offset = pos.top - h * (alignment || 0); - this.session.setScrollTop(offset); return offset; }; - - this.STEPS = 8; - this.$calcSteps = function(fromValue, toValue){ + VirtualRenderer.prototype.$calcSteps = function (fromValue, toValue) { var i = 0; var l = this.STEPS; var steps = []; - - var func = function(t, x_min, dx) { + var func = function (t, x_min, dx) { return dx * (Math.pow(t - 1, 3) + 1) + x_min; }; - for (i = 0; i < l; ++i) steps.push(func(i / this.STEPS, fromValue, toValue - fromValue)); - return steps; }; - this.scrollToLine = function(line, center, animate, callback) { - var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0}); + VirtualRenderer.prototype.scrollToLine = function (line, center, animate, callback) { + var pos = this.$cursorLayer.getPixelPosition({ row: line, column: 0 }); var offset = pos.top; if (center) offset -= this.$size.scrollerHeight / 2; - var initialScroll = this.scrollTop; this.session.setScrollTop(offset); if (animate !== false) this.animateScrolling(initialScroll, callback); }; - - this.animateScrolling = function(fromValue, callback) { + VirtualRenderer.prototype.animateScrolling = function (fromValue, callback) { var toValue = this.scrollTop; if (!this.$animatedScroll) return; var _self = this; - if (fromValue == toValue) return; - if (this.$scrollAnimation) { var oldSteps = this.$scrollAnimation.steps; if (oldSteps.length) { @@ -17628,159 +18835,256 @@ var VirtualRenderer = function(container, theme) { return; } } - var steps = _self.$calcSteps(fromValue, toValue); - this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps}; - + this.$scrollAnimation = { from: fromValue, to: toValue, steps: steps }; clearInterval(this.$timer); - _self.session.setScrollTop(steps.shift()); _self.session.$scrollTop = toValue; - this.$timer = setInterval(function() { + function endAnimation() { + _self.$timer = clearInterval(_self.$timer); + _self.$scrollAnimation = null; + _self.$stopAnimation = false; + callback && callback(); + } + this.$timer = setInterval(function () { + if (_self.$stopAnimation) { + endAnimation(); + return; + } + if (!_self.session) + return clearInterval(_self.$timer); if (steps.length) { _self.session.setScrollTop(steps.shift()); _self.session.$scrollTop = toValue; - } else if (toValue != null) { + } + else if (toValue != null) { _self.session.$scrollTop = -1; _self.session.setScrollTop(toValue); toValue = null; - } else { - _self.$timer = clearInterval(_self.$timer); - _self.$scrollAnimation = null; - callback && callback(); + } + else { + endAnimation(); } }, 10); }; - this.scrollToY = function(scrollTop) { + VirtualRenderer.prototype.scrollToY = function (scrollTop) { if (this.scrollTop !== scrollTop) { this.$loop.schedule(this.CHANGE_SCROLL); this.scrollTop = scrollTop; } }; - this.scrollToX = function(scrollLeft) { + VirtualRenderer.prototype.scrollToX = function (scrollLeft) { if (this.scrollLeft !== scrollLeft) this.scrollLeft = scrollLeft; this.$loop.schedule(this.CHANGE_H_SCROLL); }; - this.scrollTo = function(x, y) { + VirtualRenderer.prototype.scrollTo = function (x, y) { this.session.setScrollTop(y); - this.session.setScrollLeft(y); + this.session.setScrollLeft(x); }; - this.scrollBy = function(deltaX, deltaY) { + VirtualRenderer.prototype.scrollBy = function (deltaX, deltaY) { deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY); deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX); }; - this.isScrollableBy = function(deltaX, deltaY) { + VirtualRenderer.prototype.isScrollableBy = function (deltaX, deltaY) { if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top) - return true; + return true; if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom) - return true; + return true; if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left) return true; if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth - this.layerConfig.width < -1 + this.scrollMargin.right) - return true; + return true; }; - - this.pixelToScreenCoordinates = function(x, y) { - var canvasPos = this.scroller.getBoundingClientRect(); - + VirtualRenderer.prototype.pixelToScreenCoordinates = function (x, y) { + var canvasPos; + if (this.$hasCssTransforms) { + canvasPos = { top: 0, left: 0 }; + var p = this.$fontMetrics.transformCoordinates([x, y]); + x = p[1] - this.gutterWidth - this.margin.left; + y = p[0]; + } + else { + canvasPos = this.scroller.getBoundingClientRect(); + } var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; var offset = offsetX / this.characterWidth; var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); - var col = Math.round(offset); - - return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX}; + var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); + return { row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX }; }; - - this.screenToTextCoordinates = function(x, y) { - var canvasPos = this.scroller.getBoundingClientRect(); + VirtualRenderer.prototype.screenToTextCoordinates = function (x, y) { + var canvasPos; + if (this.$hasCssTransforms) { + canvasPos = { top: 0, left: 0 }; + var p = this.$fontMetrics.transformCoordinates([x, y]); + x = p[1] - this.gutterWidth - this.margin.left; + y = p[0]; + } + else { + canvasPos = this.scroller.getBoundingClientRect(); + } var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; - - var col = Math.round(offsetX / this.characterWidth); - - var row = (y + this.scrollTop - canvasPos.top) / this.lineHeight; - + var offset = offsetX / this.characterWidth; + var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset); + var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight); return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX); }; - this.textToScreenCoordinates = function(row, column) { + VirtualRenderer.prototype.textToScreenCoordinates = function (row, column) { var canvasPos = this.scroller.getBoundingClientRect(); var pos = this.session.documentToScreenPosition(row, column); - var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row) - ? this.session.$bidiHandler.getPosLeft(pos.column) - : Math.round(pos.column * this.characterWidth)); - + ? this.session.$bidiHandler.getPosLeft(pos.column) + : Math.round(pos.column * this.characterWidth)); var y = pos.row * this.lineHeight; - return { pageX: canvasPos.left + x - this.scrollLeft, pageY: canvasPos.top + y - this.scrollTop }; }; - this.visualizeFocus = function() { + VirtualRenderer.prototype.visualizeFocus = function () { dom.addCssClass(this.container, "ace_focus"); }; - this.visualizeBlur = function() { + VirtualRenderer.prototype.visualizeBlur = function () { dom.removeCssClass(this.container, "ace_focus"); }; - this.showComposition = function(position) { - if (!this.$composition) - this.$composition = { - keepTextAreaAtCursor: this.$keepTextAreaAtCursor, - cssText: this.textarea.style.cssText - }; - - this.$keepTextAreaAtCursor = true; - dom.addCssClass(this.textarea, "ace_composition"); - this.textarea.style.cssText = ""; + VirtualRenderer.prototype.showComposition = function (composition) { + this.$composition = composition; + if (!composition.cssText) { + composition.cssText = this.textarea.style.cssText; + } + if (composition.useTextareaForIME == undefined) + composition.useTextareaForIME = this.$useTextareaForIME; + if (this.$useTextareaForIME) { + dom.addCssClass(this.textarea, "ace_composition"); + this.textarea.style.cssText = ""; + this.$moveTextAreaToCursor(); + this.$cursorLayer.element.style.display = "none"; + } + else { + composition.markerId = this.session.addMarker(composition.markerRange, "ace_composition_marker", "text"); + } + }; + VirtualRenderer.prototype.setCompositionText = function (text) { + var cursor = this.session.selection.cursor; + this.addToken(text, "composition_placeholder", cursor.row, cursor.column); this.$moveTextAreaToCursor(); }; - this.setCompositionText = function(text) { - this.$moveTextAreaToCursor(); - }; - this.hideComposition = function() { + VirtualRenderer.prototype.hideComposition = function () { if (!this.$composition) return; - + if (this.$composition.markerId) + this.session.removeMarker(this.$composition.markerId); dom.removeCssClass(this.textarea, "ace_composition"); - this.$keepTextAreaAtCursor = this.$composition.keepTextAreaAtCursor; this.textarea.style.cssText = this.$composition.cssText; + var cursor = this.session.selection.cursor; + this.removeExtraToken(cursor.row, cursor.column); this.$composition = null; + this.$cursorLayer.element.style.display = ""; }; - this.setTheme = function(theme, cb) { + VirtualRenderer.prototype.setGhostText = function (text, position) { + var cursor = this.session.selection.cursor; + var insertPosition = position || { row: cursor.row, column: cursor.column }; + this.removeGhostText(); + var textLines = text.split("\n"); + this.addToken(textLines[0], "ghost_text", insertPosition.row, insertPosition.column); + this.$ghostText = { + text: text, + position: { + row: insertPosition.row, + column: insertPosition.column + } + }; + if (textLines.length > 1) { + this.$ghostTextWidget = { + text: textLines.slice(1).join("\n"), + row: insertPosition.row, + column: insertPosition.column, + className: "ace_ghost_text" + }; + this.session.widgetManager.addLineWidget(this.$ghostTextWidget); + var pixelPosition = this.$cursorLayer.getPixelPosition(insertPosition, true); + var el = this.container; + var height = el.getBoundingClientRect().height; + var ghostTextHeight = textLines.length * this.lineHeight; + var fitsY = ghostTextHeight < height - pixelPosition.top; + if (fitsY) + return; + if (ghostTextHeight < height) { + this.scrollBy(0, (textLines.length - 1) * this.lineHeight); + } + else { + this.scrollBy(0, pixelPosition.top); + } + } + }; + VirtualRenderer.prototype.removeGhostText = function () { + if (!this.$ghostText) + return; + var position = this.$ghostText.position; + this.removeExtraToken(position.row, position.column); + if (this.$ghostTextWidget) { + this.session.widgetManager.removeLineWidget(this.$ghostTextWidget); + this.$ghostTextWidget = null; + } + this.$ghostText = null; + }; + VirtualRenderer.prototype.addToken = function (text, type, row, column) { + var session = this.session; + session.bgTokenizer.lines[row] = null; + var newToken = { type: type, value: text }; + var tokens = session.getTokens(row); + if (column == null || !tokens.length) { + tokens.push(newToken); + } + else { + var l = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + l += token.value.length; + if (column <= l) { + var diff = token.value.length - (l - column); + var before = token.value.slice(0, diff); + var after = token.value.slice(diff); + tokens.splice(i, 1, { type: token.type, value: before }, newToken, { type: token.type, value: after }); + break; + } + } + } + this.updateLines(row, row); + }; + VirtualRenderer.prototype.removeExtraToken = function (row, column) { + this.session.bgTokenizer.lines[row] = null; + this.updateLines(row, row); + }; + VirtualRenderer.prototype.setTheme = function (theme, cb) { var _self = this; this.$themeId = theme; - _self._dispatchEvent('themeChange',{theme:theme}); - + _self._dispatchEvent('themeChange', { theme: theme }); if (!theme || typeof theme == "string") { var moduleName = theme || this.$options.theme.initialValue; config.loadModule(["theme", moduleName], afterLoad); - } else { + } + else { afterLoad(theme); } - function afterLoad(module) { if (_self.$themeId != theme) return cb && cb(); if (!module || !module.cssClass) throw new Error("couldn't load module " + theme + " or it didn't call define"); - dom.importCssString( - module.cssText, - module.cssClass, - _self.container.ownerDocument - ); - + if (module.$id) + _self.$themeId = module.$id; + dom.importCssString(module.cssText, module.cssClass, _self.container); if (_self.theme) dom.removeCssClass(_self.container, _self.theme.cssClass); - - var padding = "padding" in module ? module.padding + var padding = "padding" in module ? module.padding : "padding" in (_self.theme || {}) ? 4 : _self.$padding; if (_self.$padding && padding != _self.$padding) _self.setPadding(padding); _self.$theme = module.cssClass; - _self.theme = module; dom.addCssClass(_self.container, module.cssClass); dom.setCssClass(_self.container, "ace_dark", module.isDark); @@ -17788,128 +19092,226 @@ var VirtualRenderer = function(container, theme) { _self.$size.width = 0; _self.$updateSizeAsync(); } - - _self._dispatchEvent('themeLoaded', {theme:module}); + _self._dispatchEvent('themeLoaded', { theme: module }); cb && cb(); } }; - this.getTheme = function() { + VirtualRenderer.prototype.getTheme = function () { return this.$themeId; }; - this.setStyle = function(style, include) { + VirtualRenderer.prototype.setStyle = function (style, include) { dom.setCssClass(this.container, style, include !== false); }; - this.unsetStyle = function(style) { + VirtualRenderer.prototype.unsetStyle = function (style) { dom.removeCssClass(this.container, style); }; - - this.setCursorStyle = function(style) { - if (this.scroller.style.cursor != style) - this.scroller.style.cursor = style; + VirtualRenderer.prototype.setCursorStyle = function (style) { + dom.setStyle(this.scroller.style, "cursor", style); }; - this.setMouseCursor = function(cursorStyle) { - this.scroller.style.cursor = cursorStyle; + VirtualRenderer.prototype.setMouseCursor = function (cursorStyle) { + dom.setStyle(this.scroller.style, "cursor", cursorStyle); }; - this.destroy = function() { - this.$textLayer.destroy(); + VirtualRenderer.prototype.attachToShadowRoot = function () { + dom.importCssString(editorCss, "ace_editor.css", this.container); + }; + VirtualRenderer.prototype.destroy = function () { + this.freeze(); + this.$fontMetrics.destroy(); this.$cursorLayer.destroy(); + this.removeAllListeners(); + this.container.textContent = ""; + this.setOption("useResizeObserver", false); }; - -}).call(VirtualRenderer.prototype); - - + VirtualRenderer.prototype.$updateCustomScrollbar = function (val) { + var _self = this; + this.$horizScroll = this.$vScroll = null; + this.scrollBarV.element.remove(); + this.scrollBarH.element.remove(); + if (this.$scrollDecorator) { + delete this.$scrollDecorator; + } + if (val === true) { + this.scrollBarV = new VScrollBarCustom(this.container, this); + this.scrollBarH = new HScrollBarCustom(this.container, this); + this.scrollBarV.setHeight(this.$size.scrollerHeight); + this.scrollBarH.setWidth(this.$size.scrollerWidth); + this.scrollBarV.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + this.$scrollDecorator = new Decorator(this.scrollBarV, this); + this.$scrollDecorator.$updateDecorators(); + } + else { + this.scrollBarV = new VScrollBar(this.container, this); + this.scrollBarH = new HScrollBar(this.container, this); + this.scrollBarV.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollTop(e.data - _self.scrollMargin.top); + }); + this.scrollBarH.addEventListener("scroll", function (e) { + if (!_self.$scrollAnimation) + _self.session.setScrollLeft(e.data - _self.scrollMargin.left); + }); + } + }; + VirtualRenderer.prototype.$addResizeObserver = function () { + if (!window.ResizeObserver || this.$resizeObserver) + return; + var self = this; + this.$resizeTimer = lang.delayedCall(function () { + if (!self.destroyed) + self.onResize(); + }, 50); + this.$resizeObserver = new window.ResizeObserver(function (e) { + var w = e[0].contentRect.width; + var h = e[0].contentRect.height; + if (Math.abs(self.$size.width - w) > 1 + || Math.abs(self.$size.height - h) > 1) { + self.$resizeTimer.delay(); + } + else { + self.$resizeTimer.cancel(); + } + }); + this.$resizeObserver.observe(this.container); + }; + return VirtualRenderer; +}()); +VirtualRenderer.prototype.CHANGE_CURSOR = 1; +VirtualRenderer.prototype.CHANGE_MARKER = 2; +VirtualRenderer.prototype.CHANGE_GUTTER = 4; +VirtualRenderer.prototype.CHANGE_SCROLL = 8; +VirtualRenderer.prototype.CHANGE_LINES = 16; +VirtualRenderer.prototype.CHANGE_TEXT = 32; +VirtualRenderer.prototype.CHANGE_SIZE = 64; +VirtualRenderer.prototype.CHANGE_MARKER_BACK = 128; +VirtualRenderer.prototype.CHANGE_MARKER_FRONT = 256; +VirtualRenderer.prototype.CHANGE_FULL = 512; +VirtualRenderer.prototype.CHANGE_H_SCROLL = 1024; +VirtualRenderer.prototype.$changes = 0; +VirtualRenderer.prototype.$padding = null; +VirtualRenderer.prototype.$frozen = false; +VirtualRenderer.prototype.STEPS = 8; +oop.implement(VirtualRenderer.prototype, EventEmitter); config.defineOptions(VirtualRenderer.prototype, "renderer", { - animatedScroll: {initialValue: false}, + useResizeObserver: { + set: function (value) { + if (!value && this.$resizeObserver) { + this.$resizeObserver.disconnect(); + this.$resizeTimer.cancel(); + this.$resizeTimer = this.$resizeObserver = null; + } + else if (value && !this.$resizeObserver) { + this.$addResizeObserver(); + } + } + }, + animatedScroll: { initialValue: false }, showInvisibles: { - set: function(value) { + set: function (value) { if (this.$textLayer.setShowInvisibles(value)) this.$loop.schedule(this.CHANGE_TEXT); }, initialValue: false }, showPrintMargin: { - set: function() { this.$updatePrintMargin(); }, + set: function () { this.$updatePrintMargin(); }, initialValue: true }, printMarginColumn: { - set: function() { this.$updatePrintMargin(); }, + set: function () { this.$updatePrintMargin(); }, initialValue: 80 }, printMargin: { - set: function(val) { + set: function (val) { if (typeof val == "number") this.$printMarginColumn = val; this.$showPrintMargin = !!val; this.$updatePrintMargin(); }, - get: function() { - return this.$showPrintMargin && this.$printMarginColumn; + get: function () { + return this.$showPrintMargin && this.$printMarginColumn; } }, showGutter: { - set: function(show){ + set: function (show) { this.$gutter.style.display = show ? "block" : "none"; this.$loop.schedule(this.CHANGE_FULL); this.onGutterResize(); }, initialValue: true }, + useSvgGutterIcons: { + set: function (value) { + this.$gutterLayer.$useSvgGutterIcons = value; + }, + initialValue: false + }, + showFoldedAnnotations: { + set: function (value) { + this.$gutterLayer.$showFoldedAnnotations = value; + }, + initialValue: false + }, fadeFoldWidgets: { - set: function(show) { + set: function (show) { dom.setCssClass(this.$gutter, "ace_fade-fold-widgets", show); }, initialValue: false }, showFoldWidgets: { - set: function(show) {this.$gutterLayer.setShowFoldWidgets(show);}, - initialValue: true - }, - showLineNumbers: { - set: function(show) { - this.$gutterLayer.setShowLineNumbers(show); + set: function (show) { + this.$gutterLayer.setShowFoldWidgets(show); this.$loop.schedule(this.CHANGE_GUTTER); }, initialValue: true }, displayIndentGuides: { - set: function(show) { + set: function (show) { if (this.$textLayer.setDisplayIndentGuides(show)) this.$loop.schedule(this.CHANGE_TEXT); }, initialValue: true }, - highlightGutterLine: { - set: function(shouldHighlight) { - if (!this.$gutterLineHighlight) { - this.$gutterLineHighlight = dom.createElement("div"); - this.$gutterLineHighlight.className = "ace_gutter-active-line"; - this.$gutter.appendChild(this.$gutterLineHighlight); - return; + highlightIndentGuides: { + set: function (show) { + if (this.$textLayer.setHighlightIndentGuides(show) == true) { + this.$textLayer.$highlightIndentGuide(); + } + else { + this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells); } - - this.$gutterLineHighlight.style.display = shouldHighlight ? "" : "none"; - if (this.$cursorLayer.$pixelPos) - this.$updateGutterLineHighlight(); }, - initialValue: false, - value: true + initialValue: true + }, + highlightGutterLine: { + set: function (shouldHighlight) { + this.$gutterLayer.setHighlightGutterLine(shouldHighlight); + this.$loop.schedule(this.CHANGE_GUTTER); + }, + initialValue: true }, hScrollBarAlwaysVisible: { - set: function(val) { + set: function (val) { if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll) this.$loop.schedule(this.CHANGE_SCROLL); }, initialValue: false }, vScrollBarAlwaysVisible: { - set: function(val) { + set: function (val) { if (!this.$vScrollBarAlwaysVisible || !this.$vScroll) this.$loop.schedule(this.CHANGE_SCROLL); }, initialValue: false }, - fontSize: { - set: function(size) { + fontSize: { + set: function (size) { if (typeof size == "number") size = size + "px"; this.container.style.fontSize = size; @@ -17918,29 +19320,31 @@ config.defineOptions(VirtualRenderer.prototype, "renderer", { initialValue: 12 }, fontFamily: { - set: function(name) { + set: function (name) { this.container.style.fontFamily = name; this.updateFontSize(); } }, maxLines: { - set: function(val) { + set: function (val) { this.updateFull(); } }, minLines: { - set: function(val) { + set: function (val) { + if (!(this.$minLines < 0x1ffffffffffff)) + this.$minLines = 0; this.updateFull(); } }, maxPixelHeight: { - set: function(val) { + set: function (val) { this.updateFull(); }, initialValue: 0 }, scrollPastEnd: { - set: function(val) { + set: function (val) { val = +val || 0; if (this.$scrollPastEnd == val) return; @@ -17951,20 +19355,30 @@ config.defineOptions(VirtualRenderer.prototype, "renderer", { handlesSet: true }, fixedWidthGutter: { - set: function(val) { + set: function (val) { this.$gutterLayer.$fixedWidth = !!val; this.$loop.schedule(this.CHANGE_GUTTER); } }, + customScrollbar: { + set: function (val) { + this.$updateCustomScrollbar(val); + }, + initialValue: false + }, theme: { - set: function(val) { this.setTheme(val); }, - get: function() { return this.$themeId || this.theme; }, + set: function (val) { this.setTheme(val); }, + get: function () { return this.$themeId || this.theme; }, initialValue: "./theme/textmate", handlesSet: true + }, + hasCssTransforms: {}, + useTextareaForIME: { + initialValue: !useragent.isMobile && !useragent.isIE } }); - exports.VirtualRenderer = VirtualRenderer; + }); define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"], function(require, exports, module) { @@ -17988,41 +19402,25 @@ function $workerBlob(workerUrl) { } function createWorker(workerUrl) { - var blob = $workerBlob(workerUrl); - var URL = window.URL || window.webkitURL; - var blobURL = URL.createObjectURL(blob); - return new Worker(blobURL); + if (typeof Worker == "undefined") + return { postMessage: function() {}, terminate: function() {} }; + if (config.get("loadWorkerFromBlob")) { + var blob = $workerBlob(workerUrl); + var URL = window.URL || window.webkitURL; + var blobURL = URL.createObjectURL(blob); + return new Worker(blobURL); + } + return new Worker(workerUrl); } -var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { +var WorkerClient = function(worker) { + if (!worker.postMessage) + worker = this.$createWorkerFromOldConfig.apply(this, arguments); + + this.$worker = worker; this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); this.changeListener = this.changeListener.bind(this); this.onMessage = this.onMessage.bind(this); - if (require.nameToUrl && !require.toUrl) - require.toUrl = require.nameToUrl; - - if (config.get("packaged") || !require.toUrl) { - workerUrl = workerUrl || config.moduleUrl(mod, "worker"); - } else { - var normalizePath = this.$normalizePath; - workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); - - var tlns = {}; - topLevelNamespaces.forEach(function(ns) { - tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); - }); - } - - this.$worker = createWorker(workerUrl); - if (importScripts) { - this.send("importScripts", importScripts); - } - this.$worker.postMessage({ - init : true, - tlns : tlns, - module : mod, - classname : classname - }); this.callbackId = 1; this.callbacks = {}; @@ -18034,6 +19432,35 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, impor oop.implement(this, EventEmitter); + this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { + if (require.nameToUrl && !require.toUrl) + require.toUrl = require.nameToUrl; + + if (config.get("packaged") || !require.toUrl) { + workerUrl = workerUrl || config.moduleUrl(mod, "worker"); + } else { + var normalizePath = this.$normalizePath; + workerUrl = workerUrl || normalizePath(require.toUrl("ace/worker/worker.js", null, "_")); + + var tlns = {}; + topLevelNamespaces.forEach(function(ns) { + tlns[ns] = normalizePath(require.toUrl(ns, null, "_").replace(/(\.js)?(\?.*)?$/, "")); + }); + } + + this.$worker = createWorker(workerUrl); + if (importScripts) { + this.send("importScripts", importScripts); + } + this.$worker.postMessage({ + init : true, + tlns : tlns, + module : mod, + classname : classname + }); + return this.$worker; + }; + this.onMessage = function(e) { var msg = e.data; switch (msg.type) { @@ -18068,6 +19495,9 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, impor this._signal("terminate", {}); this.deltaQueue = null; this.$worker.terminate(); + this.$worker.onerror = function(e) { + e.preventDefault(); + }; this.$worker = null; if (this.$doc) this.$doc.off("change", this.changeListener); @@ -18089,7 +19519,9 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, impor this.emit = function(event, data) { try { - this.$worker.postMessage({event: event, data: {data: data.data}}); + if (data.data && data.data.err) + data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code}; + this.$worker && this.$worker.postMessage({event: event, data: {data: data.data}}); } catch(ex) { console.error(ex.stack); @@ -18102,7 +19534,7 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, impor this.$doc = doc; this.call("setValue", [doc.getValue()]); - doc.on("change", this.changeListener); + doc.on("change", this.changeListener, true); }; this.changeListener = function(delta) { @@ -18130,32 +19562,28 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, impor var UIWorkerClient = function(topLevelNamespaces, mod, classname) { - this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); - this.changeListener = this.changeListener.bind(this); - this.callbackId = 1; - this.callbacks = {}; - this.messageBuffer = []; - var main = null; var emitSync = false; var sender = Object.create(EventEmitter); - var _self = this; - this.$worker = {}; - this.$worker.terminate = function() {}; - this.$worker.postMessage = function(e) { - _self.messageBuffer.push(e); - if (main) { + var messageBuffer = []; + var workerClient = new WorkerClient({ + messageBuffer: messageBuffer, + terminate: function() {}, + postMessage: function(e) { + messageBuffer.push(e); + if (!main) return; if (emitSync) setTimeout(processNext); else processNext(); } - }; - this.setEmitSync = function(val) { emitSync = val; }; + }); + + workerClient.setEmitSync = function(val) { emitSync = val; }; var processNext = function() { - var msg = _self.messageBuffer.shift(); + var msg = messageBuffer.shift(); if (msg.command) main[msg.command].apply(main, msg.args); else if (msg.event) @@ -18163,7 +19591,7 @@ var UIWorkerClient = function(topLevelNamespaces, mod, classname) { }; sender.postMessage = function(msg) { - _self.onMessage({data: msg}); + workerClient.onMessage({data: msg}); }; sender.callback = function(data, callbackId) { this.postMessage({type: "call", id: callbackId, data: data}); @@ -18174,12 +19602,12 @@ var UIWorkerClient = function(topLevelNamespaces, mod, classname) { config.loadModule(["worker", mod], function(Main) { main = new Main[classname](sender); - while (_self.messageBuffer.length) + while (messageBuffer.length) processNext(); }); -}; -UIWorkerClient.prototype = WorkerClient.prototype; + return workerClient; +}; exports.UIWorkerClient = UIWorkerClient; exports.WorkerClient = WorkerClient; @@ -18188,57 +19616,46 @@ exports.createWorker = createWorker; }); -define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"], function(require, exports, module) { -"use strict"; - +define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"], function(require, exports, module){"use strict"; var Range = require("./range").Range; var EventEmitter = require("./lib/event_emitter").EventEmitter; var oop = require("./lib/oop"); - -var PlaceHolder = function(session, length, pos, others, mainClass, othersClass) { - var _self = this; - this.length = length; - this.session = session; - this.doc = session.getDocument(); - this.mainClass = mainClass; - this.othersClass = othersClass; - this.$onUpdate = this.onUpdate.bind(this); - this.doc.on("change", this.$onUpdate); - this.$others = others; - - this.$onCursorChange = function() { - setTimeout(function() { - _self.onCursorChange(); - }); - }; - - this.$pos = pos; - var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1}; - this.$undoStackDepth = undoStack.length; - this.setup(); - - session.selection.on("changeCursor", this.$onCursorChange); -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setup = function() { +var PlaceHolder = /** @class */ (function () { + function PlaceHolder(session, length, pos, others, mainClass, othersClass) { + var _self = this; + this.length = length; + this.session = session; + this.doc = session.getDocument(); + this.mainClass = mainClass; + this.othersClass = othersClass; + this.$onUpdate = this.onUpdate.bind(this); + this.doc.on("change", this.$onUpdate, true); + this.$others = others; + this.$onCursorChange = function () { + setTimeout(function () { + _self.onCursorChange(); + }); + }; + this.$pos = pos; + var undoStack = session.getUndoManager().$undoStack || session.getUndoManager()["$undostack"] || { length: -1 }; + this.$undoStackDepth = undoStack.length; + this.setup(); + session.selection.on("changeCursor", this.$onCursorChange); + } + PlaceHolder.prototype.setup = function () { var _self = this; var doc = this.doc; var session = this.session; - this.selectionBefore = session.selection.toJSON(); if (session.selection.inMultiSelectMode) session.selection.toSingleRange(); - this.pos = doc.createAnchor(this.$pos.row, this.$pos.column); var pos = this.pos; pos.$insertRight = true; pos.detach(); pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false); this.others = []; - this.$others.forEach(function(other) { + this.$others.forEach(function (other) { var anchor = doc.createAnchor(other.row, other.column); anchor.$insertRight = true; anchor.detach(); @@ -18246,124 +19663,121 @@ var PlaceHolder = function(session, length, pos, others, mainClass, othersClass) }); session.setUndoSelect(false); }; - this.showOtherMarkers = function() { - if (this.othersActive) return; + PlaceHolder.prototype.showOtherMarkers = function () { + if (this.othersActive) + return; var session = this.session; var _self = this; this.othersActive = true; - this.others.forEach(function(anchor) { - anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false); + this.others.forEach(function (anchor) { + anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column + _self.length), _self.othersClass, null, false); }); }; - this.hideOtherMarkers = function() { - if (!this.othersActive) return; + PlaceHolder.prototype.hideOtherMarkers = function () { + if (!this.othersActive) + return; this.othersActive = false; for (var i = 0; i < this.others.length; i++) { this.session.removeMarker(this.others[i].markerId); } }; - this.onUpdate = function(delta) { + PlaceHolder.prototype.onUpdate = function (delta) { if (this.$updating) return this.updateAnchors(delta); - var range = delta; - if (range.start.row !== range.end.row) return; - if (range.start.row !== this.pos.row) return; + if (range.start.row !== range.end.row) + return; + if (range.start.row !== this.pos.row) + return; this.$updating = true; var lengthDiff = delta.action === "insert" ? range.end.column - range.start.column : range.start.column - range.end.column; var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1; var distanceFromStart = range.start.column - this.pos.column; - this.updateAnchors(delta); - if (inMainRange) this.length += lengthDiff; - if (inMainRange && !this.session.$fromUndo) { if (delta.action === 'insert') { for (var i = this.others.length - 1; i >= 0; i--) { var otherPos = this.others[i]; - var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart}; + var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; this.doc.insertMergedLines(newPos, delta.lines); } - } else if (delta.action === 'remove') { + } + else if (delta.action === 'remove') { for (var i = this.others.length - 1; i >= 0; i--) { var otherPos = this.others[i]; - var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart}; + var newPos = { row: otherPos.row, column: otherPos.column + distanceFromStart }; this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff)); } } } - this.$updating = false; this.updateMarkers(); }; - - this.updateAnchors = function(delta) { + PlaceHolder.prototype.updateAnchors = function (delta) { this.pos.onChange(delta); for (var i = this.others.length; i--;) this.others[i].onChange(delta); this.updateMarkers(); }; - - this.updateMarkers = function() { + PlaceHolder.prototype.updateMarkers = function () { if (this.$updating) return; var _self = this; var session = this.session; - var updateMarker = function(pos, className) { + var updateMarker = function (pos, className) { session.removeMarker(pos.markerId); - pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false); + pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + _self.length), className, null, false); }; updateMarker(this.pos, this.mainClass); for (var i = this.others.length; i--;) updateMarker(this.others[i], this.othersClass); }; - - this.onCursorChange = function(event) { - if (this.$updating || !this.session) return; + PlaceHolder.prototype.onCursorChange = function (event) { + if (this.$updating || !this.session) + return; var pos = this.session.selection.getCursor(); if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) { this.showOtherMarkers(); this._emit("cursorEnter", event); - } else { + } + else { this.hideOtherMarkers(); this._emit("cursorLeave", event); } - }; - this.detach = function() { + }; + PlaceHolder.prototype.detach = function () { this.session.removeMarker(this.pos && this.pos.markerId); this.hideOtherMarkers(); - this.doc.removeEventListener("change", this.$onUpdate); - this.session.selection.removeEventListener("changeCursor", this.$onCursorChange); + this.doc.off("change", this.$onUpdate); + this.session.selection.off("changeCursor", this.$onCursorChange); this.session.setUndoSelect(true); this.session = null; }; - this.cancel = function() { + PlaceHolder.prototype.cancel = function () { if (this.$undoStackDepth === -1) return; var undoManager = this.session.getUndoManager(); - var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth; + var undosRequired = (undoManager.$undoStack || undoManager["$undostack"]).length - this.$undoStackDepth; for (var i = 0; i < undosRequired; i++) { - undoManager.undo(true); + undoManager.undo(this.session, true); } if (this.selectionBefore) this.session.selection.fromJSON(this.selectionBefore); }; -}).call(PlaceHolder.prototype); - - + return PlaceHolder; +}()); +oop.implement(PlaceHolder.prototype, EventEmitter); exports.PlaceHolder = PlaceHolder; + }); -define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module) { - -var event = require("../lib/event"); +define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event","ace/lib/useragent"], function(require, exports, module){var event = require("../lib/event"); var useragent = require("../lib/useragent"); function isSamePoint(p1, p2) { return p1.row == p2.row && p1.column == p2.column; } - function onMouseDown(e) { var ev = e.domEvent; var alt = ev.altKey; @@ -18371,146 +19785,122 @@ function onMouseDown(e) { var ctrl = ev.ctrlKey; var accel = e.getAccelKey(); var button = e.getButton(); - if (ctrl && useragent.isMac) button = ev.button; - if (e.editor.inMultiSelectMode && button == 2) { e.editor.textInput.onContextMenu(e.domEvent); return; } - if (!ctrl && !alt && !accel) { if (button === 0 && e.editor.inMultiSelectMode) e.editor.exitMultiSelectMode(); return; } - if (button !== 0) return; - var editor = e.editor; var selection = editor.selection; var isMultiSelect = editor.inMultiSelectMode; var pos = e.getDocumentPosition(); var cursor = selection.getCursor(); var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor)); - var mouseX = e.x, mouseY = e.y; - var onMouseSelection = function(e) { + var onMouseSelection = function (e) { mouseX = e.clientX; mouseY = e.clientY; }; - var session = editor.session; var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); var screenCursor = screenAnchor; - var selectionMode; if (editor.$mouseHandler.$enableJumpToDef) { if (ctrl && alt || accel && alt) selectionMode = shift ? "block" : "add"; else if (alt && editor.$blockSelectEnabled) selectionMode = "block"; - } else { + } + else { if (accel && !alt) { selectionMode = "add"; if (!isMultiSelect && shift) return; - } else if (alt && editor.$blockSelectEnabled) { + } + else if (alt && editor.$blockSelectEnabled) { selectionMode = "block"; } } - if (selectionMode && useragent.isMac && ev.ctrlKey) { editor.$mouseHandler.cancelContextMenu(); } - if (selectionMode == "add") { if (!isMultiSelect && inSelection) return; // dragging - if (!isMultiSelect) { var range = selection.toOrientedRange(); editor.addSelectionMarker(range); } - var oldRange = selection.rangeList.rangeAtPoint(pos); - - - editor.$blockScrolling++; editor.inVirtualSelectionMode = true; - if (shift) { oldRange = null; range = selection.ranges[0] || range; editor.removeSelectionMarker(range); } - editor.once("mouseup", function() { + editor.once("mouseup", function () { var tmpSel = selection.toOrientedRange(); - if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor)) selection.substractPoint(tmpSel.cursor); else { if (shift) { selection.substractPoint(range.cursor); - } else if (range) { + } + else if (range) { editor.removeSelectionMarker(range); selection.addRange(range); } selection.addRange(tmpSel); } - editor.$blockScrolling--; editor.inVirtualSelectionMode = false; }); - - } else if (selectionMode == "block") { + } + else if (selectionMode == "block") { e.stop(); - editor.inVirtualSelectionMode = true; + editor.inVirtualSelectionMode = true; var initialRange; var rectSel = []; - var blockSelect = function() { + var blockSelect = function () { var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY); var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX); - if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead)) return; screenCursor = newCursor; - - editor.$blockScrolling++; editor.selection.moveToPosition(cursor); editor.renderer.scrollCursorIntoView(); - editor.removeSelectionMarkers(rectSel); rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor); if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty()) rectSel[0] = editor.$mouseHandler.$clickSelection.clone(); rectSel.forEach(editor.addSelectionMarker, editor); editor.updateSelectionMarkers(); - editor.$blockScrolling--; }; - editor.$blockScrolling++; if (isMultiSelect && !accel) { selection.toSingleRange(); - } else if (!isMultiSelect && accel) { + } + else if (!isMultiSelect && accel) { initialRange = selection.toOrientedRange(); editor.addSelectionMarker(initialRange); } - if (shift) - screenAnchor = session.documentToScreenPosition(selection.lead); + screenAnchor = session.documentToScreenPosition(selection.lead); else selection.moveToPosition(pos); - editor.$blockScrolling--; - - screenCursor = {row: -1, column: -1}; - - var onMouseSelectionEnd = function(e) { + screenCursor = { row: -1, column: -1 }; + var onMouseSelectionEnd = function (e) { + blockSelect(); clearInterval(timerId); editor.removeSelectionMarkers(rectSel); if (!rectSel.length) rectSel = [selection.toOrientedRange()]; - editor.$blockScrolling++; if (initialRange) { editor.removeSelectionMarker(initialRange); selection.toSingleRange(initialRange); @@ -18519,105 +19909,126 @@ function onMouseDown(e) { selection.addRange(rectSel[i]); editor.inVirtualSelectionMode = false; editor.$mouseHandler.$clickSelection = null; - editor.$blockScrolling--; }; - var onSelectionInterval = blockSelect; - event.capture(editor.container, onMouseSelection, onMouseSelectionEnd); - var timerId = setInterval(function() {onSelectionInterval();}, 20); - + var timerId = setInterval(function () { onSelectionInterval(); }, 20); return e.preventDefault(); } } - - exports.onMouseDown = onMouseDown; }); -define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module) { +define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module){/** + * commands to enter multiselect mode + * @type {import("../../ace-internal").Ace.Command[]} + */ exports.defaultCommands = [{ - name: "addCursorAbove", - exec: function(editor) { editor.selectMoreLines(-1); }, - bindKey: {win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "addCursorBelow", - exec: function(editor) { editor.selectMoreLines(1); }, - bindKey: {win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "addCursorAboveSkipCurrent", - exec: function(editor) { editor.selectMoreLines(-1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "addCursorBelowSkipCurrent", - exec: function(editor) { editor.selectMoreLines(1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectMoreBefore", - exec: function(editor) { editor.selectMore(-1); }, - bindKey: {win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectMoreAfter", - exec: function(editor) { editor.selectMore(1); }, - bindKey: {win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectNextBefore", - exec: function(editor) { editor.selectMore(-1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "selectNextAfter", - exec: function(editor) { editor.selectMore(1, true); }, - bindKey: {win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right"}, - scrollIntoView: "cursor", - readOnly: true -}, { - name: "splitIntoLines", - exec: function(editor) { editor.multiSelect.splitIntoLines(); }, - bindKey: {win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L"}, - readOnly: true -}, { - name: "alignCursors", - exec: function(editor) { editor.alignCursors(); }, - bindKey: {win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A"}, - scrollIntoView: "cursor" -}, { - name: "findAll", - exec: function(editor) { editor.findAll(); }, - bindKey: {win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G"}, - scrollIntoView: "cursor", - readOnly: true -}]; + name: "addCursorAbove", + description: "Add cursor above", + exec: function (editor) { editor.selectMoreLines(-1); }, + bindKey: { win: "Ctrl-Alt-Up", mac: "Ctrl-Alt-Up" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorBelow", + description: "Add cursor below", + exec: function (editor) { editor.selectMoreLines(1); }, + bindKey: { win: "Ctrl-Alt-Down", mac: "Ctrl-Alt-Down" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorAboveSkipCurrent", + description: "Add cursor above (skip current)", + exec: function (editor) { editor.selectMoreLines(-1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Up", mac: "Ctrl-Alt-Shift-Up" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "addCursorBelowSkipCurrent", + description: "Add cursor below (skip current)", + exec: function (editor) { editor.selectMoreLines(1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Down", mac: "Ctrl-Alt-Shift-Down" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectMoreBefore", + description: "Select more before", + exec: function (editor) { editor.selectMore(-1); }, + bindKey: { win: "Ctrl-Alt-Left", mac: "Ctrl-Alt-Left" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectMoreAfter", + description: "Select more after", + exec: function (editor) { editor.selectMore(1); }, + bindKey: { win: "Ctrl-Alt-Right", mac: "Ctrl-Alt-Right" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectNextBefore", + description: "Select next before", + exec: function (editor) { editor.selectMore(-1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Left", mac: "Ctrl-Alt-Shift-Left" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectNextAfter", + description: "Select next after", + exec: function (editor) { editor.selectMore(1, true); }, + bindKey: { win: "Ctrl-Alt-Shift-Right", mac: "Ctrl-Alt-Shift-Right" }, + scrollIntoView: "cursor", + readOnly: true + }, { + name: "toggleSplitSelectionIntoLines", + description: "Split selection into lines", + exec: function (editor) { + if (editor.multiSelect.rangeCount > 1) + editor.multiSelect.joinSelections(); + else + editor.multiSelect.splitIntoLines(); + }, + bindKey: { win: "Ctrl-Alt-L", mac: "Ctrl-Alt-L" }, + readOnly: true + }, { + name: "splitSelectionIntoLines", + description: "Split into lines", + exec: function (editor) { editor.multiSelect.splitIntoLines(); }, + readOnly: true + }, { + name: "alignCursors", + description: "Align cursors", + exec: function (editor) { editor.alignCursors(); }, + bindKey: { win: "Ctrl-Alt-A", mac: "Ctrl-Alt-A" }, + scrollIntoView: "cursor" + }, { + name: "findAll", + description: "Find all", + exec: function (editor) { editor.findAll(); }, + bindKey: { win: "Ctrl-Alt-K", mac: "Ctrl-Alt-G" }, + scrollIntoView: "cursor", + readOnly: true + }]; exports.multiSelectCommands = [{ - name: "singleSelection", - bindKey: "esc", - exec: function(editor) { editor.exitMultiSelectMode(); }, - scrollIntoView: "cursor", - readOnly: true, - isAvailable: function(editor) {return editor && editor.inMultiSelectMode;} -}]; - + name: "singleSelection", + description: "Single selection", + bindKey: "esc", + exec: function (editor) { editor.exitMultiSelectMode(); }, + scrollIntoView: "cursor", + readOnly: true, + isAvailable: function (editor) { return editor && editor.inMultiSelectMode; } + }]; var HashHandler = require("../keyboard/hash_handler").HashHandler; exports.keyboardHandler = new HashHandler(exports.multiSelectCommands); }); -define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"], function(require, exports, module) { - +define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"], function(require, exports, module){/** + * @typedef {import("./anchor").Anchor} Anchor + * @typedef {import("../ace-internal").Ace.Point} Point + * @typedef {import("../ace-internal").Ace.ScreenCoordinates} ScreenCoordinates + */ var RangeList = require("./range_list").RangeList; var Range = require("./range").Range; var Selection = require("./selection").Selection; @@ -18628,7 +20039,6 @@ var commands = require("./commands/multi_select_commands"); exports.commands = commands.defaultCommands.concat(commands.multiSelectCommands); var Search = require("./search").Search; var search = new Search(); - function find(session, needle, dir) { search.$options.wrap = true; search.$options.needle = needle; @@ -18636,18 +20046,17 @@ function find(session, needle, dir) { return search.find(session); } var EditSession = require("./edit_session").EditSession; -(function() { - this.getSelectionMarkers = function() { +(function () { + this.getSelectionMarkers = function () { return this.$selectionMarkers; }; }).call(EditSession.prototype); -(function() { +(function () { this.ranges = null; this.rangeList = null; - this.addRange = function(range, $blockChangeEvents) { + this.addRange = function (range, $blockChangeEvents) { if (!range) return; - if (!this.inMultiSelectMode && this.rangeCount === 0) { var oldRange = this.toOrientedRange(); this.rangeList.add(oldRange); @@ -18660,199 +20069,164 @@ var EditSession = require("./edit_session").EditSession; this.rangeList.add(oldRange); this.$onAddRange(oldRange); } - if (!range.cursor) range.cursor = range.end; - var removed = this.rangeList.add(range); - this.$onAddRange(range); - if (removed.length) this.$onRemoveRange(removed); - if (this.rangeCount > 1 && !this.inMultiSelectMode) { this._signal("multiSelect"); this.inMultiSelectMode = true; this.session.$undoSelect = false; this.rangeList.attach(this.session); } - return $blockChangeEvents || this.fromOrientedRange(range); }; - - this.toSingleRange = function(range) { + this.toSingleRange = function (range) { range = range || this.ranges[0]; var removed = this.rangeList.removeAll(); if (removed.length) this.$onRemoveRange(removed); - range && this.fromOrientedRange(range); }; - this.substractPoint = function(pos) { + this.substractPoint = function (pos) { var removed = this.rangeList.substractPoint(pos); if (removed) { this.$onRemoveRange(removed); return removed[0]; } }; - this.mergeOverlappingRanges = function() { + this.mergeOverlappingRanges = function () { var removed = this.rangeList.merge(); if (removed.length) this.$onRemoveRange(removed); - else if(this.ranges[0]) - this.fromOrientedRange(this.ranges[0]); }; - - this.$onAddRange = function(range) { + this.$onAddRange = function (range) { this.rangeCount = this.rangeList.ranges.length; this.ranges.unshift(range); - this._signal("addRange", {range: range}); + this._signal("addRange", { range: range }); }; - - this.$onRemoveRange = function(removed) { + this.$onRemoveRange = function (removed) { this.rangeCount = this.rangeList.ranges.length; if (this.rangeCount == 1 && this.inMultiSelectMode) { var lastRange = this.rangeList.ranges.pop(); removed.push(lastRange); this.rangeCount = 0; } - - for (var i = removed.length; i--; ) { + for (var i = removed.length; i--;) { var index = this.ranges.indexOf(removed[i]); this.ranges.splice(index, 1); } - - this._signal("removeRange", {ranges: removed}); - + this._signal("removeRange", { ranges: removed }); if (this.rangeCount === 0 && this.inMultiSelectMode) { this.inMultiSelectMode = false; this._signal("singleSelect"); this.session.$undoSelect = true; this.rangeList.detach(this.session); } - lastRange = lastRange || this.ranges[0]; if (lastRange && !lastRange.isEqual(this.getRange())) this.fromOrientedRange(lastRange); }; - this.$initRangeList = function() { + this.$initRangeList = function () { if (this.rangeList) return; - this.rangeList = new RangeList(); this.ranges = []; this.rangeCount = 0; }; - this.getAllRanges = function() { + this.getAllRanges = function () { return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()]; }; - this.splitIntoLines = function () { - if (this.rangeCount > 1) { - var ranges = this.rangeList.ranges; - var lastRange = ranges[ranges.length - 1]; - var range = Range.fromPoints(ranges[0].start, lastRange.end); - - this.toSingleRange(); - this.setSelectionRange(range, lastRange.cursor == lastRange.start); - } else { - var range = this.getRange(); - var isBackwards = this.isBackwards(); - var startRow = range.start.row; + var ranges = this.ranges.length ? this.ranges : [this.getRange()]; + var newRanges = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + var row = range.start.row; var endRow = range.end.row; - if (startRow == endRow) { - if (isBackwards) - var start = range.end, end = range.start; - else - var start = range.start, end = range.end; - - this.addRange(Range.fromPoints(end, end)); - this.addRange(Range.fromPoints(start, start)); - return; + if (row === endRow) { + newRanges.push(range.clone()); } - - var rectSel = []; - var r = this.getLineRange(startRow, true); - r.start.column = range.start.column; - rectSel.push(r); - - for (var i = startRow + 1; i < endRow; i++) - rectSel.push(this.getLineRange(i, true)); - - r = this.getLineRange(endRow, true); - r.end.column = range.end.column; - rectSel.push(r); - - rectSel.forEach(this.addRange, this); + else { + newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length)); + while (++row < endRow) + newRanges.push(this.getLineRange(row, true)); + newRanges.push(new Range(endRow, 0, endRow, range.end.column)); + } + if (i == 0 && !this.isBackwards()) + newRanges = newRanges.reverse(); } + this.toSingleRange(); + for (var i = newRanges.length; i--;) + this.addRange(newRanges[i]); + }; + this.joinSelections = function () { + var ranges = this.rangeList.ranges; + var lastRange = ranges[ranges.length - 1]; + var range = Range.fromPoints(ranges[0].start, lastRange.end); + this.toSingleRange(); + this.setSelectionRange(range, lastRange.cursor == lastRange.start); }; this.toggleBlockSelection = function () { if (this.rangeCount > 1) { var ranges = this.rangeList.ranges; var lastRange = ranges[ranges.length - 1]; var range = Range.fromPoints(ranges[0].start, lastRange.end); - this.toSingleRange(); this.setSelectionRange(range, lastRange.cursor == lastRange.start); - } else { - var cursor = this.session.documentToScreenPosition(this.selectionLead); - var anchor = this.session.documentToScreenPosition(this.selectionAnchor); - + } + else { + var cursor = this.session.documentToScreenPosition(this.cursor); + var anchor = this.session.documentToScreenPosition(this.anchor); var rectSel = this.rectangularRangeBlock(cursor, anchor); rectSel.forEach(this.addRange, this); } }; - this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) { + this.rectangularRangeBlock = function (screenCursor, screenAnchor, includeEmptyLines) { var rectSel = []; - var xBackwards = screenCursor.column < screenAnchor.column; if (xBackwards) { var startColumn = screenCursor.column; var endColumn = screenAnchor.column; var startOffsetX = screenCursor.offsetX; var endOffsetX = screenAnchor.offsetX; - } else { + } + else { var startColumn = screenAnchor.column; var endColumn = screenCursor.column; var startOffsetX = screenAnchor.offsetX; var endOffsetX = screenCursor.offsetX; } - var yBackwards = screenCursor.row < screenAnchor.row; if (yBackwards) { var startRow = screenCursor.row; var endRow = screenAnchor.row; - } else { + } + else { var startRow = screenAnchor.row; var endRow = screenCursor.row; } - if (startColumn < 0) startColumn = 0; if (startRow < 0) startRow = 0; - if (startRow == endRow) includeEmptyLines = true; - + var docEnd; for (var row = startRow; row <= endRow; row++) { - var range = Range.fromPoints( - this.session.screenToDocumentPosition(row, startColumn, startOffsetX), - this.session.screenToDocumentPosition(row, endColumn, endOffsetX) - ); + var range = Range.fromPoints(this.session.screenToDocumentPosition(row, startColumn, startOffsetX), this.session.screenToDocumentPosition(row, endColumn, endOffsetX)); if (range.isEmpty()) { if (docEnd && isSamePoint(range.end, docEnd)) break; - var docEnd = range.end; + docEnd = range.end; } range.cursor = xBackwards ? range.start : range.end; rectSel.push(range); } - if (yBackwards) rectSel.reverse(); - if (!includeEmptyLines) { var end = rectSel.length - 1; while (rectSel[end].isEmpty() && end > 0) @@ -18867,28 +20241,25 @@ var EditSession = require("./edit_session").EditSession; rectSel.splice(i, 1); } } - return rectSel; }; }).call(Selection.prototype); var Editor = require("./editor").Editor; -(function() { - this.updateSelectionMarkers = function() { +(function () { + this.updateSelectionMarkers = function () { this.renderer.updateCursor(); this.renderer.updateBackMarkers(); }; - this.addSelectionMarker = function(orientedRange) { + this.addSelectionMarker = function (orientedRange) { if (!orientedRange.cursor) orientedRange.cursor = orientedRange.end; - var style = this.getSelectionStyle(); orientedRange.marker = this.session.addMarker(orientedRange, "ace_selection", style); - this.session.$selectionMarkers.push(orientedRange); this.session.selectionMarkerCount = this.session.$selectionMarkers.length; return orientedRange; }; - this.removeSelectionMarker = function(range) { + this.removeSelectionMarker = function (range) { if (!range.marker) return; this.session.removeMarker(range.marker); @@ -18897,10 +20268,9 @@ var Editor = require("./editor").Editor; this.session.$selectionMarkers.splice(index, 1); this.session.selectionMarkerCount = this.session.$selectionMarkers.length; }; - - this.removeSelectionMarkers = function(ranges) { + this.removeSelectionMarkers = function (ranges) { var markerList = this.session.$selectionMarkers; - for (var i = ranges.length; i--; ) { + for (var i = ranges.length; i--;) { var range = ranges[i]; if (!range.marker) continue; @@ -18911,47 +20281,38 @@ var Editor = require("./editor").Editor; } this.session.selectionMarkerCount = markerList.length; }; - - this.$onAddRange = function(e) { + this.$onAddRange = function (e) { this.addSelectionMarker(e.range); this.renderer.updateCursor(); this.renderer.updateBackMarkers(); }; - - this.$onRemoveRange = function(e) { + this.$onRemoveRange = function (e) { this.removeSelectionMarkers(e.ranges); this.renderer.updateCursor(); this.renderer.updateBackMarkers(); }; - - this.$onMultiSelect = function(e) { + this.$onMultiSelect = function (e) { if (this.inMultiSelectMode) return; this.inMultiSelectMode = true; - this.setStyle("ace_multiselect"); this.keyBinding.addKeyboardHandler(commands.keyboardHandler); this.commands.setDefaultHandler("exec", this.$onMultiSelectExec); - this.renderer.updateCursor(); this.renderer.updateBackMarkers(); }; - - this.$onSingleSelect = function(e) { + this.$onSingleSelect = function (e) { if (this.session.multiSelect.inVirtualMode) return; this.inMultiSelectMode = false; - this.unsetStyle("ace_multiselect"); this.keyBinding.removeKeyboardHandler(commands.keyboardHandler); - this.commands.removeDefaultHandler("exec", this.$onMultiSelectExec); this.renderer.updateCursor(); this.renderer.updateBackMarkers(); this._emit("changeSelection"); }; - - this.$onMultiSelectExec = function(e) { + this.$onMultiSelectExec = function (e) { var command = e.command; var editor = e.editor; if (!editor.multiSelect) @@ -18960,19 +20321,23 @@ var Editor = require("./editor").Editor; var result = command.exec(editor, e.args || {}); editor.multiSelect.addRange(editor.multiSelect.toOrientedRange()); editor.multiSelect.mergeOverlappingRanges(); - } else if (command.multiSelectAction == "forEach") { + } + else if (command.multiSelectAction == "forEach") { result = editor.forEachSelection(command, e.args); - } else if (command.multiSelectAction == "forEachLine") { + } + else if (command.multiSelectAction == "forEachLine") { result = editor.forEachSelection(command, e.args, true); - } else if (command.multiSelectAction == "single") { + } + else if (command.multiSelectAction == "single") { editor.exitMultiSelectMode(); result = command.exec(editor, e.args || {}); - } else { + } + else { result = command.multiSelectAction(editor, e.args || {}); } return result; - }; - this.forEachSelection = function(cmd, args, options) { + }; + this.forEachSelection = function (cmd, args, options) { if (this.inVirtualSelectionMode) return; var keepOrder = options && options.keepOrder; @@ -18982,13 +20347,10 @@ var Editor = require("./editor").Editor; var rangeList = selection.rangeList; var ranges = (keepOrder ? selection : rangeList).ranges; var result; - if (!ranges.length) return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {}); - var reg = selection._eventRegistry; selection._eventRegistry = {}; - var tmpSel = new Selection(session); this.inVirtualSelectionMode = true; for (var i = ranges.length; i--;) { @@ -19005,27 +20367,25 @@ var Editor = require("./editor").Editor; tmpSel.toOrientedRange(ranges[i]); } tmpSel.detach(); - this.selection = session.selection = selection; this.inVirtualSelectionMode = false; selection._eventRegistry = reg; selection.mergeOverlappingRanges(); - + if (selection.ranges[0]) + selection.fromOrientedRange(selection.ranges[0]); var anim = this.renderer.$scrollAnimation; this.onCursorChange(); this.onSelectionChange(); if (anim && anim.from == anim.to) this.renderer.animateScrolling(anim.from); - return result; }; - this.exitMultiSelectMode = function() { + this.exitMultiSelectMode = function () { if (!this.inMultiSelectMode || this.inVirtualSelectionMode) return; this.multiSelect.toSingleRange(); }; - - this.getSelectedText = function() { + this.getSelectedText = function () { var text = ""; if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { var ranges = this.multiSelect.rangeList.ranges; @@ -19037,13 +20397,13 @@ var Editor = require("./editor").Editor; text = buf.join(nl); if (text.length == (buf.length - 1) * nl.length) text = ""; - } else if (!this.selection.isEmpty()) { + } + else if (!this.selection.isEmpty()) { text = this.session.getTextRange(this.getSelectionRange()); } return text; }; - - this.$checkMultiselectChange = function(e, anchor) { + this.$checkMultiselectChange = function (e, anchor) { if (this.inMultiSelectMode && !this.inVirtualSelectionMode) { var range = this.multiSelect.ranges[0]; if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor) @@ -19051,12 +20411,14 @@ var Editor = require("./editor").Editor; var pos = anchor == this.multiSelect.anchor ? range.cursor == range.start ? range.end : range.start : range.cursor; - if (pos.row != anchor.row + if (pos.row != anchor.row || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column) this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()); + else + this.multiSelect.mergeOverlappingRanges(); } }; - this.findAll = function(needle, options, additive) { + this.findAll = function (needle, options, additive) { options = options || {}; options.needle = needle || options.needle; if (options.needle == undefined) { @@ -19064,105 +20426,90 @@ var Editor = require("./editor").Editor; ? this.selection.getWordRange() : this.selection.getRange(); options.needle = this.session.getTextRange(range); - } + } this.$search.set(options); - var ranges = this.$search.findAll(this.session); if (!ranges.length) return 0; - - this.$blockScrolling += 1; var selection = this.multiSelect; - if (!additive) selection.toSingleRange(ranges[0]); - - for (var i = ranges.length; i--; ) + for (var i = ranges.length; i--;) selection.addRange(ranges[i], true); if (range && selection.rangeList.rangeAtPoint(range.start)) selection.addRange(range, true); - - this.$blockScrolling -= 1; - return ranges.length; }; - this.selectMoreLines = function(dir, skip) { + this.selectMoreLines = function (dir, skip) { var range = this.selection.toOrientedRange(); var isBackwards = range.cursor == range.end; - var screenLead = this.session.documentToScreenPosition(range.cursor); if (this.selection.$desiredColumn) screenLead.column = this.selection.$desiredColumn; - var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column); - if (!range.isEmpty()) { var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start); var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column); - } else { + } + else { var anchor = lead; } - if (isBackwards) { var newRange = Range.fromPoints(lead, anchor); newRange.cursor = newRange.start; - } else { + } + else { var newRange = Range.fromPoints(anchor, lead); newRange.cursor = newRange.end; } - newRange.desiredColumn = screenLead.column; if (!this.selection.inMultiSelectMode) { this.selection.addRange(range); - } else { + } + else { if (skip) var toRemove = range.cursor; } - this.selection.addRange(newRange); if (toRemove) this.selection.substractPoint(toRemove); }; - this.transposeSelections = function(dir) { + this.transposeSelections = function (dir) { var session = this.session; var sel = session.multiSelect; var all = sel.ranges; - - for (var i = all.length; i--; ) { + for (var i = all.length; i--;) { var range = all[i]; if (range.isEmpty()) { - var tmp = session.getWordRange(range.start.row, range.start.column); - range.start.row = tmp.start.row; - range.start.column = tmp.start.column; - range.end.row = tmp.end.row; - range.end.column = tmp.end.column; + var tmp_1 = session.getWordRange(range.start.row, range.start.column); + range.start.row = tmp_1.start.row; + range.start.column = tmp_1.start.column; + range.end.row = tmp_1.end.row; + range.end.column = tmp_1.end.column; } } sel.mergeOverlappingRanges(); - var words = []; - for (var i = all.length; i--; ) { + for (var i = all.length; i--;) { var range = all[i]; words.unshift(session.getTextRange(range)); } - if (dir < 0) words.unshift(words.pop()); else words.push(words.shift()); - - for (var i = all.length; i--; ) { + for (var i = all.length; i--;) { var range = all[i]; var tmp = range.clone(); session.replace(range, words[i]); range.start.row = tmp.start.row; range.start.column = tmp.start.column; } + sel.fromOrientedRange(sel.ranges[0]); }; - this.selectMore = function(dir, skip, stopAtFirst) { + this.selectMore = function (dir, skip, stopAtFirst) { var session = this.session; var sel = session.multiSelect; - var range = sel.toOrientedRange(); if (range.isEmpty()) { range = session.getWordRange(range.start.row, range.start.column); @@ -19172,30 +20519,26 @@ var Editor = require("./editor").Editor; return; } var needle = session.getTextRange(range); - var newRange = find(session, needle, dir); if (newRange) { newRange.cursor = dir == -1 ? newRange.start : newRange.end; - this.$blockScrolling += 1; this.session.unfold(newRange); this.multiSelect.addRange(newRange); - this.$blockScrolling -= 1; this.renderer.scrollCursorIntoView(null, 0.5); } if (skip) this.multiSelect.substractPoint(range.cursor); }; - this.alignCursors = function() { + this.alignCursors = function () { var session = this.session; var sel = session.multiSelect; var ranges = sel.ranges; var row = -1; - var sameRowRanges = ranges.filter(function(r) { + var sameRowRanges = ranges.filter(function (r) { if (r.cursor.row == row) return true; row = r.cursor.row; }); - if (!ranges.length || sameRowRanges.length == ranges.length - 1) { var range = this.selection.getRange(); var fr = range.start.row, lr = range.end.row; @@ -19209,39 +20552,39 @@ var Editor = require("./editor").Editor; do { line = this.session.getLine(fr); } while (/[=:]/.test(line) && --fr > 0); - - if (fr < 0) fr = 0; - if (lr >= max) lr = max - 1; + if (fr < 0) + fr = 0; + if (lr >= max) + lr = max - 1; } var lines = this.session.removeFullLines(fr, lr); lines = this.$reAlignText(lines, guessRange); - this.session.insert({row: fr, column: 0}, lines.join("\n") + "\n"); + this.session.insert({ row: fr, column: 0 }, lines.join("\n") + "\n"); if (!guessRange) { range.start.column = 0; range.end.column = lines[lines.length - 1].length; } this.selection.setRange(range); - } else { - sameRowRanges.forEach(function(r) { + } + else { + sameRowRanges.forEach(function (r) { sel.substractPoint(r.cursor); }); - var maxCol = 0; var minSpace = Infinity; - var spaceOffsets = ranges.map(function(r) { + var spaceOffsets = ranges.map(function (r) { var p = r.cursor; var line = session.getLine(p.row); var spaceOffset = line.substr(p.column).search(/\S/g); if (spaceOffset == -1) spaceOffset = 0; - if (p.column > maxCol) maxCol = p.column; if (spaceOffset < minSpace) minSpace = spaceOffset; return spaceOffset; }); - ranges.forEach(function(r, i) { + ranges.forEach(function (r, i) { var p = r.cursor; var l = maxCol - p.column; var d = spaceOffsets[i] - minSpace; @@ -19249,7 +20592,6 @@ var Editor = require("./editor").Editor; session.insert(p, lang.stringRepeat(" ", l - d)); else session.remove(new Range(p.row, p.column, p.row, p.column - l + d)); - r.start.column = r.end.column = maxCol; r.start.row = r.end.row = p.row; r.cursor = r.end; @@ -19259,43 +20601,35 @@ var Editor = require("./editor").Editor; this.renderer.updateBackMarkers(); } }; - - this.$reAlignText = function(lines, forceLeft) { + this.$reAlignText = function (lines, forceLeft) { var isLeftAligned = true, isRightAligned = true; var startW, textW, endW; - - return lines.map(function(line) { + return lines.map(function (line) { var m = line.match(/(\s*)(.*?)(\s*)([=:].*)/); if (!m) return [line]; - if (startW == null) { startW = m[1].length; textW = m[2].length; endW = m[3].length; return m; } - if (startW + textW + endW != m[1].length + m[2].length + m[3].length) isRightAligned = false; if (startW != m[1].length) isLeftAligned = false; - if (startW > m[1].length) startW = m[1].length; if (textW < m[2].length) textW = m[2].length; if (endW > m[3].length) endW = m[3].length; - return m; }).map(forceLeft ? alignLeft : isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign); - function spaces(n) { return lang.stringRepeat(" ", n); } - function alignLeft(m) { return !m[2] ? m[0] : spaces(startW) + m[2] + spaces(textW - m[2].length + endW) @@ -19303,7 +20637,7 @@ var Editor = require("./editor").Editor; } function alignRight(m) { return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2] - + spaces(endW, " ") + + spaces(endW) + m[4].replace(/^([=:])\s+/, "$1 "); } function unAlign(m) { @@ -19313,12 +20647,10 @@ var Editor = require("./editor").Editor; } }; }).call(Editor.prototype); - - function isSamePoint(p1, p2) { return p1.row == p2.row && p1.column == p2.column; } -exports.onSessionChange = function(e) { +exports.onSessionChange = function (e) { var session = e.session; if (session && !session.multiSelect) { session.$selectionMarkers = []; @@ -19326,7 +20658,6 @@ exports.onSessionChange = function(e) { session.multiSelect = session.selection; } this.multiSelect = session && session.multiSelect; - var oldSession = e.oldSession; if (oldSession) { oldSession.multiSelect.off("addRange", this.$onAddRange); @@ -19336,7 +20667,6 @@ exports.onSessionChange = function(e) { oldSession.multiSelect.lead.off("change", this.$checkMultiselectChange); oldSession.multiSelect.anchor.off("change", this.$checkMultiselectChange); } - if (session) { session.multiSelect.on("addRange", this.$onAddRange); session.multiSelect.on("removeRange", this.$onRemoveRange); @@ -19345,7 +20675,6 @@ exports.onSessionChange = function(e) { session.multiSelect.lead.on("change", this.$checkMultiselectChange); session.multiSelect.anchor.on("change", this.$checkMultiselectChange); } - if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) { if (session.selection.inMultiSelectMode) this.$onMultiSelect(); @@ -19362,33 +20691,31 @@ function MultiSelect(editor) { editor.$onSingleSelect = editor.$onSingleSelect.bind(editor); editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor); editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor); - editor.$multiselectOnSessionChange(editor); editor.on("changeSession", editor.$multiselectOnSessionChange); - editor.on("mousedown", onMouseDown); editor.commands.addCommands(commands.defaultCommands); - addAltCursorListeners(editor); } - -function addAltCursorListeners(editor){ +function addAltCursorListeners(editor) { + if (!editor.textInput) + return; var el = editor.textInput.getElement(); var altCursor = false; - event.addListener(el, "keydown", function(e) { + event.addListener(el, "keydown", function (e) { var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey); if (editor.$blockSelectEnabled && altDown) { if (!altCursor) { editor.renderer.setMouseCursor("crosshair"); altCursor = true; } - } else if (altCursor) { + } + else if (altCursor) { reset(); } - }); - - event.addListener(el, "keyup", reset); - event.addListener(el, "blur", reset); + }, editor); + event.addListener(el, "keyup", reset, editor); + event.addListener(el, "blur", reset, editor); function reset(e) { if (altCursor) { editor.renderer.setMouseCursor(""); @@ -19396,617 +20723,110 @@ function addAltCursorListeners(editor){ } } } - exports.MultiSelect = MultiSelect; - - require("./config").defineOptions(Editor.prototype, "editor", { enableMultiselect: { - set: function(val) { + set: function (val) { MultiSelect(this); if (val) { - this.on("changeSession", this.$multiselectOnSessionChange); this.on("mousedown", onMouseDown); - } else { - this.off("changeSession", this.$multiselectOnSessionChange); + } + else { this.off("mousedown", onMouseDown); } }, value: true }, enableBlockSelect: { - set: function(val) { + set: function (val) { this.$blockSelectEnabled = val; }, value: true } }); - - }); -define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; - -(function() { - +var FoldMode = exports.FoldMode = function () { }; +(function () { this.foldingStartMarker = null; this.foldingStopMarker = null; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); if (this.foldingStartMarker.test(line)) return "start"; if (foldStyle == "markbeginend" - && this.foldingStopMarker - && this.foldingStopMarker.test(line)) + && this.foldingStopMarker + && this.foldingStopMarker.test(line)) return "end"; return ""; }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { return null; }; - - this.indentationBlock = function(session, row, column) { + this.indentationBlock = function (session, row, column) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1) return; - var startColumn = column || line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { var level = session.getLine(row).search(re); - if (level == -1) continue; - - if (level <= startLevel) - break; - + if (level <= startLevel) { + var token = session.getTokenAt(row, 0); + if (!token || token.type !== "string") + break; + } endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - - this.openingBracketBlock = function(session, bracket, row, column, typeRe) { - var start = {row: row, column: column + 1}; + this.openingBracketBlock = function (session, bracket, row, column, typeRe) { + var start = { row: row, column: column + 1 }; var end = session.$findClosingBracket(bracket, start, typeRe); if (!end) return; - var fw = session.foldWidgets[end.row]; if (fw == null) fw = session.getFoldWidget(end.row); - if (fw == "start" && end.row > start.row) { - end.row --; + end.row--; end.column = session.getLine(end.row).length; } return Range.fromPoints(start, end); }; - - this.closingBracketBlock = function(session, bracket, row, column, typeRe) { - var end = {row: row, column: column}; + this.closingBracketBlock = function (session, bracket, row, column, typeRe) { + var end = { row: row, column: column }; var start = session.$findOpeningBracket(bracket, end); - if (!start) return; - start.column++; end.column--; - - return Range.fromPoints(start, end); + return Range.fromPoints(start, end); }; }).call(FoldMode.prototype); }); -define("ace/theme/textmate",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -exports.isDark = false; -exports.cssClass = "ace-tm"; -exports.cssText = ".ace-tm .ace_gutter {\ -background: #f0f0f0;\ -color: #333;\ -}\ -.ace-tm .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-tm .ace_fold {\ -background-color: #6B72E6;\ -}\ -.ace-tm {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-tm .ace_cursor {\ -color: black;\ -}\ -.ace-tm .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-tm .ace_storage,\ -.ace-tm .ace_keyword {\ -color: blue;\ -}\ -.ace-tm .ace_constant {\ -color: rgb(197, 6, 11);\ -}\ -.ace-tm .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-tm .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-tm .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_invalid {\ -background-color: rgba(255, 0, 0, 0.1);\ -color: red;\ -}\ -.ace-tm .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-tm .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_support.ace_type,\ -.ace-tm .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-tm .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-tm .ace_string {\ -color: rgb(3, 106, 7);\ -}\ -.ace-tm .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-tm .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-tm .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-tm .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-tm .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-tm .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-tm .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-tm .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-tm .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-tm .ace_meta.ace_tag {\ -color:rgb(0, 22, 142);\ -}\ -.ace-tm .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-tm .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-tm.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -}\ -.ace-tm .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-tm .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-tm .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-tm .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-tm .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-tm .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-tm .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); - -define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); -var dom = require("./lib/dom"); -var Range = require("./range").Range; - - -function LineWidgets(session) { - this.session = session; - this.session.widgetManager = this; - this.session.getRowLength = this.getRowLength; - this.session.$getWidgetScreenLength = this.$getWidgetScreenLength; - this.updateOnChange = this.updateOnChange.bind(this); - this.renderWidgets = this.renderWidgets.bind(this); - this.measureWidgets = this.measureWidgets.bind(this); - this.session._changedWidgets = []; - this.$onChangeEditor = this.$onChangeEditor.bind(this); - - this.session.on("change", this.updateOnChange); - this.session.on("changeFold", this.updateOnFold); - this.session.on("changeEditor", this.$onChangeEditor); -} - -(function() { - this.getRowLength = function(row) { - var h; - if (this.lineWidgets) - h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0; - else - h = 0; - if (!this.$useWrapMode || !this.$wrapData[row]) { - return 1 + h; - } else { - return this.$wrapData[row].length + 1 + h; - } - }; - - this.$getWidgetScreenLength = function() { - var screenRows = 0; - this.lineWidgets.forEach(function(w){ - if (w && w.rowCount && !w.hidden) - screenRows += w.rowCount; - }); - return screenRows; - }; - - this.$onChangeEditor = function(e) { - this.attach(e.editor); - }; - - this.attach = function(editor) { - if (editor && editor.widgetManager && editor.widgetManager != this) - editor.widgetManager.detach(); - - if (this.editor == editor) - return; - - this.detach(); - this.editor = editor; - - if (editor) { - editor.widgetManager = this; - editor.renderer.on("beforeRender", this.measureWidgets); - editor.renderer.on("afterRender", this.renderWidgets); - } - }; - this.detach = function(e) { - var editor = this.editor; - if (!editor) - return; - - this.editor = null; - editor.widgetManager = null; - - editor.renderer.off("beforeRender", this.measureWidgets); - editor.renderer.off("afterRender", this.renderWidgets); - var lineWidgets = this.session.lineWidgets; - lineWidgets && lineWidgets.forEach(function(w) { - if (w && w.el && w.el.parentNode) { - w._inDocument = false; - w.el.parentNode.removeChild(w.el); - } - }); - }; - - this.updateOnFold = function(e, session) { - var lineWidgets = session.lineWidgets; - if (!lineWidgets || !e.action) - return; - var fold = e.data; - var start = fold.start.row; - var end = fold.end.row; - var hide = e.action == "add"; - for (var i = start + 1; i < end; i++) { - if (lineWidgets[i]) - lineWidgets[i].hidden = hide; - } - if (lineWidgets[end]) { - if (hide) { - if (!lineWidgets[start]) - lineWidgets[start] = lineWidgets[end]; - else - lineWidgets[end].hidden = hide; - } else { - if (lineWidgets[start] == lineWidgets[end]) - lineWidgets[start] = undefined; - lineWidgets[end].hidden = hide; - } - } - }; - - this.updateOnChange = function(delta) { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) return; - - var startRow = delta.start.row; - var len = delta.end.row - startRow; - - if (len === 0) { - } else if (delta.action == 'remove') { - var removed = lineWidgets.splice(startRow + 1, len); - removed.forEach(function(w) { - w && this.removeLineWidget(w); - }, this); - this.$updateRows(); - } else { - var args = new Array(len); - args.unshift(startRow, 0); - lineWidgets.splice.apply(lineWidgets, args); - this.$updateRows(); - } - }; - - this.$updateRows = function() { - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) return; - var noWidgets = true; - lineWidgets.forEach(function(w, i) { - if (w) { - noWidgets = false; - w.row = i; - while (w.$oldWidget) { - w.$oldWidget.row = i; - w = w.$oldWidget; - } - } - }); - if (noWidgets) - this.session.lineWidgets = null; - }; - - this.addLineWidget = function(w) { - if (!this.session.lineWidgets) - this.session.lineWidgets = new Array(this.session.getLength()); - - var old = this.session.lineWidgets[w.row]; - if (old) { - w.$oldWidget = old; - if (old.el && old.el.parentNode) { - old.el.parentNode.removeChild(old.el); - old._inDocument = false; - } - } - - this.session.lineWidgets[w.row] = w; - - w.session = this.session; - - var renderer = this.editor.renderer; - if (w.html && !w.el) { - w.el = dom.createElement("div"); - w.el.innerHTML = w.html; - } - if (w.el) { - dom.addCssClass(w.el, "ace_lineWidgetContainer"); - w.el.style.position = "absolute"; - w.el.style.zIndex = 5; - renderer.container.appendChild(w.el); - w._inDocument = true; - } - - if (!w.coverGutter) { - w.el.style.zIndex = 3; - } - if (w.pixelHeight == null) { - w.pixelHeight = w.el.offsetHeight; - } - if (w.rowCount == null) { - w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight; - } - - var fold = this.session.getFoldAt(w.row, 0); - w.$fold = fold; - if (fold) { - var lineWidgets = this.session.lineWidgets; - if (w.row == fold.end.row && !lineWidgets[fold.start.row]) - lineWidgets[fold.start.row] = w; - else - w.hidden = true; - } - - this.session._emit("changeFold", {data:{start:{row: w.row}}}); - - this.$updateRows(); - this.renderWidgets(null, renderer); - this.onWidgetChanged(w); - return w; - }; - - this.removeLineWidget = function(w) { - w._inDocument = false; - w.session = null; - if (w.el && w.el.parentNode) - w.el.parentNode.removeChild(w.el); - if (w.editor && w.editor.destroy) try { - w.editor.destroy(); - } catch(e){} - if (this.session.lineWidgets) { - var w1 = this.session.lineWidgets[w.row]; - if (w1 == w) { - this.session.lineWidgets[w.row] = w.$oldWidget; - if (w.$oldWidget) - this.onWidgetChanged(w.$oldWidget); - } else { - while (w1) { - if (w1.$oldWidget == w) { - w1.$oldWidget = w.$oldWidget; - break; - } - w1 = w1.$oldWidget; - } - } - } - this.session._emit("changeFold", {data:{start:{row: w.row}}}); - this.$updateRows(); - }; - - this.getWidgetsAtRow = function(row) { - var lineWidgets = this.session.lineWidgets; - var w = lineWidgets && lineWidgets[row]; - var list = []; - while (w) { - list.push(w); - w = w.$oldWidget; - } - return list; - }; - - this.onWidgetChanged = function(w) { - this.session._changedWidgets.push(w); - this.editor && this.editor.renderer.updateFull(); - }; - - this.measureWidgets = function(e, renderer) { - var changedWidgets = this.session._changedWidgets; - var config = renderer.layerConfig; - - if (!changedWidgets || !changedWidgets.length) return; - var min = Infinity; - for (var i = 0; i < changedWidgets.length; i++) { - var w = changedWidgets[i]; - if (!w || !w.el) continue; - if (w.session != this.session) continue; - if (!w._inDocument) { - if (this.session.lineWidgets[w.row] != w) - continue; - w._inDocument = true; - renderer.container.appendChild(w.el); - } - - w.h = w.el.offsetHeight; - - if (!w.fixedWidth) { - w.w = w.el.offsetWidth; - w.screenWidth = Math.ceil(w.w / config.characterWidth); - } - - var rowCount = w.h / config.lineHeight; - if (w.coverLine) { - rowCount -= this.session.getRowLineCount(w.row); - if (rowCount < 0) - rowCount = 0; - } - if (w.rowCount != rowCount) { - w.rowCount = rowCount; - if (w.row < min) - min = w.row; - } - } - if (min != Infinity) { - this.session._emit("changeFold", {data:{start:{row: min}}}); - this.session.lineWidgetWidth = null; - } - this.session._changedWidgets = []; - }; - - this.renderWidgets = function(e, renderer) { - var config = renderer.layerConfig; - var lineWidgets = this.session.lineWidgets; - if (!lineWidgets) - return; - var first = Math.min(this.firstRow, config.firstRow); - var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length); - - while (first > 0 && !lineWidgets[first]) - first--; - - this.firstRow = config.firstRow; - this.lastRow = config.lastRow; - - renderer.$cursorLayer.config = config; - for (var i = first; i <= last; i++) { - var w = lineWidgets[i]; - if (!w || !w.el) continue; - if (w.hidden) { - w.el.style.top = -100 - (w.pixelHeight || 0) + "px"; - continue; - } - if (!w._inDocument) { - w._inDocument = true; - renderer.container.appendChild(w.el); - } - var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top; - if (!w.coverLine) - top += config.lineHeight * this.session.getRowLineCount(w.row); - w.el.style.top = top - config.offset + "px"; - - var left = w.coverGutter ? 0 : renderer.gutterWidth; - if (!w.fixedWidth) - left -= renderer.scrollLeft; - w.el.style.left = left + "px"; - - if (w.fullWidth && w.screenWidth) { - w.el.style.minWidth = config.width + 2 * config.padding + "px"; - } - - if (w.fixedWidth) { - w.el.style.right = renderer.scrollBar.getWidth() + "px"; - } else { - w.el.style.right = ""; - } - } - }; - -}).call(LineWidgets.prototype); - - -exports.LineWidgets = LineWidgets; - -}); - -define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"], function(require, exports, module) { -"use strict"; +define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range","ace/config"], function(require, exports, module){"use strict"; var LineWidgets = require("../line_widgets").LineWidgets; var dom = require("../lib/dom"); var Range = require("../range").Range; - +var nls = require("../config").nls; function binarySearch(array, needle, comparator) { var first = 0; var last = array.length - 1; - while (first <= last) { var mid = (first + last) >> 1; var c = comparator(needle, array[mid]); @@ -20019,25 +20839,20 @@ function binarySearch(array, needle, comparator) { } return -(first + 1); } - function findAnnotations(session, row, dir) { var annotations = session.getAnnotations().sort(Range.comparePoints); if (!annotations.length) return; - - var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints); + var i = binarySearch(annotations, { row: row, column: -1 }, Range.comparePoints); if (i < 0) i = -i - 1; - if (i >= annotations.length) i = dir > 0 ? 0 : annotations.length - 1; else if (i === 0 && dir < 0) i = annotations.length - 1; - var annotation = annotations[i]; if (!annotation || !dir) return; - if (annotation.row === row) { do { annotation = annotations[i += dir]; @@ -20045,8 +20860,6 @@ function findAnnotations(session, row, dir) { if (!annotation) return annotations.slice(); } - - var matched = []; row = annotation.row; do { @@ -20055,22 +20868,21 @@ function findAnnotations(session, row, dir) { } while (annotation && annotation.row == row); return matched.length && matched; } - -exports.showErrorMarker = function(editor, dir) { +exports.showErrorMarker = function (editor, dir) { var session = editor.session; if (!session.widgetManager) { session.widgetManager = new LineWidgets(session); session.widgetManager.attach(editor); } - var pos = editor.getCursorPosition(); var row = pos.row; - var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) { + var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function (w) { return w.type == "errorMarker"; })[0]; if (oldWidget) { oldWidget.destroy(); - } else { + } + else { row -= dir; } var annotations = findAnnotations(session, row, dir); @@ -20082,19 +20894,20 @@ exports.showErrorMarker = function(editor, dir) { : annotation.column) || 0; pos.row = annotation.row; gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row]; - } else if (oldWidget) { + } + else if (oldWidget) { return; - } else { + } + else { gutterAnno = { - text: ["Looks good!"], + text: [nls("Looks good!")], className: "ace_ok" }; } editor.session.unfold(pos.row); editor.selection.moveToPosition(pos); - var w = { - row: pos.row, + row: pos.row, fixedWidth: true, coverGutter: true, el: dom.createElement("div"), @@ -20103,25 +20916,20 @@ exports.showErrorMarker = function(editor, dir) { var el = w.el.appendChild(dom.createElement("div")); var arrow = w.el.appendChild(dom.createElement("div")); arrow.className = "error_widget_arrow " + gutterAnno.className; - var left = editor.renderer.$cursorLayer .getPixelPosition(pos).left; arrow.style.left = left + editor.renderer.gutterWidth - 5 + "px"; - w.el.className = "error_widget_wrapper"; el.className = "error_widget " + gutterAnno.className; el.innerHTML = gutterAnno.text.join("
"); - el.appendChild(dom.createElement("div")); - - var kb = function(_, hashId, keyString) { + var kb = function (_, hashId, keyString) { if (hashId === 0 && (keyString === "esc" || keyString === "return")) { w.destroy(); - return {command: "null"}; + return { command: "null" }; } }; - - w.destroy = function() { + w.destroy = function () { if (editor.$mouseHandler.isMousePressed) return; editor.keyBinding.removeKeyboardHandler(kb); @@ -20131,66 +20939,28 @@ exports.showErrorMarker = function(editor, dir) { editor.off("mouseup", w.destroy); editor.off("change", w.destroy); }; - editor.keyBinding.addKeyboardHandler(kb); editor.on("changeSelection", w.destroy); editor.on("changeSession", w.destroy); editor.on("mouseup", w.destroy); editor.on("change", w.destroy); - editor.session.widgetManager.addLineWidget(w); - w.el.onmousedown = editor.focus.bind(editor); - - editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight}); + editor.renderer.scrollCursorIntoView(null, 0.5, { bottom: w.el.offsetHeight }); }; - - -dom.importCssString("\ - .error_widget_wrapper {\ - background: inherit;\ - color: inherit;\ - border:none\ - }\ - .error_widget {\ - border-top: solid 2px;\ - border-bottom: solid 2px;\ - margin: 5px 0;\ - padding: 10px 40px;\ - white-space: pre-wrap;\ - }\ - .error_widget.ace_error, .error_widget_arrow.ace_error{\ - border-color: #ff5a5a\ - }\ - .error_widget.ace_warning, .error_widget_arrow.ace_warning{\ - border-color: #F1D817\ - }\ - .error_widget.ace_info, .error_widget_arrow.ace_info{\ - border-color: #5a5a5a\ - }\ - .error_widget.ace_ok, .error_widget_arrow.ace_ok{\ - border-color: #5aaa5a\ - }\ - .error_widget_arrow {\ - position: absolute;\ - border: solid 5px;\ - border-top-color: transparent!important;\ - border-right-color: transparent!important;\ - border-left-color: transparent!important;\ - top: -5px;\ - }\ -", ""); +dom.importCssString("\n .error_widget_wrapper {\n background: inherit;\n color: inherit;\n border:none\n }\n .error_widget {\n border-top: solid 2px;\n border-bottom: solid 2px;\n margin: 5px 0;\n padding: 10px 40px;\n white-space: pre-wrap;\n }\n .error_widget.ace_error, .error_widget_arrow.ace_error{\n border-color: #ff5a5a\n }\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\n border-color: #F1D817\n }\n .error_widget.ace_info, .error_widget_arrow.ace_info{\n border-color: #5a5a5a\n }\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\n border-color: #5aaa5a\n }\n .error_widget_arrow {\n position: absolute;\n border: solid 5px;\n border-top-color: transparent!important;\n border-right-color: transparent!important;\n border-left-color: transparent!important;\n top: -5px;\n }\n", "error_marker.css", false); }); -define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"], function(require, exports, module) { +define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"], function(require, exports, module){/** + * The main class required to set up an Ace instance in the browser. + * + * @namespace Ace + **/ "use strict"; - -require("./lib/fixoldbrowsers"); - +require("./loader_build")(exports) var dom = require("./lib/dom"); -var event = require("./lib/event"); - +var Range = require("./range").Range; var Editor = require("./editor").Editor; var EditSession = require("./edit_session").EditSession; var UndoManager = require("./undomanager").UndoManager; @@ -20202,72 +20972,74 @@ require("./multi_select"); require("./mode/folding/fold_mode"); require("./theme/textmate"); require("./ext/error_marker"); - exports.config = require("./config"); -exports.require = require; - -if (typeof define === "function") - exports.define = define; -exports.edit = function(el) { +exports.edit = function (el, options) { if (typeof el == "string") { var _id = el; el = document.getElementById(_id); if (!el) throw new Error("ace.edit can't find div #" + _id); } - if (el && el.env && el.env.editor instanceof Editor) return el.env.editor; - var value = ""; if (el && /input|textarea/i.test(el.tagName)) { var oldNode = el; value = oldNode.value; el = dom.createElement("pre"); oldNode.parentNode.replaceChild(el, oldNode); - } else if (el) { - value = dom.getInnerText(el); + } + else if (el) { + value = el.textContent; el.innerHTML = ""; } - var doc = exports.createEditSession(value); - - var editor = new Editor(new Renderer(el)); - editor.setSession(doc); - + var editor = new Editor(new Renderer(el), doc, options); var env = { document: doc, editor: editor, onResize: editor.resize.bind(editor, null) }; - if (oldNode) env.textarea = oldNode; - event.addListener(window, "resize", env.onResize); - editor.on("destroy", function() { - event.removeListener(window, "resize", env.onResize); + if (oldNode) + env.textarea = oldNode; + editor.on("destroy", function () { env.editor.container.env = null; // prevent memory leak on old ie }); editor.container.env = editor.env = env; return editor; }; -exports.createEditSession = function(text, mode) { +exports.createEditSession = function (text, mode) { var doc = new EditSession(text, mode); doc.setUndoManager(new UndoManager()); return doc; }; +exports.Range = Range; +exports.Editor = Editor; exports.EditSession = EditSession; exports.UndoManager = UndoManager; -exports.version = "1.2.9"; -}); - (function() { +exports.VirtualRenderer = Renderer; +exports.version = exports.config.version; + +}); (function() { window.require(["ace/ace"], function(a) { if (a) { a.config.init(true); a.define = window.define; } - if (!window.ace) - window.ace = a; + var global = (function () { + return this; + })(); + if (!global && typeof window != "undefined") global = window; // can happen in strict mode + if (!global && typeof self != "undefined") global = self; // can happen in webworker + + if (!global.ace) + global.ace = a; for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; + global.ace[key] = a[key]; + global.ace["default"] = global.ace; + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = global.ace; + } }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-beautify.js b/vendor/assets/javascripts/ace/ext-beautify.js index 1b4d6e3d..0b73459b 100644 --- a/vendor/assets/javascripts/ace/ext-beautify.js +++ b/vendor/assets/javascripts/ace/ext-beautify.js @@ -1,334 +1,330 @@ -define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"], function(require, exports, module) { +define("ace/ext/beautify",["require","exports","module","ace/token_iterator"], function(require, exports, module){// [WIP] "use strict"; -var TokenIterator = require("ace/token_iterator").TokenIterator; -exports.newLines = [{ - type: 'support.php_tag', - value: '' -}, { - type: 'paren.lparen', - value: '{', - indent: true -}, { - type: 'paren.rparen', - breakBefore: true, - value: '}', - indent: false -}, { - type: 'paren.rparen', - breakBefore: true, - value: '})', - indent: false, - dontBreak: true -}, { - type: 'comment' -}, { - type: 'text', - value: ';' -}, { - type: 'text', - value: ':', - context: 'php' -}, { - type: 'keyword', - value: 'case', - indent: true, - dontBreak: true -}, { - type: 'keyword', - value: 'default', - indent: true, - dontBreak: true -}, { - type: 'keyword', - value: 'break', - indent: false, - dontBreak: true -}, { - type: 'punctuation.doctype.end', - value: '>' -}, { - type: 'meta.tag.punctuation.end', - value: '>' -}, { - type: 'meta.tag.punctuation.begin', - value: '<', - blockTag: true, - indent: true, - dontBreak: true -}, { - type: 'meta.tag.punctuation.begin', - value: '' ){ - context = 'php'; - } - else if( token.type == 'support.php_tag' && token.value == '?>' ){ - context = 'html'; - } - else if( token.type == 'meta.tag.name.style' && context != 'css' ){ - context = 'css'; - } - else if( token.type == 'meta.tag.name.style' && context == 'css' ){ - context = 'html'; - } - else if( token.type == 'meta.tag.name.script' && context != 'js' ){ - context = 'js'; - } - else if( token.type == 'meta.tag.name.script' && context == 'js' ){ - context = 'html'; - } - - nextToken = iterator.stepForward(); - if (nextToken && nextToken.type.indexOf('meta.tag.name') == 0) { - nextTag = nextToken.value; - } - if ( lastToken.type == 'support.php_tag' && lastToken.value == '' ) { - dontBreak = false; - } - lastTag = tag; - - lastToken = token; - - token = nextToken; - - if (token===null) { - break; - } - } - - return code; +var TokenIterator = require("../token_iterator").TokenIterator; +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +exports.singletonTags = ["area", "base", "br", "col", "command", "embed", "hr", "html", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"]; +exports.blockTags = ["article", "aside", "blockquote", "body", "div", "dl", "fieldset", "footer", "form", "head", "header", "html", "nav", "ol", "p", "script", "section", "style", "table", "tbody", "tfoot", "thead", "ul"]; +exports.formatOptions = { + lineBreaksAfterCommasInCurlyBlock: true }; - - - -}); - -define("ace/ext/beautify",["require","exports","module","ace/token_iterator","ace/ext/beautify/php_rules"], function(require, exports, module) { -"use strict"; -var TokenIterator = require("ace/token_iterator").TokenIterator; - -var phpTransform = require("./beautify/php_rules").transform; - -exports.beautify = function(session) { +exports.beautify = function (session) { var iterator = new TokenIterator(session, 0, 0); var token = iterator.getCurrentToken(); - - var context = session.$modeId.split("/").pop(); - - var code = phpTransform(iterator, context); + var tabString = session.getTabString(); + var singletonTags = exports.singletonTags; + var blockTags = exports.blockTags; + var formatOptions = exports.formatOptions || {}; + var nextToken; + var breakBefore = false; + var spaceBefore = false; + var spaceAfter = false; + var code = ""; + var value = ""; + var tagName = ""; + var depth = 0; + var lastDepth = 0; + var lastIndent = 0; + var indent = 0; + var unindent = 0; + var roundDepth = 0; + var curlyDepth = 0; + var row; + var curRow = 0; + var rowsToAdd = 0; + var rowTokens = []; + var abort = false; + var i; + var indentNextLine = false; + var inTag = false; + var inCSS = false; + var inBlock = false; + var levels = { 0: 0 }; + var parents = []; + var caseBody = false; + var trimNext = function () { + if (nextToken && nextToken.value && nextToken.type !== 'string.regexp') + nextToken.value = nextToken.value.replace(/^\s*/, ""); + }; + var trimLine = function () { + var end = code.length - 1; + while (true) { + if (end == 0) + break; + if (code[end] !== " ") + break; + end = end - 1; + } + code = code.slice(0, end + 1); + }; + var trimCode = function () { + code = code.trimRight(); + breakBefore = false; + }; + while (token !== null) { + curRow = iterator.getCurrentTokenRow(); + rowTokens = iterator.$rowTokens; + nextToken = iterator.stepForward(); + if (typeof token !== "undefined") { + value = token.value; + unindent = 0; + inCSS = (tagName === "style" || session.$modeId === "ace/mode/css"); + if (is(token, "tag-open")) { + inTag = true; + if (nextToken) + inBlock = (blockTags.indexOf(nextToken.value) !== -1); + if (value === " 0; rowsToAdd--) + code += "\n"; + breakBefore = true; + if (!is(token, "comment") && !token.type.match(/^(comment|string)$/)) + value = value.trimLeft(); + } + if (value) { + if (token.type === "keyword" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) { + parents[depth] = value; + trimNext(); + spaceAfter = true; + if (value.match(/^(else|elseif)$/)) { + if (code.match(/\}[\s]*$/)) { + trimCode(); + spaceBefore = true; + } + } + } + else if (token.type === "paren.lparen") { + trimNext(); + if (value.substr(-1) === "{") { + spaceAfter = true; + indentNextLine = false; + if (!inTag) + rowsToAdd = 1; + } + if (value.substr(0, 1) === "{") { + spaceBefore = true; + if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') { + trimCode(); + spaceBefore = false; + } + else if (code.trimRight().substr(-1) === ')') { + trimCode(); + } + else { + trimLine(); + } + } + } + else if (token.type === "paren.rparen") { + unindent = 1; + if (value.substr(0, 1) === "}") { + if (parents[depth - 1] === 'case') + unindent++; + if (code.trimRight().substr(-1) === '{') { + trimCode(); + } + else { + spaceBefore = true; + if (inCSS) + rowsToAdd += 2; + } + } + if (value.substr(0, 1) === "]") { + if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') { + spaceBefore = false; + indent++; + trimCode(); + } + } + if (value.substr(0, 1) === ")") { + if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') { + spaceBefore = false; + indent++; + trimCode(); + } + } + trimLine(); + } + else if ((token.type === "keyword.operator" || token.type === "keyword") && value.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)) { + trimCode(); + trimNext(); + spaceBefore = true; + spaceAfter = true; + } + else if (token.type === "punctuation.operator" && value === ';') { + trimCode(); + trimNext(); + spaceAfter = true; + if (inCSS) + rowsToAdd++; + } + else if (token.type === "punctuation.operator" && value.match(/^(:|,)$/)) { + trimCode(); + trimNext(); + if (value.match(/^(,)$/) && curlyDepth > 0 && roundDepth === 0 && formatOptions.lineBreaksAfterCommasInCurlyBlock) { + rowsToAdd++; + } + else { + spaceAfter = true; + breakBefore = false; + } + } + else if (token.type === "support.php_tag" && value === "?>" && !breakBefore) { + trimCode(); + spaceBefore = true; + } + else if (is(token, "attribute-name") && code.substr(-1).match(/^\s$/)) { + spaceBefore = true; + } + else if (is(token, "attribute-equals")) { + trimLine(); + trimNext(); + } + else if (is(token, "tag-close")) { + trimLine(); + if (value === "/>") + spaceBefore = true; + } + else if (token.type === "keyword" && value.match(/^(case|default)$/)) { + if (caseBody) + unindent = 1; + } + if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['"@]$/))) { + indent = lastIndent; + if (depth > lastDepth) { + indent++; + for (i = depth; i > lastDepth; i--) + levels[i] = indent; + } + else if (depth < lastDepth) + indent = levels[depth]; + lastDepth = depth; + lastIndent = indent; + if (unindent) + indent -= unindent; + if (indentNextLine && !roundDepth) { + indent++; + indentNextLine = false; + } + for (i = 0; i < indent; i++) + code += tabString; + } + if (token.type === "keyword" && value.match(/^(case|default)$/)) { + if (caseBody === false) { + parents[depth] = value; + depth++; + caseBody = true; + } + } + else if (token.type === "keyword" && value.match(/^(break)$/)) { + if (parents[depth - 1] && parents[depth - 1].match(/^(case|default)$/)) { + depth--; + caseBody = false; + } + } + if (token.type === "paren.lparen") { + roundDepth += (value.match(/\(/g) || []).length; + curlyDepth += (value.match(/\{/g) || []).length; + depth += value.length; + } + if (token.type === "keyword" && value.match(/^(if|else|elseif|for|while)$/)) { + indentNextLine = true; + roundDepth = 0; + } + else if (!roundDepth && value.trim() && token.type !== "comment") + indentNextLine = false; + if (token.type === "paren.rparen") { + roundDepth -= (value.match(/\)/g) || []).length; + curlyDepth -= (value.match(/\}/g) || []).length; + for (i = 0; i < value.length; i++) { + depth--; + if (value.substr(i, 1) === '}' && parents[depth] === 'case') { + depth--; + } + } + } + if (token.type == "text") + value = value.replace(/\s+$/, " "); + if (spaceBefore && !breakBefore) { + trimLine(); + if (code.substr(-1) !== "\n") + code += " "; + } + code += value; + if (spaceAfter) + code += " "; + breakBefore = false; + spaceBefore = false; + spaceAfter = false; + if ((is(token, "tag-close") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, "doctype") && value === ">")) { + if (inBlock && nextToken && nextToken.value === "") { + depth--; + } + } + if (is(token, "tag-name")) { + tagName = value; + } + row = curRow; + } + } + token = nextToken; + } + code = code.trim(); session.doc.setValue(code); }; - exports.commands = [{ - name: "beautify", - exec: function(editor) { - exports.beautify(editor.session); - }, - bindKey: "Ctrl-Shift-B" -}]; + name: "beautify", + description: "Format selection (Beautify)", + exec: function (editor) { + exports.beautify(editor.session); + }, + bindKey: "Ctrl-Shift-B" + }]; -}); - (function() { - window.require(["ace/ext/beautify"], function() {}); +}); (function() { + window.require(["ace/ext/beautify"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-chromevox.js b/vendor/assets/javascripts/ace/ext-chromevox.js deleted file mode 100644 index 53fb4073..00000000 --- a/vendor/assets/javascripts/ace/ext-chromevox.js +++ /dev/null @@ -1,540 +0,0 @@ -define("ace/ext/chromevox",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) { -var cvoxAce = {}; -cvoxAce.SpeechProperty; -cvoxAce.Cursor; -cvoxAce.Token; -cvoxAce.Annotation; -var CONSTANT_PROP = { - 'rate': 0.8, - 'pitch': 0.4, - 'volume': 0.9 -}; -var DEFAULT_PROP = { - 'rate': 1, - 'pitch': 0.5, - 'volume': 0.9 -}; -var ENTITY_PROP = { - 'rate': 0.8, - 'pitch': 0.8, - 'volume': 0.9 -}; -var KEYWORD_PROP = { - 'rate': 0.8, - 'pitch': 0.3, - 'volume': 0.9 -}; -var STORAGE_PROP = { - 'rate': 0.8, - 'pitch': 0.7, - 'volume': 0.9 -}; -var VARIABLE_PROP = { - 'rate': 0.8, - 'pitch': 0.8, - 'volume': 0.9 -}; -var DELETED_PROP = { - 'punctuationEcho': 'none', - 'relativePitch': -0.6 -}; -var ERROR_EARCON = 'ALERT_NONMODAL'; -var MODE_SWITCH_EARCON = 'ALERT_MODAL'; -var NO_MATCH_EARCON = 'INVALID_KEYPRESS'; -var INSERT_MODE_STATE = 'insertMode'; -var COMMAND_MODE_STATE = 'start'; - -var REPLACE_LIST = [ - { - substr: ';', - newSubstr: ' semicolon ' - }, - { - substr: ':', - newSubstr: ' colon ' - } -]; -var Command = { - SPEAK_ANNOT: 'annots', - SPEAK_ALL_ANNOTS: 'all_annots', - TOGGLE_LOCATION: 'toggle_location', - SPEAK_MODE: 'mode', - SPEAK_ROW_COL: 'row_col', - TOGGLE_DISPLACEMENT: 'toggle_displacement', - FOCUS_TEXT: 'focus_text' -}; -var KEY_PREFIX = 'CONTROL + SHIFT '; -cvoxAce.editor = null; -var lastCursor = null; -var annotTable = {}; -var shouldSpeakRowLocation = false; -var shouldSpeakDisplacement = false; -var changed = false; -var vimState = null; -var keyCodeToShortcutMap = {}; -var cmdToShortcutMap = {}; -var getKeyShortcutString = function(keyCode) { - return KEY_PREFIX + String.fromCharCode(keyCode); -}; -var isVimMode = function() { - var keyboardHandler = cvoxAce.editor.keyBinding.getKeyboardHandler(); - return keyboardHandler.$id === 'ace/keyboard/vim'; -}; -var getCurrentToken = function(cursor) { - return cvoxAce.editor.getSession().getTokenAt(cursor.row, cursor.column + 1); -}; -var getCurrentLine = function(cursor) { - return cvoxAce.editor.getSession().getLine(cursor.row); -}; -var onRowChange = function(currCursor) { - if (annotTable[currCursor.row]) { - cvox.Api.playEarcon(ERROR_EARCON); - } - if (shouldSpeakRowLocation) { - cvox.Api.stop(); - speakChar(currCursor); - speakTokenQueue(getCurrentToken(currCursor)); - speakLine(currCursor.row, 1); - } else { - speakLine(currCursor.row, 0); - } -}; -var isWord = function(cursor) { - var line = getCurrentLine(cursor); - var lineSuffix = line.substr(cursor.column - 1); - if (cursor.column === 0) { - lineSuffix = ' ' + line; - } - var firstWordRegExp = /^\W(\w+)/; - var words = firstWordRegExp.exec(lineSuffix); - return words !== null; -}; -var rules = { - 'constant': { - prop: CONSTANT_PROP - }, - 'entity': { - prop: ENTITY_PROP - }, - 'keyword': { - prop: KEYWORD_PROP - }, - 'storage': { - prop: STORAGE_PROP - }, - 'variable': { - prop: VARIABLE_PROP - }, - 'meta': { - prop: DEFAULT_PROP, - replace: [ - { - substr: '', - newSubstr: ' close tag ' - }, - { - substr: '<', - newSubstr: ' tag start ' - }, - { - substr: '>', - newSubstr: ' tag end ' - } - ] - } -}; -var DEFAULT_RULE = { - prop: DEFAULT_RULE -}; -var expand = function(value, replaceRules) { - var newValue = value; - for (var i = 0; i < replaceRules.length; i++) { - var replaceRule = replaceRules[i]; - var regexp = new RegExp(replaceRule.substr, 'g'); - newValue = newValue.replace(regexp, replaceRule.newSubstr); - } - return newValue; -}; -var mergeTokens = function(tokens, start, end) { - var newToken = {}; - newToken.value = ''; - newToken.type = tokens[start].type; - for (var j = start; j < end; j++) { - newToken.value += tokens[j].value; - } - return newToken; -}; -var mergeLikeTokens = function(tokens) { - if (tokens.length <= 1) { - return tokens; - } - var newTokens = []; - var lastLikeIndex = 0; - for (var i = 1; i < tokens.length; i++) { - var lastLikeToken = tokens[lastLikeIndex]; - var currToken = tokens[i]; - if (getTokenRule(lastLikeToken) !== getTokenRule(currToken)) { - newTokens.push(mergeTokens(tokens, lastLikeIndex, i)); - lastLikeIndex = i; - } - } - newTokens.push(mergeTokens(tokens, lastLikeIndex, tokens.length)); - return newTokens; -}; -var isRowWhiteSpace = function(row) { - var line = cvoxAce.editor.getSession().getLine(row); - var whiteSpaceRegexp = /^\s*$/; - return whiteSpaceRegexp.exec(line) !== null; -}; -var speakLine = function(row, queue) { - var tokens = cvoxAce.editor.getSession().getTokens(row); - if (tokens.length === 0 || isRowWhiteSpace(row)) { - cvox.Api.playEarcon('EDITABLE_TEXT'); - return; - } - tokens = mergeLikeTokens(tokens); - var firstToken = tokens[0]; - tokens = tokens.filter(function(token) { - return token !== firstToken; - }); - speakToken_(firstToken, queue); - tokens.forEach(speakTokenQueue); -}; -var speakTokenFlush = function(token) { - speakToken_(token, 0); -}; -var speakTokenQueue = function(token) { - speakToken_(token, 1); -}; -var getTokenRule = function(token) { - if (!token || !token.type) { - return; - } - var split = token.type.split('.'); - if (split.length === 0) { - return; - } - var type = split[0]; - var rule = rules[type]; - if (!rule) { - return DEFAULT_RULE; - } - return rule; -}; -var speakToken_ = function(token, queue) { - var rule = getTokenRule(token); - var value = expand(token.value, REPLACE_LIST); - if (rule.replace) { - value = expand(value, rule.replace); - } - cvox.Api.speak(value, queue, rule.prop); -}; -var speakChar = function(cursor) { - var line = getCurrentLine(cursor); - cvox.Api.speak(line[cursor.column], 1); -}; -var speakDisplacement = function(lastCursor, currCursor) { - var line = getCurrentLine(currCursor); - var displace = line.substring(lastCursor.column, currCursor.column); - displace = displace.replace(/ /g, ' space '); - cvox.Api.speak(displace); -}; -var speakCharOrWordOrLine = function(lastCursor, currCursor) { - if (Math.abs(lastCursor.column - currCursor.column) !== 1) { - var currLineLength = getCurrentLine(currCursor).length; - if (currCursor.column === 0 || currCursor.column === currLineLength) { - speakLine(currCursor.row, 0); - return; - } - if (isWord(currCursor)) { - cvox.Api.stop(); - speakTokenQueue(getCurrentToken(currCursor)); - return; - } - } - speakChar(currCursor); -}; -var onColumnChange = function(lastCursor, currCursor) { - if (!cvoxAce.editor.selection.isEmpty()) { - speakDisplacement(lastCursor, currCursor); - cvox.Api.speak('selected', 1); - } - else if (shouldSpeakDisplacement) { - speakDisplacement(lastCursor, currCursor); - } else { - speakCharOrWordOrLine(lastCursor, currCursor); - } -}; -var onCursorChange = function(evt) { - if (changed) { - changed = false; - return; - } - var currCursor = cvoxAce.editor.selection.getCursor(); - if (currCursor.row !== lastCursor.row) { - onRowChange(currCursor); - } else { - onColumnChange(lastCursor, currCursor); - } - lastCursor = currCursor; -}; -var onSelectionChange = function(evt) { - if (cvoxAce.editor.selection.isEmpty()) { - cvox.Api.speak('unselected'); - } -}; -var onChange = function(delta) { - switch (delta.action) { - case 'remove': - cvox.Api.speak(delta.text, 0, DELETED_PROP); - changed = true; - break; - case 'insert': - cvox.Api.speak(delta.text, 0); - changed = true; - break; - } -}; -var isNewAnnotation = function(annot) { - var row = annot.row; - var col = annot.column; - return !annotTable[row] || !annotTable[row][col]; -}; -var populateAnnotations = function(annotations) { - annotTable = {}; - for (var i = 0; i < annotations.length; i++) { - var annotation = annotations[i]; - var row = annotation.row; - var col = annotation.column; - if (!annotTable[row]) { - annotTable[row] = {}; - } - annotTable[row][col] = annotation; - } -}; -var onAnnotationChange = function(evt) { - var annotations = cvoxAce.editor.getSession().getAnnotations(); - var newAnnotations = annotations.filter(isNewAnnotation); - if (newAnnotations.length > 0) { - cvox.Api.playEarcon(ERROR_EARCON); - } - populateAnnotations(annotations); -}; -var speakAnnot = function(annot) { - var annotText = annot.type + ' ' + annot.text + ' on ' + - rowColToString(annot.row, annot.column); - annotText = annotText.replace(';', 'semicolon'); - cvox.Api.speak(annotText, 1); -}; -var speakAnnotsByRow = function(row) { - var annots = annotTable[row]; - for (var col in annots) { - speakAnnot(annots[col]); - } -}; -var rowColToString = function(row, col) { - return 'row ' + (row + 1) + ' column ' + (col + 1); -}; -var speakCurrRowAndCol = function() { - cvox.Api.speak(rowColToString(lastCursor.row, lastCursor.column)); -}; -var speakAllAnnots = function() { - for (var row in annotTable) { - speakAnnotsByRow(row); - } -}; -var speakMode = function() { - if (!isVimMode()) { - return; - } - switch (cvoxAce.editor.keyBinding.$data.state) { - case INSERT_MODE_STATE: - cvox.Api.speak('Insert mode'); - break; - case COMMAND_MODE_STATE: - cvox.Api.speak('Command mode'); - break; - } -}; -var toggleSpeakRowLocation = function() { - shouldSpeakRowLocation = !shouldSpeakRowLocation; - if (shouldSpeakRowLocation) { - cvox.Api.speak('Speak location on row change enabled.'); - } else { - cvox.Api.speak('Speak location on row change disabled.'); - } -}; -var toggleSpeakDisplacement = function() { - shouldSpeakDisplacement = !shouldSpeakDisplacement; - if (shouldSpeakDisplacement) { - cvox.Api.speak('Speak displacement on column changes.'); - } else { - cvox.Api.speak('Speak current character or word on column changes.'); - } -}; -var onKeyDown = function(evt) { - if (evt.ctrlKey && evt.shiftKey) { - var shortcut = keyCodeToShortcutMap[evt.keyCode]; - if (shortcut) { - shortcut.func(); - } - } -}; -var onChangeStatus = function(evt, editor) { - if (!isVimMode()) { - return; - } - var state = editor.keyBinding.$data.state; - if (state === vimState) { - return; - } - switch (state) { - case INSERT_MODE_STATE: - cvox.Api.playEarcon(MODE_SWITCH_EARCON); - cvox.Api.setKeyEcho(true); - break; - case COMMAND_MODE_STATE: - cvox.Api.playEarcon(MODE_SWITCH_EARCON); - cvox.Api.setKeyEcho(false); - break; - } - vimState = state; -}; -var contextMenuHandler = function(evt) { - var cmd = evt.detail['customCommand']; - var shortcut = cmdToShortcutMap[cmd]; - if (shortcut) { - shortcut.func(); - cvoxAce.editor.focus(); - } -}; -var initContextMenu = function() { - var ACTIONS = SHORTCUTS.map(function(shortcut) { - return { - desc: shortcut.desc + getKeyShortcutString(shortcut.keyCode), - cmd: shortcut.cmd - }; - }); - var body = document.querySelector('body'); - body.setAttribute('contextMenuActions', JSON.stringify(ACTIONS)); - body.addEventListener('ATCustomEvent', contextMenuHandler, true); -}; -var onFindSearchbox = function(evt) { - if (evt.match) { - speakLine(lastCursor.row, 0); - } else { - cvox.Api.playEarcon(NO_MATCH_EARCON); - } -}; -var focus = function() { - cvoxAce.editor.focus(); -}; -var SHORTCUTS = [ - { - keyCode: 49, - func: function() { - speakAnnotsByRow(lastCursor.row); - }, - cmd: Command.SPEAK_ANNOT, - desc: 'Speak annotations on line' - }, - { - keyCode: 50, - func: speakAllAnnots, - cmd: Command.SPEAK_ALL_ANNOTS, - desc: 'Speak all annotations' - }, - { - keyCode: 51, - func: speakMode, - cmd: Command.SPEAK_MODE, - desc: 'Speak Vim mode' - }, - { - keyCode: 52, - func: toggleSpeakRowLocation, - cmd: Command.TOGGLE_LOCATION, - desc: 'Toggle speak row location' - }, - { - keyCode: 53, - func: speakCurrRowAndCol, - cmd: Command.SPEAK_ROW_COL, - desc: 'Speak row and column' - }, - { - keyCode: 54, - func: toggleSpeakDisplacement, - cmd: Command.TOGGLE_DISPLACEMENT, - desc: 'Toggle speak displacement' - }, - { - keyCode: 55, - func: focus, - cmd: Command.FOCUS_TEXT, - desc: 'Focus text' - } -]; -var onFocus = function(_, editor) { - cvoxAce.editor = editor; - editor.getSession().selection.on('changeCursor', onCursorChange); - editor.getSession().selection.on('changeSelection', onSelectionChange); - editor.getSession().on('change', onChange); - editor.getSession().on('changeAnnotation', onAnnotationChange); - editor.on('changeStatus', onChangeStatus); - editor.on('findSearchBox', onFindSearchbox); - editor.container.addEventListener('keydown', onKeyDown); - - lastCursor = editor.selection.getCursor(); -}; -var init = function(editor) { - onFocus(null, editor); - SHORTCUTS.forEach(function(shortcut) { - keyCodeToShortcutMap[shortcut.keyCode] = shortcut; - cmdToShortcutMap[shortcut.cmd] = shortcut; - }); - - editor.on('focus', onFocus); - if (isVimMode()) { - cvox.Api.setKeyEcho(false); - } - initContextMenu(); -}; -function cvoxApiExists() { - return (typeof(cvox) !== 'undefined') && cvox && cvox.Api; -} -var tries = 0; -var MAX_TRIES = 15; -function watchForCvoxLoad(editor) { - if (cvoxApiExists()) { - init(editor); - } else { - tries++; - if (tries >= MAX_TRIES) { - return; - } - window.setTimeout(watchForCvoxLoad, 500, editor); - } -} - -var Editor = require('../editor').Editor; -require('../config').defineOptions(Editor.prototype, 'editor', { - enableChromevoxEnhancements: { - set: function(val) { - if (val) { - watchForCvoxLoad(this); - } - }, - value: true // turn it on by default or check for window.cvox - } -}); - -}); - (function() { - window.require(["ace/ext/chromevox"], function() {}); - })(); - \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-code_lens.js b/vendor/assets/javascripts/ace/ext-code_lens.js new file mode 100644 index 00000000..9501efd9 --- /dev/null +++ b/vendor/assets/javascripts/ace/ext-code_lens.js @@ -0,0 +1,202 @@ +define("ace/ext/code_lens",["require","exports","module","ace/line_widgets","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var LineWidgets = require("../line_widgets").LineWidgets; +var event = require("../lib/event"); +var lang = require("../lib/lang"); +var dom = require("../lib/dom"); +function clearLensElements(renderer) { + var textLayer = renderer.$textLayer; + var lensElements = textLayer.$lenses; + if (lensElements) + lensElements.forEach(function (el) { el.remove(); }); + textLayer.$lenses = null; +} +function renderWidgets(changes, renderer) { + var changed = changes & renderer.CHANGE_LINES + || changes & renderer.CHANGE_FULL + || changes & renderer.CHANGE_SCROLL + || changes & renderer.CHANGE_TEXT; + if (!changed) + return; + var session = renderer.session; + var lineWidgets = renderer.session.lineWidgets; + var textLayer = renderer.$textLayer; + var lensElements = textLayer.$lenses; + if (!lineWidgets) { + if (lensElements) + clearLensElements(renderer); + return; + } + var textCells = renderer.$textLayer.$lines.cells; + var config = renderer.layerConfig; + var padding = renderer.$padding; + if (!lensElements) + lensElements = textLayer.$lenses = []; + var index = 0; + for (var i = 0; i < textCells.length; i++) { + var row = textCells[i].row; + var widget = lineWidgets[row]; + var lenses = widget && widget.lenses; + if (!lenses || !lenses.length) + continue; + var lensContainer = lensElements[index]; + if (!lensContainer) { + lensContainer = lensElements[index] + = dom.buildDom(["div", { class: "ace_codeLens" }], renderer.container); + } + lensContainer.style.height = config.lineHeight + "px"; + index++; + for (var j = 0; j < lenses.length; j++) { + var el = lensContainer.childNodes[2 * j]; + if (!el) { + if (j != 0) + lensContainer.appendChild(dom.createTextNode("\xa0|\xa0")); + el = dom.buildDom(["a"], lensContainer); + } + el.textContent = lenses[j].title; + el.lensCommand = lenses[j]; + } + while (lensContainer.childNodes.length > 2 * j - 1) + lensContainer.lastChild.remove(); + var top = renderer.$cursorLayer.getPixelPosition({ + row: row, + column: 0 + }, true).top - config.lineHeight * widget.rowsAbove - config.offset; + lensContainer.style.top = top + "px"; + var left = renderer.gutterWidth; + var indent = session.getLine(row).search(/\S|$/); + if (indent == -1) + indent = 0; + left += indent * config.characterWidth; + lensContainer.style.paddingLeft = padding + left + "px"; + } + while (index < lensElements.length) + lensElements.pop().remove(); +} +function clearCodeLensWidgets(session) { + if (!session.lineWidgets) + return; + var widgetManager = session.widgetManager; + session.lineWidgets.forEach(function (widget) { + if (widget && widget.lenses) + widgetManager.removeLineWidget(widget); + }); +} +exports.setLenses = function (session, lenses) { + var firstRow = Number.MAX_VALUE; + clearCodeLensWidgets(session); + lenses && lenses.forEach(function (lens) { + var row = lens.start.row; + var column = lens.start.column; + var widget = session.lineWidgets && session.lineWidgets[row]; + if (!widget || !widget.lenses) { + widget = session.widgetManager.$registerLineWidget({ + rowCount: 1, + rowsAbove: 1, + row: row, + column: column, + lenses: [] + }); + } + widget.lenses.push(lens.command); + if (row < firstRow) + firstRow = row; + }); + session._emit("changeFold", { data: { start: { row: firstRow } } }); + return firstRow; +}; +function attachToEditor(editor) { + editor.codeLensProviders = []; + editor.renderer.on("afterRender", renderWidgets); + if (!editor.$codeLensClickHandler) { + editor.$codeLensClickHandler = function (e) { + var command = e.target.lensCommand; + if (!command) + return; + editor.execCommand(command.id, command.arguments); + editor._emit("codeLensClick", e); + }; + event.addListener(editor.container, "click", editor.$codeLensClickHandler, editor); + } + editor.$updateLenses = function () { + var session = editor.session; + if (!session) + return; + if (!session.widgetManager) { + session.widgetManager = new LineWidgets(session); + session.widgetManager.attach(editor); + } + var providersToWaitNum = editor.codeLensProviders.length; + var lenses = []; + editor.codeLensProviders.forEach(function (provider) { + provider.provideCodeLenses(session, function (err, payload) { + if (err) + return; + payload.forEach(function (lens) { + lenses.push(lens); + }); + providersToWaitNum--; + if (providersToWaitNum == 0) { + applyLenses(); + } + }); + }); + function applyLenses() { + var cursor = session.selection.cursor; + var oldRow = session.documentToScreenRow(cursor); + var scrollTop = session.getScrollTop(); + var firstRow = exports.setLenses(session, lenses); + var lastDelta = session.$undoManager && session.$undoManager.$lastDelta; + if (lastDelta && lastDelta.action == "remove" && lastDelta.lines.length > 1) + return; + var row = session.documentToScreenRow(cursor); + var lineHeight = editor.renderer.layerConfig.lineHeight; + var top = session.getScrollTop() + (row - oldRow) * lineHeight; + if (firstRow == 0 && scrollTop < lineHeight / 4 && scrollTop > -lineHeight / 4) { + top = -lineHeight; + } + session.setScrollTop(top); + } + }; + var updateLenses = lang.delayedCall(editor.$updateLenses); + editor.$updateLensesOnInput = function () { + updateLenses.delay(250); + }; + editor.on("input", editor.$updateLensesOnInput); +} +function detachFromEditor(editor) { + editor.off("input", editor.$updateLensesOnInput); + editor.renderer.off("afterRender", renderWidgets); + if (editor.$codeLensClickHandler) + editor.container.removeEventListener("click", editor.$codeLensClickHandler); +} +exports.registerCodeLensProvider = function (editor, codeLensProvider) { + editor.setOption("enableCodeLens", true); + editor.codeLensProviders.push(codeLensProvider); + editor.$updateLensesOnInput(); +}; +exports.clear = function (session) { + exports.setLenses(session, null); +}; +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + enableCodeLens: { + set: function (val) { + if (val) { + attachToEditor(this); + } + else { + detachFromEditor(this); + } + } + } +}); +dom.importCssString("\n.ace_codeLens {\n position: absolute;\n color: #aaa;\n font-size: 88%;\n background: inherit;\n width: 100%;\n display: flex;\n align-items: flex-end;\n pointer-events: none;\n}\n.ace_codeLens > a {\n cursor: pointer;\n pointer-events: auto;\n}\n.ace_codeLens > a:hover {\n color: #0000ff;\n text-decoration: underline;\n}\n.ace_dark > .ace_codeLens > a:hover {\n color: #4e94ce;\n}\n", "codelense.css", false); + +}); (function() { + window.require(["ace/ext/code_lens"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-command_bar.js b/vendor/assets/javascripts/ace/ext-command_bar.js new file mode 100644 index 00000000..ccfa22e9 --- /dev/null +++ b/vendor/assets/javascripts/ace/ext-command_bar.js @@ -0,0 +1,459 @@ +define("ace/ext/command_bar",["require","exports","module","ace/tooltip","ace/lib/event_emitter","ace/lib/lang","ace/lib/dom","ace/lib/oop","ace/lib/useragent"], function(require, exports, module){var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var Tooltip = require("../tooltip").Tooltip; +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var lang = require("../lib/lang"); +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var useragent = require("../lib/useragent"); +var BUTTON_CLASS_NAME = 'command_bar_tooltip_button'; +var VALUE_CLASS_NAME = 'command_bar_button_value'; +var CAPTION_CLASS_NAME = 'command_bar_button_caption'; +var KEYBINDING_CLASS_NAME = 'command_bar_keybinding'; +var TOOLTIP_CLASS_NAME = 'command_bar_tooltip'; +var MORE_OPTIONS_BUTTON_ID = 'MoreOptionsButton'; +var defaultDelay = 100; +var defaultMaxElements = 4; +var minPosition = function (posA, posB) { + if (posB.row > posA.row) { + return posA; + } + else if (posB.row === posA.row && posB.column > posA.column) { + return posA; + } + return posB; +}; +var keyDisplayMap = { + "Ctrl": { mac: "^" }, + "Option": { mac: "⌥" }, + "Command": { mac: "⌘" }, + "Cmd": { mac: "⌘" }, + "Shift": "⇧", + "Left": "←", + "Right": "→", + "Up": "↑", + "Down": "↓" +}; +var CommandBarTooltip = /** @class */ (function () { + function CommandBarTooltip(parentNode, options) { + var e_1, _a; + options = options || {}; + this.parentNode = parentNode; + this.tooltip = new Tooltip(this.parentNode); + this.moreOptions = new Tooltip(this.parentNode); + this.maxElementsOnTooltip = options.maxElementsOnTooltip || defaultMaxElements; + this.$alwaysShow = options.alwaysShow || false; + this.eventListeners = {}; + this.elements = {}; + this.commands = {}; + this.tooltipEl = dom.buildDom(['div', { class: TOOLTIP_CLASS_NAME }], this.tooltip.getElement()); + this.moreOptionsEl = dom.buildDom(['div', { class: TOOLTIP_CLASS_NAME + " tooltip_more_options" }], this.moreOptions.getElement()); + this.$showTooltipTimer = lang.delayedCall(this.$showTooltip.bind(this), options.showDelay || defaultDelay); + this.$hideTooltipTimer = lang.delayedCall(this.$hideTooltip.bind(this), options.hideDelay || defaultDelay); + this.$tooltipEnter = this.$tooltipEnter.bind(this); + this.$onMouseMove = this.$onMouseMove.bind(this); + this.$onChangeScroll = this.$onChangeScroll.bind(this); + this.$onEditorChangeSession = this.$onEditorChangeSession.bind(this); + this.$scheduleTooltipForHide = this.$scheduleTooltipForHide.bind(this); + this.$preventMouseEvent = this.$preventMouseEvent.bind(this); + try { + for (var _b = __values(["mousedown", "mouseup", "click"]), _c = _b.next(); !_c.done; _c = _b.next()) { + var event = _c.value; + this.tooltip.getElement().addEventListener(event, this.$preventMouseEvent); + this.moreOptions.getElement().addEventListener(event, this.$preventMouseEvent); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + } + CommandBarTooltip.prototype.registerCommand = function (id, command) { + var registerForMainTooltip = Object.keys(this.commands).length < this.maxElementsOnTooltip; + if (!registerForMainTooltip && !this.elements[MORE_OPTIONS_BUTTON_ID]) { + this.$createCommand(MORE_OPTIONS_BUTTON_ID, { + name: "···", + exec: + function () { + this.$shouldHideMoreOptions = false; + this.$setMoreOptionsVisibility(!this.isMoreOptionsShown()); + }.bind(this), + type: "checkbox", + getValue: function () { + return this.isMoreOptionsShown(); + }.bind(this), + enabled: true + }, true); + } + this.$createCommand(id, command, registerForMainTooltip); + if (this.isShown()) { + this.updatePosition(); + } + }; + CommandBarTooltip.prototype.isShown = function () { + return !!this.tooltip && this.tooltip.isOpen; + }; + CommandBarTooltip.prototype.isMoreOptionsShown = function () { + return !!this.moreOptions && this.moreOptions.isOpen; + }; + CommandBarTooltip.prototype.getAlwaysShow = function () { + return this.$alwaysShow; + }; + CommandBarTooltip.prototype.setAlwaysShow = function (alwaysShow) { + this.$alwaysShow = alwaysShow; + this.$updateOnHoverHandlers(!this.$alwaysShow); + this._signal("alwaysShow", this.$alwaysShow); + }; + CommandBarTooltip.prototype.attach = function (editor) { + if (!editor || (this.isShown() && this.editor === editor)) { + return; + } + this.detach(); + this.editor = editor; + this.editor.on("changeSession", this.$onEditorChangeSession); + if (this.editor.session) { + this.editor.session.on("changeScrollLeft", this.$onChangeScroll); + this.editor.session.on("changeScrollTop", this.$onChangeScroll); + } + if (this.getAlwaysShow()) { + this.$showTooltip(); + } + else { + this.$updateOnHoverHandlers(true); + } + }; + CommandBarTooltip.prototype.updatePosition = function () { + if (!this.editor) { + return; + } + var renderer = this.editor.renderer; + var ranges; + if (this.editor.selection.getAllRanges) { + ranges = this.editor.selection.getAllRanges(); + } + else { + ranges = [this.editor.getSelectionRange()]; + } + if (!ranges.length) { + return; + } + var minPos = minPosition(ranges[0].start, ranges[0].end); + for (var i = 0, range; range = ranges[i]; i++) { + minPos = minPosition(minPos, minPosition(range.start, range.end)); + } + var pos = renderer.$cursorLayer.getPixelPosition(minPos, true); + var tooltipEl = this.tooltip.getElement(); + var screenWidth = window.innerWidth; + var screenHeight = window.innerHeight; + var rect = this.editor.container.getBoundingClientRect(); + pos.top += rect.top - renderer.layerConfig.offset; + pos.left += rect.left + renderer.gutterWidth - renderer.scrollLeft; + var cursorVisible = pos.top >= rect.top && pos.top <= rect.bottom && + pos.left >= rect.left + renderer.gutterWidth && pos.left <= rect.right; + if (!cursorVisible && this.isShown()) { + this.$hideTooltip(); + return; + } + else if (cursorVisible && !this.isShown() && this.getAlwaysShow()) { + this.$showTooltip(); + return; + } + var top = pos.top - tooltipEl.offsetHeight; + var left = Math.min(screenWidth - tooltipEl.offsetWidth, pos.left); + var tooltipFits = top >= 0 && top + tooltipEl.offsetHeight <= screenHeight && + left >= 0 && left + tooltipEl.offsetWidth <= screenWidth; + if (!tooltipFits) { + this.$hideTooltip(); + return; + } + this.tooltip.setPosition(left, top); + if (this.isMoreOptionsShown()) { + top = top + tooltipEl.offsetHeight; + left = this.elements[MORE_OPTIONS_BUTTON_ID].getBoundingClientRect().left; + var moreOptionsEl = this.moreOptions.getElement(); + var screenHeight = window.innerHeight; + if (top + moreOptionsEl.offsetHeight > screenHeight) { + top -= tooltipEl.offsetHeight + moreOptionsEl.offsetHeight; + } + if (left + moreOptionsEl.offsetWidth > screenWidth) { + left = screenWidth - moreOptionsEl.offsetWidth; + } + this.moreOptions.setPosition(left, top); + } + }; + CommandBarTooltip.prototype.update = function () { + Object.keys(this.elements).forEach(this.$updateElement.bind(this)); + }; + CommandBarTooltip.prototype.detach = function () { + this.tooltip.hide(); + this.moreOptions.hide(); + this.$updateOnHoverHandlers(false); + if (this.editor) { + this.editor.off("changeSession", this.$onEditorChangeSession); + if (this.editor.session) { + this.editor.session.off("changeScrollLeft", this.$onChangeScroll); + this.editor.session.off("changeScrollTop", this.$onChangeScroll); + } + } + this.$mouseInTooltip = false; + this.editor = null; + }; + CommandBarTooltip.prototype.destroy = function () { + if (this.tooltip && this.moreOptions) { + this.detach(); + this.tooltip.destroy(); + this.moreOptions.destroy(); + } + this.eventListeners = {}; + this.commands = {}; + this.elements = {}; + this.tooltip = this.moreOptions = this.parentNode = null; + }; + CommandBarTooltip.prototype.$createCommand = function (id, command, forMainTooltip) { + var parentEl = forMainTooltip ? this.tooltipEl : this.moreOptionsEl; + var keyParts = []; + var bindKey = command.bindKey; + if (bindKey) { + if (typeof bindKey === 'object') { + bindKey = useragent.isMac ? bindKey.mac : bindKey.win; + } + bindKey = bindKey.split("|")[0]; + keyParts = bindKey.split("-"); + keyParts = keyParts.map(function (key) { + if (keyDisplayMap[key]) { + if (typeof keyDisplayMap[key] === 'string') { + return keyDisplayMap[key]; + } + else if (useragent.isMac && keyDisplayMap[key].mac) { + return keyDisplayMap[key].mac; + } + } + return key; + }); + } + var buttonNode; + if (forMainTooltip && command.iconCssClass) { + buttonNode = [ + 'div', + { + class: ["ace_icon_svg", command.iconCssClass].join(" "), + "aria-label": command.name + " (" + command.bindKey + ")" + } + ]; + } + else { + buttonNode = [ + ['div', { class: VALUE_CLASS_NAME }], + ['div', { class: CAPTION_CLASS_NAME }, command.name] + ]; + if (keyParts.length) { + buttonNode.push([ + 'div', + { class: KEYBINDING_CLASS_NAME }, + keyParts.map(function (keyPart) { + return ['div', keyPart]; + }) + ]); + } + } + dom.buildDom(['div', { class: [BUTTON_CLASS_NAME, command.cssClass || ""].join(" "), ref: id }, buttonNode], parentEl, this.elements); + this.commands[id] = command; + var eventListener = + function (e) { + if (this.editor) { + this.editor.focus(); + } + this.$shouldHideMoreOptions = this.isMoreOptionsShown(); + if (!this.elements[id].disabled && command.exec) { + command.exec(this.editor); + } + if (this.$shouldHideMoreOptions) { + this.$setMoreOptionsVisibility(false); + } + this.update(); + e.preventDefault(); + }.bind(this); + this.eventListeners[id] = eventListener; + this.elements[id].addEventListener('click', eventListener.bind(this)); + this.$updateElement(id); + }; + CommandBarTooltip.prototype.$setMoreOptionsVisibility = function (visible) { + if (visible) { + this.moreOptions.setTheme(this.editor.renderer.theme); + this.moreOptions.setClassName(TOOLTIP_CLASS_NAME + "_wrapper"); + this.moreOptions.show(); + this.update(); + this.updatePosition(); + } + else { + this.moreOptions.hide(); + } + }; + CommandBarTooltip.prototype.$onEditorChangeSession = function (e) { + if (e.oldSession) { + e.oldSession.off("changeScrollTop", this.$onChangeScroll); + e.oldSession.off("changeScrollLeft", this.$onChangeScroll); + } + this.detach(); + }; + CommandBarTooltip.prototype.$onChangeScroll = function () { + if (this.editor.renderer && (this.isShown() || this.getAlwaysShow())) { + this.editor.renderer.once("afterRender", this.updatePosition.bind(this)); + } + }; + CommandBarTooltip.prototype.$onMouseMove = function (e) { + if (this.$mouseInTooltip) { + return; + } + var cursorPosition = this.editor.getCursorPosition(); + var cursorScreenPosition = this.editor.renderer.textToScreenCoordinates(cursorPosition.row, cursorPosition.column); + var lineHeight = this.editor.renderer.lineHeight; + var isInCurrentLine = e.clientY >= cursorScreenPosition.pageY && e.clientY < cursorScreenPosition.pageY + lineHeight; + if (isInCurrentLine) { + if (!this.isShown() && !this.$showTooltipTimer.isPending()) { + this.$showTooltipTimer.delay(); + } + if (this.$hideTooltipTimer.isPending()) { + this.$hideTooltipTimer.cancel(); + } + } + else { + if (this.isShown() && !this.$hideTooltipTimer.isPending()) { + this.$hideTooltipTimer.delay(); + } + if (this.$showTooltipTimer.isPending()) { + this.$showTooltipTimer.cancel(); + } + } + }; + CommandBarTooltip.prototype.$preventMouseEvent = function (e) { + if (this.editor) { + this.editor.focus(); + } + e.preventDefault(); + }; + CommandBarTooltip.prototype.$scheduleTooltipForHide = function () { + this.$mouseInTooltip = false; + this.$showTooltipTimer.cancel(); + this.$hideTooltipTimer.delay(); + }; + CommandBarTooltip.prototype.$tooltipEnter = function () { + this.$mouseInTooltip = true; + if (this.$showTooltipTimer.isPending()) { + this.$showTooltipTimer.cancel(); + } + if (this.$hideTooltipTimer.isPending()) { + this.$hideTooltipTimer.cancel(); + } + }; + CommandBarTooltip.prototype.$updateOnHoverHandlers = function (enableHover) { + var tooltipEl = this.tooltip.getElement(); + var moreOptionsEl = this.moreOptions.getElement(); + if (enableHover) { + if (this.editor) { + this.editor.on("mousemove", this.$onMouseMove); + this.editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.$scheduleTooltipForHide, true); + } + tooltipEl.addEventListener('mouseenter', this.$tooltipEnter); + tooltipEl.addEventListener('mouseleave', this.$scheduleTooltipForHide); + moreOptionsEl.addEventListener('mouseenter', this.$tooltipEnter); + moreOptionsEl.addEventListener('mouseleave', this.$scheduleTooltipForHide); + } + else { + if (this.editor) { + this.editor.off("mousemove", this.$onMouseMove); + this.editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.$scheduleTooltipForHide, true); + } + tooltipEl.removeEventListener('mouseenter', this.$tooltipEnter); + tooltipEl.removeEventListener('mouseleave', this.$scheduleTooltipForHide); + moreOptionsEl.removeEventListener('mouseenter', this.$tooltipEnter); + moreOptionsEl.removeEventListener('mouseleave', this.$scheduleTooltipForHide); + } + }; + CommandBarTooltip.prototype.$showTooltip = function () { + if (this.isShown()) { + return; + } + this.tooltip.setTheme(this.editor.renderer.theme); + this.tooltip.setClassName(TOOLTIP_CLASS_NAME + "_wrapper"); + this.tooltip.show(); + this.update(); + this.updatePosition(); + this._signal("show"); + }; + CommandBarTooltip.prototype.$hideTooltip = function () { + this.$mouseInTooltip = false; + if (!this.isShown()) { + return; + } + this.moreOptions.hide(); + this.tooltip.hide(); + this._signal("hide"); + }; + CommandBarTooltip.prototype.$updateElement = function (id) { + var command = this.commands[id]; + if (!command) { + return; + } + var el = this.elements[id]; + var commandEnabled = command.enabled; + if (typeof commandEnabled === 'function') { + commandEnabled = commandEnabled(this.editor); + } + if (typeof command.getValue === 'function') { + var value = command.getValue(this.editor); + if (command.type === 'text') { + el.textContent = value; + } + else if (command.type === 'checkbox') { + var domCssFn = value ? dom.addCssClass : dom.removeCssClass; + var isOnTooltip = el.parentElement === this.tooltipEl; + el.ariaChecked = value; + if (isOnTooltip) { + domCssFn(el, "ace_selected"); + } + else { + el = el.querySelector("." + VALUE_CLASS_NAME); + domCssFn(el, "ace_checkmark"); + } + } + } + if (commandEnabled && el.disabled) { + dom.removeCssClass(el, "ace_disabled"); + el.ariaDisabled = el.disabled = false; + el.removeAttribute("disabled"); + } + else if (!commandEnabled && !el.disabled) { + dom.addCssClass(el, "ace_disabled"); + el.ariaDisabled = el.disabled = true; + el.setAttribute("disabled", ""); + } + }; + return CommandBarTooltip; +}()); +oop.implement(CommandBarTooltip.prototype, EventEmitter); +dom.importCssString("\n.ace_tooltip.".concat(TOOLTIP_CLASS_NAME, "_wrapper {\n padding: 0;\n}\n\n.ace_tooltip .").concat(TOOLTIP_CLASS_NAME, " {\n padding: 1px 5px;\n display: flex;\n pointer-events: auto;\n}\n\n.ace_tooltip .").concat(TOOLTIP_CLASS_NAME, ".tooltip_more_options {\n padding: 1px;\n flex-direction: column;\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, " {\n display: inline-flex;\n cursor: pointer;\n margin: 1px;\n border-radius: 2px;\n padding: 2px 5px;\n align-items: center;\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, ".ace_selected,\ndiv.").concat(BUTTON_CLASS_NAME, ":hover:not(.ace_disabled) {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, ".ace_disabled {\n color: #777;\n pointer-events: none;\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, " .ace_icon_svg {\n height: 12px;\n background-color: #000;\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, ".ace_disabled .ace_icon_svg {\n background-color: #777;\n}\n\n.").concat(TOOLTIP_CLASS_NAME, ".tooltip_more_options .").concat(BUTTON_CLASS_NAME, " {\n display: flex;\n}\n\n.").concat(TOOLTIP_CLASS_NAME, ".").concat(VALUE_CLASS_NAME, " {\n display: none;\n}\n\n.").concat(TOOLTIP_CLASS_NAME, ".tooltip_more_options .").concat(VALUE_CLASS_NAME, " {\n display: inline-block;\n width: 12px;\n}\n\n.").concat(CAPTION_CLASS_NAME, " {\n display: inline-block;\n}\n\n.").concat(KEYBINDING_CLASS_NAME, " {\n margin: 0 2px;\n display: inline-block;\n font-size: 8px;\n}\n\n.").concat(TOOLTIP_CLASS_NAME, ".tooltip_more_options .").concat(KEYBINDING_CLASS_NAME, " {\n margin-left: auto;\n}\n\n.").concat(KEYBINDING_CLASS_NAME, " div {\n display: inline-block;\n min-width: 8px;\n padding: 2px;\n margin: 0 1px;\n border-radius: 2px;\n background-color: #ccc;\n text-align: center;\n}\n\n.ace_dark.ace_tooltip .").concat(TOOLTIP_CLASS_NAME, " {\n background-color: #373737;\n color: #eee;\n}\n\n.ace_dark div.").concat(BUTTON_CLASS_NAME, ".ace_disabled {\n color: #979797;\n}\n\n.ace_dark div.").concat(BUTTON_CLASS_NAME, ".ace_selected,\n.ace_dark div.").concat(BUTTON_CLASS_NAME, ":hover:not(.ace_disabled) {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.ace_dark div.").concat(BUTTON_CLASS_NAME, " .ace_icon_svg {\n background-color: #eee;\n}\n\n.ace_dark div.").concat(BUTTON_CLASS_NAME, ".ace_disabled .ace_icon_svg {\n background-color: #979797;\n}\n\n.ace_dark .").concat(BUTTON_CLASS_NAME, ".ace_disabled {\n color: #979797;\n}\n\n.ace_dark .").concat(KEYBINDING_CLASS_NAME, " div {\n background-color: #575757;\n}\n\n.ace_checkmark::before {\n content: '\u2713';\n}\n"), "commandbar.css", false); +exports.CommandBarTooltip = CommandBarTooltip; +exports.TOOLTIP_CLASS_NAME = TOOLTIP_CLASS_NAME; +exports.BUTTON_CLASS_NAME = BUTTON_CLASS_NAME; + +}); (function() { + window.require(["ace/ext/command_bar"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js b/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js index 56c67b7b..428f2cbd 100644 --- a/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +++ b/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js @@ -1,44 +1,37 @@ -define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; - -var ElasticTabstopsLite = function(editor) { - this.$editor = editor; - var self = this; - var changedRows = []; - var recordChanges = false; - this.onAfterExec = function() { - recordChanges = false; - self.processRows(changedRows); - changedRows = []; - }; - this.onExec = function() { - recordChanges = true; - }; - this.onChange = function(delta) { - if (recordChanges) { - if (changedRows.indexOf(delta.start.row) == -1) - changedRows.push(delta.start.row); - if (delta.end.row != delta.start.row) - changedRows.push(delta.end.row); - } - }; -}; - -(function() { - this.processRows = function(rows) { +define("ace/ext/elastic_tabstops_lite",["require","exports","module","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var ElasticTabstopsLite = /** @class */ (function () { + function ElasticTabstopsLite(editor) { + this.$editor = editor; + var self = this; + var changedRows = []; + var recordChanges = false; + this.onAfterExec = function () { + recordChanges = false; + self.processRows(changedRows); + changedRows = []; + }; + this.onExec = function () { + recordChanges = true; + }; + this.onChange = function (delta) { + if (recordChanges) { + if (changedRows.indexOf(delta.start.row) == -1) + changedRows.push(delta.start.row); + if (delta.end.row != delta.start.row) + changedRows.push(delta.end.row); + } + }; + } + ElasticTabstopsLite.prototype.processRows = function (rows) { this.$inChange = true; var checkedRows = []; - for (var r = 0, rowCount = rows.length; r < rowCount; r++) { var row = rows[r]; - if (checkedRows.indexOf(row) > -1) continue; - var cellWidthObj = this.$findCellWidthsForBlock(row); var cellWidths = this.$setBlockCellWidthsToMax(cellWidthObj.cellWidths); var rowIndex = cellWidthObj.firstRow; - for (var w = 0, l = cellWidths.length; w < l; w++) { var widths = cellWidths[w]; checkedRows.push(rowIndex); @@ -48,68 +41,53 @@ var ElasticTabstopsLite = function(editor) { } this.$inChange = false; }; - - this.$findCellWidthsForBlock = function(row) { + ElasticTabstopsLite.prototype.$findCellWidthsForBlock = function (row) { var cellWidths = [], widths; var rowIter = row; while (rowIter >= 0) { widths = this.$cellWidthsForRow(rowIter); if (widths.length == 0) break; - cellWidths.unshift(widths); rowIter--; } var firstRow = rowIter + 1; rowIter = row; var numRows = this.$editor.session.getLength(); - while (rowIter < numRows - 1) { rowIter++; - widths = this.$cellWidthsForRow(rowIter); if (widths.length == 0) break; - cellWidths.push(widths); } - return { cellWidths: cellWidths, firstRow: firstRow }; }; - - this.$cellWidthsForRow = function(row) { + ElasticTabstopsLite.prototype.$cellWidthsForRow = function (row) { var selectionColumns = this.$selectionColumnsForRow(row); - var tabs = [-1].concat(this.$tabsForRow(row)); - var widths = tabs.map(function(el) { return 0; } ).slice(1); + var widths = tabs.map(function (el) { return 0; }).slice(1); var line = this.$editor.session.getLine(row); - for (var i = 0, len = tabs.length - 1; i < len; i++) { - var leftEdge = tabs[i]+1; - var rightEdge = tabs[i+1]; - + var leftEdge = tabs[i] + 1; + var rightEdge = tabs[i + 1]; var rightmostSelection = this.$rightmostSelectionInCell(selectionColumns, rightEdge); var cell = line.substring(leftEdge, rightEdge); - widths[i] = Math.max(cell.replace(/\s+$/g,'').length, rightmostSelection - leftEdge); + widths[i] = Math.max(cell.replace(/\s+$/g, '').length, rightmostSelection - leftEdge); } - return widths; }; - - this.$selectionColumnsForRow = function(row) { + ElasticTabstopsLite.prototype.$selectionColumnsForRow = function (row) { var selections = [], cursor = this.$editor.getCursorPosition(); if (this.$editor.session.getSelection().isEmpty()) { if (row == cursor.row) selections.push(cursor.column); } - return selections; }; - - this.$setBlockCellWidthsToMax = function(cellWidths) { + ElasticTabstopsLite.prototype.$setBlockCellWidthsToMax = function (cellWidths) { var startingNewBlock = true, blockStartRow, blockEndRow, maxWidth; var columnInfo = this.$izip_longest(cellWidths); - for (var c = 0, l = columnInfo.length; c < l; c++) { var column = columnInfo[c]; if (!column.push) { @@ -117,7 +95,6 @@ var ElasticTabstopsLite = function(editor) { continue; } column.push(NaN); - for (var r = 0, s = column.length; r < s; r++) { var width = column[r]; if (startingNewBlock) { @@ -127,23 +104,18 @@ var ElasticTabstopsLite = function(editor) { } if (isNaN(width)) { blockEndRow = r; - for (var j = blockStartRow; j < blockEndRow; j++) { cellWidths[j][c] = maxWidth; } startingNewBlock = true; } - maxWidth = Math.max(maxWidth, width); } } - return cellWidths; }; - - this.$rightmostSelectionInCell = function(selectionColumns, cellRightEdge) { + ElasticTabstopsLite.prototype.$rightmostSelectionInCell = function (selectionColumns, cellRightEdge) { var rightmost = 0; - if (selectionColumns.length) { var lengths = []; for (var s = 0, length = selectionColumns.length; s < length; s++) { @@ -154,70 +126,53 @@ var ElasticTabstopsLite = function(editor) { } rightmost = Math.max.apply(Math, lengths); } - return rightmost; }; - - this.$tabsForRow = function(row) { - var rowTabs = [], line = this.$editor.session.getLine(row), - re = /\t/g, match; - + ElasticTabstopsLite.prototype.$tabsForRow = function (row) { + var rowTabs = [], line = this.$editor.session.getLine(row), re = /\t/g, match; while ((match = re.exec(line)) != null) { rowTabs.push(match.index); } - return rowTabs; }; - - this.$adjustRow = function(row, widths) { + ElasticTabstopsLite.prototype.$adjustRow = function (row, widths) { var rowTabs = this.$tabsForRow(row); - if (rowTabs.length == 0) return; - var bias = 0, location = -1; var expandedSet = this.$izip(widths, rowTabs); - for (var i = 0, l = expandedSet.length; i < l; i++) { var w = expandedSet[i][0], it = expandedSet[i][1]; location += 1 + w; it += bias; var difference = location - it; - if (difference == 0) continue; - - var partialLine = this.$editor.session.getLine(row).substr(0, it ); + var partialLine = this.$editor.session.getLine(row).substr(0, it); var strippedPartialLine = partialLine.replace(/\s*$/g, ""); var ispaces = partialLine.length - strippedPartialLine.length; - if (difference > 0) { - this.$editor.session.getDocument().insertInLine({row: row, column: it + 1}, Array(difference + 1).join(" ") + "\t"); + this.$editor.session.getDocument().insertInLine({ row: row, column: it + 1 }, Array(difference + 1).join(" ") + "\t"); this.$editor.session.getDocument().removeInLine(row, it, it + 1); - bias += difference; } - if (difference < 0 && ispaces >= -difference) { this.$editor.session.getDocument().removeInLine(row, it + difference, it); bias += difference; } } }; - this.$izip_longest = function(iterables) { + ElasticTabstopsLite.prototype.$izip_longest = function (iterables) { if (!iterables[0]) return []; var longest = iterables[0].length; var iterablesLength = iterables.length; - for (var i = 1; i < iterablesLength; i++) { var iLength = iterables[i].length; if (iLength > longest) longest = iLength; } - var expandedSet = []; - for (var l = 0; l < longest; l++) { var set = []; for (var i = 0; i < iterablesLength; i++) { @@ -226,39 +181,34 @@ var ElasticTabstopsLite = function(editor) { else set.push(iterables[i][l]); } - expandedSet.push(set); } - - return expandedSet; }; - this.$izip = function(widths, tabs) { + ElasticTabstopsLite.prototype.$izip = function (widths, tabs) { var size = widths.length >= tabs.length ? tabs.length : widths.length; - var expandedSet = []; for (var i = 0; i < size; i++) { - var set = [ widths[i], tabs[i] ]; + var set = [widths[i], tabs[i]]; expandedSet.push(set); } return expandedSet; }; - -}).call(ElasticTabstopsLite.prototype); - + return ElasticTabstopsLite; +}()); exports.ElasticTabstopsLite = ElasticTabstopsLite; - var Editor = require("../editor").Editor; require("../config").defineOptions(Editor.prototype, "editor", { useElasticTabstops: { - set: function(val) { + set: function (val) { if (val) { if (!this.elasticTabstops) this.elasticTabstops = new ElasticTabstopsLite(this); this.commands.on("afterExec", this.elasticTabstops.onAfterExec); this.commands.on("exec", this.elasticTabstops.onExec); this.on("change", this.elasticTabstops.onChange); - } else if (this.elasticTabstops) { + } + else if (this.elasticTabstops) { this.commands.removeListener("afterExec", this.elasticTabstops.onAfterExec); this.commands.removeListener("exec", this.elasticTabstops.onExec); this.removeListener("change", this.elasticTabstops.onChange); @@ -267,8 +217,11 @@ require("../config").defineOptions(Editor.prototype, "editor", { } }); -}); - (function() { - window.require(["ace/ext/elastic_tabstops_lite"], function() {}); +}); (function() { + window.require(["ace/ext/elastic_tabstops_lite"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-emmet.js b/vendor/assets/javascripts/ace/ext-emmet.js index 2c5e2bb7..375b9c5d 100644 --- a/vendor/assets/javascripts/ace/ext-emmet.js +++ b/vendor/assets/javascripts/ace/ext-emmet.js @@ -1,170 +1,246 @@ -define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"], function(require, exports, module) { -"use strict"; +define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"], function(require, exports, module){"use strict"; +var dom = require("./lib/dom"); var oop = require("./lib/oop"); var EventEmitter = require("./lib/event_emitter").EventEmitter; var lang = require("./lib/lang"); var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; +var RangeList = require("./range_list").RangeList; var HashHandler = require("./keyboard/hash_handler").HashHandler; var Tokenizer = require("./tokenizer").Tokenizer; -var comparePoints = Range.comparePoints; - -var SnippetManager = function() { - this.snippetMap = {}; - this.snippetNameMap = {}; +var clipboard = require("./clipboard"); +var VARIABLES = { + CURRENT_WORD: function (editor) { + return editor.session.getTextRange(editor.session.getWordRange()); + }, + SELECTION: function (editor, name, indentation) { + var text = editor.session.getTextRange(); + if (indentation) + return text.replace(/\n\r?([ \t]*\S)/g, "\n" + indentation + "$1"); + return text; + }, + CURRENT_LINE: function (editor) { + return editor.session.getLine(editor.getCursorPosition().row); + }, + PREV_LINE: function (editor) { + return editor.session.getLine(editor.getCursorPosition().row - 1); + }, + LINE_INDEX: function (editor) { + return editor.getCursorPosition().row; + }, + LINE_NUMBER: function (editor) { + return editor.getCursorPosition().row + 1; + }, + SOFT_TABS: function (editor) { + return editor.session.getUseSoftTabs() ? "YES" : "NO"; + }, + TAB_SIZE: function (editor) { + return editor.session.getTabSize(); + }, + CLIPBOARD: function (editor) { + return clipboard.getText && clipboard.getText(); + }, + FILENAME: function (editor) { + return /[^/\\]*$/.exec(this.FILEPATH(editor))[0]; + }, + FILENAME_BASE: function (editor) { + return /[^/\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\.[^.]*$/, ""); + }, + DIRECTORY: function (editor) { + return this.FILEPATH(editor).replace(/[^/\\]*$/, ""); + }, + FILEPATH: function (editor) { return "/not implemented.txt"; }, + WORKSPACE_NAME: function () { return "Unknown"; }, + FULLNAME: function () { return "Unknown"; }, + BLOCK_COMMENT_START: function (editor) { + var mode = editor.session.$mode || {}; + return mode.blockComment && mode.blockComment.start || ""; + }, + BLOCK_COMMENT_END: function (editor) { + var mode = editor.session.$mode || {}; + return mode.blockComment && mode.blockComment.end || ""; + }, + LINE_COMMENT: function (editor) { + var mode = editor.session.$mode || {}; + return mode.lineCommentStart || ""; + }, + CURRENT_YEAR: date.bind(null, { year: "numeric" }), + CURRENT_YEAR_SHORT: date.bind(null, { year: "2-digit" }), + CURRENT_MONTH: date.bind(null, { month: "numeric" }), + CURRENT_MONTH_NAME: date.bind(null, { month: "long" }), + CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: "short" }), + CURRENT_DATE: date.bind(null, { day: "2-digit" }), + CURRENT_DAY_NAME: date.bind(null, { weekday: "long" }), + CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: "short" }), + CURRENT_HOUR: date.bind(null, { hour: "2-digit", hour12: false }), + CURRENT_MINUTE: date.bind(null, { minute: "2-digit" }), + CURRENT_SECOND: date.bind(null, { second: "2-digit" }) }; - -(function() { - oop.implement(this, EventEmitter); - - this.getTokenizer = function() { - function TabstopToken(str, _, stack) { +VARIABLES.SELECTED_TEXT = VARIABLES.SELECTION; +function date(dateFormat) { + var str = new Date().toLocaleString("en-us", dateFormat); + return str.length == 1 ? "0" + str : str; +} +var SnippetManager = /** @class */ (function () { + function SnippetManager() { + this.snippetMap = {}; + this.snippetNameMap = {}; + this.variables = VARIABLES; + } + SnippetManager.prototype.getTokenizer = function () { + return SnippetManager["$tokenizer"] || this.createTokenizer(); + }; + SnippetManager.prototype.createTokenizer = function () { + function TabstopToken(str) { str = str.substr(1); - if (/^\d+$/.test(str) && !stack.inFormatString) - return [{tabstopId: parseInt(str, 10)}]; - return [{text: str}]; + if (/^\d+$/.test(str)) + return [{ tabstopId: parseInt(str, 10) }]; + return [{ text: str }]; } function escape(ch) { return "(?:[^\\\\" + ch + "]|\\\\.)"; } - SnippetManager.$tokenizer = new Tokenizer({ + var formatMatcher = { + regex: "/(" + escape("/") + "+)/", + onMatch: function (val, state, stack) { + var ts = stack[0]; + ts.fmtString = true; + ts.guard = val.slice(1, -1); + ts.flag = ""; + return ""; + }, + next: "formatString" + }; + SnippetManager["$tokenizer"] = new Tokenizer({ start: [ - {regex: /:/, onMatch: function(val, state, stack) { - if (stack.length && stack[0].expectIf) { - stack[0].expectIf = false; - stack[0].elseBranch = stack[0]; - return [stack[0]]; - } - return ":"; - }}, - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) { - val = ch; - }else if ("`$\\".indexOf(ch) != -1) { - val = ch; - } else if (stack.inFormatString) { - if (ch == "n") - val = "\n"; - else if (ch == "t") - val = "\n"; - else if ("ulULE".indexOf(ch) != -1) { - val = {changeCase: ch, local: ch > "a"}; + { regex: /\\./, onMatch: function (val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) { + val = ch; } - } - - return [val]; - }}, - {regex: /}/, onMatch: function(val, state, stack) { - return [stack.length ? stack.shift() : val]; - }}, - {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, - {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { - var t = TabstopToken(str.substr(1), state, stack); - stack.unshift(t[0]); - return t; - }, next: "snippetVar"}, - {regex: /\n/, token: "newline", merge: false} + else if ("`$\\".indexOf(ch) != -1) { + val = ch; + } + return [val]; + } }, + { regex: /}/, onMatch: function (val, state, stack) { + return [stack.length ? stack.shift() : val]; + } }, + { regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken }, + { regex: /\$\{[\dA-Z_a-z]+/, onMatch: function (str, state, stack) { + var t = TabstopToken(str.substr(1)); + stack.unshift(t[0]); + return t; + }, next: "snippetVar" }, + { regex: /\n/, token: "newline", merge: false } ], snippetVar: [ - {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { - stack[0].choices = val.slice(1, -1).split(","); - }, next: "start"}, - {regex: "/(" + escape("/") + "+)/(?:(" + escape("/") + "*)/)(\\w*):?", - onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.fmtString = val; - - val = this.splitRegex.exec(val); - ts.guard = val[1]; - ts.fmt = val[2]; - ts.flag = val[3]; - return ""; - }, next: "start"}, - {regex: "`" + escape("`") + "*`", onMatch: function(val, state, stack) { - stack[0].code = val.splice(1, -1); - return ""; - }, next: "start"}, - {regex: "\\?", onMatch: function(val, state, stack) { - if (stack[0]) - stack[0].expectIf = true; - }, next: "start"}, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} + { regex: "\\|" + escape("\\|") + "*\\|", onMatch: function (val, state, stack) { + var choices = val.slice(1, -1).replace(/\\[,|\\]|,/g, function (operator) { + return operator.length == 2 ? operator[1] : "\x00"; + }).split("\x00").map(function (value) { + return { value: value }; + }); + stack[0].choices = choices; + return [choices[0]]; + }, next: "start" }, + formatMatcher, + { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start" } ], formatString: [ - {regex: "/(" + escape("/") + "+)/", token: "regex"}, - {regex: "", onMatch: function(val, state, stack) { - stack.inFormatString = true; - }, next: "start"} + { regex: /:/, onMatch: function (val, state, stack) { + if (stack.length && stack[0].expectElse) { + stack[0].expectElse = false; + stack[0].ifEnd = { elseEnd: stack[0] }; + return [stack[0].ifEnd]; + } + return ":"; + } }, + { regex: /\\./, onMatch: function (val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) + val = ch; + else if ("`$\\".indexOf(ch) != -1) + val = ch; + else if (ch == "n") + val = "\n"; + else if (ch == "t") + val = "\t"; + else if ("ulULE".indexOf(ch) != -1) + val = { changeCase: ch, local: ch > "a" }; + return [val]; + } }, + { regex: "/\\w*}", onMatch: function (val, state, stack) { + var next = stack.shift(); + if (next) + next.flag = val.slice(1, -1); + this.next = next && next.tabstopId ? "start" : ""; + return [next || val]; + }, next: "start" }, + { regex: /\$(?:\d+|\w+)/, onMatch: function (val, state, stack) { + return [{ text: val.slice(1) }]; + } }, + { regex: /\${\w+/, onMatch: function (val, state, stack) { + var token = { text: val.slice(2) }; + stack.unshift(token); + return [token]; + }, next: "formatStringVar" }, + { regex: /\n/, token: "newline", merge: false }, + { regex: /}/, onMatch: function (val, state, stack) { + var next = stack.shift(); + this.next = next && next.tabstopId ? "start" : ""; + return [next || val]; + }, next: "start" } + ], + formatStringVar: [ + { regex: /:\/\w+}/, onMatch: function (val, state, stack) { + var ts = stack[0]; + ts.formatFunction = val.slice(2, -1); + return [stack.shift()]; + }, next: "formatString" }, + formatMatcher, + { regex: /:[\?\-+]?/, onMatch: function (val, state, stack) { + if (val[1] == "+") + stack[0].ifEnd = stack[0]; + if (val[1] == "?") + stack[0].expectElse = true; + }, next: "formatString" }, + { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "formatString" } ] }); - SnippetManager.prototype.getTokenizer = function() { - return SnippetManager.$tokenizer; - }; - return SnippetManager.$tokenizer; + return SnippetManager["$tokenizer"]; }; - - this.tokenizeTmSnippet = function(str, startState) { - return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { + SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) { + return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) { return x.value || x; }); }; - - this.$getDefaultValue = function(editor, name) { - if (/^[A-Z]\d+$/.test(name)) { - var i = name.substr(1); - return (this.variables[name[0] + "__"] || {})[i]; - } - if (/^\d+$/.test(name)) { - return (this.variables.__ || {})[name]; - } + SnippetManager.prototype.getVariableValue = function (editor, name, indentation) { + if (/^\d+$/.test(name)) + return (this.variables.__ || {})[name] || ""; + if (/^[A-Z]\d+$/.test(name)) + return (this.variables[name[0] + "__"] || {})[name.substr(1)] || ""; name = name.replace(/^TM_/, ""); - - if (!editor) - return; - var s = editor.session; - switch(name) { - case "CURRENT_WORD": - var r = s.getWordRange(); - case "SELECTION": - case "SELECTED_TEXT": - return s.getTextRange(r); - case "CURRENT_LINE": - return s.getLine(editor.getCursorPosition().row); - case "PREV_LINE": // not possible in textmate - return s.getLine(editor.getCursorPosition().row - 1); - case "LINE_INDEX": - return editor.getCursorPosition().column; - case "LINE_NUMBER": - return editor.getCursorPosition().row + 1; - case "SOFT_TABS": - return s.getUseSoftTabs() ? "YES" : "NO"; - case "TAB_SIZE": - return s.getTabSize(); - case "FILENAME": - case "FILEPATH": - return ""; - case "FULLNAME": - return "Ace"; - } + if (!this.variables.hasOwnProperty(name)) + return ""; + var value = this.variables[name]; + if (typeof value == "function") + value = this.variables[name](editor, name, indentation); + return value == null ? "" : value; }; - this.variables = {}; - this.getVariableValue = function(editor, varName) { - if (this.variables.hasOwnProperty(varName)) - return this.variables[varName](editor, varName) || ""; - return this.$getDefaultValue(editor, varName) || ""; - }; - this.tmStrFormat = function(str, ch, editor) { + SnippetManager.prototype.tmStrFormat = function (str, ch, editor) { + if (!ch.fmt) + return str; var flag = ch.flag || ""; var re = ch.guard; - re = new RegExp(re, flag.replace(/[^gi]/, "")); - var fmtTokens = this.tokenizeTmSnippet(ch.fmt, "formatString"); + re = new RegExp(re, flag.replace(/[^gim]/g, "")); + var fmtTokens = typeof ch.fmt == "string" ? this.tokenizeTmSnippet(ch.fmt, "formatString") : ch.fmt; var _self = this; - var formatted = str.replace(re, function() { - _self.variables.__ = arguments; + var formatted = str.replace(re, function () { + var oldArgs = _self.variables.__; + _self.variables.__ = [].slice.call(arguments); var fmtParts = _self.resolveVariables(fmtTokens, editor); var gChangeCase = "E"; - for (var i = 0; i < fmtParts.length; i++) { + for (var i = 0; i < fmtParts.length; i++) { var ch = fmtParts[i]; if (typeof ch == "object") { fmtParts[i] = ""; @@ -177,52 +253,79 @@ var SnippetManager = function() { fmtParts[i] = next[0].toLowerCase(); fmtParts[i + 1] = next.substr(1); } - } else if (ch.changeCase) { + } + else if (ch.changeCase) { gChangeCase = ch.changeCase; } - } else if (gChangeCase == "U") { + } + else if (gChangeCase == "U") { fmtParts[i] = ch.toUpperCase(); - } else if (gChangeCase == "L") { + } + else if (gChangeCase == "L") { fmtParts[i] = ch.toLowerCase(); } } + _self.variables.__ = oldArgs; return fmtParts.join(""); }); - this.variables.__ = null; return formatted; }; - - this.resolveVariables = function(snippet, editor) { + SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) { + if (ch.formatFunction == "upcase") + return str.toUpperCase(); + if (ch.formatFunction == "downcase") + return str.toLowerCase(); + return str; + }; + SnippetManager.prototype.resolveVariables = function (snippet, editor) { var result = []; + var indentation = ""; + var afterNewLine = true; for (var i = 0; i < snippet.length; i++) { var ch = snippet[i]; if (typeof ch == "string") { result.push(ch); - } else if (typeof ch != "object") { - continue; - } else if (ch.skip) { - gotoNext(ch); - } else if (ch.processed < i) { - continue; - } else if (ch.text) { - var value = this.getVariableValue(editor, ch.text); - if (value && ch.fmtString) - value = this.tmStrFormat(value, ch); - ch.processed = i; - if (ch.expectIf == null) { - if (value) { - result.push(value); - gotoNext(ch); - } - } else { - if (value) { - ch.skip = ch.elseBranch; - } else - gotoNext(ch); + if (ch == "\n") { + afterNewLine = true; + indentation = ""; } - } else if (ch.tabstopId != null) { + else if (afterNewLine) { + indentation = /^\t*/.exec(ch)[0]; + afterNewLine = /\S/.test(ch); + } + continue; + } + if (!ch) + continue; + afterNewLine = false; + if (ch.fmtString) { + var j = snippet.indexOf(ch, i + 1); + if (j == -1) + j = snippet.length; + ch.fmt = snippet.slice(i + 1, j); + i = j; + } + if (ch.text) { + var value = this.getVariableValue(editor, ch.text, indentation) + ""; + if (ch.fmtString) + value = this.tmStrFormat(value, ch, editor); + if (ch.formatFunction) + value = this.tmFormatFunction(value, ch, editor); + if (value && !ch.ifEnd) { + result.push(value); + gotoNext(ch); + } + else if (!value && ch.ifEnd) { + gotoNext(ch.ifEnd); + } + } + else if (ch.elseEnd) { + gotoNext(ch.elseEnd); + } + else if (ch.tabstopId != null) { result.push(ch); - } else if (ch.changeCase != null) { + } + else if (ch.changeCase != null) { result.push(ch); } } @@ -233,134 +336,35 @@ var SnippetManager = function() { } return result; }; - - this.insertSnippetForSelection = function(editor, snippetText) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var tabString = editor.session.getTabString(); - var indentString = line.match(/^\s*/)[0]; - - if (cursor.column < indentString.length) - indentString = indentString.slice(0, cursor.column); - - snippetText = snippetText.replace(/\r/g, ""); - var tokens = this.tokenizeTmSnippet(snippetText); - tokens = this.resolveVariables(tokens, editor); - tokens = tokens.map(function(x) { - if (x == "\n") - return x + indentString; - if (typeof x == "string") - return x.replace(/\t/g, tabString); - return x; - }); - var tabstops = []; - tokens.forEach(function(p, i) { - if (typeof p != "object") - return; - var id = p.tabstopId; - var ts = tabstops[id]; - if (!ts) { - ts = tabstops[id] = []; - ts.index = id; - ts.value = ""; - } - if (ts.indexOf(p) !== -1) - return; - ts.push(p); - var i1 = tokens.indexOf(p, i + 1); - if (i1 === -1) - return; - - var value = tokens.slice(i + 1, i1); - var isNested = value.some(function(t) {return typeof t === "object";}); - if (isNested && !ts.value) { - ts.value = value; - } else if (value.length && (!ts.value || typeof ts.value !== "string")) { - ts.value = value.join(""); - } - }); - tabstops.forEach(function(ts) {ts.length = 0;}); - var expanding = {}; - function copyValue(val) { - var copy = []; - for (var i = 0; i < val.length; i++) { - var p = val[i]; - if (typeof p == "object") { - if (expanding[p.tabstopId]) - continue; - var j = val.lastIndexOf(p, i - 1); - p = copy[j] || {tabstopId: p.tabstopId}; - } - copy[i] = p; - } - return copy; - } - for (var i = 0; i < tokens.length; i++) { - var p = tokens[i]; - if (typeof p != "object") - continue; - var id = p.tabstopId; - var i1 = tokens.indexOf(p, i + 1); - if (expanding[id]) { - if (expanding[id] === p) - expanding[id] = null; - continue; - } - - var ts = tabstops[id]; - var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value); - arg.unshift(i + 1, Math.max(0, i1 - i)); - arg.push(p); - expanding[id] = p; - tokens.splice.apply(tokens, arg); - - if (ts.indexOf(p) === -1) - ts.push(p); - } - var row = 0, column = 0; - var text = ""; - tokens.forEach(function(t) { - if (typeof t === "string") { - var lines = t.split("\n"); - if (lines.length > 1){ - column = lines[lines.length - 1].length; - row += lines.length - 1; - } else - column += t.length; - text += t; - } else { - if (!t.start) - t.start = {row: row, column: column}; - else - t.end = {row: row, column: column}; - } - }); + SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) { + var processedSnippet = processSnippetText.call(this, editor, snippetText); + return processedSnippet.text; + }; + SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var processedSnippet = processSnippetText.call(this, editor, snippetText, options); var range = editor.getSelectionRange(); - var end = editor.session.replace(range, text); - + var end = editor.session.replace(range, processedSnippet.text); var tabstopManager = new TabstopManager(editor); var selectionId = editor.inVirtualSelectionMode && editor.selection.index; - tabstopManager.addTabstops(tabstops, range.start, end, selectionId); + tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId); }; - - this.insertSnippet = function(editor, snippetText) { + SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } var self = this; if (editor.inVirtualSelectionMode) - return self.insertSnippetForSelection(editor, snippetText); - - editor.forEachSelection(function() { - self.insertSnippetForSelection(editor, snippetText); - }, null, {keepOrder: true}); - + return self.insertSnippetForSelection(editor, snippetText, options); + editor.forEachSelection(function () { + self.insertSnippetForSelection(editor, snippetText, options); + }, null, { keepOrder: true }); if (editor.tabstopManager) editor.tabstopManager.tabNext(); }; - - this.$getScope = function(editor) { + SnippetManager.prototype.$getScope = function (editor) { var scope = editor.session.$mode.$id || ""; scope = scope.split("/").pop(); if (scope === "html" || scope === "php") { - if (scope === "php" && !editor.session.$mode.inlinePhp) + if (scope === "php" && !editor.session.$mode.inlinePhp) scope = "html"; var c = editor.getCursorPosition(); var state = editor.session.getState(c.row); @@ -376,11 +380,9 @@ var SnippetManager = function() { scope = "php"; } } - return scope; }; - - this.getActiveScopes = function(editor) { + SnippetManager.prototype.getActiveScopes = function (editor) { var scope = this.$getScope(editor); var scopes = [scope]; var snippetMap = this.snippetMap; @@ -390,26 +392,23 @@ var SnippetManager = function() { scopes.push("_"); return scopes; }; - - this.expandWithTab = function(editor, options) { + SnippetManager.prototype.expandWithTab = function (editor, options) { var self = this; - var result = editor.forEachSelection(function() { + var result = editor.forEachSelection(function () { return self.expandSnippetForSelection(editor, options); - }, null, {keepOrder: true}); + }, null, { keepOrder: true }); if (result && editor.tabstopManager) editor.tabstopManager.tabNext(); return result; }; - - this.expandSnippetForSelection = function(editor, options) { + SnippetManager.prototype.expandSnippetForSelection = function (editor, options) { var cursor = editor.getCursorPosition(); var line = editor.session.getLine(cursor.row); var before = line.substring(0, cursor.column); var after = line.substr(cursor.column); - var snippetMap = this.snippetMap; var snippet; - this.getActiveScopes(editor).some(function(scope) { + this.getActiveScopes(editor).some(function (scope) { var snippets = snippetMap[scope]; if (snippets) snippet = this.findMatchingSnippet(snippets, before, after); @@ -419,20 +418,14 @@ var SnippetManager = function() { return false; if (options && options.dryRun) return true; - editor.session.doc.removeInLine(cursor.row, - cursor.column - snippet.replaceBefore.length, - cursor.column + snippet.replaceAfter.length - ); - + editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length); this.variables.M__ = snippet.matchBefore; this.variables.T__ = snippet.matchAfter; this.insertSnippetForSelection(editor, snippet.content); - this.variables.M__ = this.variables.T__ = null; return true; }; - - this.findMatchingSnippet = function(snippetList, before, after) { + SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) { for (var i = snippetList.length; i--;) { var s = snippetList[i]; if (s.startRe && !s.startRe.test(before)) @@ -441,7 +434,6 @@ var SnippetManager = function() { continue; if (!s.startRe && !s.endRe) continue; - s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; @@ -449,21 +441,15 @@ var SnippetManager = function() { return s; } }; - - this.snippetMap = {}; - this.snippetNameMap = {}; - this.register = function(snippets, scope) { + SnippetManager.prototype.register = function (snippets, scope) { var snippetMap = this.snippetMap; var snippetNameMap = this.snippetNameMap; var self = this; - - if (!snippets) + if (!snippets) snippets = []; - function wrapRegexp(src) { if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) src = "(?:" + src + ")"; - return src || ""; } function guardedRegexp(re, guard, opening) { @@ -473,14 +459,14 @@ var SnippetManager = function() { re = guard + re; if (re && re[re.length - 1] != "$") re = re + "$"; - } else { + } + else { re = re + guard; if (re && re[0] != "^") re = "^" + re; } return new RegExp(re); } - function addSnippet(s) { if (!s.scope) s.scope = scope || "_"; @@ -489,7 +475,6 @@ var SnippetManager = function() { snippetMap[scope] = []; snippetNameMap[scope] = {}; } - var map = snippetNameMap[scope]; if (s.name) { var old = map[s.name]; @@ -498,39 +483,40 @@ var SnippetManager = function() { map[s.name] = s; } snippetMap[scope].push(s); - + if (s.prefix) + s.tabTrigger = s.prefix; + if (!s.content && s.body) + s.content = Array.isArray(s.body) ? s.body.join("\n") : s.body; if (s.tabTrigger && !s.trigger) { if (!s.guard && /^\w/.test(s.tabTrigger)) s.guard = "\\b"; s.trigger = lang.escapeRegExp(s.tabTrigger); } - if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) return; - s.startRe = guardedRegexp(s.trigger, s.guard, true); - s.triggerRe = new RegExp(s.trigger, "", true); - + s.triggerRe = new RegExp(s.trigger); s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); - s.endTriggerRe = new RegExp(s.endTrigger, "", true); + s.endTriggerRe = new RegExp(s.endTrigger); } - - if (snippets && snippets.content) - addSnippet(snippets); - else if (Array.isArray(snippets)) + if (Array.isArray(snippets)) { snippets.forEach(addSnippet); - - this._signal("registerSnippets", {scope: scope}); + } + else { + Object.keys(snippets).forEach(function (key) { + addSnippet(snippets[key]); + }); + } + this._signal("registerSnippets", { scope: scope }); }; - this.unregister = function(snippets, scope) { + SnippetManager.prototype.unregister = function (snippets, scope) { var snippetMap = this.snippetMap; var snippetNameMap = this.snippetNameMap; - function removeSnippet(s) { - var nameMap = snippetNameMap[s.scope||scope]; + var nameMap = snippetNameMap[s.scope || scope]; if (nameMap && nameMap[s.name]) { delete nameMap[s.name]; - var map = snippetMap[s.scope||scope]; + var map = snippetMap[s.scope || scope]; var i = map && map.indexOf(s); if (i >= 0) map.splice(i, 1); @@ -541,9 +527,9 @@ var SnippetManager = function() { else if (Array.isArray(snippets)) snippets.forEach(removeSnippet); }; - this.parseSnippetFile = function(str) { + SnippetManager.prototype.parseSnippetFile = function (str) { str = str.replace(/\r/g, ""); - var list = [], snippet = {}; + var list = [], /**@type{Snippet}*/ snippet = {}; var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; var m; while (m = re.exec(str)) { @@ -551,12 +537,15 @@ var SnippetManager = function() { try { snippet = JSON.parse(m[1]); list.push(snippet); - } catch (e) {} - } if (m[4]) { + } + catch (e) { } + } + if (m[4]) { snippet.content = m[4].replace(/^\t/gm, ""); list.push(snippet); snippet = {}; - } else { + } + else { var key = m[2], val = m[3]; if (key == "regex") { var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; @@ -564,21 +553,23 @@ var SnippetManager = function() { snippet.trigger = guardRe.exec(val)[1]; snippet.endTrigger = guardRe.exec(val)[1]; snippet.endGuard = guardRe.exec(val)[1]; - } else if (key == "snippet") { + } + else if (key == "snippet") { snippet.tabTrigger = val.match(/^\S*/)[0]; if (!snippet.name) snippet.name = val; - } else { + } + else if (key) { snippet[key] = val; } } } return list; }; - this.getSnippetByName = function(name, editor) { + SnippetManager.prototype.getSnippetByName = function (name, editor) { var snippetMap = this.snippetNameMap; var snippet; - this.getActiveScopes(editor).some(function(scope) { + this.getActiveScopes(editor).some(function (scope) { var snippets = snippetMap[scope]; if (snippets) snippet = snippets[name]; @@ -586,125 +577,216 @@ var SnippetManager = function() { }, this); return snippet; }; - -}).call(SnippetManager.prototype); - - -var TabstopManager = function(editor) { - if (editor.tabstopManager) - return editor.tabstopManager; - editor.tabstopManager = this; - this.$onChange = this.onChange.bind(this); - this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; - this.$onChangeSession = this.onChangeSession.bind(this); - this.$onAfterExec = this.onAfterExec.bind(this); - this.attach(editor); + return SnippetManager; +}()); +oop.implement(SnippetManager.prototype, EventEmitter); +var processSnippetText = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var cursor = editor.getCursorPosition(); + var line = editor.session.getLine(cursor.row); + var tabString = editor.session.getTabString(); + var indentString = line.match(/^\s*/)[0]; + if (cursor.column < indentString.length) + indentString = indentString.slice(0, cursor.column); + snippetText = snippetText.replace(/\r/g, ""); + var tokens = this.tokenizeTmSnippet(snippetText); + tokens = this.resolveVariables(tokens, editor); + tokens = tokens.map(function (x) { + if (x == "\n" && !options.excludeExtraIndent) + return x + indentString; + if (typeof x == "string") + return x.replace(/\t/g, tabString); + return x; + }); + var tabstops = []; + tokens.forEach(function (p, i) { + if (typeof p != "object") + return; + var id = p.tabstopId; + var ts = tabstops[id]; + if (!ts) { + ts = tabstops[id] = []; + ts.index = id; + ts.value = ""; + ts.parents = {}; + } + if (ts.indexOf(p) !== -1) + return; + if (p.choices && !ts.choices) + ts.choices = p.choices; + ts.push(p); + var i1 = tokens.indexOf(p, i + 1); + if (i1 === -1) + return; + var value = tokens.slice(i + 1, i1); + var isNested = value.some(function (t) { return typeof t === "object"; }); + if (isNested && !ts.value) { + ts.value = value; + } + else if (value.length && (!ts.value || typeof ts.value !== "string")) { + ts.value = value.join(""); + } + }); + tabstops.forEach(function (ts) { ts.length = 0; }); + var expanding = {}; + function copyValue(val) { + var copy = []; + for (var i = 0; i < val.length; i++) { + var p = val[i]; + if (typeof p == "object") { + if (expanding[p.tabstopId]) + continue; + var j = val.lastIndexOf(p, i - 1); + p = copy[j] || { tabstopId: p.tabstopId }; + } + copy[i] = p; + } + return copy; + } + for (var i = 0; i < tokens.length; i++) { + var p = tokens[i]; + if (typeof p != "object") + continue; + var id = p.tabstopId; + var ts = tabstops[id]; + var i1 = tokens.indexOf(p, i + 1); + if (expanding[id]) { + if (expanding[id] === p) { + delete expanding[id]; + Object.keys(expanding).forEach(function (parentId) { + ts.parents[parentId] = true; + }); + } + continue; + } + expanding[id] = p; + var value = ts.value; + if (typeof value !== "string") + value = copyValue(value); + else if (p.fmt) + value = this.tmStrFormat(value, p, editor); + tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p)); + if (ts.indexOf(p) === -1) + ts.push(p); + } + var row = 0, column = 0; + var text = ""; + tokens.forEach(function (t) { + if (typeof t === "string") { + var lines = t.split("\n"); + if (lines.length > 1) { + column = lines[lines.length - 1].length; + row += lines.length - 1; + } + else + column += t.length; + text += t; + } + else if (t) { + if (!t.start) + t.start = { row: row, column: column }; + else + t.end = { row: row, column: column }; + } + }); + return { + text: text, + tabstops: tabstops, + tokens: tokens + }; }; -(function() { - this.attach = function(editor) { +var TabstopManager = /** @class */ (function () { + function TabstopManager(editor) { this.index = 0; this.ranges = []; this.tabstops = []; + if (editor.tabstopManager) + return editor.tabstopManager; + editor.tabstopManager = this; + this.$onChange = this.onChange.bind(this); + this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; + this.$onChangeSession = this.onChangeSession.bind(this); + this.$onAfterExec = this.onAfterExec.bind(this); + this.attach(editor); + } + TabstopManager.prototype.attach = function (editor) { this.$openTabstops = null; this.selectedTabstop = null; - this.editor = editor; + this.session = editor.session; this.editor.on("change", this.$onChange); this.editor.on("changeSelection", this.$onChangeSelection); this.editor.on("changeSession", this.$onChangeSession); this.editor.commands.on("afterExec", this.$onAfterExec); this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); }; - this.detach = function() { + TabstopManager.prototype.detach = function () { this.tabstops.forEach(this.removeTabstopMarkers, this); - this.ranges = null; - this.tabstops = null; + this.ranges.length = 0; + this.tabstops.length = 0; this.selectedTabstop = null; - this.editor.removeListener("change", this.$onChange); - this.editor.removeListener("changeSelection", this.$onChangeSelection); - this.editor.removeListener("changeSession", this.$onChangeSession); - this.editor.commands.removeListener("afterExec", this.$onAfterExec); + this.editor.off("change", this.$onChange); + this.editor.off("changeSelection", this.$onChangeSelection); + this.editor.off("changeSession", this.$onChangeSession); + this.editor.commands.off("afterExec", this.$onAfterExec); this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); this.editor.tabstopManager = null; + this.session = null; this.editor = null; }; - - this.onChange = function(delta) { - var changeRange = delta; + TabstopManager.prototype.onChange = function (delta) { var isRemove = delta.action[0] == "r"; - var start = delta.start; - var end = delta.end; - var startRow = start.row; - var endRow = end.row; - var lineDif = endRow - startRow; - var colDiff = end.column - start.column; - - if (isRemove) { - lineDif = -lineDif; - colDiff = -colDiff; - } - if (!this.$inChange && isRemove) { - var ts = this.selectedTabstop; - var changedOutside = ts && !ts.some(function(r) { - return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0; - }); - if (changedOutside) - return this.detach(); - } - var ranges = this.ranges; - for (var i = 0; i < ranges.length; i++) { - var r = ranges[i]; - if (r.end.row < start.row) - continue; - - if (isRemove && comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) { - this.removeRange(r); - i--; - continue; + var selectedTabstop = this.selectedTabstop || {}; + var parents = selectedTabstop.parents || {}; + var tabstops = this.tabstops.slice(); + for (var i = 0; i < tabstops.length; i++) { + var ts = tabstops[i]; + var active = ts == selectedTabstop || parents[ts.index]; + ts.rangeList.$bias = active ? 0 : 1; + if (delta.action == "remove" && ts !== selectedTabstop) { + var parentActive = ts.parents && ts.parents[selectedTabstop.index]; + var startIndex = ts.rangeList.pointIndex(delta.start, parentActive); + startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1; + var endIndex = ts.rangeList.pointIndex(delta.end, parentActive); + endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1; + var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex); + for (var j = 0; j < toRemove.length; j++) + this.removeRange(toRemove[j]); } - - if (r.start.row == startRow && r.start.column > start.column) - r.start.column += colDiff; - if (r.end.row == startRow && r.end.column >= start.column) - r.end.column += colDiff; - if (r.start.row >= startRow) - r.start.row += lineDif; - if (r.end.row >= startRow) - r.end.row += lineDif; - - if (comparePoints(r.start, r.end) > 0) - this.removeRange(r); + ts.rangeList.$onChange(delta); } - if (!ranges.length) + var session = this.session; + if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue()) this.detach(); }; - this.updateLinkedFields = function() { + TabstopManager.prototype.updateLinkedFields = function () { var ts = this.selectedTabstop; - if (!ts || !ts.hasLinkedRanges) + if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked) return; this.$inChange = true; - var session = this.editor.session; + var session = this.session; var text = session.getTextRange(ts.firstNonLinked); - for (var i = ts.length; i--;) { + for (var i = 0; i < ts.length; i++) { var range = ts[i]; if (!range.linked) continue; - var fmt = exports.snippetManager.tmStrFormat(text, range.original); + var original = range.original; + var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor); session.replace(range, fmt); } this.$inChange = false; }; - this.onAfterExec = function(e) { + TabstopManager.prototype.onAfterExec = function (e) { if (e.command && !e.command.readOnly) this.updateLinkedFields(); }; - this.onChangeSelection = function() { + TabstopManager.prototype.onChangeSelection = function () { if (!this.editor) return; var lead = this.editor.selection.lead; var anchor = this.editor.selection.anchor; var isEmpty = this.editor.selection.isEmpty(); - for (var i = this.ranges.length; i--;) { + for (var i = 0; i < this.ranges.length; i++) { if (this.ranges[i].linked) continue; var containsLead = this.ranges[i].contains(lead.row, lead.column); @@ -714,20 +796,22 @@ var TabstopManager = function(editor) { } this.detach(); }; - this.onChangeSession = function() { + TabstopManager.prototype.onChangeSession = function () { this.detach(); }; - this.tabNext = function(dir) { + TabstopManager.prototype.tabNext = function (dir) { var max = this.tabstops.length; var index = this.index + (dir || 1); index = Math.min(Math.max(index, 1), max); if (index == max) index = 0; this.selectTabstop(index); - if (index === 0) + this.updateTabstopMarkers(); + if (index === 0) { this.detach(); + } }; - this.selectTabstop = function(index) { + TabstopManager.prototype.selectTabstop = function (index) { this.$openTabstops = null; var ts = this.tabstops[this.index]; if (ts) @@ -736,25 +820,28 @@ var TabstopManager = function(editor) { ts = this.tabstops[this.index]; if (!ts || !ts.length) return; - this.selectedTabstop = ts; - if (!this.editor.inVirtualSelectionMode) { + var range = ts.firstNonLinked || ts; + if (ts.choices) + range.cursor = range.start; + if (!this.editor.inVirtualSelectionMode) { var sel = this.editor.multiSelect; - sel.toSingleRange(ts.firstNonLinked.clone()); - for (var i = ts.length; i--;) { + sel.toSingleRange(range); + for (var i = 0; i < ts.length; i++) { if (ts.hasLinkedRanges && ts[i].linked) continue; sel.addRange(ts[i].clone(), true); } - if (sel.ranges[0]) - sel.addRange(sel.ranges[0].clone()); - } else { - this.editor.selection.setRange(ts.firstNonLinked); } - + else { + this.editor.selection.fromOrientedRange(range); + } this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + if (this.selectedTabstop && this.selectedTabstop.choices) + this.editor.execCommand("startAutocomplete", { matches: this.selectedTabstop.choices }); }; - this.addTabstops = function(tabstops, start, end) { + TabstopManager.prototype.addTabstops = function (tabstops, start, end) { + var useLink = this.useLink || !this.editor.getOption("enableMultiselect"); if (!this.$openTabstops) this.$openTabstops = []; if (!tabstops[0]) { @@ -764,14 +851,14 @@ var TabstopManager = function(editor) { tabstops[0] = [p]; tabstops[0].index = 0; } - var i = this.index; var arg = [i + 1, 0]; var ranges = this.ranges; - tabstops.forEach(function(ts, index) { + var snippetId = this.snippetId = (this.snippetId || 0) + 1; + tabstops.forEach(function (ts, index) { var dest = this.$openTabstops[index] || ts; - - for (var i = ts.length; i--;) { + dest.snippetId = snippetId; + for (var i = 0; i < ts.length; i++) { var p = ts[i]; var range = Range.fromPoints(p.start, p.end || p.start); movePoint(range.start, start); @@ -783,10 +870,11 @@ var TabstopManager = function(editor) { dest.unshift(range); else dest[i] = range; - if (p.fmtString) { + if (p.fmtString || (dest.firstNonLinked && useLink)) { range.linked = true; dest.hasLinkedRanges = true; - } else if (!dest.firstNonLinked) + } + else if (!dest.firstNonLinked) dest.firstNonLinked = range; } if (!dest.firstNonLinked) @@ -796,35 +884,55 @@ var TabstopManager = function(editor) { this.$openTabstops[index] = dest; } this.addTabstopMarkers(dest); + dest.rangeList = dest.rangeList || new RangeList(); + dest.rangeList.$bias = 0; + dest.rangeList.addList(dest); }, this); - if (arg.length > 2) { if (this.tabstops.length) arg.push(arg.splice(2, 1)[0]); this.tabstops.splice.apply(this.tabstops, arg); } }; - - this.addTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - if (!range.markerId) + TabstopManager.prototype.addTabstopMarkers = function (ts) { + var session = this.session; + ts.forEach(function (range) { + if (!range.markerId) range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); }); }; - this.removeTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { + TabstopManager.prototype.removeTabstopMarkers = function (ts) { + var session = this.session; + ts.forEach(function (range) { session.removeMarker(range.markerId); range.markerId = null; }); }; - this.removeRange = function(range) { + TabstopManager.prototype.updateTabstopMarkers = function () { + if (!this.selectedTabstop) + return; + var currentSnippetId = this.selectedTabstop.snippetId; + if (this.selectedTabstop.index === 0) { + currentSnippetId--; + } + this.tabstops.forEach(function (ts) { + if (ts.snippetId === currentSnippetId) + this.addTabstopMarkers(ts); + else + this.removeTabstopMarkers(ts); + }, this); + }; + TabstopManager.prototype.removeRange = function (range) { var i = range.tabstop.indexOf(range); - range.tabstop.splice(i, 1); + if (i != -1) + range.tabstop.splice(i, 1); i = this.ranges.indexOf(range); - this.ranges.splice(i, 1); - this.editor.session.removeMarker(range.markerId); + if (i != -1) + this.ranges.splice(i, 1); + i = range.tabstop.rangeList.ranges.indexOf(range); + if (i != -1) + range.tabstop.splice(i, 1); + this.session.removeMarker(range.markerId); if (!range.tabstop.length) { i = this.tabstops.indexOf(range.tabstop); if (i != -1) @@ -833,156 +941,122 @@ var TabstopManager = function(editor) { this.detach(); } }; - - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys({ - "Tab": function(ed) { - if (exports.snippetManager && exports.snippetManager.expandWithTab(ed)) { - return; - } - - ed.tabstopManager.tabNext(1); - }, - "Shift-Tab": function(ed) { - ed.tabstopManager.tabNext(-1); - }, - "Esc": function(ed) { - ed.tabstopManager.detach(); - }, - "Return": function(ed) { - return false; - } - }); -}).call(TabstopManager.prototype); - - - -var changeTracker = {}; -changeTracker.onChange = Anchor.prototype.onChange; -changeTracker.setPosition = function(row, column) { - this.pos.row = row; - this.pos.column = column; -}; -changeTracker.update = function(pos, delta, $insertRight) { - this.$insertRight = $insertRight; - this.pos = pos; - this.onChange(delta); -}; - -var movePoint = function(point, diff) { + return TabstopManager; +}()); +TabstopManager.prototype.keyboardHandler = new HashHandler(); +TabstopManager.prototype.keyboardHandler.bindKeys({ + "Tab": function (editor) { + if (exports.snippetManager && exports.snippetManager.expandWithTab(editor)) + return; + editor.tabstopManager.tabNext(1); + editor.renderer.scrollCursorIntoView(); + }, + "Shift-Tab": function (editor) { + editor.tabstopManager.tabNext(-1); + editor.renderer.scrollCursorIntoView(); + }, + "Esc": function (editor) { + editor.tabstopManager.detach(); + } +}); +var movePoint = function (point, diff) { if (point.row == 0) point.column += diff.column; point.row += diff.row; }; - -var moveRelative = function(point, start) { +var moveRelative = function (point, start) { if (point.row == start.row) point.column -= start.column; point.row -= start.row; }; - - -require("./lib/dom").importCssString("\ -.ace_snippet-marker {\ - -moz-box-sizing: border-box;\ - box-sizing: border-box;\ - background: rgba(194, 193, 208, 0.09);\ - border: 1px dotted rgba(211, 208, 235, 0.62);\ - position: absolute;\ -}"); - +dom.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}", "snippets.css", false); exports.snippetManager = new SnippetManager(); - - var Editor = require("./editor").Editor; -(function() { - this.insertSnippet = function(content, options) { +(function () { + this.insertSnippet = function (content, options) { return exports.snippetManager.insertSnippet(this, content, options); }; - this.expandSnippet = function(options) { + this.expandSnippet = function (options) { return exports.snippetManager.expandWithTab(this, options); }; }).call(Editor.prototype); }); -define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","resources","resources","tabStops","resources","utils","actions","ace/config","ace/config"], function(require, exports, module) { -"use strict"; -var HashHandler = require("ace/keyboard/hash_handler").HashHandler; -var Editor = require("ace/editor").Editor; -var snippetManager = require("ace/snippets").snippetManager; -var Range = require("ace/range").Range; +define("ace/ext/emmet",["require","exports","module","ace/keyboard/hash_handler","ace/editor","ace/snippets","ace/range","ace/config","resources","resources","tabStops","resources","utils","actions"], function(require, exports, module){"use strict"; +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var Editor = require("../editor").Editor; +var snippetManager = require("../snippets").snippetManager; +var Range = require("../range").Range; +var config = require("../config"); var emmet, emmetPath; -function AceEmmetEditor() {} - -AceEmmetEditor.prototype = { - setupContext: function(editor) { +var AceEmmetEditor = /** @class */ (function () { + function AceEmmetEditor() { + } + AceEmmetEditor.prototype.setupContext = function (editor) { this.ace = editor; this.indentation = editor.session.getTabString(); if (!emmet) - emmet = window.emmet; + emmet = window["emmet"]; var resources = emmet.resources || emmet.require("resources"); resources.setVariable("indentation", this.indentation); this.$syntax = null; this.$syntax = this.getSyntax(); - }, - getSelectionRange: function() { + }; + AceEmmetEditor.prototype.getSelectionRange = function () { var range = this.ace.getSelectionRange(); var doc = this.ace.session.doc; return { start: doc.positionToIndex(range.start), end: doc.positionToIndex(range.end) }; - }, - createSelection: function(start, end) { + }; + AceEmmetEditor.prototype.createSelection = function (start, end) { var doc = this.ace.session.doc; this.ace.selection.setRange({ start: doc.indexToPosition(start), end: doc.indexToPosition(end) }); - }, - getCurrentLineRange: function() { + }; + AceEmmetEditor.prototype.getCurrentLineRange = function () { var ace = this.ace; var row = ace.getCursorPosition().row; var lineLength = ace.session.getLine(row).length; - var index = ace.session.doc.positionToIndex({row: row, column: 0}); + var index = ace.session.doc.positionToIndex({ row: row, column: 0 }); return { start: index, end: index + lineLength }; - }, - getCaretPos: function(){ + }; + AceEmmetEditor.prototype.getCaretPos = function () { var pos = this.ace.getCursorPosition(); return this.ace.session.doc.positionToIndex(pos); - }, - setCaretPos: function(index){ + }; + AceEmmetEditor.prototype.setCaretPos = function (index) { var pos = this.ace.session.doc.indexToPosition(index); this.ace.selection.moveToPosition(pos); - }, - getCurrentLine: function() { + }; + AceEmmetEditor.prototype.getCurrentLine = function () { var row = this.ace.getCursorPosition().row; return this.ace.session.getLine(row); - }, - replaceContent: function(value, start, end, noIndent) { + }; + AceEmmetEditor.prototype.replaceContent = function (value, start, end, noIndent) { if (end == null) end = start == null ? this.getContent().length : start; if (start == null) - start = 0; - + start = 0; var editor = this.ace; var doc = editor.session.doc; var range = Range.fromPoints(doc.indexToPosition(start), doc.indexToPosition(end)); editor.session.remove(range); - range.end = range.start; - value = this.$updateTabstops(value); snippetManager.insertSnippet(editor, value); - }, - getContent: function(){ + }; + AceEmmetEditor.prototype.getContent = function () { return this.ace.getValue(); - }, - getSyntax: function() { + }; + AceEmmetEditor.prototype.getSyntax = function () { if (this.$syntax) return this.$syntax; var syntax = this.ace.session.$modeId.split("/").pop(); @@ -1000,34 +1074,34 @@ AceEmmetEditor.prototype = { } } return syntax; - }, - getProfileName: function() { + }; + AceEmmetEditor.prototype.getProfileName = function () { var resources = emmet.resources || emmet.require("resources"); switch (this.getSyntax()) { - case "css": return "css"; - case "xml": - case "xsl": - return "xml"; - case "html": - var profile = resources.getVariable("profile"); - if (!profile) - profile = this.ace.session.getLines(0,2).join("").search(/]+XHTML/i) != -1 ? "xhtml": "html"; - return profile; - default: - var mode = this.ace.session.$mode; - return mode.emmetConfig && mode.emmetConfig.profile || "xhtml"; + case "css": return "css"; + case "xml": + case "xsl": + return "xml"; + case "html": + var profile = resources.getVariable("profile"); + if (!profile) + profile = this.ace.session.getLines(0, 2).join("").search(/]+XHTML/i) != -1 ? "xhtml" : "html"; + return profile; + default: + var mode = this.ace.session.$mode; + return mode.emmetConfig && mode.emmetConfig.profile || "xhtml"; } - }, - prompt: function(title) { - return prompt(title); - }, - getSelection: function() { + }; + AceEmmetEditor.prototype.prompt = function (title) { + return prompt(title); // eslint-disable-line no-alert + }; + AceEmmetEditor.prototype.getSelection = function () { return this.ace.session.getTextRange(); - }, - getFilePath: function() { + }; + AceEmmetEditor.prototype.getFilePath = function () { return ""; - }, - $updateTabstops: function(value) { + }; + AceEmmetEditor.prototype.$updateTabstops = function (value) { var base = 1000; var zeroBase = 0; var lastZero = null; @@ -1035,109 +1109,101 @@ AceEmmetEditor.prototype = { var resources = emmet.resources || emmet.require("resources"); var settings = resources.getVocabulary("user"); var tabstopOptions = { - tabstop: function(data) { + tabstop: function (data) { var group = parseInt(data.group, 10); var isZero = group === 0; if (isZero) group = ++zeroBase; else group += base; - var placeholder = data.placeholder; if (placeholder) { placeholder = ts.processText(placeholder, tabstopOptions); } - var result = '${' + group + (placeholder ? ':' + placeholder : '') + '}'; - if (isZero) { lastZero = [data.start, result]; } - return result; }, - escape: function(ch) { - if (ch == '$') return '\\$'; - if (ch == '\\') return '\\\\'; + escape: function (ch) { + if (ch == '$') + return '\\$'; + if (ch == '\\') + return '\\\\'; return ch; } }; - value = ts.processText(value, tabstopOptions); - if (settings.variables['insert_final_tabstop'] && !/\$\{0\}$/.test(value)) { value += '${0}'; - } else if (lastZero) { + } + else if (lastZero) { var common = emmet.utils ? emmet.utils.common : emmet.require('utils'); value = common.replaceSubstring(value, '${0}', lastZero[0], lastZero[1]); } - return value; - } -}; - - + }; + return AceEmmetEditor; +}()); var keymap = { - expand_abbreviation: {"mac": "ctrl+alt+e", "win": "alt+e"}, - match_pair_outward: {"mac": "ctrl+d", "win": "ctrl+,"}, - match_pair_inward: {"mac": "ctrl+j", "win": "ctrl+shift+0"}, - matching_pair: {"mac": "ctrl+alt+j", "win": "alt+j"}, + expand_abbreviation: { "mac": "ctrl+alt+e", "win": "alt+e" }, + match_pair_outward: { "mac": "ctrl+d", "win": "ctrl+," }, + match_pair_inward: { "mac": "ctrl+j", "win": "ctrl+shift+0" }, + matching_pair: { "mac": "ctrl+alt+j", "win": "alt+j" }, next_edit_point: "alt+right", prev_edit_point: "alt+left", - toggle_comment: {"mac": "command+/", "win": "ctrl+/"}, - split_join_tag: {"mac": "shift+command+'", "win": "shift+ctrl+`"}, - remove_tag: {"mac": "command+'", "win": "shift+ctrl+;"}, - evaluate_math_expression: {"mac": "shift+command+y", "win": "shift+ctrl+y"}, + toggle_comment: { "mac": "command+/", "win": "ctrl+/" }, + split_join_tag: { "mac": "shift+command+'", "win": "shift+ctrl+`" }, + remove_tag: { "mac": "command+'", "win": "shift+ctrl+;" }, + evaluate_math_expression: { "mac": "shift+command+y", "win": "shift+ctrl+y" }, increment_number_by_1: "ctrl+up", decrement_number_by_1: "ctrl+down", increment_number_by_01: "alt+up", decrement_number_by_01: "alt+down", - increment_number_by_10: {"mac": "alt+command+up", "win": "shift+alt+up"}, - decrement_number_by_10: {"mac": "alt+command+down", "win": "shift+alt+down"}, - select_next_item: {"mac": "shift+command+.", "win": "shift+ctrl+."}, - select_previous_item: {"mac": "shift+command+,", "win": "shift+ctrl+,"}, - reflect_css_value: {"mac": "shift+command+r", "win": "shift+ctrl+r"}, - - encode_decode_data_url: {"mac": "shift+ctrl+d", "win": "ctrl+'"}, + increment_number_by_10: { "mac": "alt+command+up", "win": "shift+alt+up" }, + decrement_number_by_10: { "mac": "alt+command+down", "win": "shift+alt+down" }, + select_next_item: { "mac": "shift+command+.", "win": "shift+ctrl+." }, + select_previous_item: { "mac": "shift+command+,", "win": "shift+ctrl+," }, + reflect_css_value: { "mac": "shift+command+r", "win": "shift+ctrl+r" }, + encode_decode_data_url: { "mac": "shift+ctrl+d", "win": "ctrl+'" }, expand_abbreviation_with_tab: "Tab", - wrap_with_abbreviation: {"mac": "shift+ctrl+a", "win": "shift+ctrl+a"} + wrap_with_abbreviation: { "mac": "shift+ctrl+a", "win": "shift+ctrl+a" } }; - var editorProxy = new AceEmmetEditor(); exports.commands = new HashHandler(); exports.runEmmetCommand = function runEmmetCommand(editor) { + if (this.action == "expand_abbreviation_with_tab") { + if (!editor.selection.isEmpty()) + return false; + var pos = editor.selection.lead; + var token = editor.session.getTokenAt(pos.row, pos.column); + if (token && /\btag\b/.test(token.type)) + return false; + } try { editorProxy.setupContext(editor); var actions = emmet.actions || emmet.require("actions"); - - if (this.action == "expand_abbreviation_with_tab") { - if (!editor.selection.isEmpty()) - return false; - var pos = editor.selection.lead; - var token = editor.session.getTokenAt(pos.row, pos.column); - if (token && /\btag\b/.test(token.type)) - return false; - } - if (this.action == "wrap_with_abbreviation") { - return setTimeout(function() { + return setTimeout(function () { actions.run("wrap_with_abbreviation", editorProxy); }, 0); } - var result = actions.run(this.action, editorProxy); - } catch(e) { + } + catch (e) { if (!emmet) { - load(runEmmetCommand.bind(this, editor)); - return true; + var loading = exports.load(runEmmetCommand.bind(this, editor)); + if (this.action == "expand_abbreviation_with_tab") + return false; + return loading; } editor._signal("changeStatus", typeof e == "string" ? e : e.message); - console.log(e); + config.warn(e); result = false; } return result; }; - for (var command in keymap) { exports.commands.addCommand({ name: "emmet:" + command, @@ -1147,23 +1213,23 @@ for (var command in keymap) { multiSelectAction: "forEach" }); } - -exports.updateCommands = function(editor, enabled) { +exports.updateCommands = function (editor, enabled) { if (enabled) { editor.keyBinding.addKeyboardHandler(exports.commands); - } else { + } + else { editor.keyBinding.removeKeyboardHandler(exports.commands); } }; - -exports.isSupportedMode = function(mode) { - if (!mode) return false; - if (mode.emmetConfig) return true; +exports.isSupportedMode = function (mode) { + if (!mode) + return false; + if (mode.emmetConfig) + return true; var id = mode.$id || mode; return /css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(id); }; - -exports.isAvailable = function(editor, command) { +exports.isAvailable = function (editor, command) { if (/(evaluate_math_expression|expand_abbreviation)$/.test(command)) return true; var mode = editor.session.$mode; @@ -1173,12 +1239,12 @@ exports.isAvailable = function(editor, command) { editorProxy.setupContext(editor); if (/js|php/.test(editorProxy.getSyntax())) isSupported = false; - } catch(e) {} + } + catch (e) { } } return isSupported; }; - -var onChangeMode = function(e, target) { +var onChangeMode = function (e, target) { var editor = target; if (!editor) return; @@ -1186,38 +1252,42 @@ var onChangeMode = function(e, target) { if (e.enableEmmet === false) enabled = false; if (enabled) - load(); + exports.load(); exports.updateCommands(editor, enabled); }; - -var load = function(cb) { - if (typeof emmetPath == "string") { - require("ace/config").loadModule(emmetPath, function() { - emmetPath = null; - cb && cb(); - }); +exports.load = function (cb) { + if (typeof emmetPath !== "string") { + config.warn("script for emmet-core is not loaded"); + return false; } + config.loadModule(emmetPath, function () { + emmetPath = null; + cb && cb(); + }); + return true; }; - exports.AceEmmetEditor = AceEmmetEditor; -require("ace/config").defineOptions(Editor.prototype, "editor", { +config.defineOptions(Editor.prototype, "editor", { enableEmmet: { - set: function(val) { + set: function (val) { this[val ? "on" : "removeListener"]("changeMode", onChangeMode); - onChangeMode({enableEmmet: !!val}, this); + onChangeMode({ enableEmmet: !!val }, this); }, value: true } }); - -exports.setCore = function(e) { +exports.setCore = function (e) { if (typeof e == "string") - emmetPath = e; + emmetPath = e; else - emmet = e; + emmet = e; }; -}); - (function() { - window.require(["ace/ext/emmet"], function() {}); + +}); (function() { + window.require(["ace/ext/emmet"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-error_marker.js b/vendor/assets/javascripts/ace/ext-error_marker.js index 31ac11d8..683423d7 100644 --- a/vendor/assets/javascripts/ace/ext-error_marker.js +++ b/vendor/assets/javascripts/ace/ext-error_marker.js @@ -1,6 +1,9 @@ -; - (function() { - window.require(["ace/ext/error_marker"], function() {}); +; (function() { + window.require(["ace/ext/error_marker"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-hardwrap.js b/vendor/assets/javascripts/ace/ext-hardwrap.js new file mode 100644 index 00000000..82133b74 --- /dev/null +++ b/vendor/assets/javascripts/ace/ext-hardwrap.js @@ -0,0 +1,116 @@ +define("ace/ext/hardwrap",["require","exports","module","ace/range","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +function hardWrap(editor, options) { + var max = options.column || editor.getOption("printMarginColumn"); + var allowMerge = options.allowMerge != false; + var row = Math.min(options.startRow, options.endRow); + var endRow = Math.max(options.startRow, options.endRow); + var session = editor.session; + while (row <= endRow) { + var line = session.getLine(row); + if (line.length > max) { + var space = findSpace(line, max, 5); + if (space) { + var indentation = /^\s*/.exec(line)[0]; + session.replace(new Range(row, space.start, row, space.end), "\n" + indentation); + } + endRow++; + } + else if (allowMerge && /\S/.test(line) && row != endRow) { + var nextLine = session.getLine(row + 1); + if (nextLine && /\S/.test(nextLine)) { + var trimmedLine = line.replace(/\s+$/, ""); + var trimmedNextLine = nextLine.replace(/^\s+/, ""); + var mergedLine = trimmedLine + " " + trimmedNextLine; + var space = findSpace(mergedLine, max, 5); + if (space && space.start > trimmedLine.length || mergedLine.length < max) { + var replaceRange = new Range(row, trimmedLine.length, row + 1, nextLine.length - trimmedNextLine.length); + session.replace(replaceRange, " "); + row--; + endRow--; + } + else if (trimmedLine.length < line.length) { + session.remove(new Range(row, trimmedLine.length, row, line.length)); + } + } + } + row++; + } + function findSpace(line, max, min) { + if (line.length < max) + return; + var before = line.slice(0, max); + var after = line.slice(max); + var spaceAfter = /^(?:(\s+)|(\S+)(\s+))/.exec(after); + var spaceBefore = /(?:(\s+)|(\s+)(\S+))$/.exec(before); + var start = 0; + var end = 0; + if (spaceBefore && !spaceBefore[2]) { + start = max - spaceBefore[1].length; + end = max; + } + if (spaceAfter && !spaceAfter[2]) { + if (!start) + start = max; + end = max + spaceAfter[1].length; + } + if (start) { + return { + start: start, + end: end + }; + } + if (spaceBefore && spaceBefore[2] && spaceBefore.index > min) { + return { + start: spaceBefore.index, + end: spaceBefore.index + spaceBefore[2].length + }; + } + if (spaceAfter && spaceAfter[2]) { + start = max + spaceAfter[2].length; + return { + start: start, + end: start + spaceAfter[3].length + }; + } + } +} +function wrapAfterInput(e) { + if (e.command.name == "insertstring" && /\S/.test(e.args)) { + var editor = e.editor; + var cursor = editor.selection.cursor; + if (cursor.column <= editor.renderer.$printMarginColumn) + return; + var lastDelta = editor.session.$undoManager.$lastDelta; + hardWrap(editor, { + startRow: cursor.row, endRow: cursor.row, + allowMerge: false + }); + if (lastDelta != editor.session.$undoManager.$lastDelta) + editor.session.markUndoGroup(); + } +} +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + hardWrap: { + set: function (val) { + if (val) { + this.commands.on("afterExec", wrapAfterInput); + } + else { + this.commands.off("afterExec", wrapAfterInput); + } + }, + value: false + } +}); +exports.hardWrap = hardWrap; + +}); (function() { + window.require(["ace/ext/hardwrap"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-inline_autocomplete.js b/vendor/assets/javascripts/ace/ext-inline_autocomplete.js new file mode 100644 index 00000000..662c5434 --- /dev/null +++ b/vendor/assets/javascripts/ace/ext-inline_autocomplete.js @@ -0,0 +1,3375 @@ +define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"], function(require, exports, module){"use strict"; +var dom = require("./lib/dom"); +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var lang = require("./lib/lang"); +var Range = require("./range").Range; +var RangeList = require("./range_list").RangeList; +var HashHandler = require("./keyboard/hash_handler").HashHandler; +var Tokenizer = require("./tokenizer").Tokenizer; +var clipboard = require("./clipboard"); +var VARIABLES = { + CURRENT_WORD: function (editor) { + return editor.session.getTextRange(editor.session.getWordRange()); + }, + SELECTION: function (editor, name, indentation) { + var text = editor.session.getTextRange(); + if (indentation) + return text.replace(/\n\r?([ \t]*\S)/g, "\n" + indentation + "$1"); + return text; + }, + CURRENT_LINE: function (editor) { + return editor.session.getLine(editor.getCursorPosition().row); + }, + PREV_LINE: function (editor) { + return editor.session.getLine(editor.getCursorPosition().row - 1); + }, + LINE_INDEX: function (editor) { + return editor.getCursorPosition().row; + }, + LINE_NUMBER: function (editor) { + return editor.getCursorPosition().row + 1; + }, + SOFT_TABS: function (editor) { + return editor.session.getUseSoftTabs() ? "YES" : "NO"; + }, + TAB_SIZE: function (editor) { + return editor.session.getTabSize(); + }, + CLIPBOARD: function (editor) { + return clipboard.getText && clipboard.getText(); + }, + FILENAME: function (editor) { + return /[^/\\]*$/.exec(this.FILEPATH(editor))[0]; + }, + FILENAME_BASE: function (editor) { + return /[^/\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\.[^.]*$/, ""); + }, + DIRECTORY: function (editor) { + return this.FILEPATH(editor).replace(/[^/\\]*$/, ""); + }, + FILEPATH: function (editor) { return "/not implemented.txt"; }, + WORKSPACE_NAME: function () { return "Unknown"; }, + FULLNAME: function () { return "Unknown"; }, + BLOCK_COMMENT_START: function (editor) { + var mode = editor.session.$mode || {}; + return mode.blockComment && mode.blockComment.start || ""; + }, + BLOCK_COMMENT_END: function (editor) { + var mode = editor.session.$mode || {}; + return mode.blockComment && mode.blockComment.end || ""; + }, + LINE_COMMENT: function (editor) { + var mode = editor.session.$mode || {}; + return mode.lineCommentStart || ""; + }, + CURRENT_YEAR: date.bind(null, { year: "numeric" }), + CURRENT_YEAR_SHORT: date.bind(null, { year: "2-digit" }), + CURRENT_MONTH: date.bind(null, { month: "numeric" }), + CURRENT_MONTH_NAME: date.bind(null, { month: "long" }), + CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: "short" }), + CURRENT_DATE: date.bind(null, { day: "2-digit" }), + CURRENT_DAY_NAME: date.bind(null, { weekday: "long" }), + CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: "short" }), + CURRENT_HOUR: date.bind(null, { hour: "2-digit", hour12: false }), + CURRENT_MINUTE: date.bind(null, { minute: "2-digit" }), + CURRENT_SECOND: date.bind(null, { second: "2-digit" }) +}; +VARIABLES.SELECTED_TEXT = VARIABLES.SELECTION; +function date(dateFormat) { + var str = new Date().toLocaleString("en-us", dateFormat); + return str.length == 1 ? "0" + str : str; +} +var SnippetManager = /** @class */ (function () { + function SnippetManager() { + this.snippetMap = {}; + this.snippetNameMap = {}; + this.variables = VARIABLES; + } + SnippetManager.prototype.getTokenizer = function () { + return SnippetManager["$tokenizer"] || this.createTokenizer(); + }; + SnippetManager.prototype.createTokenizer = function () { + function TabstopToken(str) { + str = str.substr(1); + if (/^\d+$/.test(str)) + return [{ tabstopId: parseInt(str, 10) }]; + return [{ text: str }]; + } + function escape(ch) { + return "(?:[^\\\\" + ch + "]|\\\\.)"; + } + var formatMatcher = { + regex: "/(" + escape("/") + "+)/", + onMatch: function (val, state, stack) { + var ts = stack[0]; + ts.fmtString = true; + ts.guard = val.slice(1, -1); + ts.flag = ""; + return ""; + }, + next: "formatString" + }; + SnippetManager["$tokenizer"] = new Tokenizer({ + start: [ + { regex: /\\./, onMatch: function (val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) { + val = ch; + } + else if ("`$\\".indexOf(ch) != -1) { + val = ch; + } + return [val]; + } }, + { regex: /}/, onMatch: function (val, state, stack) { + return [stack.length ? stack.shift() : val]; + } }, + { regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken }, + { regex: /\$\{[\dA-Z_a-z]+/, onMatch: function (str, state, stack) { + var t = TabstopToken(str.substr(1)); + stack.unshift(t[0]); + return t; + }, next: "snippetVar" }, + { regex: /\n/, token: "newline", merge: false } + ], + snippetVar: [ + { regex: "\\|" + escape("\\|") + "*\\|", onMatch: function (val, state, stack) { + var choices = val.slice(1, -1).replace(/\\[,|\\]|,/g, function (operator) { + return operator.length == 2 ? operator[1] : "\x00"; + }).split("\x00").map(function (value) { + return { value: value }; + }); + stack[0].choices = choices; + return [choices[0]]; + }, next: "start" }, + formatMatcher, + { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start" } + ], + formatString: [ + { regex: /:/, onMatch: function (val, state, stack) { + if (stack.length && stack[0].expectElse) { + stack[0].expectElse = false; + stack[0].ifEnd = { elseEnd: stack[0] }; + return [stack[0].ifEnd]; + } + return ":"; + } }, + { regex: /\\./, onMatch: function (val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) + val = ch; + else if ("`$\\".indexOf(ch) != -1) + val = ch; + else if (ch == "n") + val = "\n"; + else if (ch == "t") + val = "\t"; + else if ("ulULE".indexOf(ch) != -1) + val = { changeCase: ch, local: ch > "a" }; + return [val]; + } }, + { regex: "/\\w*}", onMatch: function (val, state, stack) { + var next = stack.shift(); + if (next) + next.flag = val.slice(1, -1); + this.next = next && next.tabstopId ? "start" : ""; + return [next || val]; + }, next: "start" }, + { regex: /\$(?:\d+|\w+)/, onMatch: function (val, state, stack) { + return [{ text: val.slice(1) }]; + } }, + { regex: /\${\w+/, onMatch: function (val, state, stack) { + var token = { text: val.slice(2) }; + stack.unshift(token); + return [token]; + }, next: "formatStringVar" }, + { regex: /\n/, token: "newline", merge: false }, + { regex: /}/, onMatch: function (val, state, stack) { + var next = stack.shift(); + this.next = next && next.tabstopId ? "start" : ""; + return [next || val]; + }, next: "start" } + ], + formatStringVar: [ + { regex: /:\/\w+}/, onMatch: function (val, state, stack) { + var ts = stack[0]; + ts.formatFunction = val.slice(2, -1); + return [stack.shift()]; + }, next: "formatString" }, + formatMatcher, + { regex: /:[\?\-+]?/, onMatch: function (val, state, stack) { + if (val[1] == "+") + stack[0].ifEnd = stack[0]; + if (val[1] == "?") + stack[0].expectElse = true; + }, next: "formatString" }, + { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "formatString" } + ] + }); + return SnippetManager["$tokenizer"]; + }; + SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) { + return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) { + return x.value || x; + }); + }; + SnippetManager.prototype.getVariableValue = function (editor, name, indentation) { + if (/^\d+$/.test(name)) + return (this.variables.__ || {})[name] || ""; + if (/^[A-Z]\d+$/.test(name)) + return (this.variables[name[0] + "__"] || {})[name.substr(1)] || ""; + name = name.replace(/^TM_/, ""); + if (!this.variables.hasOwnProperty(name)) + return ""; + var value = this.variables[name]; + if (typeof value == "function") + value = this.variables[name](editor, name, indentation); + return value == null ? "" : value; + }; + SnippetManager.prototype.tmStrFormat = function (str, ch, editor) { + if (!ch.fmt) + return str; + var flag = ch.flag || ""; + var re = ch.guard; + re = new RegExp(re, flag.replace(/[^gim]/g, "")); + var fmtTokens = typeof ch.fmt == "string" ? this.tokenizeTmSnippet(ch.fmt, "formatString") : ch.fmt; + var _self = this; + var formatted = str.replace(re, function () { + var oldArgs = _self.variables.__; + _self.variables.__ = [].slice.call(arguments); + var fmtParts = _self.resolveVariables(fmtTokens, editor); + var gChangeCase = "E"; + for (var i = 0; i < fmtParts.length; i++) { + var ch = fmtParts[i]; + if (typeof ch == "object") { + fmtParts[i] = ""; + if (ch.changeCase && ch.local) { + var next = fmtParts[i + 1]; + if (next && typeof next == "string") { + if (ch.changeCase == "u") + fmtParts[i] = next[0].toUpperCase(); + else + fmtParts[i] = next[0].toLowerCase(); + fmtParts[i + 1] = next.substr(1); + } + } + else if (ch.changeCase) { + gChangeCase = ch.changeCase; + } + } + else if (gChangeCase == "U") { + fmtParts[i] = ch.toUpperCase(); + } + else if (gChangeCase == "L") { + fmtParts[i] = ch.toLowerCase(); + } + } + _self.variables.__ = oldArgs; + return fmtParts.join(""); + }); + return formatted; + }; + SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) { + if (ch.formatFunction == "upcase") + return str.toUpperCase(); + if (ch.formatFunction == "downcase") + return str.toLowerCase(); + return str; + }; + SnippetManager.prototype.resolveVariables = function (snippet, editor) { + var result = []; + var indentation = ""; + var afterNewLine = true; + for (var i = 0; i < snippet.length; i++) { + var ch = snippet[i]; + if (typeof ch == "string") { + result.push(ch); + if (ch == "\n") { + afterNewLine = true; + indentation = ""; + } + else if (afterNewLine) { + indentation = /^\t*/.exec(ch)[0]; + afterNewLine = /\S/.test(ch); + } + continue; + } + if (!ch) + continue; + afterNewLine = false; + if (ch.fmtString) { + var j = snippet.indexOf(ch, i + 1); + if (j == -1) + j = snippet.length; + ch.fmt = snippet.slice(i + 1, j); + i = j; + } + if (ch.text) { + var value = this.getVariableValue(editor, ch.text, indentation) + ""; + if (ch.fmtString) + value = this.tmStrFormat(value, ch, editor); + if (ch.formatFunction) + value = this.tmFormatFunction(value, ch, editor); + if (value && !ch.ifEnd) { + result.push(value); + gotoNext(ch); + } + else if (!value && ch.ifEnd) { + gotoNext(ch.ifEnd); + } + } + else if (ch.elseEnd) { + gotoNext(ch.elseEnd); + } + else if (ch.tabstopId != null) { + result.push(ch); + } + else if (ch.changeCase != null) { + result.push(ch); + } + } + function gotoNext(ch) { + var i1 = snippet.indexOf(ch, i + 1); + if (i1 != -1) + i = i1; + } + return result; + }; + SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) { + var processedSnippet = processSnippetText.call(this, editor, snippetText); + return processedSnippet.text; + }; + SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var processedSnippet = processSnippetText.call(this, editor, snippetText, options); + var range = editor.getSelectionRange(); + var end = editor.session.replace(range, processedSnippet.text); + var tabstopManager = new TabstopManager(editor); + var selectionId = editor.inVirtualSelectionMode && editor.selection.index; + tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId); + }; + SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var self = this; + if (editor.inVirtualSelectionMode) + return self.insertSnippetForSelection(editor, snippetText, options); + editor.forEachSelection(function () { + self.insertSnippetForSelection(editor, snippetText, options); + }, null, { keepOrder: true }); + if (editor.tabstopManager) + editor.tabstopManager.tabNext(); + }; + SnippetManager.prototype.$getScope = function (editor) { + var scope = editor.session.$mode.$id || ""; + scope = scope.split("/").pop(); + if (scope === "html" || scope === "php") { + if (scope === "php" && !editor.session.$mode.inlinePhp) + scope = "html"; + var c = editor.getCursorPosition(); + var state = editor.session.getState(c.row); + if (typeof state === "object") { + state = state[0]; + } + if (state.substring) { + if (state.substring(0, 3) == "js-") + scope = "javascript"; + else if (state.substring(0, 4) == "css-") + scope = "css"; + else if (state.substring(0, 4) == "php-") + scope = "php"; + } + } + return scope; + }; + SnippetManager.prototype.getActiveScopes = function (editor) { + var scope = this.$getScope(editor); + var scopes = [scope]; + var snippetMap = this.snippetMap; + if (snippetMap[scope] && snippetMap[scope].includeScopes) { + scopes.push.apply(scopes, snippetMap[scope].includeScopes); + } + scopes.push("_"); + return scopes; + }; + SnippetManager.prototype.expandWithTab = function (editor, options) { + var self = this; + var result = editor.forEachSelection(function () { + return self.expandSnippetForSelection(editor, options); + }, null, { keepOrder: true }); + if (result && editor.tabstopManager) + editor.tabstopManager.tabNext(); + return result; + }; + SnippetManager.prototype.expandSnippetForSelection = function (editor, options) { + var cursor = editor.getCursorPosition(); + var line = editor.session.getLine(cursor.row); + var before = line.substring(0, cursor.column); + var after = line.substr(cursor.column); + var snippetMap = this.snippetMap; + var snippet; + this.getActiveScopes(editor).some(function (scope) { + var snippets = snippetMap[scope]; + if (snippets) + snippet = this.findMatchingSnippet(snippets, before, after); + return !!snippet; + }, this); + if (!snippet) + return false; + if (options && options.dryRun) + return true; + editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length); + this.variables.M__ = snippet.matchBefore; + this.variables.T__ = snippet.matchAfter; + this.insertSnippetForSelection(editor, snippet.content); + this.variables.M__ = this.variables.T__ = null; + return true; + }; + SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) { + for (var i = snippetList.length; i--;) { + var s = snippetList[i]; + if (s.startRe && !s.startRe.test(before)) + continue; + if (s.endRe && !s.endRe.test(after)) + continue; + if (!s.startRe && !s.endRe) + continue; + s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; + s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; + s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; + s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; + return s; + } + }; + SnippetManager.prototype.register = function (snippets, scope) { + var snippetMap = this.snippetMap; + var snippetNameMap = this.snippetNameMap; + var self = this; + if (!snippets) + snippets = []; + function wrapRegexp(src) { + if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) + src = "(?:" + src + ")"; + return src || ""; + } + function guardedRegexp(re, guard, opening) { + re = wrapRegexp(re); + guard = wrapRegexp(guard); + if (opening) { + re = guard + re; + if (re && re[re.length - 1] != "$") + re = re + "$"; + } + else { + re = re + guard; + if (re && re[0] != "^") + re = "^" + re; + } + return new RegExp(re); + } + function addSnippet(s) { + if (!s.scope) + s.scope = scope || "_"; + scope = s.scope; + if (!snippetMap[scope]) { + snippetMap[scope] = []; + snippetNameMap[scope] = {}; + } + var map = snippetNameMap[scope]; + if (s.name) { + var old = map[s.name]; + if (old) + self.unregister(old); + map[s.name] = s; + } + snippetMap[scope].push(s); + if (s.prefix) + s.tabTrigger = s.prefix; + if (!s.content && s.body) + s.content = Array.isArray(s.body) ? s.body.join("\n") : s.body; + if (s.tabTrigger && !s.trigger) { + if (!s.guard && /^\w/.test(s.tabTrigger)) + s.guard = "\\b"; + s.trigger = lang.escapeRegExp(s.tabTrigger); + } + if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) + return; + s.startRe = guardedRegexp(s.trigger, s.guard, true); + s.triggerRe = new RegExp(s.trigger); + s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); + s.endTriggerRe = new RegExp(s.endTrigger); + } + if (Array.isArray(snippets)) { + snippets.forEach(addSnippet); + } + else { + Object.keys(snippets).forEach(function (key) { + addSnippet(snippets[key]); + }); + } + this._signal("registerSnippets", { scope: scope }); + }; + SnippetManager.prototype.unregister = function (snippets, scope) { + var snippetMap = this.snippetMap; + var snippetNameMap = this.snippetNameMap; + function removeSnippet(s) { + var nameMap = snippetNameMap[s.scope || scope]; + if (nameMap && nameMap[s.name]) { + delete nameMap[s.name]; + var map = snippetMap[s.scope || scope]; + var i = map && map.indexOf(s); + if (i >= 0) + map.splice(i, 1); + } + } + if (snippets.content) + removeSnippet(snippets); + else if (Array.isArray(snippets)) + snippets.forEach(removeSnippet); + }; + SnippetManager.prototype.parseSnippetFile = function (str) { + str = str.replace(/\r/g, ""); + var list = [], /**@type{Snippet}*/ snippet = {}; + var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; + var m; + while (m = re.exec(str)) { + if (m[1]) { + try { + snippet = JSON.parse(m[1]); + list.push(snippet); + } + catch (e) { } + } + if (m[4]) { + snippet.content = m[4].replace(/^\t/gm, ""); + list.push(snippet); + snippet = {}; + } + else { + var key = m[2], val = m[3]; + if (key == "regex") { + var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; + snippet.guard = guardRe.exec(val)[1]; + snippet.trigger = guardRe.exec(val)[1]; + snippet.endTrigger = guardRe.exec(val)[1]; + snippet.endGuard = guardRe.exec(val)[1]; + } + else if (key == "snippet") { + snippet.tabTrigger = val.match(/^\S*/)[0]; + if (!snippet.name) + snippet.name = val; + } + else if (key) { + snippet[key] = val; + } + } + } + return list; + }; + SnippetManager.prototype.getSnippetByName = function (name, editor) { + var snippetMap = this.snippetNameMap; + var snippet; + this.getActiveScopes(editor).some(function (scope) { + var snippets = snippetMap[scope]; + if (snippets) + snippet = snippets[name]; + return !!snippet; + }, this); + return snippet; + }; + return SnippetManager; +}()); +oop.implement(SnippetManager.prototype, EventEmitter); +var processSnippetText = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var cursor = editor.getCursorPosition(); + var line = editor.session.getLine(cursor.row); + var tabString = editor.session.getTabString(); + var indentString = line.match(/^\s*/)[0]; + if (cursor.column < indentString.length) + indentString = indentString.slice(0, cursor.column); + snippetText = snippetText.replace(/\r/g, ""); + var tokens = this.tokenizeTmSnippet(snippetText); + tokens = this.resolveVariables(tokens, editor); + tokens = tokens.map(function (x) { + if (x == "\n" && !options.excludeExtraIndent) + return x + indentString; + if (typeof x == "string") + return x.replace(/\t/g, tabString); + return x; + }); + var tabstops = []; + tokens.forEach(function (p, i) { + if (typeof p != "object") + return; + var id = p.tabstopId; + var ts = tabstops[id]; + if (!ts) { + ts = tabstops[id] = []; + ts.index = id; + ts.value = ""; + ts.parents = {}; + } + if (ts.indexOf(p) !== -1) + return; + if (p.choices && !ts.choices) + ts.choices = p.choices; + ts.push(p); + var i1 = tokens.indexOf(p, i + 1); + if (i1 === -1) + return; + var value = tokens.slice(i + 1, i1); + var isNested = value.some(function (t) { return typeof t === "object"; }); + if (isNested && !ts.value) { + ts.value = value; + } + else if (value.length && (!ts.value || typeof ts.value !== "string")) { + ts.value = value.join(""); + } + }); + tabstops.forEach(function (ts) { ts.length = 0; }); + var expanding = {}; + function copyValue(val) { + var copy = []; + for (var i = 0; i < val.length; i++) { + var p = val[i]; + if (typeof p == "object") { + if (expanding[p.tabstopId]) + continue; + var j = val.lastIndexOf(p, i - 1); + p = copy[j] || { tabstopId: p.tabstopId }; + } + copy[i] = p; + } + return copy; + } + for (var i = 0; i < tokens.length; i++) { + var p = tokens[i]; + if (typeof p != "object") + continue; + var id = p.tabstopId; + var ts = tabstops[id]; + var i1 = tokens.indexOf(p, i + 1); + if (expanding[id]) { + if (expanding[id] === p) { + delete expanding[id]; + Object.keys(expanding).forEach(function (parentId) { + ts.parents[parentId] = true; + }); + } + continue; + } + expanding[id] = p; + var value = ts.value; + if (typeof value !== "string") + value = copyValue(value); + else if (p.fmt) + value = this.tmStrFormat(value, p, editor); + tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p)); + if (ts.indexOf(p) === -1) + ts.push(p); + } + var row = 0, column = 0; + var text = ""; + tokens.forEach(function (t) { + if (typeof t === "string") { + var lines = t.split("\n"); + if (lines.length > 1) { + column = lines[lines.length - 1].length; + row += lines.length - 1; + } + else + column += t.length; + text += t; + } + else if (t) { + if (!t.start) + t.start = { row: row, column: column }; + else + t.end = { row: row, column: column }; + } + }); + return { + text: text, + tabstops: tabstops, + tokens: tokens + }; +}; +var TabstopManager = /** @class */ (function () { + function TabstopManager(editor) { + this.index = 0; + this.ranges = []; + this.tabstops = []; + if (editor.tabstopManager) + return editor.tabstopManager; + editor.tabstopManager = this; + this.$onChange = this.onChange.bind(this); + this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; + this.$onChangeSession = this.onChangeSession.bind(this); + this.$onAfterExec = this.onAfterExec.bind(this); + this.attach(editor); + } + TabstopManager.prototype.attach = function (editor) { + this.$openTabstops = null; + this.selectedTabstop = null; + this.editor = editor; + this.session = editor.session; + this.editor.on("change", this.$onChange); + this.editor.on("changeSelection", this.$onChangeSelection); + this.editor.on("changeSession", this.$onChangeSession); + this.editor.commands.on("afterExec", this.$onAfterExec); + this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + }; + TabstopManager.prototype.detach = function () { + this.tabstops.forEach(this.removeTabstopMarkers, this); + this.ranges.length = 0; + this.tabstops.length = 0; + this.selectedTabstop = null; + this.editor.off("change", this.$onChange); + this.editor.off("changeSelection", this.$onChangeSelection); + this.editor.off("changeSession", this.$onChangeSession); + this.editor.commands.off("afterExec", this.$onAfterExec); + this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); + this.editor.tabstopManager = null; + this.session = null; + this.editor = null; + }; + TabstopManager.prototype.onChange = function (delta) { + var isRemove = delta.action[0] == "r"; + var selectedTabstop = this.selectedTabstop || {}; + var parents = selectedTabstop.parents || {}; + var tabstops = this.tabstops.slice(); + for (var i = 0; i < tabstops.length; i++) { + var ts = tabstops[i]; + var active = ts == selectedTabstop || parents[ts.index]; + ts.rangeList.$bias = active ? 0 : 1; + if (delta.action == "remove" && ts !== selectedTabstop) { + var parentActive = ts.parents && ts.parents[selectedTabstop.index]; + var startIndex = ts.rangeList.pointIndex(delta.start, parentActive); + startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1; + var endIndex = ts.rangeList.pointIndex(delta.end, parentActive); + endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1; + var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex); + for (var j = 0; j < toRemove.length; j++) + this.removeRange(toRemove[j]); + } + ts.rangeList.$onChange(delta); + } + var session = this.session; + if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue()) + this.detach(); + }; + TabstopManager.prototype.updateLinkedFields = function () { + var ts = this.selectedTabstop; + if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked) + return; + this.$inChange = true; + var session = this.session; + var text = session.getTextRange(ts.firstNonLinked); + for (var i = 0; i < ts.length; i++) { + var range = ts[i]; + if (!range.linked) + continue; + var original = range.original; + var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor); + session.replace(range, fmt); + } + this.$inChange = false; + }; + TabstopManager.prototype.onAfterExec = function (e) { + if (e.command && !e.command.readOnly) + this.updateLinkedFields(); + }; + TabstopManager.prototype.onChangeSelection = function () { + if (!this.editor) + return; + var lead = this.editor.selection.lead; + var anchor = this.editor.selection.anchor; + var isEmpty = this.editor.selection.isEmpty(); + for (var i = 0; i < this.ranges.length; i++) { + if (this.ranges[i].linked) + continue; + var containsLead = this.ranges[i].contains(lead.row, lead.column); + var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); + if (containsLead && containsAnchor) + return; + } + this.detach(); + }; + TabstopManager.prototype.onChangeSession = function () { + this.detach(); + }; + TabstopManager.prototype.tabNext = function (dir) { + var max = this.tabstops.length; + var index = this.index + (dir || 1); + index = Math.min(Math.max(index, 1), max); + if (index == max) + index = 0; + this.selectTabstop(index); + this.updateTabstopMarkers(); + if (index === 0) { + this.detach(); + } + }; + TabstopManager.prototype.selectTabstop = function (index) { + this.$openTabstops = null; + var ts = this.tabstops[this.index]; + if (ts) + this.addTabstopMarkers(ts); + this.index = index; + ts = this.tabstops[this.index]; + if (!ts || !ts.length) + return; + this.selectedTabstop = ts; + var range = ts.firstNonLinked || ts; + if (ts.choices) + range.cursor = range.start; + if (!this.editor.inVirtualSelectionMode) { + var sel = this.editor.multiSelect; + sel.toSingleRange(range); + for (var i = 0; i < ts.length; i++) { + if (ts.hasLinkedRanges && ts[i].linked) + continue; + sel.addRange(ts[i].clone(), true); + } + } + else { + this.editor.selection.fromOrientedRange(range); + } + this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + if (this.selectedTabstop && this.selectedTabstop.choices) + this.editor.execCommand("startAutocomplete", { matches: this.selectedTabstop.choices }); + }; + TabstopManager.prototype.addTabstops = function (tabstops, start, end) { + var useLink = this.useLink || !this.editor.getOption("enableMultiselect"); + if (!this.$openTabstops) + this.$openTabstops = []; + if (!tabstops[0]) { + var p = Range.fromPoints(end, end); + moveRelative(p.start, start); + moveRelative(p.end, start); + tabstops[0] = [p]; + tabstops[0].index = 0; + } + var i = this.index; + var arg = [i + 1, 0]; + var ranges = this.ranges; + var snippetId = this.snippetId = (this.snippetId || 0) + 1; + tabstops.forEach(function (ts, index) { + var dest = this.$openTabstops[index] || ts; + dest.snippetId = snippetId; + for (var i = 0; i < ts.length; i++) { + var p = ts[i]; + var range = Range.fromPoints(p.start, p.end || p.start); + movePoint(range.start, start); + movePoint(range.end, start); + range.original = p; + range.tabstop = dest; + ranges.push(range); + if (dest != ts) + dest.unshift(range); + else + dest[i] = range; + if (p.fmtString || (dest.firstNonLinked && useLink)) { + range.linked = true; + dest.hasLinkedRanges = true; + } + else if (!dest.firstNonLinked) + dest.firstNonLinked = range; + } + if (!dest.firstNonLinked) + dest.hasLinkedRanges = false; + if (dest === ts) { + arg.push(dest); + this.$openTabstops[index] = dest; + } + this.addTabstopMarkers(dest); + dest.rangeList = dest.rangeList || new RangeList(); + dest.rangeList.$bias = 0; + dest.rangeList.addList(dest); + }, this); + if (arg.length > 2) { + if (this.tabstops.length) + arg.push(arg.splice(2, 1)[0]); + this.tabstops.splice.apply(this.tabstops, arg); + } + }; + TabstopManager.prototype.addTabstopMarkers = function (ts) { + var session = this.session; + ts.forEach(function (range) { + if (!range.markerId) + range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); + }); + }; + TabstopManager.prototype.removeTabstopMarkers = function (ts) { + var session = this.session; + ts.forEach(function (range) { + session.removeMarker(range.markerId); + range.markerId = null; + }); + }; + TabstopManager.prototype.updateTabstopMarkers = function () { + if (!this.selectedTabstop) + return; + var currentSnippetId = this.selectedTabstop.snippetId; + if (this.selectedTabstop.index === 0) { + currentSnippetId--; + } + this.tabstops.forEach(function (ts) { + if (ts.snippetId === currentSnippetId) + this.addTabstopMarkers(ts); + else + this.removeTabstopMarkers(ts); + }, this); + }; + TabstopManager.prototype.removeRange = function (range) { + var i = range.tabstop.indexOf(range); + if (i != -1) + range.tabstop.splice(i, 1); + i = this.ranges.indexOf(range); + if (i != -1) + this.ranges.splice(i, 1); + i = range.tabstop.rangeList.ranges.indexOf(range); + if (i != -1) + range.tabstop.splice(i, 1); + this.session.removeMarker(range.markerId); + if (!range.tabstop.length) { + i = this.tabstops.indexOf(range.tabstop); + if (i != -1) + this.tabstops.splice(i, 1); + if (!this.tabstops.length) + this.detach(); + } + }; + return TabstopManager; +}()); +TabstopManager.prototype.keyboardHandler = new HashHandler(); +TabstopManager.prototype.keyboardHandler.bindKeys({ + "Tab": function (editor) { + if (exports.snippetManager && exports.snippetManager.expandWithTab(editor)) + return; + editor.tabstopManager.tabNext(1); + editor.renderer.scrollCursorIntoView(); + }, + "Shift-Tab": function (editor) { + editor.tabstopManager.tabNext(-1); + editor.renderer.scrollCursorIntoView(); + }, + "Esc": function (editor) { + editor.tabstopManager.detach(); + } +}); +var movePoint = function (point, diff) { + if (point.row == 0) + point.column += diff.column; + point.row += diff.row; +}; +var moveRelative = function (point, start) { + if (point.row == start.row) + point.column -= start.column; + point.row -= start.row; +}; +dom.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}", "snippets.css", false); +exports.snippetManager = new SnippetManager(); +var Editor = require("./editor").Editor; +(function () { + this.insertSnippet = function (content, options) { + return exports.snippetManager.insertSnippet(this, content, options); + }; + this.expandSnippet = function (options) { + return exports.snippetManager.expandWithTab(this, options); + }; +}).call(Editor.prototype); + +}); + +define("ace/autocomplete/inline_screenreader",["require","exports","module"], function(require, exports, module){"use strict"; +var AceInlineScreenReader = /** @class */ (function () { + function AceInlineScreenReader(editor) { + this.editor = editor; + this.screenReaderDiv = document.createElement("div"); + this.screenReaderDiv.classList.add("ace_screenreader-only"); + this.editor.container.appendChild(this.screenReaderDiv); + } + AceInlineScreenReader.prototype.setScreenReaderContent = function (content) { + if (!this.popup && this.editor.completer && /**@type{import("../autocomplete").Autocomplete}*/ (this.editor.completer).popup) { + this.popup = /**@type{import("../autocomplete").Autocomplete}*/ (this.editor.completer).popup; + this.popup.renderer.on("afterRender", function () { + var row = this.popup.getRow(); + var t = this.popup.renderer.$textLayer; + var selected = t.element.childNodes[row - t.config.firstRow]; + if (selected) { + var idString = "doc-tooltip "; + for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) { + idString += "ace-inline-screenreader-line-".concat(lineIndex, " "); + } + selected.setAttribute("aria-describedby", idString); + } + }.bind(this)); + } + while (this.screenReaderDiv.firstChild) { + this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild); + } + this._lines = content.split(/\r\n|\r|\n/); + var codeElement = this.createCodeBlock(); + this.screenReaderDiv.appendChild(codeElement); + }; + AceInlineScreenReader.prototype.destroy = function () { + this.screenReaderDiv.remove(); + }; + AceInlineScreenReader.prototype.createCodeBlock = function () { + var container = document.createElement("pre"); + container.setAttribute("id", "ace-inline-screenreader"); + for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) { + var codeElement = document.createElement("code"); + codeElement.setAttribute("id", "ace-inline-screenreader-line-".concat(lineIndex)); + var line = document.createTextNode(this._lines[lineIndex]); + codeElement.appendChild(line); + container.appendChild(codeElement); + } + return container; + }; + return AceInlineScreenReader; +}()); +exports.AceInlineScreenReader = AceInlineScreenReader; + +}); + +define("ace/autocomplete/inline",["require","exports","module","ace/snippets","ace/autocomplete/inline_screenreader"], function(require, exports, module){"use strict"; +var snippetManager = require("../snippets").snippetManager; +var AceInlineScreenReader = require("./inline_screenreader").AceInlineScreenReader; +var AceInline = /** @class */ (function () { + function AceInline() { + this.editor = null; + } + AceInline.prototype.show = function (editor, completion, prefix) { + prefix = prefix || ""; + if (editor && this.editor && this.editor !== editor) { + this.hide(); + this.editor = null; + this.inlineScreenReader = null; + } + if (!editor || !completion) { + return false; + } + if (!this.inlineScreenReader) { + this.inlineScreenReader = new AceInlineScreenReader(editor); + } + var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value; + if (completion.hideInlinePreview || !displayText || !displayText.startsWith(prefix)) { + return false; + } + this.editor = editor; + this.inlineScreenReader.setScreenReaderContent(displayText); + displayText = displayText.slice(prefix.length); + if (displayText === "") { + editor.removeGhostText(); + } + else { + editor.setGhostText(displayText); + } + return true; + }; + AceInline.prototype.isOpen = function () { + if (!this.editor) { + return false; + } + return !!this.editor.renderer.$ghostText; + }; + AceInline.prototype.hide = function () { + if (!this.editor) { + return false; + } + this.editor.removeGhostText(); + return true; + }; + AceInline.prototype.destroy = function () { + this.hide(); + this.editor = null; + if (this.inlineScreenReader) { + this.inlineScreenReader.destroy(); + this.inlineScreenReader = null; + } + }; + return AceInline; +}()); +exports.AceInline = AceInline; + +}); + +define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"], function(require, exports, module){"use strict"; +var Renderer = require("../virtual_renderer").VirtualRenderer; +var Editor = require("../editor").Editor; +var Range = require("../range").Range; +var event = require("../lib/event"); +var lang = require("../lib/lang"); +var dom = require("../lib/dom"); +var nls = require("../config").nls; +var userAgent = require("./../lib/useragent"); +var getAriaId = function (index) { + return "suggest-aria-id:".concat(index); +}; +var popupAriaRole = userAgent.isSafari ? "menu" : "listbox"; +var optionAriaRole = userAgent.isSafari ? "menuitem" : "option"; +var ariaActiveState = userAgent.isSafari ? "aria-current" : "aria-selected"; +var $singleLineEditor = function (el) { + var renderer = new Renderer(el); + renderer.$maxLines = 4; + var editor = new Editor(renderer); + editor.setHighlightActiveLine(false); + editor.setShowPrintMargin(false); + editor.renderer.setShowGutter(false); + editor.renderer.setHighlightGutterLine(false); + editor.$mouseHandler.$focusTimeout = 0; + editor.$highlightTagPending = true; + return editor; +}; +var AcePopup = /** @class */ (function () { + function AcePopup(parentNode) { + var el = dom.createElement("div"); + var popup = $singleLineEditor(el); + if (parentNode) { + parentNode.appendChild(el); + } + el.style.display = "none"; + popup.renderer.content.style.cursor = "default"; + popup.renderer.setStyle("ace_autocomplete"); + popup.renderer.$textLayer.element.setAttribute("role", popupAriaRole); + popup.renderer.$textLayer.element.setAttribute("aria-roledescription", nls("Autocomplete suggestions")); + popup.renderer.$textLayer.element.setAttribute("aria-label", nls("Autocomplete suggestions")); + popup.renderer.textarea.setAttribute("aria-hidden", "true"); + popup.setOption("displayIndentGuides", false); + popup.setOption("dragDelay", 150); + var noop = function () { }; + popup.focus = noop; + popup.$isFocused = true; + popup.renderer.$cursorLayer.restartTimer = noop; + popup.renderer.$cursorLayer.element.style.opacity = "0"; + popup.renderer.$maxLines = 8; + popup.renderer.$keepTextAreaAtCursor = false; + popup.setHighlightActiveLine(false); + popup.session.highlight(""); + popup.session.$searchHighlight.clazz = "ace_highlight-marker"; + popup.on("mousedown", function (e) { + var pos = e.getDocumentPosition(); + popup.selection.moveToPosition(pos); + selectionMarker.start.row = selectionMarker.end.row = pos.row; + e.stop(); + }); + var lastMouseEvent; + var hoverMarker = new Range(-1, 0, -1, Infinity); + var selectionMarker = new Range(-1, 0, -1, Infinity); + selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); + popup.setSelectOnHover = function (val) { + if (!val) { + hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); + } + else if (hoverMarker.id) { + popup.session.removeMarker(hoverMarker.id); + hoverMarker.id = null; + } + }; + popup.setSelectOnHover(false); + popup.on("mousemove", function (e) { + if (!lastMouseEvent) { + lastMouseEvent = e; + return; + } + if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { + return; + } + lastMouseEvent = e; + lastMouseEvent.scrollTop = popup.renderer.scrollTop; + popup.isMouseOver = true; + var row = lastMouseEvent.getDocumentPosition().row; + if (hoverMarker.start.row != row) { + if (!hoverMarker.id) + popup.setRow(row); + setHoverMarker(row); + } + }); + popup.renderer.on("beforeRender", function () { + if (lastMouseEvent && hoverMarker.start.row != -1) { + lastMouseEvent.$pos = null; + var row = lastMouseEvent.getDocumentPosition().row; + if (!hoverMarker.id) + popup.setRow(row); + setHoverMarker(row, true); + } + }); + popup.renderer.on("afterRender", function () { + var row = popup.getRow(); + var t = popup.renderer.$textLayer; + var selected = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]); + var el = document.activeElement; // Active element is textarea of main editor + if (selected !== popup.selectedNode && popup.selectedNode) { + dom.removeCssClass(popup.selectedNode, "ace_selected"); + el.removeAttribute("aria-activedescendant"); + popup.selectedNode.removeAttribute(ariaActiveState); + popup.selectedNode.removeAttribute("id"); + } + popup.selectedNode = selected; + if (selected) { + dom.addCssClass(selected, "ace_selected"); + var ariaId = getAriaId(row); + selected.id = ariaId; + t.element.setAttribute("aria-activedescendant", ariaId); + el.setAttribute("aria-activedescendant", ariaId); + selected.setAttribute("role", optionAriaRole); + selected.setAttribute("aria-roledescription", nls("item")); + selected.setAttribute("aria-label", popup.getData(row).caption || popup.getData(row).value); + selected.setAttribute("aria-setsize", popup.data.length); + selected.setAttribute("aria-posinset", row + 1); + selected.setAttribute("aria-describedby", "doc-tooltip"); + selected.setAttribute(ariaActiveState, "true"); + } + }); + var hideHoverMarker = function () { setHoverMarker(-1); }; + var setHoverMarker = function (row, suppressRedraw) { + if (row !== hoverMarker.start.row) { + hoverMarker.start.row = hoverMarker.end.row = row; + if (!suppressRedraw) + popup.session._emit("changeBackMarker"); + popup._emit("changeHoverMarker"); + } + }; + popup.getHoveredRow = function () { + return hoverMarker.start.row; + }; + event.addListener(popup.container, "mouseout", function () { + popup.isMouseOver = false; + hideHoverMarker(); + }); + popup.on("hide", hideHoverMarker); + popup.on("changeSelection", hideHoverMarker); + popup.session.doc.getLength = function () { + return popup.data.length; + }; + popup.session.doc.getLine = function (i) { + var data = popup.data[i]; + if (typeof data == "string") + return data; + return (data && data.value) || ""; + }; + var bgTokenizer = popup.session.bgTokenizer; + bgTokenizer.$tokenizeRow = function (row) { + var data = popup.data[row]; + var tokens = []; + if (!data) + return tokens; + if (typeof data == "string") + data = { value: data }; + var caption = data.caption || data.value || data.name; + function addToken(value, className) { + value && tokens.push({ + type: (data.className || "") + (className || ""), + value: value + }); + } + var lower = caption.toLowerCase(); + var filterText = (popup.filterText || "").toLowerCase(); + var lastIndex = 0; + var lastI = 0; + for (var i = 0; i <= filterText.length; i++) { + if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) { + var sub = filterText.slice(lastI, i); + lastI = i; + var index = lower.indexOf(sub, lastIndex); + if (index == -1) + continue; + addToken(caption.slice(lastIndex, index), ""); + lastIndex = index + sub.length; + addToken(caption.slice(index, lastIndex), "completion-highlight"); + } + } + addToken(caption.slice(lastIndex, caption.length), ""); + tokens.push({ type: "completion-spacer", value: " " }); + if (data.meta) + tokens.push({ type: "completion-meta", value: data.meta }); + if (data.message) + tokens.push({ type: "completion-message", value: data.message }); + return tokens; + }; + bgTokenizer.$updateOnChange = noop; + bgTokenizer.start = noop; + popup.session.$computeWidth = function () { + return this.screenWidth = 0; + }; + popup.isOpen = false; + popup.isTopdown = false; + popup.autoSelect = true; + popup.filterText = ""; + popup.isMouseOver = false; + popup.data = []; + popup.setData = function (list, filterText) { + popup.filterText = filterText || ""; + popup.setValue(lang.stringRepeat("\n", list.length), -1); + popup.data = list || []; + popup.setRow(0); + }; + popup.getData = function (row) { + return popup.data[row]; + }; + popup.getRow = function () { + return selectionMarker.start.row; + }; + popup.setRow = function (line) { + line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length - 1, line)); + if (selectionMarker.start.row != line) { + popup.selection.clearSelection(); + selectionMarker.start.row = selectionMarker.end.row = line || 0; + popup.session._emit("changeBackMarker"); + popup.moveCursorTo(line || 0, 0); + if (popup.isOpen) + popup._signal("select"); + } + }; + popup.on("changeSelection", function () { + if (popup.isOpen) + popup.setRow(popup.selection.lead.row); + popup.renderer.scrollCursorIntoView(); + }); + popup.hide = function () { + this.container.style.display = "none"; + popup.anchorPos = null; + popup.anchor = null; + if (popup.isOpen) { + popup.isOpen = false; + this._signal("hide"); + } + }; + popup.tryShow = function (pos, lineHeight, anchor, forceShow) { + if (!forceShow && popup.isOpen && popup.anchorPos && popup.anchor && + popup.anchorPos.top === pos.top && popup.anchorPos.left === pos.left && + popup.anchor === anchor) { + return true; + } + var el = this.container; + var screenHeight = window.innerHeight; + var screenWidth = window.innerWidth; + var renderer = this.renderer; + var maxH = renderer.$maxLines * lineHeight * 1.4; + var dims = { top: 0, bottom: 0, left: 0 }; + var spaceBelow = screenHeight - pos.top - 3 * this.$borderSize - lineHeight; + var spaceAbove = pos.top - 3 * this.$borderSize; + if (!anchor) { + if (spaceAbove <= spaceBelow || spaceBelow >= maxH) { + anchor = "bottom"; + } + else { + anchor = "top"; + } + } + if (anchor === "top") { + dims.bottom = pos.top - this.$borderSize; + dims.top = dims.bottom - maxH; + } + else if (anchor === "bottom") { + dims.top = pos.top + lineHeight + this.$borderSize; + dims.bottom = dims.top + maxH; + } + var fitsX = dims.top >= 0 && dims.bottom <= screenHeight; + if (!forceShow && !fitsX) { + return false; + } + if (!fitsX) { + if (anchor === "top") { + renderer.$maxPixelHeight = spaceAbove; + } + else { + renderer.$maxPixelHeight = spaceBelow; + } + } + else { + renderer.$maxPixelHeight = null; + } + if (anchor === "top") { + el.style.top = ""; + el.style.bottom = (screenHeight - dims.bottom) + "px"; + popup.isTopdown = false; + } + else { + el.style.top = dims.top + "px"; + el.style.bottom = ""; + popup.isTopdown = true; + } + el.style.display = ""; + var left = pos.left; + if (left + el.offsetWidth > screenWidth) + left = screenWidth - el.offsetWidth; + el.style.left = left + "px"; + el.style.right = ""; + if (!popup.isOpen) { + popup.isOpen = true; + this._signal("show"); + lastMouseEvent = null; + } + popup.anchorPos = pos; + popup.anchor = anchor; + return true; + }; + popup.show = function (pos, lineHeight, topdownOnly) { + this.tryShow(pos, lineHeight, topdownOnly ? "bottom" : undefined, true); + }; + popup.goTo = function (where) { + var row = this.getRow(); + var max = this.session.getLength() - 1; + switch (where) { + case "up": + row = row <= 0 ? max : row - 1; + break; + case "down": + row = row >= max ? -1 : row + 1; + break; + case "start": + row = 0; + break; + case "end": + row = max; + break; + } + this.setRow(row); + }; + popup.getTextLeftOffset = function () { + return this.$borderSize + this.renderer.$padding + this.$imageSize; + }; + popup.$imageSize = 0; + popup.$borderSize = 1; + return popup; + } + return AcePopup; +}()); +dom.importCssString("\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin-left: 0.9em;\n}\n.ace_completion-message {\n margin-left: 0.9em;\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}\n.ace_autocomplete .ace_text-layer {\n width: calc(100% - 8px);\n}\n.ace_autocomplete .ace_line {\n display: flex;\n align-items: center;\n}\n.ace_autocomplete .ace_line > * {\n min-width: 0;\n flex: 0 0 auto;\n}\n.ace_autocomplete .ace_line .ace_ {\n flex: 0 1 auto;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.ace_autocomplete .ace_completion-spacer {\n flex: 1;\n}\n.ace_autocomplete.ace_loading:after {\n content: \"\";\n position: absolute;\n top: 0px;\n height: 2px;\n width: 8%;\n background: blue;\n z-index: 100;\n animation: ace_progress 3s infinite linear;\n animation-delay: 300ms;\n transform: translateX(-100%) scaleX(1);\n}\n@keyframes ace_progress {\n 0% { transform: translateX(-100%) scaleX(1) }\n 50% { transform: translateX(625%) scaleX(2) } \n 100% { transform: translateX(1500%) scaleX(3) } \n}\n@media (prefers-reduced-motion) {\n .ace_autocomplete.ace_loading:after {\n transform: translateX(625%) scaleX(2);\n animation: none;\n }\n}\n", "autocompletion.css", false); +exports.AcePopup = AcePopup; +exports.$singleLineEditor = $singleLineEditor; +exports.getAriaId = getAriaId; + +}); + +define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module){"use strict"; +exports.parForEach = function (array, fn, callback) { + var completed = 0; + var arLength = array.length; + if (arLength === 0) + callback(); + for (var i = 0; i < arLength; i++) { + fn(array[i], function (result, err) { + completed++; + if (completed === arLength) + callback(result, err); + }); + } +}; +var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/; +exports.retrievePrecedingIdentifier = function (text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos - 1; i >= 0; i--) { + if (regex.test(text[i])) + buf.push(text[i]); + else + break; + } + return buf.reverse().join(""); +}; +exports.retrieveFollowingIdentifier = function (text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos; i < text.length; i++) { + if (regex.test(text[i])) + buf.push(text[i]); + else + break; + } + return buf; +}; +exports.getCompletionPrefix = function (editor) { + var pos = editor.getCursorPosition(); + var line = editor.session.getLine(pos.row); + var prefix; + editor.completers.forEach(function (completer) { + if (completer.identifierRegexps) { + completer.identifierRegexps.forEach(function (identifierRegex) { + if (!prefix && identifierRegex) + prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex); + }.bind(this)); + } + }.bind(this)); + return prefix || this.retrievePrecedingIdentifier(line, pos.column); +}; +exports.triggerAutocomplete = function (editor) { + var pos = editor.getCursorPosition(); + var line = editor.session.getLine(pos.row); + var column = (pos.column === 0) ? 0 : pos.column - 1; + var previousChar = line[column]; + return editor.completers.some(function (el) { + if (el.triggerCharacters && Array.isArray(el.triggerCharacters)) { + return el.triggerCharacters.includes(previousChar); + } + }); +}; + +}); + +define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/inline","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/lang","ace/lib/dom","ace/snippets","ace/config","ace/lib/event","ace/lib/scroll"], function(require, exports, module){"use strict"; +var HashHandler = require("./keyboard/hash_handler").HashHandler; +var AcePopup = require("./autocomplete/popup").AcePopup; +var AceInline = require("./autocomplete/inline").AceInline; +var getAriaId = require("./autocomplete/popup").getAriaId; +var util = require("./autocomplete/util"); +var lang = require("./lib/lang"); +var dom = require("./lib/dom"); +var snippetManager = require("./snippets").snippetManager; +var config = require("./config"); +var event = require("./lib/event"); +var preventParentScroll = require("./lib/scroll").preventParentScroll; +var destroyCompleter = function (e, editor) { + editor.completer && editor.completer.destroy(); +}; +var Autocomplete = /** @class */ (function () { + function Autocomplete() { + this.autoInsert = false; + this.autoSelect = true; + this.autoShown = false; + this.exactMatch = false; + this.inlineEnabled = false; + this.keyboardHandler = new HashHandler(); + this.keyboardHandler.bindKeys(this.commands); + this.parentNode = null; + this.setSelectOnHover = false; + this.hasSeen = new Set(); + this.showLoadingState = false; + this.stickySelectionDelay = 500; + this.blurListener = this.blurListener.bind(this); + this.changeListener = this.changeListener.bind(this); + this.mousedownListener = this.mousedownListener.bind(this); + this.mousewheelListener = this.mousewheelListener.bind(this); + this.onLayoutChange = this.onLayoutChange.bind(this); + this.changeTimer = lang.delayedCall(function () { + this.updateCompletions(true); + }.bind(this)); + this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); + this.popupTimer = lang.delayedCall(this.$updatePopupPosition.bind(this), 50); + this.stickySelectionTimer = lang.delayedCall(function () { + this.stickySelection = true; + }.bind(this), this.stickySelectionDelay); + this.$firstOpenTimer = lang.delayedCall(/**@this{Autocomplete}*/ function () { + var initialPosition = this.completionProvider && this.completionProvider.initialPosition; + if (this.autoShown || (this.popup && this.popup.isOpen) || !initialPosition || this.editor.completers.length === 0) + return; + this.completions = new FilteredList(Autocomplete.completionsForLoading); + this.openPopup(this.editor, initialPosition.prefix, false); + this.popup.renderer.setStyle("ace_loading", true); + }.bind(this), this.stickySelectionDelay); + } + Object.defineProperty(Autocomplete, "completionsForLoading", { + get: function () { + return [{ + caption: config.nls("Loading..."), + value: "" + }]; + }, + enumerable: false, + configurable: true + }); + Autocomplete.prototype.$init = function () { + this.popup = new AcePopup(this.parentNode || document.body || document.documentElement); + this.popup.on("click", function (e) { + this.insertMatch(); + e.stop(); + }.bind(this)); + this.popup.focus = this.editor.focus.bind(this.editor); + this.popup.on("show", this.$onPopupShow.bind(this)); + this.popup.on("hide", this.$onHidePopup.bind(this)); + this.popup.on("select", this.$onPopupChange.bind(this)); + event.addListener(this.popup.container, "mouseout", this.mouseOutListener.bind(this)); + this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); + this.popup.renderer.on("afterRender", this.$onPopupRender.bind(this)); + return this.popup; + }; + Autocomplete.prototype.$initInline = function () { + if (!this.inlineEnabled || this.inlineRenderer) + return; + this.inlineRenderer = new AceInline(); + return this.inlineRenderer; + }; + Autocomplete.prototype.getPopup = function () { + return this.popup || this.$init(); + }; + Autocomplete.prototype.$onHidePopup = function () { + if (this.inlineRenderer) { + this.inlineRenderer.hide(); + } + this.hideDocTooltip(); + this.stickySelectionTimer.cancel(); + this.popupTimer.cancel(); + this.stickySelection = false; + }; + Autocomplete.prototype.$seen = function (completion) { + if (!this.hasSeen.has(completion) && completion && completion.completer && completion.completer.onSeen && typeof completion.completer.onSeen === "function") { + completion.completer.onSeen(this.editor, completion); + this.hasSeen.add(completion); + } + }; + Autocomplete.prototype.$onPopupChange = function (hide) { + if (this.inlineRenderer && this.inlineEnabled) { + var completion = hide ? null : this.popup.getData(this.popup.getRow()); + this.$updateGhostText(completion); + if (this.popup.isMouseOver && this.setSelectOnHover) { + this.tooltipTimer.call(null, null); + return; + } + this.popupTimer.schedule(); + this.tooltipTimer.schedule(); + } + else { + this.popupTimer.call(null, null); + this.tooltipTimer.call(null, null); + } + }; + Autocomplete.prototype.$updateGhostText = function (completion) { + var row = this.base.row; + var column = this.base.column; + var cursorColumn = this.editor.getCursorPosition().column; + var prefix = this.editor.session.getLine(row).slice(column, cursorColumn); + if (!this.inlineRenderer.show(this.editor, completion, prefix)) { + this.inlineRenderer.hide(); + } + else { + this.$seen(completion); + } + }; + Autocomplete.prototype.$onPopupRender = function () { + var inlineEnabled = this.inlineRenderer && this.inlineEnabled; + if (this.completions && this.completions.filtered && this.completions.filtered.length > 0) { + for (var i = this.popup.getFirstVisibleRow(); i <= this.popup.getLastVisibleRow(); i++) { + var completion = this.popup.getData(i); + if (completion && (!inlineEnabled || completion.hideInlinePreview)) { + this.$seen(completion); + } + } + } + }; + Autocomplete.prototype.$onPopupShow = function (hide) { + this.$onPopupChange(hide); + this.stickySelection = false; + if (this.stickySelectionDelay >= 0) + this.stickySelectionTimer.schedule(this.stickySelectionDelay); + }; + Autocomplete.prototype.observeLayoutChanges = function () { + if (this.$elements || !this.editor) + return; + window.addEventListener("resize", this.onLayoutChange, { passive: true }); + window.addEventListener("wheel", this.mousewheelListener); + var el = this.editor.container.parentNode; + var elements = []; + while (el) { + elements.push(el); + el.addEventListener("scroll", this.onLayoutChange, { passive: true }); + el = el.parentNode; + } + this.$elements = elements; + }; + Autocomplete.prototype.unObserveLayoutChanges = function () { + var _this = this; + window.removeEventListener("resize", this.onLayoutChange, { passive: true }); + window.removeEventListener("wheel", this.mousewheelListener); + this.$elements && this.$elements.forEach(function (el) { + el.removeEventListener("scroll", _this.onLayoutChange, { passive: true }); + }); + this.$elements = null; + }; + Autocomplete.prototype.onLayoutChange = function () { + if (!this.popup.isOpen) + return this.unObserveLayoutChanges(); + this.$updatePopupPosition(); + this.updateDocTooltip(); + }; + Autocomplete.prototype.$updatePopupPosition = function () { + var editor = this.editor; + var renderer = editor.renderer; + var lineHeight = renderer.layerConfig.lineHeight; + var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); + pos.left -= this.popup.getTextLeftOffset(); + var rect = editor.container.getBoundingClientRect(); + pos.top += rect.top - renderer.layerConfig.offset; + pos.left += rect.left - editor.renderer.scrollLeft; + pos.left += renderer.gutterWidth; + var posGhostText = { + top: pos.top, + left: pos.left + }; + if (renderer.$ghostText && renderer.$ghostTextWidget) { + if (this.base.row === renderer.$ghostText.position.row) { + posGhostText.top += renderer.$ghostTextWidget.el.offsetHeight; + } + } + var editorContainerBottom = editor.container.getBoundingClientRect().bottom - lineHeight; + var lowestPosition = editorContainerBottom < posGhostText.top ? + { top: editorContainerBottom, left: posGhostText.left } : + posGhostText; + if (this.popup.tryShow(lowestPosition, lineHeight, "bottom")) { + return; + } + if (this.popup.tryShow(pos, lineHeight, "top")) { + return; + } + this.popup.show(pos, lineHeight); + }; + Autocomplete.prototype.openPopup = function (editor, prefix, keepPopupPosition) { + this.$firstOpenTimer.cancel(); + if (!this.popup) + this.$init(); + if (this.inlineEnabled && !this.inlineRenderer) + this.$initInline(); + this.popup.autoSelect = this.autoSelect; + this.popup.setSelectOnHover(this.setSelectOnHover); + var oldRow = this.popup.getRow(); + var previousSelectedItem = this.popup.data[oldRow]; + this.popup.setData(this.completions.filtered, this.completions.filterText); + if (this.editor.textInput.setAriaOptions) { + this.editor.textInput.setAriaOptions({ + activeDescendant: getAriaId(this.popup.getRow()), + inline: this.inlineEnabled + }); + } + editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + var newRow; + if (this.stickySelection) + newRow = this.popup.data.indexOf(previousSelectedItem); + if (!newRow || newRow === -1) + newRow = 0; + this.popup.setRow(this.autoSelect ? newRow : -1); + if (newRow === oldRow && previousSelectedItem !== this.completions.filtered[newRow]) + this.$onPopupChange(); + var inlineEnabled = this.inlineRenderer && this.inlineEnabled; + if (newRow === oldRow && inlineEnabled) { + var completion = this.popup.getData(this.popup.getRow()); + this.$updateGhostText(completion); + } + if (!keepPopupPosition) { + this.popup.setTheme(editor.getTheme()); + this.popup.setFontSize(editor.getFontSize()); + this.$updatePopupPosition(); + if (this.tooltipNode) { + this.updateDocTooltip(); + } + } + else if (keepPopupPosition && !prefix) { + this.detach(); + } + this.changeTimer.cancel(); + this.observeLayoutChanges(); + }; + Autocomplete.prototype.detach = function () { + if (this.editor) { + this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); + this.editor.off("changeSelection", this.changeListener); + this.editor.off("blur", this.blurListener); + this.editor.off("mousedown", this.mousedownListener); + this.editor.off("mousewheel", this.mousewheelListener); + } + this.$firstOpenTimer.cancel(); + this.changeTimer.cancel(); + this.hideDocTooltip(); + if (this.completionProvider) { + this.completionProvider.detach(); + } + if (this.popup && this.popup.isOpen) + this.popup.hide(); + if (this.popup && this.popup.renderer) { + this.popup.renderer.off("afterRender", this.$onPopupRender); + } + if (this.base) + this.base.detach(); + this.activated = false; + this.completionProvider = this.completions = this.base = null; + this.unObserveLayoutChanges(); + }; + Autocomplete.prototype.changeListener = function (e) { + var cursor = this.editor.selection.lead; + if (cursor.row != this.base.row || cursor.column < this.base.column) { + this.detach(); + } + if (this.activated) + this.changeTimer.schedule(); + else + this.detach(); + }; + Autocomplete.prototype.blurListener = function (e) { + var el = document.activeElement; + var text = this.editor.textInput.getElement(); + var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget); + var container = this.popup && this.popup.container; + if (el != text && el.parentNode != container && !fromTooltip + && el != this.tooltipNode && e.relatedTarget != text) { + this.detach(); + } + }; + Autocomplete.prototype.mousedownListener = function (e) { + this.detach(); + }; + Autocomplete.prototype.mousewheelListener = function (e) { + if (!this.popup.isMouseOver) + this.detach(); + }; + Autocomplete.prototype.mouseOutListener = function (e) { + if (this.popup.isOpen) + this.$updatePopupPosition(); + }; + Autocomplete.prototype.goTo = function (where) { + this.popup.goTo(where); + }; + Autocomplete.prototype.insertMatch = function (data, options) { + if (!data) + data = this.popup.getData(this.popup.getRow()); + if (!data) + return false; + if (data.value === "") // Explicitly given nothing to insert, e.g. "No suggestion state" + return this.detach(); + var completions = this.completions; + var result = this.getCompletionProvider().insertMatch(this.editor, data, completions.filterText, options); + if (this.completions == completions) + this.detach(); + return result; + }; + Autocomplete.prototype.showPopup = function (editor, options) { + if (this.editor) + this.detach(); + this.activated = true; + this.editor = editor; + if (editor.completer != this) { + if (editor.completer) + editor.completer.detach(); + editor.completer = this; + } + editor.on("changeSelection", this.changeListener); + editor.on("blur", this.blurListener); + editor.on("mousedown", this.mousedownListener); + editor.on("mousewheel", this.mousewheelListener); + this.updateCompletions(false, options); + }; + Autocomplete.prototype.getCompletionProvider = function (initialPosition) { + if (!this.completionProvider) + this.completionProvider = new CompletionProvider(initialPosition); + return this.completionProvider; + }; + Autocomplete.prototype.gatherCompletions = function (editor, callback) { + return this.getCompletionProvider().gatherCompletions(editor, callback); + }; + Autocomplete.prototype.updateCompletions = function (keepPopupPosition, options) { + if (keepPopupPosition && this.base && this.completions) { + var pos = this.editor.getCursorPosition(); + var prefix = this.editor.session.getTextRange({ start: this.base, end: pos }); + if (prefix == this.completions.filterText) + return; + this.completions.setFilter(prefix); + if (!this.completions.filtered.length) + return this.detach(); + if (this.completions.filtered.length == 1 + && this.completions.filtered[0].value == prefix + && !this.completions.filtered[0].snippet) + return this.detach(); + this.openPopup(this.editor, prefix, keepPopupPosition); + return; + } + if (options && options.matches) { + var pos = this.editor.getSelectionRange().start; + this.base = this.editor.session.doc.createAnchor(pos.row, pos.column); + this.base.$insertRight = true; + this.completions = new FilteredList(options.matches); + this.getCompletionProvider().completions = this.completions; + return this.openPopup(this.editor, "", keepPopupPosition); + } + var session = this.editor.getSession(); + var pos = this.editor.getCursorPosition(); + var prefix = util.getCompletionPrefix(this.editor); + this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); + this.base.$insertRight = true; + var completionOptions = { + exactMatch: this.exactMatch, + ignoreCaption: this.ignoreCaption + }; + this.getCompletionProvider({ + prefix: prefix, + pos: pos + }).provideCompletions(this.editor, completionOptions, + function (err, completions, finished) { + var filtered = completions.filtered; + var prefix = util.getCompletionPrefix(this.editor); + this.$firstOpenTimer.cancel(); + if (finished) { + if (!filtered.length) { + var emptyMessage = !this.autoShown && this.emptyMessage; + if (typeof emptyMessage == "function") + emptyMessage = this.emptyMessage(prefix); + if (emptyMessage) { + var completionsForEmpty = [{ + caption: emptyMessage, + value: "" + } + ]; + this.completions = new FilteredList(completionsForEmpty); + this.openPopup(this.editor, prefix, keepPopupPosition); + this.popup.renderer.setStyle("ace_loading", false); + return; + } + return this.detach(); + } + if (filtered.length == 1 && filtered[0].value == prefix + && !filtered[0].snippet) + return this.detach(); + if (this.autoInsert && !this.autoShown && filtered.length == 1) + return this.insertMatch(filtered[0]); + } + this.completions = !finished && this.showLoadingState ? + new FilteredList(Autocomplete.completionsForLoading.concat(filtered), completions.filterText) : + completions; + this.openPopup(this.editor, prefix, keepPopupPosition); + this.popup.renderer.setStyle("ace_loading", !finished); + }.bind(this)); + if (this.showLoadingState && !this.autoShown && !(this.popup && this.popup.isOpen)) { + this.$firstOpenTimer.delay(this.stickySelectionDelay / 2); + } + }; + Autocomplete.prototype.cancelContextMenu = function () { + this.editor.$mouseHandler.cancelContextMenu(); + }; + Autocomplete.prototype.updateDocTooltip = function () { + var popup = this.popup; + var all = this.completions.filtered; + var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); + var doc = null; + if (!selected || !this.editor || !this.popup.isOpen) + return this.hideDocTooltip(); + var completersLength = this.editor.completers.length; + for (var i = 0; i < completersLength; i++) { + var completer = this.editor.completers[i]; + if (completer.getDocTooltip && selected.completerId === completer.id) { + doc = completer.getDocTooltip(selected); + break; + } + } + if (!doc && typeof selected != "string") + doc = selected; + if (typeof doc == "string") + doc = { docText: doc }; + if (!doc || !(doc.docHTML || doc.docText)) + return this.hideDocTooltip(); + this.showDocTooltip(doc); + }; + Autocomplete.prototype.showDocTooltip = function (item) { + if (!this.tooltipNode) { + this.tooltipNode = dom.createElement("div"); + this.tooltipNode.style.margin = "0"; + this.tooltipNode.style.pointerEvents = "auto"; + this.tooltipNode.style.overscrollBehavior = "contain"; + this.tooltipNode.tabIndex = -1; + this.tooltipNode.onblur = this.blurListener.bind(this); + this.tooltipNode.onclick = this.onTooltipClick.bind(this); + this.tooltipNode.id = "doc-tooltip"; + this.tooltipNode.setAttribute("role", "tooltip"); + this.tooltipNode.addEventListener("wheel", preventParentScroll); + } + var theme = this.editor.renderer.theme; + this.tooltipNode.className = "ace_tooltip ace_doc-tooltip " + + (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); + var tooltipNode = this.tooltipNode; + if (item.docHTML) { + tooltipNode.innerHTML = item.docHTML; + } + else if (item.docText) { + tooltipNode.textContent = item.docText; + } + if (!tooltipNode.parentNode) + this.popup.container.appendChild(this.tooltipNode); + var popup = this.popup; + var rect = popup.container.getBoundingClientRect(); + tooltipNode.style.top = popup.container.style.top; + tooltipNode.style.bottom = popup.container.style.bottom; + tooltipNode.style.display = "block"; + if (window.innerWidth - rect.right < 320) { + if (rect.left < 320) { + if (popup.isTopdown) { + tooltipNode.style.top = rect.bottom + "px"; + tooltipNode.style.left = rect.left + "px"; + tooltipNode.style.right = ""; + tooltipNode.style.bottom = ""; + } + else { + tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + "px"; + tooltipNode.style.left = rect.left + "px"; + tooltipNode.style.right = ""; + tooltipNode.style.bottom = ""; + } + } + else { + tooltipNode.style.right = window.innerWidth - rect.left + "px"; + tooltipNode.style.left = ""; + } + } + else { + tooltipNode.style.left = (rect.right + 1) + "px"; + tooltipNode.style.right = ""; + } + }; + Autocomplete.prototype.hideDocTooltip = function () { + this.tooltipTimer.cancel(); + if (!this.tooltipNode) + return; + var el = this.tooltipNode; + if (!this.editor.isFocused() && document.activeElement == el) + this.editor.focus(); + this.tooltipNode = null; + if (el.parentNode) + el.parentNode.removeChild(el); + }; + Autocomplete.prototype.onTooltipClick = function (e) { + var a = e.target; + while (a && a != this.tooltipNode) { + if (a.nodeName == "A" && a.href) { + a.rel = "noreferrer"; + a.target = "_blank"; + break; + } + a = a.parentNode; + } + }; + Autocomplete.prototype.destroy = function () { + this.detach(); + if (this.popup) { + this.popup.destroy(); + var el = this.popup.container; + if (el && el.parentNode) + el.parentNode.removeChild(el); + } + if (this.editor && this.editor.completer == this) { + this.editor.off("destroy", destroyCompleter); + this.editor.completer = null; + } + this.inlineRenderer = this.popup = this.editor = null; + }; + return Autocomplete; +}()); +Autocomplete.prototype.commands = { + "Up": function (editor) { editor.completer.goTo("up"); }, + "Down": function (editor) { editor.completer.goTo("down"); }, + "Ctrl-Up|Ctrl-Home": function (editor) { editor.completer.goTo("start"); }, + "Ctrl-Down|Ctrl-End": function (editor) { editor.completer.goTo("end"); }, + "Esc": function (editor) { editor.completer.detach(); }, + "Return": function (editor) { return editor.completer.insertMatch(); }, + "Shift-Return": function (editor) { editor.completer.insertMatch(null, { deleteSuffix: true }); }, + "Tab": function (editor) { + var result = editor.completer.insertMatch(); + if (!result && !editor.tabstopManager) + editor.completer.goTo("down"); + else + return result; + }, + "PageUp": function (editor) { editor.completer.popup.gotoPageUp(); }, + "PageDown": function (editor) { editor.completer.popup.gotoPageDown(); } +}; +Autocomplete.for = function (editor) { + if (editor.completer instanceof Autocomplete) { + return editor.completer; + } + if (editor.completer) { + editor.completer.destroy(); + editor.completer = null; + } + if (config.get("sharedPopups")) { + if (!Autocomplete["$sharedInstance"]) + Autocomplete["$sharedInstance"] = new Autocomplete(); + editor.completer = Autocomplete["$sharedInstance"]; + } + else { + editor.completer = new Autocomplete(); + editor.once("destroy", destroyCompleter); + } + return editor.completer; +}; +Autocomplete.startCommand = { + name: "startAutocomplete", + exec: function (editor, options) { + var completer = Autocomplete.for(editor); + completer.autoInsert = false; + completer.autoSelect = true; + completer.autoShown = false; + completer.showPopup(editor, options); + completer.cancelContextMenu(); + }, + bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" +}; +var CompletionProvider = /** @class */ (function () { + function CompletionProvider(initialPosition) { + this.initialPosition = initialPosition; + this.active = true; + } + CompletionProvider.prototype.insertByIndex = function (editor, index, options) { + if (!this.completions || !this.completions.filtered) { + return false; + } + return this.insertMatch(editor, this.completions.filtered[index], options); + }; + CompletionProvider.prototype.insertMatch = function (editor, data, options) { + if (!data) + return false; + editor.startOperation({ command: { name: "insertMatch" } }); + if (data.completer && data.completer.insertMatch) { + data.completer.insertMatch(editor, data); + } + else { + if (!this.completions) + return false; + var replaceBefore = this.completions.filterText.length; + var replaceAfter = 0; + if (data.range && data.range.start.row === data.range.end.row) { + replaceBefore -= this.initialPosition.prefix.length; + replaceBefore += this.initialPosition.pos.column - data.range.start.column; + replaceAfter += data.range.end.column - this.initialPosition.pos.column; + } + if (replaceBefore || replaceAfter) { + var ranges; + if (editor.selection.getAllRanges) { + ranges = editor.selection.getAllRanges(); + } + else { + ranges = [editor.getSelectionRange()]; + } + for (var i = 0, range; range = ranges[i]; i++) { + range.start.column -= replaceBefore; + range.end.column += replaceAfter; + editor.session.remove(range); + } + } + if (data.snippet) { + snippetManager.insertSnippet(editor, data.snippet); + } + else { + this.$insertString(editor, data); + } + if (data.completer && data.completer.onInsert && typeof data.completer.onInsert == "function") { + data.completer.onInsert(editor, data); + } + if (data.command && data.command === "startAutocomplete") { + editor.execCommand(data.command); + } + } + editor.endOperation(); + return true; + }; + CompletionProvider.prototype.$insertString = function (editor, data) { + var text = data.value || data; + editor.execCommand("insertstring", text); + }; + CompletionProvider.prototype.gatherCompletions = function (editor, callback) { + var session = editor.getSession(); + var pos = editor.getCursorPosition(); + var prefix = util.getCompletionPrefix(editor); + var matches = []; + this.completers = editor.completers; + var total = editor.completers.length; + editor.completers.forEach(function (completer, i) { + completer.getCompletions(editor, session, pos, prefix, function (err, results) { + if (completer.hideInlinePreview) + results = results.map(function (result) { + return Object.assign(result, { hideInlinePreview: completer.hideInlinePreview }); + }); + if (!err && results) + matches = matches.concat(results); + callback(null, { + prefix: util.getCompletionPrefix(editor), + matches: matches, + finished: (--total === 0) + }); + }); + }); + return true; + }; + CompletionProvider.prototype.provideCompletions = function (editor, options, callback) { + var processResults = function (results) { + var prefix = results.prefix; + var matches = results.matches; + this.completions = new FilteredList(matches); + if (options.exactMatch) + this.completions.exactMatch = true; + if (options.ignoreCaption) + this.completions.ignoreCaption = true; + this.completions.setFilter(prefix); + if (results.finished || this.completions.filtered.length) + callback(null, this.completions, results.finished); + }.bind(this); + var isImmediate = true; + var immediateResults = null; + this.gatherCompletions(editor, function (err, results) { + if (!this.active) { + return; + } + if (err) { + callback(err, [], true); + this.detach(); + } + var prefix = results.prefix; + if (prefix.indexOf(results.prefix) !== 0) + return; + if (isImmediate) { + immediateResults = results; + return; + } + processResults(results); + }.bind(this)); + isImmediate = false; + if (immediateResults) { + var results = immediateResults; + immediateResults = null; + processResults(results); + } + }; + CompletionProvider.prototype.detach = function () { + this.active = false; + this.completers && this.completers.forEach(function (completer) { + if (typeof completer.cancel === "function") { + completer.cancel(); + } + }); + }; + return CompletionProvider; +}()); +var FilteredList = /** @class */ (function () { + function FilteredList(array, filterText) { + this.all = array; + this.filtered = array; + this.filterText = filterText || ""; + this.exactMatch = false; + this.ignoreCaption = false; + } + FilteredList.prototype.setFilter = function (str) { + if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) + var matches = this.filtered; + else + var matches = this.all; + this.filterText = str; + matches = this.filterCompletions(matches, this.filterText); + matches = matches.sort(function (a, b) { + return b.exactMatch - a.exactMatch || b.$score - a.$score + || (a.caption || a.value).localeCompare(b.caption || b.value); + }); + var prev = null; + matches = matches.filter(function (item) { + var caption = item.snippet || item.caption || item.value; + if (caption === prev) + return false; + prev = caption; + return true; + }); + this.filtered = matches; + }; + FilteredList.prototype.filterCompletions = function (items, needle) { + var results = []; + var upper = needle.toUpperCase(); + var lower = needle.toLowerCase(); + loop: for (var i = 0, item; item = items[i]; i++) { + var caption = (!this.ignoreCaption && item.caption) || item.value || item.snippet; + if (!caption) + continue; + var lastIndex = -1; + var matchMask = 0; + var penalty = 0; + var index, distance; + if (this.exactMatch) { + if (needle !== caption.substr(0, needle.length)) + continue loop; + } + else { + var fullMatchIndex = caption.toLowerCase().indexOf(lower); + if (fullMatchIndex > -1) { + penalty = fullMatchIndex; + } + else { + for (var j = 0; j < needle.length; j++) { + var i1 = caption.indexOf(lower[j], lastIndex + 1); + var i2 = caption.indexOf(upper[j], lastIndex + 1); + index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; + if (index < 0) + continue loop; + distance = index - lastIndex - 1; + if (distance > 0) { + if (lastIndex === -1) + penalty += 10; + penalty += distance; + matchMask = matchMask | (1 << j); + } + lastIndex = index; + } + } + } + item.matchMask = matchMask; + item.exactMatch = penalty ? 0 : 1; + item.$score = (item.score || 0) - penalty; + results.push(item); + } + return results; + }; + return FilteredList; +}()); +exports.Autocomplete = Autocomplete; +exports.CompletionProvider = CompletionProvider; +exports.FilteredList = FilteredList; + +}); + +define("ace/ext/command_bar",["require","exports","module","ace/tooltip","ace/lib/event_emitter","ace/lib/lang","ace/lib/dom","ace/lib/oop","ace/lib/useragent"], function(require, exports, module){var __values = (this && this.__values) || function(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +}; +var Tooltip = require("../tooltip").Tooltip; +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var lang = require("../lib/lang"); +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var useragent = require("../lib/useragent"); +var BUTTON_CLASS_NAME = 'command_bar_tooltip_button'; +var VALUE_CLASS_NAME = 'command_bar_button_value'; +var CAPTION_CLASS_NAME = 'command_bar_button_caption'; +var KEYBINDING_CLASS_NAME = 'command_bar_keybinding'; +var TOOLTIP_CLASS_NAME = 'command_bar_tooltip'; +var MORE_OPTIONS_BUTTON_ID = 'MoreOptionsButton'; +var defaultDelay = 100; +var defaultMaxElements = 4; +var minPosition = function (posA, posB) { + if (posB.row > posA.row) { + return posA; + } + else if (posB.row === posA.row && posB.column > posA.column) { + return posA; + } + return posB; +}; +var keyDisplayMap = { + "Ctrl": { mac: "^" }, + "Option": { mac: "⌥" }, + "Command": { mac: "⌘" }, + "Cmd": { mac: "⌘" }, + "Shift": "⇧", + "Left": "←", + "Right": "→", + "Up": "↑", + "Down": "↓" +}; +var CommandBarTooltip = /** @class */ (function () { + function CommandBarTooltip(parentNode, options) { + var e_1, _a; + options = options || {}; + this.parentNode = parentNode; + this.tooltip = new Tooltip(this.parentNode); + this.moreOptions = new Tooltip(this.parentNode); + this.maxElementsOnTooltip = options.maxElementsOnTooltip || defaultMaxElements; + this.$alwaysShow = options.alwaysShow || false; + this.eventListeners = {}; + this.elements = {}; + this.commands = {}; + this.tooltipEl = dom.buildDom(['div', { class: TOOLTIP_CLASS_NAME }], this.tooltip.getElement()); + this.moreOptionsEl = dom.buildDom(['div', { class: TOOLTIP_CLASS_NAME + " tooltip_more_options" }], this.moreOptions.getElement()); + this.$showTooltipTimer = lang.delayedCall(this.$showTooltip.bind(this), options.showDelay || defaultDelay); + this.$hideTooltipTimer = lang.delayedCall(this.$hideTooltip.bind(this), options.hideDelay || defaultDelay); + this.$tooltipEnter = this.$tooltipEnter.bind(this); + this.$onMouseMove = this.$onMouseMove.bind(this); + this.$onChangeScroll = this.$onChangeScroll.bind(this); + this.$onEditorChangeSession = this.$onEditorChangeSession.bind(this); + this.$scheduleTooltipForHide = this.$scheduleTooltipForHide.bind(this); + this.$preventMouseEvent = this.$preventMouseEvent.bind(this); + try { + for (var _b = __values(["mousedown", "mouseup", "click"]), _c = _b.next(); !_c.done; _c = _b.next()) { + var event = _c.value; + this.tooltip.getElement().addEventListener(event, this.$preventMouseEvent); + this.moreOptions.getElement().addEventListener(event, this.$preventMouseEvent); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + } + CommandBarTooltip.prototype.registerCommand = function (id, command) { + var registerForMainTooltip = Object.keys(this.commands).length < this.maxElementsOnTooltip; + if (!registerForMainTooltip && !this.elements[MORE_OPTIONS_BUTTON_ID]) { + this.$createCommand(MORE_OPTIONS_BUTTON_ID, { + name: "···", + exec: + function () { + this.$shouldHideMoreOptions = false; + this.$setMoreOptionsVisibility(!this.isMoreOptionsShown()); + }.bind(this), + type: "checkbox", + getValue: function () { + return this.isMoreOptionsShown(); + }.bind(this), + enabled: true + }, true); + } + this.$createCommand(id, command, registerForMainTooltip); + if (this.isShown()) { + this.updatePosition(); + } + }; + CommandBarTooltip.prototype.isShown = function () { + return !!this.tooltip && this.tooltip.isOpen; + }; + CommandBarTooltip.prototype.isMoreOptionsShown = function () { + return !!this.moreOptions && this.moreOptions.isOpen; + }; + CommandBarTooltip.prototype.getAlwaysShow = function () { + return this.$alwaysShow; + }; + CommandBarTooltip.prototype.setAlwaysShow = function (alwaysShow) { + this.$alwaysShow = alwaysShow; + this.$updateOnHoverHandlers(!this.$alwaysShow); + this._signal("alwaysShow", this.$alwaysShow); + }; + CommandBarTooltip.prototype.attach = function (editor) { + if (!editor || (this.isShown() && this.editor === editor)) { + return; + } + this.detach(); + this.editor = editor; + this.editor.on("changeSession", this.$onEditorChangeSession); + if (this.editor.session) { + this.editor.session.on("changeScrollLeft", this.$onChangeScroll); + this.editor.session.on("changeScrollTop", this.$onChangeScroll); + } + if (this.getAlwaysShow()) { + this.$showTooltip(); + } + else { + this.$updateOnHoverHandlers(true); + } + }; + CommandBarTooltip.prototype.updatePosition = function () { + if (!this.editor) { + return; + } + var renderer = this.editor.renderer; + var ranges; + if (this.editor.selection.getAllRanges) { + ranges = this.editor.selection.getAllRanges(); + } + else { + ranges = [this.editor.getSelectionRange()]; + } + if (!ranges.length) { + return; + } + var minPos = minPosition(ranges[0].start, ranges[0].end); + for (var i = 0, range; range = ranges[i]; i++) { + minPos = minPosition(minPos, minPosition(range.start, range.end)); + } + var pos = renderer.$cursorLayer.getPixelPosition(minPos, true); + var tooltipEl = this.tooltip.getElement(); + var screenWidth = window.innerWidth; + var screenHeight = window.innerHeight; + var rect = this.editor.container.getBoundingClientRect(); + pos.top += rect.top - renderer.layerConfig.offset; + pos.left += rect.left + renderer.gutterWidth - renderer.scrollLeft; + var cursorVisible = pos.top >= rect.top && pos.top <= rect.bottom && + pos.left >= rect.left + renderer.gutterWidth && pos.left <= rect.right; + if (!cursorVisible && this.isShown()) { + this.$hideTooltip(); + return; + } + else if (cursorVisible && !this.isShown() && this.getAlwaysShow()) { + this.$showTooltip(); + return; + } + var top = pos.top - tooltipEl.offsetHeight; + var left = Math.min(screenWidth - tooltipEl.offsetWidth, pos.left); + var tooltipFits = top >= 0 && top + tooltipEl.offsetHeight <= screenHeight && + left >= 0 && left + tooltipEl.offsetWidth <= screenWidth; + if (!tooltipFits) { + this.$hideTooltip(); + return; + } + this.tooltip.setPosition(left, top); + if (this.isMoreOptionsShown()) { + top = top + tooltipEl.offsetHeight; + left = this.elements[MORE_OPTIONS_BUTTON_ID].getBoundingClientRect().left; + var moreOptionsEl = this.moreOptions.getElement(); + var screenHeight = window.innerHeight; + if (top + moreOptionsEl.offsetHeight > screenHeight) { + top -= tooltipEl.offsetHeight + moreOptionsEl.offsetHeight; + } + if (left + moreOptionsEl.offsetWidth > screenWidth) { + left = screenWidth - moreOptionsEl.offsetWidth; + } + this.moreOptions.setPosition(left, top); + } + }; + CommandBarTooltip.prototype.update = function () { + Object.keys(this.elements).forEach(this.$updateElement.bind(this)); + }; + CommandBarTooltip.prototype.detach = function () { + this.tooltip.hide(); + this.moreOptions.hide(); + this.$updateOnHoverHandlers(false); + if (this.editor) { + this.editor.off("changeSession", this.$onEditorChangeSession); + if (this.editor.session) { + this.editor.session.off("changeScrollLeft", this.$onChangeScroll); + this.editor.session.off("changeScrollTop", this.$onChangeScroll); + } + } + this.$mouseInTooltip = false; + this.editor = null; + }; + CommandBarTooltip.prototype.destroy = function () { + if (this.tooltip && this.moreOptions) { + this.detach(); + this.tooltip.destroy(); + this.moreOptions.destroy(); + } + this.eventListeners = {}; + this.commands = {}; + this.elements = {}; + this.tooltip = this.moreOptions = this.parentNode = null; + }; + CommandBarTooltip.prototype.$createCommand = function (id, command, forMainTooltip) { + var parentEl = forMainTooltip ? this.tooltipEl : this.moreOptionsEl; + var keyParts = []; + var bindKey = command.bindKey; + if (bindKey) { + if (typeof bindKey === 'object') { + bindKey = useragent.isMac ? bindKey.mac : bindKey.win; + } + bindKey = bindKey.split("|")[0]; + keyParts = bindKey.split("-"); + keyParts = keyParts.map(function (key) { + if (keyDisplayMap[key]) { + if (typeof keyDisplayMap[key] === 'string') { + return keyDisplayMap[key]; + } + else if (useragent.isMac && keyDisplayMap[key].mac) { + return keyDisplayMap[key].mac; + } + } + return key; + }); + } + var buttonNode; + if (forMainTooltip && command.iconCssClass) { + buttonNode = [ + 'div', + { + class: ["ace_icon_svg", command.iconCssClass].join(" "), + "aria-label": command.name + " (" + command.bindKey + ")" + } + ]; + } + else { + buttonNode = [ + ['div', { class: VALUE_CLASS_NAME }], + ['div', { class: CAPTION_CLASS_NAME }, command.name] + ]; + if (keyParts.length) { + buttonNode.push([ + 'div', + { class: KEYBINDING_CLASS_NAME }, + keyParts.map(function (keyPart) { + return ['div', keyPart]; + }) + ]); + } + } + dom.buildDom(['div', { class: [BUTTON_CLASS_NAME, command.cssClass || ""].join(" "), ref: id }, buttonNode], parentEl, this.elements); + this.commands[id] = command; + var eventListener = + function (e) { + if (this.editor) { + this.editor.focus(); + } + this.$shouldHideMoreOptions = this.isMoreOptionsShown(); + if (!this.elements[id].disabled && command.exec) { + command.exec(this.editor); + } + if (this.$shouldHideMoreOptions) { + this.$setMoreOptionsVisibility(false); + } + this.update(); + e.preventDefault(); + }.bind(this); + this.eventListeners[id] = eventListener; + this.elements[id].addEventListener('click', eventListener.bind(this)); + this.$updateElement(id); + }; + CommandBarTooltip.prototype.$setMoreOptionsVisibility = function (visible) { + if (visible) { + this.moreOptions.setTheme(this.editor.renderer.theme); + this.moreOptions.setClassName(TOOLTIP_CLASS_NAME + "_wrapper"); + this.moreOptions.show(); + this.update(); + this.updatePosition(); + } + else { + this.moreOptions.hide(); + } + }; + CommandBarTooltip.prototype.$onEditorChangeSession = function (e) { + if (e.oldSession) { + e.oldSession.off("changeScrollTop", this.$onChangeScroll); + e.oldSession.off("changeScrollLeft", this.$onChangeScroll); + } + this.detach(); + }; + CommandBarTooltip.prototype.$onChangeScroll = function () { + if (this.editor.renderer && (this.isShown() || this.getAlwaysShow())) { + this.editor.renderer.once("afterRender", this.updatePosition.bind(this)); + } + }; + CommandBarTooltip.prototype.$onMouseMove = function (e) { + if (this.$mouseInTooltip) { + return; + } + var cursorPosition = this.editor.getCursorPosition(); + var cursorScreenPosition = this.editor.renderer.textToScreenCoordinates(cursorPosition.row, cursorPosition.column); + var lineHeight = this.editor.renderer.lineHeight; + var isInCurrentLine = e.clientY >= cursorScreenPosition.pageY && e.clientY < cursorScreenPosition.pageY + lineHeight; + if (isInCurrentLine) { + if (!this.isShown() && !this.$showTooltipTimer.isPending()) { + this.$showTooltipTimer.delay(); + } + if (this.$hideTooltipTimer.isPending()) { + this.$hideTooltipTimer.cancel(); + } + } + else { + if (this.isShown() && !this.$hideTooltipTimer.isPending()) { + this.$hideTooltipTimer.delay(); + } + if (this.$showTooltipTimer.isPending()) { + this.$showTooltipTimer.cancel(); + } + } + }; + CommandBarTooltip.prototype.$preventMouseEvent = function (e) { + if (this.editor) { + this.editor.focus(); + } + e.preventDefault(); + }; + CommandBarTooltip.prototype.$scheduleTooltipForHide = function () { + this.$mouseInTooltip = false; + this.$showTooltipTimer.cancel(); + this.$hideTooltipTimer.delay(); + }; + CommandBarTooltip.prototype.$tooltipEnter = function () { + this.$mouseInTooltip = true; + if (this.$showTooltipTimer.isPending()) { + this.$showTooltipTimer.cancel(); + } + if (this.$hideTooltipTimer.isPending()) { + this.$hideTooltipTimer.cancel(); + } + }; + CommandBarTooltip.prototype.$updateOnHoverHandlers = function (enableHover) { + var tooltipEl = this.tooltip.getElement(); + var moreOptionsEl = this.moreOptions.getElement(); + if (enableHover) { + if (this.editor) { + this.editor.on("mousemove", this.$onMouseMove); + this.editor.renderer.getMouseEventTarget().addEventListener("mouseout", this.$scheduleTooltipForHide, true); + } + tooltipEl.addEventListener('mouseenter', this.$tooltipEnter); + tooltipEl.addEventListener('mouseleave', this.$scheduleTooltipForHide); + moreOptionsEl.addEventListener('mouseenter', this.$tooltipEnter); + moreOptionsEl.addEventListener('mouseleave', this.$scheduleTooltipForHide); + } + else { + if (this.editor) { + this.editor.off("mousemove", this.$onMouseMove); + this.editor.renderer.getMouseEventTarget().removeEventListener("mouseout", this.$scheduleTooltipForHide, true); + } + tooltipEl.removeEventListener('mouseenter', this.$tooltipEnter); + tooltipEl.removeEventListener('mouseleave', this.$scheduleTooltipForHide); + moreOptionsEl.removeEventListener('mouseenter', this.$tooltipEnter); + moreOptionsEl.removeEventListener('mouseleave', this.$scheduleTooltipForHide); + } + }; + CommandBarTooltip.prototype.$showTooltip = function () { + if (this.isShown()) { + return; + } + this.tooltip.setTheme(this.editor.renderer.theme); + this.tooltip.setClassName(TOOLTIP_CLASS_NAME + "_wrapper"); + this.tooltip.show(); + this.update(); + this.updatePosition(); + this._signal("show"); + }; + CommandBarTooltip.prototype.$hideTooltip = function () { + this.$mouseInTooltip = false; + if (!this.isShown()) { + return; + } + this.moreOptions.hide(); + this.tooltip.hide(); + this._signal("hide"); + }; + CommandBarTooltip.prototype.$updateElement = function (id) { + var command = this.commands[id]; + if (!command) { + return; + } + var el = this.elements[id]; + var commandEnabled = command.enabled; + if (typeof commandEnabled === 'function') { + commandEnabled = commandEnabled(this.editor); + } + if (typeof command.getValue === 'function') { + var value = command.getValue(this.editor); + if (command.type === 'text') { + el.textContent = value; + } + else if (command.type === 'checkbox') { + var domCssFn = value ? dom.addCssClass : dom.removeCssClass; + var isOnTooltip = el.parentElement === this.tooltipEl; + el.ariaChecked = value; + if (isOnTooltip) { + domCssFn(el, "ace_selected"); + } + else { + el = el.querySelector("." + VALUE_CLASS_NAME); + domCssFn(el, "ace_checkmark"); + } + } + } + if (commandEnabled && el.disabled) { + dom.removeCssClass(el, "ace_disabled"); + el.ariaDisabled = el.disabled = false; + el.removeAttribute("disabled"); + } + else if (!commandEnabled && !el.disabled) { + dom.addCssClass(el, "ace_disabled"); + el.ariaDisabled = el.disabled = true; + el.setAttribute("disabled", ""); + } + }; + return CommandBarTooltip; +}()); +oop.implement(CommandBarTooltip.prototype, EventEmitter); +dom.importCssString("\n.ace_tooltip.".concat(TOOLTIP_CLASS_NAME, "_wrapper {\n padding: 0;\n}\n\n.ace_tooltip .").concat(TOOLTIP_CLASS_NAME, " {\n padding: 1px 5px;\n display: flex;\n pointer-events: auto;\n}\n\n.ace_tooltip .").concat(TOOLTIP_CLASS_NAME, ".tooltip_more_options {\n padding: 1px;\n flex-direction: column;\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, " {\n display: inline-flex;\n cursor: pointer;\n margin: 1px;\n border-radius: 2px;\n padding: 2px 5px;\n align-items: center;\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, ".ace_selected,\ndiv.").concat(BUTTON_CLASS_NAME, ":hover:not(.ace_disabled) {\n background-color: rgba(0, 0, 0, 0.1);\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, ".ace_disabled {\n color: #777;\n pointer-events: none;\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, " .ace_icon_svg {\n height: 12px;\n background-color: #000;\n}\n\ndiv.").concat(BUTTON_CLASS_NAME, ".ace_disabled .ace_icon_svg {\n background-color: #777;\n}\n\n.").concat(TOOLTIP_CLASS_NAME, ".tooltip_more_options .").concat(BUTTON_CLASS_NAME, " {\n display: flex;\n}\n\n.").concat(TOOLTIP_CLASS_NAME, ".").concat(VALUE_CLASS_NAME, " {\n display: none;\n}\n\n.").concat(TOOLTIP_CLASS_NAME, ".tooltip_more_options .").concat(VALUE_CLASS_NAME, " {\n display: inline-block;\n width: 12px;\n}\n\n.").concat(CAPTION_CLASS_NAME, " {\n display: inline-block;\n}\n\n.").concat(KEYBINDING_CLASS_NAME, " {\n margin: 0 2px;\n display: inline-block;\n font-size: 8px;\n}\n\n.").concat(TOOLTIP_CLASS_NAME, ".tooltip_more_options .").concat(KEYBINDING_CLASS_NAME, " {\n margin-left: auto;\n}\n\n.").concat(KEYBINDING_CLASS_NAME, " div {\n display: inline-block;\n min-width: 8px;\n padding: 2px;\n margin: 0 1px;\n border-radius: 2px;\n background-color: #ccc;\n text-align: center;\n}\n\n.ace_dark.ace_tooltip .").concat(TOOLTIP_CLASS_NAME, " {\n background-color: #373737;\n color: #eee;\n}\n\n.ace_dark div.").concat(BUTTON_CLASS_NAME, ".ace_disabled {\n color: #979797;\n}\n\n.ace_dark div.").concat(BUTTON_CLASS_NAME, ".ace_selected,\n.ace_dark div.").concat(BUTTON_CLASS_NAME, ":hover:not(.ace_disabled) {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.ace_dark div.").concat(BUTTON_CLASS_NAME, " .ace_icon_svg {\n background-color: #eee;\n}\n\n.ace_dark div.").concat(BUTTON_CLASS_NAME, ".ace_disabled .ace_icon_svg {\n background-color: #979797;\n}\n\n.ace_dark .").concat(BUTTON_CLASS_NAME, ".ace_disabled {\n color: #979797;\n}\n\n.ace_dark .").concat(KEYBINDING_CLASS_NAME, " div {\n background-color: #575757;\n}\n\n.ace_checkmark::before {\n content: '\u2713';\n}\n"), "commandbar.css", false); +exports.CommandBarTooltip = CommandBarTooltip; +exports.TOOLTIP_CLASS_NAME = TOOLTIP_CLASS_NAME; +exports.BUTTON_CLASS_NAME = BUTTON_CLASS_NAME; + +}); + +define("ace/autocomplete/text_completer",["require","exports","module","ace/range"], function(require, exports, module){var Range = require("../range").Range; +var splitRegex = /[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/; +function getWordIndex(doc, pos) { + var textBefore = doc.getTextRange(Range.fromPoints({ + row: 0, + column: 0 + }, pos)); + return textBefore.split(splitRegex).length - 1; +} +function wordDistance(doc, pos) { + var prefixPos = getWordIndex(doc, pos); + var words = doc.getValue().split(splitRegex); + var wordScores = Object.create(null); + var currentWord = words[prefixPos]; + words.forEach(function (word, idx) { + if (!word || word === currentWord) + return; + var distance = Math.abs(prefixPos - idx); + var score = words.length - distance; + if (wordScores[word]) { + wordScores[word] = Math.max(score, wordScores[word]); + } + else { + wordScores[word] = score; + } + }); + return wordScores; +} +exports.getCompletions = function (editor, session, pos, prefix, callback) { + var wordScore = wordDistance(session, pos); + var wordList = Object.keys(wordScore); + callback(null, wordList.map(function (word) { + return { + caption: word, + value: word, + score: wordScore[word], + meta: "local" + }; + })); +}; + +}); + +define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var snippetManager = require("../snippets").snippetManager; +var Autocomplete = require("../autocomplete").Autocomplete; +var config = require("../config"); +var lang = require("../lib/lang"); +var util = require("../autocomplete/util"); +var textCompleter = require("../autocomplete/text_completer"); +var keyWordCompleter = { + getCompletions: function (editor, session, pos, prefix, callback) { + if (session.$mode.completer) { + return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback); + } + var state = editor.session.getState(pos.row); + var completions = session.$mode.getCompletions(state, session, pos, prefix); + completions = completions.map(function (el) { + el.completerId = keyWordCompleter.id; + return el; + }); + callback(null, completions); + }, + id: "keywordCompleter" +}; +var transformSnippetTooltip = function (str) { + var record = {}; + return str.replace(/\${(\d+)(:(.*?))?}/g, function (_, p1, p2, p3) { + return (record[p1] = p3 || ''); + }).replace(/\$(\d+?)/g, function (_, p1) { + return record[p1]; + }); +}; +var snippetCompleter = { + getCompletions: function (editor, session, pos, prefix, callback) { + var scopes = []; + var token = session.getTokenAt(pos.row, pos.column); + if (token && token.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)) + scopes.push('html-tag'); + else + scopes = snippetManager.getActiveScopes(editor); + var snippetMap = snippetManager.snippetMap; + var completions = []; + scopes.forEach(function (scope) { + var snippets = snippetMap[scope] || []; + for (var i = snippets.length; i--;) { + var s = snippets[i]; + var caption = s.name || s.tabTrigger; + if (!caption) + continue; + completions.push({ + caption: caption, + snippet: s.content, + meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet", + completerId: snippetCompleter.id + }); + } + }, this); + callback(null, completions); + }, + getDocTooltip: function (item) { + if (item.snippet && !item.docHTML) { + item.docHTML = [ + "", lang.escapeHTML(item.caption), "", "
", + lang.escapeHTML(transformSnippetTooltip(item.snippet)) + ].join(""); + } + }, + id: "snippetCompleter" +}; +var completers = [snippetCompleter, textCompleter, keyWordCompleter]; +exports.setCompleters = function (val) { + completers.length = 0; + if (val) + completers.push.apply(completers, val); +}; +exports.addCompleter = function (completer) { + completers.push(completer); +}; +exports.textCompleter = textCompleter; +exports.keyWordCompleter = keyWordCompleter; +exports.snippetCompleter = snippetCompleter; +var expandSnippet = { + name: "expandSnippet", + exec: function (editor) { + return snippetManager.expandWithTab(editor); + }, + bindKey: "Tab" +}; +var onChangeMode = function (e, editor) { + loadSnippetsForMode(editor.session.$mode); +}; +var loadSnippetsForMode = function (mode) { + if (typeof mode == "string") + mode = config.$modes[mode]; + if (!mode) + return; + if (!snippetManager.files) + snippetManager.files = {}; + loadSnippetFile(mode.$id, mode.snippetFileId); + if (mode.modes) + mode.modes.forEach(loadSnippetsForMode); +}; +var loadSnippetFile = function (id, snippetFilePath) { + if (!snippetFilePath || !id || snippetManager.files[id]) + return; + snippetManager.files[id] = {}; + config.loadModule(snippetFilePath, function (m) { + if (!m) + return; + snippetManager.files[id] = m; + if (!m.snippets && m.snippetText) + m.snippets = snippetManager.parseSnippetFile(m.snippetText); + snippetManager.register(m.snippets || [], m.scope); + if (m.includeScopes) { + snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes; + m.includeScopes.forEach(function (x) { + loadSnippetsForMode("ace/mode/" + x); + }); + } + }); +}; +var doLiveAutocomplete = function (e) { + var editor = e.editor; + var hasCompleter = editor.completer && editor.completer.activated; + if (e.command.name === "backspace") { + if (hasCompleter && !util.getCompletionPrefix(editor)) + editor.completer.detach(); + } + else if (e.command.name === "insertstring" && !hasCompleter) { + lastExecEvent = e; + var delay = e.editor.$liveAutocompletionDelay; + if (delay) { + liveAutocompleteTimer.delay(delay); + } + else { + showLiveAutocomplete(e); + } + } +}; +var lastExecEvent; +var liveAutocompleteTimer = lang.delayedCall(function () { + showLiveAutocomplete(lastExecEvent); +}, 0); +var showLiveAutocomplete = function (e) { + var editor = e.editor; + var prefix = util.getCompletionPrefix(editor); + var triggerAutocomplete = util.triggerAutocomplete(editor); + if (prefix && prefix.length >= editor.$liveAutocompletionThreshold || triggerAutocomplete) { + var completer = Autocomplete.for(editor); + completer.autoShown = true; + completer.showPopup(editor); + } +}; +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + enableBasicAutocompletion: { + set: function (val) { + if (val) { + if (!this.completers) + this.completers = Array.isArray(val) ? val : completers; + this.commands.addCommand(Autocomplete.startCommand); + } + else { + this.commands.removeCommand(Autocomplete.startCommand); + } + }, + value: false + }, + enableLiveAutocompletion: { + set: function (val) { + if (val) { + if (!this.completers) + this.completers = Array.isArray(val) ? val : completers; + this.commands.on('afterExec', doLiveAutocomplete); + } + else { + this.commands.off('afterExec', doLiveAutocomplete); + } + }, + value: false + }, + liveAutocompletionDelay: { + initialValue: 0 + }, + liveAutocompletionThreshold: { + initialValue: 0 + }, + enableSnippets: { + set: function (val) { + if (val) { + this.commands.addCommand(expandSnippet); + this.on("changeMode", onChangeMode); + onChangeMode(null, this); + } + else { + this.commands.removeCommand(expandSnippet); + this.off("changeMode", onChangeMode); + } + }, + value: false + } +}); + +}); + +define("ace/ext/inline_autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/inline","ace/autocomplete","ace/autocomplete","ace/editor","ace/autocomplete/util","ace/lib/dom","ace/lib/lang","ace/ext/command_bar","ace/ext/command_bar","ace/ext/language_tools","ace/ext/language_tools","ace/ext/language_tools","ace/config"], function(require, exports, module){"use strict"; +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var AceInline = require("../autocomplete/inline").AceInline; +var FilteredList = require("../autocomplete").FilteredList; +var CompletionProvider = require("../autocomplete").CompletionProvider; +var Editor = require("../editor").Editor; +var util = require("../autocomplete/util"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var CommandBarTooltip = require("./command_bar").CommandBarTooltip; +var BUTTON_CLASS_NAME = require("./command_bar").BUTTON_CLASS_NAME; +var snippetCompleter = require("./language_tools").snippetCompleter; +var textCompleter = require("./language_tools").textCompleter; +var keyWordCompleter = require("./language_tools").keyWordCompleter; +var destroyCompleter = function (e, editor) { + editor.completer && editor.completer.destroy(); +}; +var InlineAutocomplete = /** @class */ (function () { + function InlineAutocomplete(editor) { + this.editor = editor; + this.keyboardHandler = new HashHandler(this.commands); + this.$index = -1; + this.blurListener = this.blurListener.bind(this); + this.changeListener = this.changeListener.bind(this); + this.changeTimer = lang.delayedCall(function () { + this.updateCompletions(); + }.bind(this)); + } + InlineAutocomplete.prototype.getInlineRenderer = function () { + if (!this.inlineRenderer) + this.inlineRenderer = new AceInline(); + return this.inlineRenderer; + }; + InlineAutocomplete.prototype.getInlineTooltip = function () { + if (!this.inlineTooltip) { + this.inlineTooltip = InlineAutocomplete.createInlineTooltip(document.body || document.documentElement); + } + return this.inlineTooltip; + }; + InlineAutocomplete.prototype.show = function (options) { + this.activated = true; + if (this.editor.completer !== this) { + if (this.editor.completer) + this.editor.completer.detach(); + this.editor.completer = this; + } + this.editor.on("changeSelection", this.changeListener); + this.editor.on("blur", this.blurListener); + this.updateCompletions(options); + }; + InlineAutocomplete.prototype.$open = function () { + if (this.editor.textInput.setAriaOptions) { + this.editor.textInput.setAriaOptions({}); + } + this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + this.getInlineTooltip().attach(this.editor); + if (this.$index === -1) { + this.setIndex(0); + } + else { + this.$showCompletion(); + } + this.changeTimer.cancel(); + }; + InlineAutocomplete.prototype.insertMatch = function () { + var result = this.getCompletionProvider().insertByIndex(this.editor, this.$index); + this.detach(); + return result; + }; + InlineAutocomplete.prototype.changeListener = function (e) { + var cursor = this.editor.selection.lead; + if (cursor.row != this.base.row || cursor.column < this.base.column) { + this.detach(); + } + if (this.activated) + this.changeTimer.schedule(); + else + this.detach(); + }; + InlineAutocomplete.prototype.blurListener = function (e) { + this.detach(); + }; + InlineAutocomplete.prototype.goTo = function (where) { + if (!this.completions || !this.completions.filtered) { + return; + } + var completionLength = this.completions.filtered.length; + switch (where.toLowerCase()) { + case "prev": + this.setIndex((this.$index - 1 + completionLength) % completionLength); + break; + case "next": + this.setIndex((this.$index + 1 + completionLength) % completionLength); + break; + case "first": + this.setIndex(0); + break; + case "last": + this.setIndex(this.completions.filtered.length - 1); + break; + } + }; + InlineAutocomplete.prototype.getLength = function () { + if (!this.completions || !this.completions.filtered) { + return 0; + } + return this.completions.filtered.length; + }; + InlineAutocomplete.prototype.getData = function (index) { + if (index == undefined || index === null) { + return this.completions.filtered[this.$index]; + } + else { + return this.completions.filtered[index]; + } + }; + InlineAutocomplete.prototype.getIndex = function () { + return this.$index; + }; + InlineAutocomplete.prototype.isOpen = function () { + return this.$index >= 0; + }; + InlineAutocomplete.prototype.setIndex = function (value) { + if (!this.completions || !this.completions.filtered) { + return; + } + var newIndex = Math.max(-1, Math.min(this.completions.filtered.length - 1, value)); + if (newIndex !== this.$index) { + this.$index = newIndex; + this.$showCompletion(); + } + }; + InlineAutocomplete.prototype.getCompletionProvider = function (initialPosition) { + if (!this.completionProvider) + this.completionProvider = new CompletionProvider(initialPosition); + return this.completionProvider; + }; + InlineAutocomplete.prototype.$showCompletion = function () { + if (!this.getInlineRenderer().show(this.editor, this.completions.filtered[this.$index], this.completions.filterText)) { + this.getInlineRenderer().hide(); + } + if (this.inlineTooltip && this.inlineTooltip.isShown()) { + this.inlineTooltip.update(); + } + }; + InlineAutocomplete.prototype.$updatePrefix = function () { + var pos = this.editor.getCursorPosition(); + var prefix = this.editor.session.getTextRange({ start: this.base, end: pos }); + this.completions.setFilter(prefix); + if (!this.completions.filtered.length) + return this.detach(); + if (this.completions.filtered.length == 1 + && this.completions.filtered[0].value == prefix + && !this.completions.filtered[0].snippet) + return this.detach(); + this.$open(this.editor, prefix); + return prefix; + }; + InlineAutocomplete.prototype.updateCompletions = function (options) { + var prefix = ""; + if (options && options.matches) { + var pos = this.editor.getSelectionRange().start; + this.base = this.editor.session.doc.createAnchor(pos.row, pos.column); + this.base.$insertRight = true; + this.completions = new FilteredList(options.matches); + return this.$open(this.editor, ""); + } + if (this.base && this.completions) { + prefix = this.$updatePrefix(); + } + var session = this.editor.getSession(); + var pos = this.editor.getCursorPosition(); + var prefix = util.getCompletionPrefix(this.editor); + this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); + this.base.$insertRight = true; + var options = { + exactMatch: true, + ignoreCaption: true + }; + this.getCompletionProvider({ + prefix: prefix, + base: this.base, + pos: pos + }).provideCompletions(this.editor, options, + function (err, completions, finished) { + var filtered = completions.filtered; + var prefix = util.getCompletionPrefix(this.editor); + if (finished) { + if (!filtered.length) + return this.detach(); + if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet) + return this.detach(); + } + this.completions = completions; + this.$open(this.editor, prefix); + }.bind(this)); + }; + InlineAutocomplete.prototype.detach = function () { + if (this.editor) { + this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); + this.editor.off("changeSelection", this.changeListener); + this.editor.off("blur", this.blurListener); + } + this.changeTimer.cancel(); + if (this.inlineTooltip) { + this.inlineTooltip.detach(); + } + this.setIndex(-1); + if (this.completionProvider) { + this.completionProvider.detach(); + } + if (this.inlineRenderer && this.inlineRenderer.isOpen()) { + this.inlineRenderer.hide(); + } + if (this.base) + this.base.detach(); + this.activated = false; + this.completionProvider = this.completions = this.base = null; + }; + InlineAutocomplete.prototype.destroy = function () { + this.detach(); + if (this.inlineRenderer) + this.inlineRenderer.destroy(); + if (this.inlineTooltip) + this.inlineTooltip.destroy(); + if (this.editor && this.editor.completer == this) { + this.editor.off("destroy", destroyCompleter); + this.editor.completer = null; + } + this.inlineTooltip = this.editor = this.inlineRenderer = null; + }; + InlineAutocomplete.prototype.updateDocTooltip = function () { + }; + return InlineAutocomplete; +}()); +InlineAutocomplete.prototype.commands = { + "Previous": { + bindKey: "Alt-[", + name: "Previous", + exec: function (editor) { + editor.completer.goTo("prev"); + } + }, + "Next": { + bindKey: "Alt-]", + name: "Next", + exec: function (editor) { + editor.completer.goTo("next"); + } + }, + "Accept": { + bindKey: { win: "Tab|Ctrl-Right", mac: "Tab|Cmd-Right" }, + name: "Accept", + exec: function (editor) { + return /**@type{InlineAutocomplete}*/ (editor.completer).insertMatch(); + } + }, + "Close": { + bindKey: "Esc", + name: "Close", + exec: function (editor) { + editor.completer.detach(); + } + } +}; +InlineAutocomplete.for = function (editor) { + if (editor.completer instanceof InlineAutocomplete) { + return editor.completer; + } + if (editor.completer) { + editor.completer.destroy(); + editor.completer = null; + } + editor.completer = new InlineAutocomplete(editor); + editor.once("destroy", destroyCompleter); + return editor.completer; +}; +InlineAutocomplete.startCommand = { + name: "startInlineAutocomplete", + exec: function (editor, options) { + var completer = InlineAutocomplete.for(editor); + completer.show(options); + }, + bindKey: { win: "Alt-C", mac: "Option-C" } +}; +var completers = [snippetCompleter, textCompleter, keyWordCompleter]; +require("../config").defineOptions(Editor.prototype, "editor", { + enableInlineAutocompletion: { + set: function (val) { + if (val) { + if (!this.completers) + this.completers = Array.isArray(val) ? val : completers; + this.commands.addCommand(InlineAutocomplete.startCommand); + } + else { + this.commands.removeCommand(InlineAutocomplete.startCommand); + } + }, + value: false + } +}); +InlineAutocomplete.createInlineTooltip = function (parentEl) { + var inlineTooltip = new CommandBarTooltip(parentEl); + inlineTooltip.registerCommand("Previous", + Object.assign({}, InlineAutocomplete.prototype.commands["Previous"], { + enabled: true, + type: "button", + iconCssClass: "ace_arrow_rotated" + })); + inlineTooltip.registerCommand("Position", { + enabled: false, + getValue: function (editor) { + return editor ? [ + (editor.completer).getIndex() + 1, /**@type{InlineAutocomplete}*/ (editor.completer).getLength() + ].join("/") : ""; + }, + type: "text", + cssClass: "completion_position" + }); + inlineTooltip.registerCommand("Next", + Object.assign({}, InlineAutocomplete.prototype.commands["Next"], { + enabled: true, + type: "button", + iconCssClass: "ace_arrow" + })); + inlineTooltip.registerCommand("Accept", + Object.assign({}, InlineAutocomplete.prototype.commands["Accept"], { + enabled: function (editor) { + return !!editor && editor.completer.getIndex() >= 0; + }, + type: "button" + })); + inlineTooltip.registerCommand("ShowTooltip", { + name: "Always Show Tooltip", + exec: function () { + inlineTooltip.setAlwaysShow(!inlineTooltip.getAlwaysShow()); + }, + enabled: true, + getValue: function () { + return inlineTooltip.getAlwaysShow(); + }, + type: "checkbox" + }); + return inlineTooltip; +}; +dom.importCssString("\n\n.ace_icon_svg.ace_arrow,\n.ace_icon_svg.ace_arrow_rotated {\n -webkit-mask-image: url(\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTUuODM3MDEgMTVMNC41ODc1MSAxMy43MTU1TDEwLjE0NjggOEw0LjU4NzUxIDIuMjg0NDZMNS44MzcwMSAxTDEyLjY0NjUgOEw1LjgzNzAxIDE1WiIgZmlsbD0iYmxhY2siLz48L3N2Zz4=\");\n}\n\n.ace_icon_svg.ace_arrow_rotated {\n transform: rotate(180deg);\n}\n\ndiv.".concat(BUTTON_CLASS_NAME, ".completion_position {\n padding: 0;\n}\n"), "inlineautocomplete.css", false); +exports.InlineAutocomplete = InlineAutocomplete; + +}); (function() { + window.require(["ace/ext/inline_autocomplete"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-keybinding_menu.js b/vendor/assets/javascripts/ace/ext-keybinding_menu.js index 85d49cb6..03941559 100644 --- a/vendor/assets/javascripts/ace/ext-keybinding_menu.js +++ b/vendor/assets/javascripts/ace/ext-keybinding_menu.js @@ -1,127 +1,87 @@ -define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/ext/menu_tools/settings_menu.css",["require","exports","module"], function(require, exports, module){module.exports = "#ace_settingsmenu, #kbshortcutmenu {\n background-color: #F7F7F7;\n color: black;\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\n padding: 1em 0.5em 2em 1em;\n overflow: auto;\n position: absolute;\n margin: 0;\n bottom: 0;\n right: 0;\n top: 0;\n z-index: 9991;\n cursor: default;\n}\n\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\n background-color: rgba(255, 255, 255, 0.6);\n color: black;\n}\n\n.ace_optionsMenuEntry:hover {\n background-color: rgba(100, 100, 100, 0.1);\n transition: all 0.3s\n}\n\n.ace_closeButton {\n background: rgba(245, 146, 146, 0.5);\n border: 1px solid #F48A8A;\n border-radius: 50%;\n padding: 7px;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 100000;\n}\n.ace_closeButton{\n background: rgba(245, 146, 146, 0.9);\n}\n.ace_optionsMenuKey {\n color: darkslateblue;\n font-weight: bold;\n}\n.ace_optionsMenuCommand {\n color: darkcyan;\n font-weight: normal;\n}\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\n vertical-align: middle;\n}\n\n.ace_optionsMenuEntry button[ace_selected_button=true] {\n background: #e7e7e7;\n box-shadow: 1px 0px 2px 0px #adadad inset;\n border-color: #adadad;\n}\n.ace_optionsMenuEntry button {\n background: white;\n border: 1px solid lightgray;\n margin: 0px;\n}\n.ace_optionsMenuEntry button:hover{\n background: #f0f0f0;\n}"; + +}); + +define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom","ace/ext/menu_tools/settings_menu.css"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ 'use strict'; var dom = require("../../lib/dom"); -var cssText = "#ace_settingsmenu, #kbshortcutmenu {\ -background-color: #F7F7F7;\ -color: black;\ -box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\ -padding: 1em 0.5em 2em 1em;\ -overflow: auto;\ -position: absolute;\ -margin: 0;\ -bottom: 0;\ -right: 0;\ -top: 0;\ -z-index: 9991;\ -cursor: default;\ -}\ -.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\ -box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\ -background-color: rgba(255, 255, 255, 0.6);\ -color: black;\ -}\ -.ace_optionsMenuEntry:hover {\ -background-color: rgba(100, 100, 100, 0.1);\ --webkit-transition: all 0.5s;\ -transition: all 0.3s\ -}\ -.ace_closeButton {\ -background: rgba(245, 146, 146, 0.5);\ -border: 1px solid #F48A8A;\ -border-radius: 50%;\ -padding: 7px;\ -position: absolute;\ -right: -8px;\ -top: -8px;\ -z-index: 1000;\ -}\ -.ace_closeButton{\ -background: rgba(245, 146, 146, 0.9);\ -}\ -.ace_optionsMenuKey {\ -color: darkslateblue;\ -font-weight: bold;\ -}\ -.ace_optionsMenuCommand {\ -color: darkcyan;\ -font-weight: normal;\ -}"; -dom.importCssString(cssText); -module.exports.overlayPage = function overlayPage(editor, contentElement, top, right, bottom, left) { - top = top ? 'top: ' + top + ';' : ''; - bottom = bottom ? 'bottom: ' + bottom + ';' : ''; - right = right ? 'right: ' + right + ';' : ''; - left = left ? 'left: ' + left + ';' : ''; - +var cssText = require("./settings_menu.css"); +dom.importCssString(cssText, "settings_menu.css", false); +module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { var closer = document.createElement('div'); - var contentContainer = document.createElement('div'); - + var ignoreFocusOut = false; function documentEscListener(e) { if (e.keyCode === 27) { - closer.click(); + close(); + } + } + function close() { + if (!closer) + return; + document.removeEventListener('keydown', documentEscListener); + closer.parentNode.removeChild(closer); + if (editor) { + editor.focus(); + } + closer = null; + callback && callback(); + } + function setIgnoreFocusOut(ignore) { + ignoreFocusOut = ignore; + if (ignore) { + closer.style.pointerEvents = "none"; + contentElement.style.pointerEvents = "auto"; } } - closer.style.cssText = 'margin: 0; padding: 0; ' + 'position: fixed; top:0; bottom:0; left:0; right:0;' + 'z-index: 9990; ' + - 'background-color: rgba(0, 0, 0, 0.3);'; - closer.addEventListener('click', function() { - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - editor.focus(); - closer = null; + (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); + closer.addEventListener('click', function (e) { + if (!ignoreFocusOut) { + close(); + } }); document.addEventListener('keydown', documentEscListener); - - contentContainer.style.cssText = top + right + bottom + left; - contentContainer.addEventListener('click', function(e) { + contentElement.addEventListener('click', function (e) { e.stopPropagation(); }); - - var wrapper = dom.createElement("div"); - wrapper.style.position = "relative"; - - var closeButton = dom.createElement("div"); - closeButton.className = "ace_closeButton"; - closeButton.addEventListener('click', function() { - closer.click(); - }); - - wrapper.appendChild(closeButton); - contentContainer.appendChild(wrapper); - - contentContainer.appendChild(contentElement); - closer.appendChild(contentContainer); + closer.appendChild(contentElement); document.body.appendChild(closer); - editor.blur(); + if (editor) { + editor.blur(); + } + return { + close: close, + setIgnoreFocusOut: setIgnoreFocusOut + }; }; }); -define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"], function(require, exports, module) { -"use strict"; -var keys = require("../../lib/keys"); -module.exports.getEditorKeybordShortcuts = function(editor) { +define("ace/ext/menu_tools/get_editor_keyboard_shortcuts",["require","exports","module","ace/lib/keys"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +"use strict"; var keys = require("../../lib/keys"); +module.exports.getEditorKeybordShortcuts = function (editor) { var KEY_MODS = keys.KEY_MODS; var keybindings = []; var commandMap = {}; - editor.keyBinding.$handlers.forEach(function(handler) { - var ckb = handler.commandKeyBinding; + editor.keyBinding.$handlers.forEach(function (handler) { + var ckb = handler["commandKeyBinding"]; for (var i in ckb) { - var key = i.replace(/(^|-)\w/g, function(x) { return x.toUpperCase(); }); + var key = i.replace(/(^|-)\w/g, function (x) { return x.toUpperCase(); }); var commands = ckb[i]; if (!Array.isArray(commands)) commands = [commands]; - commands.forEach(function(command) { + commands.forEach(function (command) { if (typeof command != "string") - command = command.name; + command = command.name; if (commandMap[command]) { commandMap[command].key += "|" + key; - } else { - commandMap[command] = {key: key, command: command}; + } + else { + commandMap[command] = { key: key, command: command }; keybindings.push(commandMap[command]); - } + } }); } }); @@ -130,41 +90,47 @@ module.exports.getEditorKeybordShortcuts = function(editor) { }); -define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"], function(require, exports, module) { - "use strict"; - var Editor = require("ace/editor").Editor; - function showKeyboardShortcuts (editor) { - if(!document.getElementById('kbshortcutmenu')) { - var overlayPage = require('./menu_tools/overlay_page').overlayPage; - var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts; - var kb = getEditorKeybordShortcuts(editor); - var el = document.createElement('div'); - var commands = kb.reduce(function(previous, current) { - return previous + '
' - + current.command + ' : ' - + '' + current.key + '
'; - }, ''); - - el.id = 'kbshortcutmenu'; - el.innerHTML = '

Keyboard Shortcuts

' + commands + '
'; - overlayPage(editor, el, '0', '0', '0', null); - } +define("ace/ext/keybinding_menu",["require","exports","module","ace/editor","ace/ext/menu_tools/overlay_page","ace/ext/menu_tools/get_editor_keyboard_shortcuts"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +"use strict"; +var Editor = require("../editor").Editor; +function showKeyboardShortcuts(editor) { + if (!document.getElementById('kbshortcutmenu')) { + var overlayPage = require('./menu_tools/overlay_page').overlayPage; + var getEditorKeybordShortcuts = require('./menu_tools/get_editor_keyboard_shortcuts').getEditorKeybordShortcuts; + var kb = getEditorKeybordShortcuts(editor); + var el = document.createElement('div'); + var commands = kb.reduce(function (previous, current) { + return previous + '
' + + current.command + ' : ' + + '' + current.key + '
'; + }, ''); + el.id = 'kbshortcutmenu'; + el.innerHTML = '

Keyboard Shortcuts

' + commands + ''; + overlayPage(editor, el); } - module.exports.init = function(editor) { - Editor.prototype.showKeyboardShortcuts = function() { - showKeyboardShortcuts(this); - }; - editor.commands.addCommands([{ +} +module.exports.init = function (editor) { + Editor.prototype.showKeyboardShortcuts = function () { + showKeyboardShortcuts(this); + }; + editor.commands.addCommands([{ name: "showKeyboardShortcuts", - bindKey: {win: "Ctrl-Alt-h", mac: "Command-Alt-h"}, - exec: function(editor, line) { + bindKey: { + win: "Ctrl-Alt-h", + mac: "Command-Alt-h" + }, + exec: + function (editor, line) { editor.showKeyboardShortcuts(); } }]); - }; +}; -}); - (function() { - window.require(["ace/ext/keybinding_menu"], function() {}); +}); (function() { + window.require(["ace/ext/keybinding_menu"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-language_tools.js b/vendor/assets/javascripts/ace/ext-language_tools.js index fbfb26bb..0e883853 100644 --- a/vendor/assets/javascripts/ace/ext-language_tools.js +++ b/vendor/assets/javascripts/ace/ext-language_tools.js @@ -1,170 +1,246 @@ -define("ace/snippets",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/anchor","ace/keyboard/hash_handler","ace/tokenizer","ace/lib/dom","ace/editor"], function(require, exports, module) { -"use strict"; +define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"], function(require, exports, module){"use strict"; +var dom = require("./lib/dom"); var oop = require("./lib/oop"); var EventEmitter = require("./lib/event_emitter").EventEmitter; var lang = require("./lib/lang"); var Range = require("./range").Range; -var Anchor = require("./anchor").Anchor; +var RangeList = require("./range_list").RangeList; var HashHandler = require("./keyboard/hash_handler").HashHandler; var Tokenizer = require("./tokenizer").Tokenizer; -var comparePoints = Range.comparePoints; - -var SnippetManager = function() { - this.snippetMap = {}; - this.snippetNameMap = {}; +var clipboard = require("./clipboard"); +var VARIABLES = { + CURRENT_WORD: function (editor) { + return editor.session.getTextRange(editor.session.getWordRange()); + }, + SELECTION: function (editor, name, indentation) { + var text = editor.session.getTextRange(); + if (indentation) + return text.replace(/\n\r?([ \t]*\S)/g, "\n" + indentation + "$1"); + return text; + }, + CURRENT_LINE: function (editor) { + return editor.session.getLine(editor.getCursorPosition().row); + }, + PREV_LINE: function (editor) { + return editor.session.getLine(editor.getCursorPosition().row - 1); + }, + LINE_INDEX: function (editor) { + return editor.getCursorPosition().row; + }, + LINE_NUMBER: function (editor) { + return editor.getCursorPosition().row + 1; + }, + SOFT_TABS: function (editor) { + return editor.session.getUseSoftTabs() ? "YES" : "NO"; + }, + TAB_SIZE: function (editor) { + return editor.session.getTabSize(); + }, + CLIPBOARD: function (editor) { + return clipboard.getText && clipboard.getText(); + }, + FILENAME: function (editor) { + return /[^/\\]*$/.exec(this.FILEPATH(editor))[0]; + }, + FILENAME_BASE: function (editor) { + return /[^/\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\.[^.]*$/, ""); + }, + DIRECTORY: function (editor) { + return this.FILEPATH(editor).replace(/[^/\\]*$/, ""); + }, + FILEPATH: function (editor) { return "/not implemented.txt"; }, + WORKSPACE_NAME: function () { return "Unknown"; }, + FULLNAME: function () { return "Unknown"; }, + BLOCK_COMMENT_START: function (editor) { + var mode = editor.session.$mode || {}; + return mode.blockComment && mode.blockComment.start || ""; + }, + BLOCK_COMMENT_END: function (editor) { + var mode = editor.session.$mode || {}; + return mode.blockComment && mode.blockComment.end || ""; + }, + LINE_COMMENT: function (editor) { + var mode = editor.session.$mode || {}; + return mode.lineCommentStart || ""; + }, + CURRENT_YEAR: date.bind(null, { year: "numeric" }), + CURRENT_YEAR_SHORT: date.bind(null, { year: "2-digit" }), + CURRENT_MONTH: date.bind(null, { month: "numeric" }), + CURRENT_MONTH_NAME: date.bind(null, { month: "long" }), + CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: "short" }), + CURRENT_DATE: date.bind(null, { day: "2-digit" }), + CURRENT_DAY_NAME: date.bind(null, { weekday: "long" }), + CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: "short" }), + CURRENT_HOUR: date.bind(null, { hour: "2-digit", hour12: false }), + CURRENT_MINUTE: date.bind(null, { minute: "2-digit" }), + CURRENT_SECOND: date.bind(null, { second: "2-digit" }) }; - -(function() { - oop.implement(this, EventEmitter); - - this.getTokenizer = function() { - function TabstopToken(str, _, stack) { +VARIABLES.SELECTED_TEXT = VARIABLES.SELECTION; +function date(dateFormat) { + var str = new Date().toLocaleString("en-us", dateFormat); + return str.length == 1 ? "0" + str : str; +} +var SnippetManager = /** @class */ (function () { + function SnippetManager() { + this.snippetMap = {}; + this.snippetNameMap = {}; + this.variables = VARIABLES; + } + SnippetManager.prototype.getTokenizer = function () { + return SnippetManager["$tokenizer"] || this.createTokenizer(); + }; + SnippetManager.prototype.createTokenizer = function () { + function TabstopToken(str) { str = str.substr(1); - if (/^\d+$/.test(str) && !stack.inFormatString) - return [{tabstopId: parseInt(str, 10)}]; - return [{text: str}]; + if (/^\d+$/.test(str)) + return [{ tabstopId: parseInt(str, 10) }]; + return [{ text: str }]; } function escape(ch) { return "(?:[^\\\\" + ch + "]|\\\\.)"; } - SnippetManager.$tokenizer = new Tokenizer({ + var formatMatcher = { + regex: "/(" + escape("/") + "+)/", + onMatch: function (val, state, stack) { + var ts = stack[0]; + ts.fmtString = true; + ts.guard = val.slice(1, -1); + ts.flag = ""; + return ""; + }, + next: "formatString" + }; + SnippetManager["$tokenizer"] = new Tokenizer({ start: [ - {regex: /:/, onMatch: function(val, state, stack) { - if (stack.length && stack[0].expectIf) { - stack[0].expectIf = false; - stack[0].elseBranch = stack[0]; - return [stack[0]]; - } - return ":"; - }}, - {regex: /\\./, onMatch: function(val, state, stack) { - var ch = val[1]; - if (ch == "}" && stack.length) { - val = ch; - }else if ("`$\\".indexOf(ch) != -1) { - val = ch; - } else if (stack.inFormatString) { - if (ch == "n") - val = "\n"; - else if (ch == "t") - val = "\n"; - else if ("ulULE".indexOf(ch) != -1) { - val = {changeCase: ch, local: ch > "a"}; + { regex: /\\./, onMatch: function (val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) { + val = ch; } - } - - return [val]; - }}, - {regex: /}/, onMatch: function(val, state, stack) { - return [stack.length ? stack.shift() : val]; - }}, - {regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken}, - {regex: /\$\{[\dA-Z_a-z]+/, onMatch: function(str, state, stack) { - var t = TabstopToken(str.substr(1), state, stack); - stack.unshift(t[0]); - return t; - }, next: "snippetVar"}, - {regex: /\n/, token: "newline", merge: false} + else if ("`$\\".indexOf(ch) != -1) { + val = ch; + } + return [val]; + } }, + { regex: /}/, onMatch: function (val, state, stack) { + return [stack.length ? stack.shift() : val]; + } }, + { regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken }, + { regex: /\$\{[\dA-Z_a-z]+/, onMatch: function (str, state, stack) { + var t = TabstopToken(str.substr(1)); + stack.unshift(t[0]); + return t; + }, next: "snippetVar" }, + { regex: /\n/, token: "newline", merge: false } ], snippetVar: [ - {regex: "\\|" + escape("\\|") + "*\\|", onMatch: function(val, state, stack) { - stack[0].choices = val.slice(1, -1).split(","); - }, next: "start"}, - {regex: "/(" + escape("/") + "+)/(?:(" + escape("/") + "*)/)(\\w*):?", - onMatch: function(val, state, stack) { - var ts = stack[0]; - ts.fmtString = val; - - val = this.splitRegex.exec(val); - ts.guard = val[1]; - ts.fmt = val[2]; - ts.flag = val[3]; - return ""; - }, next: "start"}, - {regex: "`" + escape("`") + "*`", onMatch: function(val, state, stack) { - stack[0].code = val.splice(1, -1); - return ""; - }, next: "start"}, - {regex: "\\?", onMatch: function(val, state, stack) { - if (stack[0]) - stack[0].expectIf = true; - }, next: "start"}, - {regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start"} + { regex: "\\|" + escape("\\|") + "*\\|", onMatch: function (val, state, stack) { + var choices = val.slice(1, -1).replace(/\\[,|\\]|,/g, function (operator) { + return operator.length == 2 ? operator[1] : "\x00"; + }).split("\x00").map(function (value) { + return { value: value }; + }); + stack[0].choices = choices; + return [choices[0]]; + }, next: "start" }, + formatMatcher, + { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start" } ], formatString: [ - {regex: "/(" + escape("/") + "+)/", token: "regex"}, - {regex: "", onMatch: function(val, state, stack) { - stack.inFormatString = true; - }, next: "start"} + { regex: /:/, onMatch: function (val, state, stack) { + if (stack.length && stack[0].expectElse) { + stack[0].expectElse = false; + stack[0].ifEnd = { elseEnd: stack[0] }; + return [stack[0].ifEnd]; + } + return ":"; + } }, + { regex: /\\./, onMatch: function (val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) + val = ch; + else if ("`$\\".indexOf(ch) != -1) + val = ch; + else if (ch == "n") + val = "\n"; + else if (ch == "t") + val = "\t"; + else if ("ulULE".indexOf(ch) != -1) + val = { changeCase: ch, local: ch > "a" }; + return [val]; + } }, + { regex: "/\\w*}", onMatch: function (val, state, stack) { + var next = stack.shift(); + if (next) + next.flag = val.slice(1, -1); + this.next = next && next.tabstopId ? "start" : ""; + return [next || val]; + }, next: "start" }, + { regex: /\$(?:\d+|\w+)/, onMatch: function (val, state, stack) { + return [{ text: val.slice(1) }]; + } }, + { regex: /\${\w+/, onMatch: function (val, state, stack) { + var token = { text: val.slice(2) }; + stack.unshift(token); + return [token]; + }, next: "formatStringVar" }, + { regex: /\n/, token: "newline", merge: false }, + { regex: /}/, onMatch: function (val, state, stack) { + var next = stack.shift(); + this.next = next && next.tabstopId ? "start" : ""; + return [next || val]; + }, next: "start" } + ], + formatStringVar: [ + { regex: /:\/\w+}/, onMatch: function (val, state, stack) { + var ts = stack[0]; + ts.formatFunction = val.slice(2, -1); + return [stack.shift()]; + }, next: "formatString" }, + formatMatcher, + { regex: /:[\?\-+]?/, onMatch: function (val, state, stack) { + if (val[1] == "+") + stack[0].ifEnd = stack[0]; + if (val[1] == "?") + stack[0].expectElse = true; + }, next: "formatString" }, + { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "formatString" } ] }); - SnippetManager.prototype.getTokenizer = function() { - return SnippetManager.$tokenizer; - }; - return SnippetManager.$tokenizer; + return SnippetManager["$tokenizer"]; }; - - this.tokenizeTmSnippet = function(str, startState) { - return this.getTokenizer().getLineTokens(str, startState).tokens.map(function(x) { + SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) { + return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) { return x.value || x; }); }; - - this.$getDefaultValue = function(editor, name) { - if (/^[A-Z]\d+$/.test(name)) { - var i = name.substr(1); - return (this.variables[name[0] + "__"] || {})[i]; - } - if (/^\d+$/.test(name)) { - return (this.variables.__ || {})[name]; - } + SnippetManager.prototype.getVariableValue = function (editor, name, indentation) { + if (/^\d+$/.test(name)) + return (this.variables.__ || {})[name] || ""; + if (/^[A-Z]\d+$/.test(name)) + return (this.variables[name[0] + "__"] || {})[name.substr(1)] || ""; name = name.replace(/^TM_/, ""); - - if (!editor) - return; - var s = editor.session; - switch(name) { - case "CURRENT_WORD": - var r = s.getWordRange(); - case "SELECTION": - case "SELECTED_TEXT": - return s.getTextRange(r); - case "CURRENT_LINE": - return s.getLine(editor.getCursorPosition().row); - case "PREV_LINE": // not possible in textmate - return s.getLine(editor.getCursorPosition().row - 1); - case "LINE_INDEX": - return editor.getCursorPosition().column; - case "LINE_NUMBER": - return editor.getCursorPosition().row + 1; - case "SOFT_TABS": - return s.getUseSoftTabs() ? "YES" : "NO"; - case "TAB_SIZE": - return s.getTabSize(); - case "FILENAME": - case "FILEPATH": - return ""; - case "FULLNAME": - return "Ace"; - } + if (!this.variables.hasOwnProperty(name)) + return ""; + var value = this.variables[name]; + if (typeof value == "function") + value = this.variables[name](editor, name, indentation); + return value == null ? "" : value; }; - this.variables = {}; - this.getVariableValue = function(editor, varName) { - if (this.variables.hasOwnProperty(varName)) - return this.variables[varName](editor, varName) || ""; - return this.$getDefaultValue(editor, varName) || ""; - }; - this.tmStrFormat = function(str, ch, editor) { + SnippetManager.prototype.tmStrFormat = function (str, ch, editor) { + if (!ch.fmt) + return str; var flag = ch.flag || ""; var re = ch.guard; - re = new RegExp(re, flag.replace(/[^gi]/, "")); - var fmtTokens = this.tokenizeTmSnippet(ch.fmt, "formatString"); + re = new RegExp(re, flag.replace(/[^gim]/g, "")); + var fmtTokens = typeof ch.fmt == "string" ? this.tokenizeTmSnippet(ch.fmt, "formatString") : ch.fmt; var _self = this; - var formatted = str.replace(re, function() { - _self.variables.__ = arguments; + var formatted = str.replace(re, function () { + var oldArgs = _self.variables.__; + _self.variables.__ = [].slice.call(arguments); var fmtParts = _self.resolveVariables(fmtTokens, editor); var gChangeCase = "E"; - for (var i = 0; i < fmtParts.length; i++) { + for (var i = 0; i < fmtParts.length; i++) { var ch = fmtParts[i]; if (typeof ch == "object") { fmtParts[i] = ""; @@ -177,52 +253,79 @@ var SnippetManager = function() { fmtParts[i] = next[0].toLowerCase(); fmtParts[i + 1] = next.substr(1); } - } else if (ch.changeCase) { + } + else if (ch.changeCase) { gChangeCase = ch.changeCase; } - } else if (gChangeCase == "U") { + } + else if (gChangeCase == "U") { fmtParts[i] = ch.toUpperCase(); - } else if (gChangeCase == "L") { + } + else if (gChangeCase == "L") { fmtParts[i] = ch.toLowerCase(); } } + _self.variables.__ = oldArgs; return fmtParts.join(""); }); - this.variables.__ = null; return formatted; }; - - this.resolveVariables = function(snippet, editor) { + SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) { + if (ch.formatFunction == "upcase") + return str.toUpperCase(); + if (ch.formatFunction == "downcase") + return str.toLowerCase(); + return str; + }; + SnippetManager.prototype.resolveVariables = function (snippet, editor) { var result = []; + var indentation = ""; + var afterNewLine = true; for (var i = 0; i < snippet.length; i++) { var ch = snippet[i]; if (typeof ch == "string") { result.push(ch); - } else if (typeof ch != "object") { - continue; - } else if (ch.skip) { - gotoNext(ch); - } else if (ch.processed < i) { - continue; - } else if (ch.text) { - var value = this.getVariableValue(editor, ch.text); - if (value && ch.fmtString) - value = this.tmStrFormat(value, ch); - ch.processed = i; - if (ch.expectIf == null) { - if (value) { - result.push(value); - gotoNext(ch); - } - } else { - if (value) { - ch.skip = ch.elseBranch; - } else - gotoNext(ch); + if (ch == "\n") { + afterNewLine = true; + indentation = ""; } - } else if (ch.tabstopId != null) { + else if (afterNewLine) { + indentation = /^\t*/.exec(ch)[0]; + afterNewLine = /\S/.test(ch); + } + continue; + } + if (!ch) + continue; + afterNewLine = false; + if (ch.fmtString) { + var j = snippet.indexOf(ch, i + 1); + if (j == -1) + j = snippet.length; + ch.fmt = snippet.slice(i + 1, j); + i = j; + } + if (ch.text) { + var value = this.getVariableValue(editor, ch.text, indentation) + ""; + if (ch.fmtString) + value = this.tmStrFormat(value, ch, editor); + if (ch.formatFunction) + value = this.tmFormatFunction(value, ch, editor); + if (value && !ch.ifEnd) { + result.push(value); + gotoNext(ch); + } + else if (!value && ch.ifEnd) { + gotoNext(ch.ifEnd); + } + } + else if (ch.elseEnd) { + gotoNext(ch.elseEnd); + } + else if (ch.tabstopId != null) { result.push(ch); - } else if (ch.changeCase != null) { + } + else if (ch.changeCase != null) { result.push(ch); } } @@ -233,134 +336,35 @@ var SnippetManager = function() { } return result; }; - - this.insertSnippetForSelection = function(editor, snippetText) { - var cursor = editor.getCursorPosition(); - var line = editor.session.getLine(cursor.row); - var tabString = editor.session.getTabString(); - var indentString = line.match(/^\s*/)[0]; - - if (cursor.column < indentString.length) - indentString = indentString.slice(0, cursor.column); - - snippetText = snippetText.replace(/\r/g, ""); - var tokens = this.tokenizeTmSnippet(snippetText); - tokens = this.resolveVariables(tokens, editor); - tokens = tokens.map(function(x) { - if (x == "\n") - return x + indentString; - if (typeof x == "string") - return x.replace(/\t/g, tabString); - return x; - }); - var tabstops = []; - tokens.forEach(function(p, i) { - if (typeof p != "object") - return; - var id = p.tabstopId; - var ts = tabstops[id]; - if (!ts) { - ts = tabstops[id] = []; - ts.index = id; - ts.value = ""; - } - if (ts.indexOf(p) !== -1) - return; - ts.push(p); - var i1 = tokens.indexOf(p, i + 1); - if (i1 === -1) - return; - - var value = tokens.slice(i + 1, i1); - var isNested = value.some(function(t) {return typeof t === "object";}); - if (isNested && !ts.value) { - ts.value = value; - } else if (value.length && (!ts.value || typeof ts.value !== "string")) { - ts.value = value.join(""); - } - }); - tabstops.forEach(function(ts) {ts.length = 0;}); - var expanding = {}; - function copyValue(val) { - var copy = []; - for (var i = 0; i < val.length; i++) { - var p = val[i]; - if (typeof p == "object") { - if (expanding[p.tabstopId]) - continue; - var j = val.lastIndexOf(p, i - 1); - p = copy[j] || {tabstopId: p.tabstopId}; - } - copy[i] = p; - } - return copy; - } - for (var i = 0; i < tokens.length; i++) { - var p = tokens[i]; - if (typeof p != "object") - continue; - var id = p.tabstopId; - var i1 = tokens.indexOf(p, i + 1); - if (expanding[id]) { - if (expanding[id] === p) - expanding[id] = null; - continue; - } - - var ts = tabstops[id]; - var arg = typeof ts.value == "string" ? [ts.value] : copyValue(ts.value); - arg.unshift(i + 1, Math.max(0, i1 - i)); - arg.push(p); - expanding[id] = p; - tokens.splice.apply(tokens, arg); - - if (ts.indexOf(p) === -1) - ts.push(p); - } - var row = 0, column = 0; - var text = ""; - tokens.forEach(function(t) { - if (typeof t === "string") { - var lines = t.split("\n"); - if (lines.length > 1){ - column = lines[lines.length - 1].length; - row += lines.length - 1; - } else - column += t.length; - text += t; - } else { - if (!t.start) - t.start = {row: row, column: column}; - else - t.end = {row: row, column: column}; - } - }); + SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) { + var processedSnippet = processSnippetText.call(this, editor, snippetText); + return processedSnippet.text; + }; + SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var processedSnippet = processSnippetText.call(this, editor, snippetText, options); var range = editor.getSelectionRange(); - var end = editor.session.replace(range, text); - + var end = editor.session.replace(range, processedSnippet.text); var tabstopManager = new TabstopManager(editor); var selectionId = editor.inVirtualSelectionMode && editor.selection.index; - tabstopManager.addTabstops(tabstops, range.start, end, selectionId); + tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId); }; - - this.insertSnippet = function(editor, snippetText) { + SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } var self = this; if (editor.inVirtualSelectionMode) - return self.insertSnippetForSelection(editor, snippetText); - - editor.forEachSelection(function() { - self.insertSnippetForSelection(editor, snippetText); - }, null, {keepOrder: true}); - + return self.insertSnippetForSelection(editor, snippetText, options); + editor.forEachSelection(function () { + self.insertSnippetForSelection(editor, snippetText, options); + }, null, { keepOrder: true }); if (editor.tabstopManager) editor.tabstopManager.tabNext(); }; - - this.$getScope = function(editor) { + SnippetManager.prototype.$getScope = function (editor) { var scope = editor.session.$mode.$id || ""; scope = scope.split("/").pop(); if (scope === "html" || scope === "php") { - if (scope === "php" && !editor.session.$mode.inlinePhp) + if (scope === "php" && !editor.session.$mode.inlinePhp) scope = "html"; var c = editor.getCursorPosition(); var state = editor.session.getState(c.row); @@ -376,11 +380,9 @@ var SnippetManager = function() { scope = "php"; } } - return scope; }; - - this.getActiveScopes = function(editor) { + SnippetManager.prototype.getActiveScopes = function (editor) { var scope = this.$getScope(editor); var scopes = [scope]; var snippetMap = this.snippetMap; @@ -390,26 +392,23 @@ var SnippetManager = function() { scopes.push("_"); return scopes; }; - - this.expandWithTab = function(editor, options) { + SnippetManager.prototype.expandWithTab = function (editor, options) { var self = this; - var result = editor.forEachSelection(function() { + var result = editor.forEachSelection(function () { return self.expandSnippetForSelection(editor, options); - }, null, {keepOrder: true}); + }, null, { keepOrder: true }); if (result && editor.tabstopManager) editor.tabstopManager.tabNext(); return result; }; - - this.expandSnippetForSelection = function(editor, options) { + SnippetManager.prototype.expandSnippetForSelection = function (editor, options) { var cursor = editor.getCursorPosition(); var line = editor.session.getLine(cursor.row); var before = line.substring(0, cursor.column); var after = line.substr(cursor.column); - var snippetMap = this.snippetMap; var snippet; - this.getActiveScopes(editor).some(function(scope) { + this.getActiveScopes(editor).some(function (scope) { var snippets = snippetMap[scope]; if (snippets) snippet = this.findMatchingSnippet(snippets, before, after); @@ -419,20 +418,14 @@ var SnippetManager = function() { return false; if (options && options.dryRun) return true; - editor.session.doc.removeInLine(cursor.row, - cursor.column - snippet.replaceBefore.length, - cursor.column + snippet.replaceAfter.length - ); - + editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length); this.variables.M__ = snippet.matchBefore; this.variables.T__ = snippet.matchAfter; this.insertSnippetForSelection(editor, snippet.content); - this.variables.M__ = this.variables.T__ = null; return true; }; - - this.findMatchingSnippet = function(snippetList, before, after) { + SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) { for (var i = snippetList.length; i--;) { var s = snippetList[i]; if (s.startRe && !s.startRe.test(before)) @@ -441,7 +434,6 @@ var SnippetManager = function() { continue; if (!s.startRe && !s.endRe) continue; - s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; @@ -449,21 +441,15 @@ var SnippetManager = function() { return s; } }; - - this.snippetMap = {}; - this.snippetNameMap = {}; - this.register = function(snippets, scope) { + SnippetManager.prototype.register = function (snippets, scope) { var snippetMap = this.snippetMap; var snippetNameMap = this.snippetNameMap; var self = this; - - if (!snippets) + if (!snippets) snippets = []; - function wrapRegexp(src) { if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) src = "(?:" + src + ")"; - return src || ""; } function guardedRegexp(re, guard, opening) { @@ -473,14 +459,14 @@ var SnippetManager = function() { re = guard + re; if (re && re[re.length - 1] != "$") re = re + "$"; - } else { + } + else { re = re + guard; if (re && re[0] != "^") re = "^" + re; } return new RegExp(re); } - function addSnippet(s) { if (!s.scope) s.scope = scope || "_"; @@ -489,7 +475,6 @@ var SnippetManager = function() { snippetMap[scope] = []; snippetNameMap[scope] = {}; } - var map = snippetNameMap[scope]; if (s.name) { var old = map[s.name]; @@ -498,39 +483,40 @@ var SnippetManager = function() { map[s.name] = s; } snippetMap[scope].push(s); - + if (s.prefix) + s.tabTrigger = s.prefix; + if (!s.content && s.body) + s.content = Array.isArray(s.body) ? s.body.join("\n") : s.body; if (s.tabTrigger && !s.trigger) { if (!s.guard && /^\w/.test(s.tabTrigger)) s.guard = "\\b"; s.trigger = lang.escapeRegExp(s.tabTrigger); } - if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) return; - s.startRe = guardedRegexp(s.trigger, s.guard, true); - s.triggerRe = new RegExp(s.trigger, "", true); - + s.triggerRe = new RegExp(s.trigger); s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); - s.endTriggerRe = new RegExp(s.endTrigger, "", true); + s.endTriggerRe = new RegExp(s.endTrigger); } - - if (snippets && snippets.content) - addSnippet(snippets); - else if (Array.isArray(snippets)) + if (Array.isArray(snippets)) { snippets.forEach(addSnippet); - - this._signal("registerSnippets", {scope: scope}); + } + else { + Object.keys(snippets).forEach(function (key) { + addSnippet(snippets[key]); + }); + } + this._signal("registerSnippets", { scope: scope }); }; - this.unregister = function(snippets, scope) { + SnippetManager.prototype.unregister = function (snippets, scope) { var snippetMap = this.snippetMap; var snippetNameMap = this.snippetNameMap; - function removeSnippet(s) { - var nameMap = snippetNameMap[s.scope||scope]; + var nameMap = snippetNameMap[s.scope || scope]; if (nameMap && nameMap[s.name]) { delete nameMap[s.name]; - var map = snippetMap[s.scope||scope]; + var map = snippetMap[s.scope || scope]; var i = map && map.indexOf(s); if (i >= 0) map.splice(i, 1); @@ -541,9 +527,9 @@ var SnippetManager = function() { else if (Array.isArray(snippets)) snippets.forEach(removeSnippet); }; - this.parseSnippetFile = function(str) { + SnippetManager.prototype.parseSnippetFile = function (str) { str = str.replace(/\r/g, ""); - var list = [], snippet = {}; + var list = [], /**@type{Snippet}*/ snippet = {}; var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; var m; while (m = re.exec(str)) { @@ -551,12 +537,15 @@ var SnippetManager = function() { try { snippet = JSON.parse(m[1]); list.push(snippet); - } catch (e) {} - } if (m[4]) { + } + catch (e) { } + } + if (m[4]) { snippet.content = m[4].replace(/^\t/gm, ""); list.push(snippet); snippet = {}; - } else { + } + else { var key = m[2], val = m[3]; if (key == "regex") { var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; @@ -564,21 +553,23 @@ var SnippetManager = function() { snippet.trigger = guardRe.exec(val)[1]; snippet.endTrigger = guardRe.exec(val)[1]; snippet.endGuard = guardRe.exec(val)[1]; - } else if (key == "snippet") { + } + else if (key == "snippet") { snippet.tabTrigger = val.match(/^\S*/)[0]; if (!snippet.name) snippet.name = val; - } else { + } + else if (key) { snippet[key] = val; } } } return list; }; - this.getSnippetByName = function(name, editor) { + SnippetManager.prototype.getSnippetByName = function (name, editor) { var snippetMap = this.snippetNameMap; var snippet; - this.getActiveScopes(editor).some(function(scope) { + this.getActiveScopes(editor).some(function (scope) { var snippets = snippetMap[scope]; if (snippets) snippet = snippets[name]; @@ -586,125 +577,216 @@ var SnippetManager = function() { }, this); return snippet; }; - -}).call(SnippetManager.prototype); - - -var TabstopManager = function(editor) { - if (editor.tabstopManager) - return editor.tabstopManager; - editor.tabstopManager = this; - this.$onChange = this.onChange.bind(this); - this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; - this.$onChangeSession = this.onChangeSession.bind(this); - this.$onAfterExec = this.onAfterExec.bind(this); - this.attach(editor); + return SnippetManager; +}()); +oop.implement(SnippetManager.prototype, EventEmitter); +var processSnippetText = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var cursor = editor.getCursorPosition(); + var line = editor.session.getLine(cursor.row); + var tabString = editor.session.getTabString(); + var indentString = line.match(/^\s*/)[0]; + if (cursor.column < indentString.length) + indentString = indentString.slice(0, cursor.column); + snippetText = snippetText.replace(/\r/g, ""); + var tokens = this.tokenizeTmSnippet(snippetText); + tokens = this.resolveVariables(tokens, editor); + tokens = tokens.map(function (x) { + if (x == "\n" && !options.excludeExtraIndent) + return x + indentString; + if (typeof x == "string") + return x.replace(/\t/g, tabString); + return x; + }); + var tabstops = []; + tokens.forEach(function (p, i) { + if (typeof p != "object") + return; + var id = p.tabstopId; + var ts = tabstops[id]; + if (!ts) { + ts = tabstops[id] = []; + ts.index = id; + ts.value = ""; + ts.parents = {}; + } + if (ts.indexOf(p) !== -1) + return; + if (p.choices && !ts.choices) + ts.choices = p.choices; + ts.push(p); + var i1 = tokens.indexOf(p, i + 1); + if (i1 === -1) + return; + var value = tokens.slice(i + 1, i1); + var isNested = value.some(function (t) { return typeof t === "object"; }); + if (isNested && !ts.value) { + ts.value = value; + } + else if (value.length && (!ts.value || typeof ts.value !== "string")) { + ts.value = value.join(""); + } + }); + tabstops.forEach(function (ts) { ts.length = 0; }); + var expanding = {}; + function copyValue(val) { + var copy = []; + for (var i = 0; i < val.length; i++) { + var p = val[i]; + if (typeof p == "object") { + if (expanding[p.tabstopId]) + continue; + var j = val.lastIndexOf(p, i - 1); + p = copy[j] || { tabstopId: p.tabstopId }; + } + copy[i] = p; + } + return copy; + } + for (var i = 0; i < tokens.length; i++) { + var p = tokens[i]; + if (typeof p != "object") + continue; + var id = p.tabstopId; + var ts = tabstops[id]; + var i1 = tokens.indexOf(p, i + 1); + if (expanding[id]) { + if (expanding[id] === p) { + delete expanding[id]; + Object.keys(expanding).forEach(function (parentId) { + ts.parents[parentId] = true; + }); + } + continue; + } + expanding[id] = p; + var value = ts.value; + if (typeof value !== "string") + value = copyValue(value); + else if (p.fmt) + value = this.tmStrFormat(value, p, editor); + tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p)); + if (ts.indexOf(p) === -1) + ts.push(p); + } + var row = 0, column = 0; + var text = ""; + tokens.forEach(function (t) { + if (typeof t === "string") { + var lines = t.split("\n"); + if (lines.length > 1) { + column = lines[lines.length - 1].length; + row += lines.length - 1; + } + else + column += t.length; + text += t; + } + else if (t) { + if (!t.start) + t.start = { row: row, column: column }; + else + t.end = { row: row, column: column }; + } + }); + return { + text: text, + tabstops: tabstops, + tokens: tokens + }; }; -(function() { - this.attach = function(editor) { +var TabstopManager = /** @class */ (function () { + function TabstopManager(editor) { this.index = 0; this.ranges = []; this.tabstops = []; + if (editor.tabstopManager) + return editor.tabstopManager; + editor.tabstopManager = this; + this.$onChange = this.onChange.bind(this); + this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; + this.$onChangeSession = this.onChangeSession.bind(this); + this.$onAfterExec = this.onAfterExec.bind(this); + this.attach(editor); + } + TabstopManager.prototype.attach = function (editor) { this.$openTabstops = null; this.selectedTabstop = null; - this.editor = editor; + this.session = editor.session; this.editor.on("change", this.$onChange); this.editor.on("changeSelection", this.$onChangeSelection); this.editor.on("changeSession", this.$onChangeSession); this.editor.commands.on("afterExec", this.$onAfterExec); this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); }; - this.detach = function() { + TabstopManager.prototype.detach = function () { this.tabstops.forEach(this.removeTabstopMarkers, this); - this.ranges = null; - this.tabstops = null; + this.ranges.length = 0; + this.tabstops.length = 0; this.selectedTabstop = null; - this.editor.removeListener("change", this.$onChange); - this.editor.removeListener("changeSelection", this.$onChangeSelection); - this.editor.removeListener("changeSession", this.$onChangeSession); - this.editor.commands.removeListener("afterExec", this.$onAfterExec); + this.editor.off("change", this.$onChange); + this.editor.off("changeSelection", this.$onChangeSelection); + this.editor.off("changeSession", this.$onChangeSession); + this.editor.commands.off("afterExec", this.$onAfterExec); this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); this.editor.tabstopManager = null; + this.session = null; this.editor = null; }; - - this.onChange = function(delta) { - var changeRange = delta; + TabstopManager.prototype.onChange = function (delta) { var isRemove = delta.action[0] == "r"; - var start = delta.start; - var end = delta.end; - var startRow = start.row; - var endRow = end.row; - var lineDif = endRow - startRow; - var colDiff = end.column - start.column; - - if (isRemove) { - lineDif = -lineDif; - colDiff = -colDiff; - } - if (!this.$inChange && isRemove) { - var ts = this.selectedTabstop; - var changedOutside = ts && !ts.some(function(r) { - return comparePoints(r.start, start) <= 0 && comparePoints(r.end, end) >= 0; - }); - if (changedOutside) - return this.detach(); - } - var ranges = this.ranges; - for (var i = 0; i < ranges.length; i++) { - var r = ranges[i]; - if (r.end.row < start.row) - continue; - - if (isRemove && comparePoints(start, r.start) < 0 && comparePoints(end, r.end) > 0) { - this.removeRange(r); - i--; - continue; + var selectedTabstop = this.selectedTabstop || {}; + var parents = selectedTabstop.parents || {}; + var tabstops = this.tabstops.slice(); + for (var i = 0; i < tabstops.length; i++) { + var ts = tabstops[i]; + var active = ts == selectedTabstop || parents[ts.index]; + ts.rangeList.$bias = active ? 0 : 1; + if (delta.action == "remove" && ts !== selectedTabstop) { + var parentActive = ts.parents && ts.parents[selectedTabstop.index]; + var startIndex = ts.rangeList.pointIndex(delta.start, parentActive); + startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1; + var endIndex = ts.rangeList.pointIndex(delta.end, parentActive); + endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1; + var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex); + for (var j = 0; j < toRemove.length; j++) + this.removeRange(toRemove[j]); } - - if (r.start.row == startRow && r.start.column > start.column) - r.start.column += colDiff; - if (r.end.row == startRow && r.end.column >= start.column) - r.end.column += colDiff; - if (r.start.row >= startRow) - r.start.row += lineDif; - if (r.end.row >= startRow) - r.end.row += lineDif; - - if (comparePoints(r.start, r.end) > 0) - this.removeRange(r); + ts.rangeList.$onChange(delta); } - if (!ranges.length) + var session = this.session; + if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue()) this.detach(); }; - this.updateLinkedFields = function() { + TabstopManager.prototype.updateLinkedFields = function () { var ts = this.selectedTabstop; - if (!ts || !ts.hasLinkedRanges) + if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked) return; this.$inChange = true; - var session = this.editor.session; + var session = this.session; var text = session.getTextRange(ts.firstNonLinked); - for (var i = ts.length; i--;) { + for (var i = 0; i < ts.length; i++) { var range = ts[i]; if (!range.linked) continue; - var fmt = exports.snippetManager.tmStrFormat(text, range.original); + var original = range.original; + var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor); session.replace(range, fmt); } this.$inChange = false; }; - this.onAfterExec = function(e) { + TabstopManager.prototype.onAfterExec = function (e) { if (e.command && !e.command.readOnly) this.updateLinkedFields(); }; - this.onChangeSelection = function() { + TabstopManager.prototype.onChangeSelection = function () { if (!this.editor) return; var lead = this.editor.selection.lead; var anchor = this.editor.selection.anchor; var isEmpty = this.editor.selection.isEmpty(); - for (var i = this.ranges.length; i--;) { + for (var i = 0; i < this.ranges.length; i++) { if (this.ranges[i].linked) continue; var containsLead = this.ranges[i].contains(lead.row, lead.column); @@ -714,20 +796,22 @@ var TabstopManager = function(editor) { } this.detach(); }; - this.onChangeSession = function() { + TabstopManager.prototype.onChangeSession = function () { this.detach(); }; - this.tabNext = function(dir) { + TabstopManager.prototype.tabNext = function (dir) { var max = this.tabstops.length; var index = this.index + (dir || 1); index = Math.min(Math.max(index, 1), max); if (index == max) index = 0; this.selectTabstop(index); - if (index === 0) + this.updateTabstopMarkers(); + if (index === 0) { this.detach(); + } }; - this.selectTabstop = function(index) { + TabstopManager.prototype.selectTabstop = function (index) { this.$openTabstops = null; var ts = this.tabstops[this.index]; if (ts) @@ -736,25 +820,28 @@ var TabstopManager = function(editor) { ts = this.tabstops[this.index]; if (!ts || !ts.length) return; - this.selectedTabstop = ts; - if (!this.editor.inVirtualSelectionMode) { + var range = ts.firstNonLinked || ts; + if (ts.choices) + range.cursor = range.start; + if (!this.editor.inVirtualSelectionMode) { var sel = this.editor.multiSelect; - sel.toSingleRange(ts.firstNonLinked.clone()); - for (var i = ts.length; i--;) { + sel.toSingleRange(range); + for (var i = 0; i < ts.length; i++) { if (ts.hasLinkedRanges && ts[i].linked) continue; sel.addRange(ts[i].clone(), true); } - if (sel.ranges[0]) - sel.addRange(sel.ranges[0].clone()); - } else { - this.editor.selection.setRange(ts.firstNonLinked); } - + else { + this.editor.selection.fromOrientedRange(range); + } this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + if (this.selectedTabstop && this.selectedTabstop.choices) + this.editor.execCommand("startAutocomplete", { matches: this.selectedTabstop.choices }); }; - this.addTabstops = function(tabstops, start, end) { + TabstopManager.prototype.addTabstops = function (tabstops, start, end) { + var useLink = this.useLink || !this.editor.getOption("enableMultiselect"); if (!this.$openTabstops) this.$openTabstops = []; if (!tabstops[0]) { @@ -764,14 +851,14 @@ var TabstopManager = function(editor) { tabstops[0] = [p]; tabstops[0].index = 0; } - var i = this.index; var arg = [i + 1, 0]; var ranges = this.ranges; - tabstops.forEach(function(ts, index) { + var snippetId = this.snippetId = (this.snippetId || 0) + 1; + tabstops.forEach(function (ts, index) { var dest = this.$openTabstops[index] || ts; - - for (var i = ts.length; i--;) { + dest.snippetId = snippetId; + for (var i = 0; i < ts.length; i++) { var p = ts[i]; var range = Range.fromPoints(p.start, p.end || p.start); movePoint(range.start, start); @@ -783,10 +870,11 @@ var TabstopManager = function(editor) { dest.unshift(range); else dest[i] = range; - if (p.fmtString) { + if (p.fmtString || (dest.firstNonLinked && useLink)) { range.linked = true; dest.hasLinkedRanges = true; - } else if (!dest.firstNonLinked) + } + else if (!dest.firstNonLinked) dest.firstNonLinked = range; } if (!dest.firstNonLinked) @@ -796,35 +884,55 @@ var TabstopManager = function(editor) { this.$openTabstops[index] = dest; } this.addTabstopMarkers(dest); + dest.rangeList = dest.rangeList || new RangeList(); + dest.rangeList.$bias = 0; + dest.rangeList.addList(dest); }, this); - if (arg.length > 2) { if (this.tabstops.length) arg.push(arg.splice(2, 1)[0]); this.tabstops.splice.apply(this.tabstops, arg); } }; - - this.addTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { - if (!range.markerId) + TabstopManager.prototype.addTabstopMarkers = function (ts) { + var session = this.session; + ts.forEach(function (range) { + if (!range.markerId) range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); }); }; - this.removeTabstopMarkers = function(ts) { - var session = this.editor.session; - ts.forEach(function(range) { + TabstopManager.prototype.removeTabstopMarkers = function (ts) { + var session = this.session; + ts.forEach(function (range) { session.removeMarker(range.markerId); range.markerId = null; }); }; - this.removeRange = function(range) { + TabstopManager.prototype.updateTabstopMarkers = function () { + if (!this.selectedTabstop) + return; + var currentSnippetId = this.selectedTabstop.snippetId; + if (this.selectedTabstop.index === 0) { + currentSnippetId--; + } + this.tabstops.forEach(function (ts) { + if (ts.snippetId === currentSnippetId) + this.addTabstopMarkers(ts); + else + this.removeTabstopMarkers(ts); + }, this); + }; + TabstopManager.prototype.removeRange = function (range) { var i = range.tabstop.indexOf(range); - range.tabstop.splice(i, 1); + if (i != -1) + range.tabstop.splice(i, 1); i = this.ranges.indexOf(range); - this.ranges.splice(i, 1); - this.editor.session.removeMarker(range.markerId); + if (i != -1) + this.ranges.splice(i, 1); + i = range.tabstop.rangeList.ranges.indexOf(range); + if (i != -1) + range.tabstop.splice(i, 1); + this.session.removeMarker(range.markerId); if (!range.tabstop.length) { i = this.tabstops.indexOf(range.tabstop); if (i != -1) @@ -833,416 +941,530 @@ var TabstopManager = function(editor) { this.detach(); } }; - - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys({ - "Tab": function(ed) { - if (exports.snippetManager && exports.snippetManager.expandWithTab(ed)) { - return; - } - - ed.tabstopManager.tabNext(1); - }, - "Shift-Tab": function(ed) { - ed.tabstopManager.tabNext(-1); - }, - "Esc": function(ed) { - ed.tabstopManager.detach(); - }, - "Return": function(ed) { - return false; - } - }); -}).call(TabstopManager.prototype); - - - -var changeTracker = {}; -changeTracker.onChange = Anchor.prototype.onChange; -changeTracker.setPosition = function(row, column) { - this.pos.row = row; - this.pos.column = column; -}; -changeTracker.update = function(pos, delta, $insertRight) { - this.$insertRight = $insertRight; - this.pos = pos; - this.onChange(delta); -}; - -var movePoint = function(point, diff) { + return TabstopManager; +}()); +TabstopManager.prototype.keyboardHandler = new HashHandler(); +TabstopManager.prototype.keyboardHandler.bindKeys({ + "Tab": function (editor) { + if (exports.snippetManager && exports.snippetManager.expandWithTab(editor)) + return; + editor.tabstopManager.tabNext(1); + editor.renderer.scrollCursorIntoView(); + }, + "Shift-Tab": function (editor) { + editor.tabstopManager.tabNext(-1); + editor.renderer.scrollCursorIntoView(); + }, + "Esc": function (editor) { + editor.tabstopManager.detach(); + } +}); +var movePoint = function (point, diff) { if (point.row == 0) point.column += diff.column; point.row += diff.row; }; - -var moveRelative = function(point, start) { +var moveRelative = function (point, start) { if (point.row == start.row) point.column -= start.column; point.row -= start.row; }; - - -require("./lib/dom").importCssString("\ -.ace_snippet-marker {\ - -moz-box-sizing: border-box;\ - box-sizing: border-box;\ - background: rgba(194, 193, 208, 0.09);\ - border: 1px dotted rgba(211, 208, 235, 0.62);\ - position: absolute;\ -}"); - +dom.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}", "snippets.css", false); exports.snippetManager = new SnippetManager(); - - var Editor = require("./editor").Editor; -(function() { - this.insertSnippet = function(content, options) { +(function () { + this.insertSnippet = function (content, options) { return exports.snippetManager.insertSnippet(this, content, options); }; - this.expandSnippet = function(options) { + this.expandSnippet = function (options) { return exports.snippetManager.expandWithTab(this, options); }; }).call(Editor.prototype); }); -define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom"], function(require, exports, module) { -"use strict"; - +define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"], function(require, exports, module){"use strict"; var Renderer = require("../virtual_renderer").VirtualRenderer; var Editor = require("../editor").Editor; var Range = require("../range").Range; var event = require("../lib/event"); var lang = require("../lib/lang"); var dom = require("../lib/dom"); - -var $singleLineEditor = function(el) { +var nls = require("../config").nls; +var userAgent = require("./../lib/useragent"); +var getAriaId = function (index) { + return "suggest-aria-id:".concat(index); +}; +var popupAriaRole = userAgent.isSafari ? "menu" : "listbox"; +var optionAriaRole = userAgent.isSafari ? "menuitem" : "option"; +var ariaActiveState = userAgent.isSafari ? "aria-current" : "aria-selected"; +var $singleLineEditor = function (el) { var renderer = new Renderer(el); - renderer.$maxLines = 4; - var editor = new Editor(renderer); - editor.setHighlightActiveLine(false); editor.setShowPrintMargin(false); editor.renderer.setShowGutter(false); editor.renderer.setHighlightGutterLine(false); - - editor.$mouseHandler.$focusWaitTimout = 0; + editor.$mouseHandler.$focusTimeout = 0; editor.$highlightTagPending = true; - return editor; }; - -var AcePopup = function(parentNode) { - var el = dom.createElement("div"); - var popup = new $singleLineEditor(el); - - if (parentNode) - parentNode.appendChild(el); - el.style.display = "none"; - popup.renderer.content.style.cursor = "default"; - popup.renderer.setStyle("ace_autocomplete"); - - popup.setOption("displayIndentGuides", false); - popup.setOption("dragDelay", 150); - - var noop = function(){}; - - popup.focus = noop; - popup.$isFocused = true; - - popup.renderer.$cursorLayer.restartTimer = noop; - popup.renderer.$cursorLayer.element.style.opacity = 0; - - popup.renderer.$maxLines = 8; - popup.renderer.$keepTextAreaAtCursor = false; - - popup.setHighlightActiveLine(false); - popup.session.highlight(""); - popup.session.$searchHighlight.clazz = "ace_highlight-marker"; - - popup.on("mousedown", function(e) { - var pos = e.getDocumentPosition(); - popup.selection.moveToPosition(pos); - selectionMarker.start.row = selectionMarker.end.row = pos.row; - e.stop(); - }); - - var lastMouseEvent; - var hoverMarker = new Range(-1,0,-1,Infinity); - var selectionMarker = new Range(-1,0,-1,Infinity); - selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); - popup.setSelectOnHover = function(val) { - if (!val) { - hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); - } else if (hoverMarker.id) { - popup.session.removeMarker(hoverMarker.id); - hoverMarker.id = null; +var AcePopup = /** @class */ (function () { + function AcePopup(parentNode) { + var el = dom.createElement("div"); + var popup = $singleLineEditor(el); + if (parentNode) { + parentNode.appendChild(el); } - }; - popup.setSelectOnHover(false); - popup.on("mousemove", function(e) { - if (!lastMouseEvent) { + el.style.display = "none"; + popup.renderer.content.style.cursor = "default"; + popup.renderer.setStyle("ace_autocomplete"); + popup.renderer.$textLayer.element.setAttribute("role", popupAriaRole); + popup.renderer.$textLayer.element.setAttribute("aria-roledescription", nls("Autocomplete suggestions")); + popup.renderer.$textLayer.element.setAttribute("aria-label", nls("Autocomplete suggestions")); + popup.renderer.textarea.setAttribute("aria-hidden", "true"); + popup.setOption("displayIndentGuides", false); + popup.setOption("dragDelay", 150); + var noop = function () { }; + popup.focus = noop; + popup.$isFocused = true; + popup.renderer.$cursorLayer.restartTimer = noop; + popup.renderer.$cursorLayer.element.style.opacity = "0"; + popup.renderer.$maxLines = 8; + popup.renderer.$keepTextAreaAtCursor = false; + popup.setHighlightActiveLine(false); + popup.session.highlight(""); + popup.session.$searchHighlight.clazz = "ace_highlight-marker"; + popup.on("mousedown", function (e) { + var pos = e.getDocumentPosition(); + popup.selection.moveToPosition(pos); + selectionMarker.start.row = selectionMarker.end.row = pos.row; + e.stop(); + }); + var lastMouseEvent; + var hoverMarker = new Range(-1, 0, -1, Infinity); + var selectionMarker = new Range(-1, 0, -1, Infinity); + selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); + popup.setSelectOnHover = function (val) { + if (!val) { + hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); + } + else if (hoverMarker.id) { + popup.session.removeMarker(hoverMarker.id); + hoverMarker.id = null; + } + }; + popup.setSelectOnHover(false); + popup.on("mousemove", function (e) { + if (!lastMouseEvent) { + lastMouseEvent = e; + return; + } + if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { + return; + } lastMouseEvent = e; - return; - } - if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { - return; - } - lastMouseEvent = e; - lastMouseEvent.scrollTop = popup.renderer.scrollTop; - var row = lastMouseEvent.getDocumentPosition().row; - if (hoverMarker.start.row != row) { - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row); - } - }); - popup.renderer.on("beforeRender", function() { - if (lastMouseEvent && hoverMarker.start.row != -1) { - lastMouseEvent.$pos = null; + lastMouseEvent.scrollTop = popup.renderer.scrollTop; + popup.isMouseOver = true; var row = lastMouseEvent.getDocumentPosition().row; - if (!hoverMarker.id) - popup.setRow(row); - setHoverMarker(row, true); - } - }); - popup.renderer.on("afterRender", function() { - var row = popup.getRow(); - var t = popup.renderer.$textLayer; - var selected = t.element.childNodes[row - t.config.firstRow]; - if (selected == t.selectedNode) - return; - if (t.selectedNode) - dom.removeCssClass(t.selectedNode, "ace_selected"); - t.selectedNode = selected; - if (selected) - dom.addCssClass(selected, "ace_selected"); - }); - var hideHoverMarker = function() { setHoverMarker(-1); }; - var setHoverMarker = function(row, suppressRedraw) { - if (row !== hoverMarker.start.row) { - hoverMarker.start.row = hoverMarker.end.row = row; - if (!suppressRedraw) - popup.session._emit("changeBackMarker"); - popup._emit("changeHoverMarker"); - } - }; - popup.getHoveredRow = function() { - return hoverMarker.start.row; - }; - - event.addListener(popup.container, "mouseout", hideHoverMarker); - popup.on("hide", hideHoverMarker); - popup.on("changeSelection", hideHoverMarker); - - popup.session.doc.getLength = function() { - return popup.data.length; - }; - popup.session.doc.getLine = function(i) { - var data = popup.data[i]; - if (typeof data == "string") - return data; - return (data && data.value) || ""; - }; - - var bgTokenizer = popup.session.bgTokenizer; - bgTokenizer.$tokenizeRow = function(row) { - var data = popup.data[row]; - var tokens = []; - if (!data) + if (hoverMarker.start.row != row) { + if (!hoverMarker.id) + popup.setRow(row); + setHoverMarker(row); + } + }); + popup.renderer.on("beforeRender", function () { + if (lastMouseEvent && hoverMarker.start.row != -1) { + lastMouseEvent.$pos = null; + var row = lastMouseEvent.getDocumentPosition().row; + if (!hoverMarker.id) + popup.setRow(row); + setHoverMarker(row, true); + } + }); + popup.renderer.on("afterRender", function () { + var row = popup.getRow(); + var t = popup.renderer.$textLayer; + var selected = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]); + var el = document.activeElement; // Active element is textarea of main editor + if (selected !== popup.selectedNode && popup.selectedNode) { + dom.removeCssClass(popup.selectedNode, "ace_selected"); + el.removeAttribute("aria-activedescendant"); + popup.selectedNode.removeAttribute(ariaActiveState); + popup.selectedNode.removeAttribute("id"); + } + popup.selectedNode = selected; + if (selected) { + dom.addCssClass(selected, "ace_selected"); + var ariaId = getAriaId(row); + selected.id = ariaId; + t.element.setAttribute("aria-activedescendant", ariaId); + el.setAttribute("aria-activedescendant", ariaId); + selected.setAttribute("role", optionAriaRole); + selected.setAttribute("aria-roledescription", nls("item")); + selected.setAttribute("aria-label", popup.getData(row).caption || popup.getData(row).value); + selected.setAttribute("aria-setsize", popup.data.length); + selected.setAttribute("aria-posinset", row + 1); + selected.setAttribute("aria-describedby", "doc-tooltip"); + selected.setAttribute(ariaActiveState, "true"); + } + }); + var hideHoverMarker = function () { setHoverMarker(-1); }; + var setHoverMarker = function (row, suppressRedraw) { + if (row !== hoverMarker.start.row) { + hoverMarker.start.row = hoverMarker.end.row = row; + if (!suppressRedraw) + popup.session._emit("changeBackMarker"); + popup._emit("changeHoverMarker"); + } + }; + popup.getHoveredRow = function () { + return hoverMarker.start.row; + }; + event.addListener(popup.container, "mouseout", function () { + popup.isMouseOver = false; + hideHoverMarker(); + }); + popup.on("hide", hideHoverMarker); + popup.on("changeSelection", hideHoverMarker); + popup.session.doc.getLength = function () { + return popup.data.length; + }; + popup.session.doc.getLine = function (i) { + var data = popup.data[i]; + if (typeof data == "string") + return data; + return (data && data.value) || ""; + }; + var bgTokenizer = popup.session.bgTokenizer; + bgTokenizer.$tokenizeRow = function (row) { + var data = popup.data[row]; + var tokens = []; + if (!data) + return tokens; + if (typeof data == "string") + data = { value: data }; + var caption = data.caption || data.value || data.name; + function addToken(value, className) { + value && tokens.push({ + type: (data.className || "") + (className || ""), + value: value + }); + } + var lower = caption.toLowerCase(); + var filterText = (popup.filterText || "").toLowerCase(); + var lastIndex = 0; + var lastI = 0; + for (var i = 0; i <= filterText.length; i++) { + if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) { + var sub = filterText.slice(lastI, i); + lastI = i; + var index = lower.indexOf(sub, lastIndex); + if (index == -1) + continue; + addToken(caption.slice(lastIndex, index), ""); + lastIndex = index + sub.length; + addToken(caption.slice(index, lastIndex), "completion-highlight"); + } + } + addToken(caption.slice(lastIndex, caption.length), ""); + tokens.push({ type: "completion-spacer", value: " " }); + if (data.meta) + tokens.push({ type: "completion-meta", value: data.meta }); + if (data.message) + tokens.push({ type: "completion-message", value: data.message }); return tokens; - if (typeof data == "string") - data = {value: data}; - if (!data.caption) - data.caption = data.value || data.name; - - var last = -1; - var flag, c; - for (var i = 0; i < data.caption.length; i++) { - c = data.caption[i]; - flag = data.matchMask & (1 << i) ? 1 : 0; - if (last !== flag) { - tokens.push({type: data.className || "" + ( flag ? "completion-highlight" : ""), value: c}); - last = flag; - } else { - tokens[tokens.length - 1].value += c; - } - } - - if (data.meta) { - var maxW = popup.renderer.$size.scrollerWidth / popup.renderer.layerConfig.characterWidth; - var metaData = data.meta; - if (metaData.length + data.caption.length > maxW - 2) { - metaData = metaData.substr(0, maxW - data.caption.length - 3) + "\u2026"; - } - tokens.push({type: "rightAlignedText", value: metaData}); - } - return tokens; - }; - bgTokenizer.$updateOnChange = noop; - bgTokenizer.start = noop; - - popup.session.$computeWidth = function() { - return this.screenWidth = 0; - }; - - popup.$blockScrolling = Infinity; - popup.isOpen = false; - popup.isTopdown = false; - popup.autoSelect = true; - - popup.data = []; - popup.setData = function(list) { - popup.setValue(lang.stringRepeat("\n", list.length), -1); - popup.data = list || []; - popup.setRow(0); - }; - popup.getData = function(row) { - return popup.data[row]; - }; - - popup.getRow = function() { - return selectionMarker.start.row; - }; - popup.setRow = function(line) { - line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length, line)); - if (selectionMarker.start.row != line) { - popup.selection.clearSelection(); - selectionMarker.start.row = selectionMarker.end.row = line || 0; - popup.session._emit("changeBackMarker"); - popup.moveCursorTo(line || 0, 0); - if (popup.isOpen) - popup._signal("select"); - } - }; - - popup.on("changeSelection", function() { - if (popup.isOpen) - popup.setRow(popup.selection.lead.row); - popup.renderer.scrollCursorIntoView(); - }); - - popup.hide = function() { - this.container.style.display = "none"; - this._signal("hide"); + }; + bgTokenizer.$updateOnChange = noop; + bgTokenizer.start = noop; + popup.session.$computeWidth = function () { + return this.screenWidth = 0; + }; popup.isOpen = false; - }; - popup.show = function(pos, lineHeight, topdownOnly) { - var el = this.container; - var screenHeight = window.innerHeight; - var screenWidth = window.innerWidth; - var renderer = this.renderer; - var maxH = renderer.$maxLines * lineHeight * 1.4; - var top = pos.top + this.$borderSize; - var allowTopdown = top > screenHeight / 2 && !topdownOnly; - if (allowTopdown && top + lineHeight + maxH > screenHeight) { - renderer.$maxPixelHeight = top - 2 * this.$borderSize; - el.style.top = ""; - el.style.bottom = screenHeight - top + "px"; - popup.isTopdown = false; - } else { - top += lineHeight; - renderer.$maxPixelHeight = screenHeight - top - 0.2 * lineHeight; - el.style.top = top + "px"; - el.style.bottom = ""; - popup.isTopdown = true; - } - - el.style.display = ""; - this.renderer.$textLayer.checkForSizeChanges(); - - var left = pos.left; - if (left + el.offsetWidth > screenWidth) - left = screenWidth - el.offsetWidth; - - el.style.left = left + "px"; - - this._signal("show"); - lastMouseEvent = null; - popup.isOpen = true; - }; - - popup.getTextLeftOffset = function() { - return this.$borderSize + this.renderer.$padding + this.$imageSize; - }; - - popup.$imageSize = 0; - popup.$borderSize = 1; - - return popup; -}; - -dom.importCssString("\ -.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\ - background-color: #CAD6FA;\ - z-index: 1;\ -}\ -.ace_editor.ace_autocomplete .ace_line-hover {\ - border: 1px solid #abbffe;\ - margin-top: -1px;\ - background: rgba(233,233,253,0.4);\ -}\ -.ace_editor.ace_autocomplete .ace_line-hover {\ - position: absolute;\ - z-index: 2;\ -}\ -.ace_editor.ace_autocomplete .ace_scroller {\ - background: none;\ - border: none;\ - box-shadow: none;\ -}\ -.ace_rightAlignedText {\ - color: gray;\ - display: inline-block;\ - position: absolute;\ - right: 4px;\ - text-align: right;\ - z-index: -1;\ -}\ -.ace_editor.ace_autocomplete .ace_completion-highlight{\ - color: #000;\ - text-shadow: 0 0 0.01em;\ -}\ -.ace_editor.ace_autocomplete {\ - width: 280px;\ - z-index: 200000;\ - background: #fbfbfb;\ - color: #444;\ - border: 1px lightgray solid;\ - position: fixed;\ - box-shadow: 2px 3px 5px rgba(0,0,0,.2);\ - line-height: 1.4;\ -}"); - + popup.isTopdown = false; + popup.autoSelect = true; + popup.filterText = ""; + popup.isMouseOver = false; + popup.data = []; + popup.setData = function (list, filterText) { + popup.filterText = filterText || ""; + popup.setValue(lang.stringRepeat("\n", list.length), -1); + popup.data = list || []; + popup.setRow(0); + }; + popup.getData = function (row) { + return popup.data[row]; + }; + popup.getRow = function () { + return selectionMarker.start.row; + }; + popup.setRow = function (line) { + line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length - 1, line)); + if (selectionMarker.start.row != line) { + popup.selection.clearSelection(); + selectionMarker.start.row = selectionMarker.end.row = line || 0; + popup.session._emit("changeBackMarker"); + popup.moveCursorTo(line || 0, 0); + if (popup.isOpen) + popup._signal("select"); + } + }; + popup.on("changeSelection", function () { + if (popup.isOpen) + popup.setRow(popup.selection.lead.row); + popup.renderer.scrollCursorIntoView(); + }); + popup.hide = function () { + this.container.style.display = "none"; + popup.anchorPos = null; + popup.anchor = null; + if (popup.isOpen) { + popup.isOpen = false; + this._signal("hide"); + } + }; + popup.tryShow = function (pos, lineHeight, anchor, forceShow) { + if (!forceShow && popup.isOpen && popup.anchorPos && popup.anchor && + popup.anchorPos.top === pos.top && popup.anchorPos.left === pos.left && + popup.anchor === anchor) { + return true; + } + var el = this.container; + var screenHeight = window.innerHeight; + var screenWidth = window.innerWidth; + var renderer = this.renderer; + var maxH = renderer.$maxLines * lineHeight * 1.4; + var dims = { top: 0, bottom: 0, left: 0 }; + var spaceBelow = screenHeight - pos.top - 3 * this.$borderSize - lineHeight; + var spaceAbove = pos.top - 3 * this.$borderSize; + if (!anchor) { + if (spaceAbove <= spaceBelow || spaceBelow >= maxH) { + anchor = "bottom"; + } + else { + anchor = "top"; + } + } + if (anchor === "top") { + dims.bottom = pos.top - this.$borderSize; + dims.top = dims.bottom - maxH; + } + else if (anchor === "bottom") { + dims.top = pos.top + lineHeight + this.$borderSize; + dims.bottom = dims.top + maxH; + } + var fitsX = dims.top >= 0 && dims.bottom <= screenHeight; + if (!forceShow && !fitsX) { + return false; + } + if (!fitsX) { + if (anchor === "top") { + renderer.$maxPixelHeight = spaceAbove; + } + else { + renderer.$maxPixelHeight = spaceBelow; + } + } + else { + renderer.$maxPixelHeight = null; + } + if (anchor === "top") { + el.style.top = ""; + el.style.bottom = (screenHeight - dims.bottom) + "px"; + popup.isTopdown = false; + } + else { + el.style.top = dims.top + "px"; + el.style.bottom = ""; + popup.isTopdown = true; + } + el.style.display = ""; + var left = pos.left; + if (left + el.offsetWidth > screenWidth) + left = screenWidth - el.offsetWidth; + el.style.left = left + "px"; + el.style.right = ""; + if (!popup.isOpen) { + popup.isOpen = true; + this._signal("show"); + lastMouseEvent = null; + } + popup.anchorPos = pos; + popup.anchor = anchor; + return true; + }; + popup.show = function (pos, lineHeight, topdownOnly) { + this.tryShow(pos, lineHeight, topdownOnly ? "bottom" : undefined, true); + }; + popup.goTo = function (where) { + var row = this.getRow(); + var max = this.session.getLength() - 1; + switch (where) { + case "up": + row = row <= 0 ? max : row - 1; + break; + case "down": + row = row >= max ? -1 : row + 1; + break; + case "start": + row = 0; + break; + case "end": + row = max; + break; + } + this.setRow(row); + }; + popup.getTextLeftOffset = function () { + return this.$borderSize + this.renderer.$padding + this.$imageSize; + }; + popup.$imageSize = 0; + popup.$borderSize = 1; + return popup; + } + return AcePopup; +}()); +dom.importCssString("\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin-left: 0.9em;\n}\n.ace_completion-message {\n margin-left: 0.9em;\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}\n.ace_autocomplete .ace_text-layer {\n width: calc(100% - 8px);\n}\n.ace_autocomplete .ace_line {\n display: flex;\n align-items: center;\n}\n.ace_autocomplete .ace_line > * {\n min-width: 0;\n flex: 0 0 auto;\n}\n.ace_autocomplete .ace_line .ace_ {\n flex: 0 1 auto;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.ace_autocomplete .ace_completion-spacer {\n flex: 1;\n}\n.ace_autocomplete.ace_loading:after {\n content: \"\";\n position: absolute;\n top: 0px;\n height: 2px;\n width: 8%;\n background: blue;\n z-index: 100;\n animation: ace_progress 3s infinite linear;\n animation-delay: 300ms;\n transform: translateX(-100%) scaleX(1);\n}\n@keyframes ace_progress {\n 0% { transform: translateX(-100%) scaleX(1) }\n 50% { transform: translateX(625%) scaleX(2) } \n 100% { transform: translateX(1500%) scaleX(3) } \n}\n@media (prefers-reduced-motion) {\n .ace_autocomplete.ace_loading:after {\n transform: translateX(625%) scaleX(2);\n animation: none;\n }\n}\n", "autocompletion.css", false); exports.AcePopup = AcePopup; +exports.$singleLineEditor = $singleLineEditor; +exports.getAriaId = getAriaId; }); -define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module) { -"use strict"; +define("ace/autocomplete/inline_screenreader",["require","exports","module"], function(require, exports, module){"use strict"; +var AceInlineScreenReader = /** @class */ (function () { + function AceInlineScreenReader(editor) { + this.editor = editor; + this.screenReaderDiv = document.createElement("div"); + this.screenReaderDiv.classList.add("ace_screenreader-only"); + this.editor.container.appendChild(this.screenReaderDiv); + } + AceInlineScreenReader.prototype.setScreenReaderContent = function (content) { + if (!this.popup && this.editor.completer && /**@type{import("../autocomplete").Autocomplete}*/ (this.editor.completer).popup) { + this.popup = /**@type{import("../autocomplete").Autocomplete}*/ (this.editor.completer).popup; + this.popup.renderer.on("afterRender", function () { + var row = this.popup.getRow(); + var t = this.popup.renderer.$textLayer; + var selected = t.element.childNodes[row - t.config.firstRow]; + if (selected) { + var idString = "doc-tooltip "; + for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) { + idString += "ace-inline-screenreader-line-".concat(lineIndex, " "); + } + selected.setAttribute("aria-describedby", idString); + } + }.bind(this)); + } + while (this.screenReaderDiv.firstChild) { + this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild); + } + this._lines = content.split(/\r\n|\r|\n/); + var codeElement = this.createCodeBlock(); + this.screenReaderDiv.appendChild(codeElement); + }; + AceInlineScreenReader.prototype.destroy = function () { + this.screenReaderDiv.remove(); + }; + AceInlineScreenReader.prototype.createCodeBlock = function () { + var container = document.createElement("pre"); + container.setAttribute("id", "ace-inline-screenreader"); + for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) { + var codeElement = document.createElement("code"); + codeElement.setAttribute("id", "ace-inline-screenreader-line-".concat(lineIndex)); + var line = document.createTextNode(this._lines[lineIndex]); + codeElement.appendChild(line); + container.appendChild(codeElement); + } + return container; + }; + return AceInlineScreenReader; +}()); +exports.AceInlineScreenReader = AceInlineScreenReader; -exports.parForEach = function(array, fn, callback) { +}); + +define("ace/autocomplete/inline",["require","exports","module","ace/snippets","ace/autocomplete/inline_screenreader"], function(require, exports, module){"use strict"; +var snippetManager = require("../snippets").snippetManager; +var AceInlineScreenReader = require("./inline_screenreader").AceInlineScreenReader; +var AceInline = /** @class */ (function () { + function AceInline() { + this.editor = null; + } + AceInline.prototype.show = function (editor, completion, prefix) { + prefix = prefix || ""; + if (editor && this.editor && this.editor !== editor) { + this.hide(); + this.editor = null; + this.inlineScreenReader = null; + } + if (!editor || !completion) { + return false; + } + if (!this.inlineScreenReader) { + this.inlineScreenReader = new AceInlineScreenReader(editor); + } + var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value; + if (completion.hideInlinePreview || !displayText || !displayText.startsWith(prefix)) { + return false; + } + this.editor = editor; + this.inlineScreenReader.setScreenReaderContent(displayText); + displayText = displayText.slice(prefix.length); + if (displayText === "") { + editor.removeGhostText(); + } + else { + editor.setGhostText(displayText); + } + return true; + }; + AceInline.prototype.isOpen = function () { + if (!this.editor) { + return false; + } + return !!this.editor.renderer.$ghostText; + }; + AceInline.prototype.hide = function () { + if (!this.editor) { + return false; + } + this.editor.removeGhostText(); + return true; + }; + AceInline.prototype.destroy = function () { + this.hide(); + this.editor = null; + if (this.inlineScreenReader) { + this.inlineScreenReader.destroy(); + this.inlineScreenReader = null; + } + }; + return AceInline; +}()); +exports.AceInline = AceInline; + +}); + +define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module){"use strict"; +exports.parForEach = function (array, fn, callback) { var completed = 0; var arLength = array.length; if (arLength === 0) callback(); for (var i = 0; i < arLength; i++) { - fn(array[i], function(result, err) { + fn(array[i], function (result, err) { completed++; if (completed === arLength) callback(result, err); }); } }; - -var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\uFFFF]/; - -exports.retrievePrecedingIdentifier = function(text, pos, regex) { +var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/; +exports.retrievePrecedingIdentifier = function (text, pos, regex) { regex = regex || ID_REGEX; var buf = []; - for (var i = pos-1; i >= 0; i--) { + for (var i = pos - 1; i >= 0; i--) { if (regex.test(text[i])) buf.push(text[i]); else @@ -1250,8 +1472,7 @@ exports.retrievePrecedingIdentifier = function(text, pos, regex) { } return buf.reverse().join(""); }; - -exports.retrieveFollowingIdentifier = function(text, pos, regex) { +exports.retrieveFollowingIdentifier = function (text, pos, regex) { regex = regex || ID_REGEX; var buf = []; for (var i = pos; i < text.length; i++) { @@ -1262,14 +1483,13 @@ exports.retrieveFollowingIdentifier = function(text, pos, regex) { } return buf; }; - exports.getCompletionPrefix = function (editor) { var pos = editor.getCursorPosition(); var line = editor.session.getLine(pos.row); var prefix; - editor.completers.forEach(function(completer) { + editor.completers.forEach(function (completer) { if (completer.identifierRegexps) { - completer.identifierRegexps.forEach(function(identifierRegex) { + completer.identifierRegexps.forEach(function (identifierRegex) { if (!prefix && identifierRegex) prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex); }.bind(this)); @@ -1277,111 +1497,296 @@ exports.getCompletionPrefix = function (editor) { }.bind(this)); return prefix || this.retrievePrecedingIdentifier(line, pos.column); }; +exports.triggerAutocomplete = function (editor) { + var pos = editor.getCursorPosition(); + var line = editor.session.getLine(pos.row); + var column = (pos.column === 0) ? 0 : pos.column - 1; + var previousChar = line[column]; + return editor.completers.some(function (el) { + if (el.triggerCharacters && Array.isArray(el.triggerCharacters)) { + return el.triggerCharacters.includes(previousChar); + } + }); +}; }); -define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/snippets"], function(require, exports, module) { -"use strict"; - +define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/inline","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/lang","ace/lib/dom","ace/snippets","ace/config","ace/lib/event","ace/lib/scroll"], function(require, exports, module){"use strict"; var HashHandler = require("./keyboard/hash_handler").HashHandler; var AcePopup = require("./autocomplete/popup").AcePopup; +var AceInline = require("./autocomplete/inline").AceInline; +var getAriaId = require("./autocomplete/popup").getAriaId; var util = require("./autocomplete/util"); -var event = require("./lib/event"); var lang = require("./lib/lang"); var dom = require("./lib/dom"); var snippetManager = require("./snippets").snippetManager; - -var Autocomplete = function() { - this.autoInsert = false; - this.autoSelect = true; - this.exactMatch = false; - this.gatherCompletionsId = 0; - this.keyboardHandler = new HashHandler(); - this.keyboardHandler.bindKeys(this.commands); - - this.blurListener = this.blurListener.bind(this); - this.changeListener = this.changeListener.bind(this); - this.mousedownListener = this.mousedownListener.bind(this); - this.mousewheelListener = this.mousewheelListener.bind(this); - - this.changeTimer = lang.delayedCall(function() { - this.updateCompletions(true); - }.bind(this)); - - this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); +var config = require("./config"); +var event = require("./lib/event"); +var preventParentScroll = require("./lib/scroll").preventParentScroll; +var destroyCompleter = function (e, editor) { + editor.completer && editor.completer.destroy(); }; - -(function() { - - this.$init = function() { - this.popup = new AcePopup(document.body || document.documentElement); - this.popup.on("click", function(e) { +var Autocomplete = /** @class */ (function () { + function Autocomplete() { + this.autoInsert = false; + this.autoSelect = true; + this.autoShown = false; + this.exactMatch = false; + this.inlineEnabled = false; + this.keyboardHandler = new HashHandler(); + this.keyboardHandler.bindKeys(this.commands); + this.parentNode = null; + this.setSelectOnHover = false; + this.hasSeen = new Set(); + this.showLoadingState = false; + this.stickySelectionDelay = 500; + this.blurListener = this.blurListener.bind(this); + this.changeListener = this.changeListener.bind(this); + this.mousedownListener = this.mousedownListener.bind(this); + this.mousewheelListener = this.mousewheelListener.bind(this); + this.onLayoutChange = this.onLayoutChange.bind(this); + this.changeTimer = lang.delayedCall(function () { + this.updateCompletions(true); + }.bind(this)); + this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); + this.popupTimer = lang.delayedCall(this.$updatePopupPosition.bind(this), 50); + this.stickySelectionTimer = lang.delayedCall(function () { + this.stickySelection = true; + }.bind(this), this.stickySelectionDelay); + this.$firstOpenTimer = lang.delayedCall(/**@this{Autocomplete}*/ function () { + var initialPosition = this.completionProvider && this.completionProvider.initialPosition; + if (this.autoShown || (this.popup && this.popup.isOpen) || !initialPosition || this.editor.completers.length === 0) + return; + this.completions = new FilteredList(Autocomplete.completionsForLoading); + this.openPopup(this.editor, initialPosition.prefix, false); + this.popup.renderer.setStyle("ace_loading", true); + }.bind(this), this.stickySelectionDelay); + } + Object.defineProperty(Autocomplete, "completionsForLoading", { + get: function () { + return [{ + caption: config.nls("Loading..."), + value: "" + }]; + }, + enumerable: false, + configurable: true + }); + Autocomplete.prototype.$init = function () { + this.popup = new AcePopup(this.parentNode || document.body || document.documentElement); + this.popup.on("click", function (e) { this.insertMatch(); e.stop(); }.bind(this)); this.popup.focus = this.editor.focus.bind(this.editor); - this.popup.on("show", this.tooltipTimer.bind(null, null)); - this.popup.on("select", this.tooltipTimer.bind(null, null)); + this.popup.on("show", this.$onPopupShow.bind(this)); + this.popup.on("hide", this.$onHidePopup.bind(this)); + this.popup.on("select", this.$onPopupChange.bind(this)); + event.addListener(this.popup.container, "mouseout", this.mouseOutListener.bind(this)); this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); + this.popup.renderer.on("afterRender", this.$onPopupRender.bind(this)); return this.popup; }; - - this.getPopup = function() { + Autocomplete.prototype.$initInline = function () { + if (!this.inlineEnabled || this.inlineRenderer) + return; + this.inlineRenderer = new AceInline(); + return this.inlineRenderer; + }; + Autocomplete.prototype.getPopup = function () { return this.popup || this.$init(); }; - - this.openPopup = function(editor, prefix, keepPopupPosition) { + Autocomplete.prototype.$onHidePopup = function () { + if (this.inlineRenderer) { + this.inlineRenderer.hide(); + } + this.hideDocTooltip(); + this.stickySelectionTimer.cancel(); + this.popupTimer.cancel(); + this.stickySelection = false; + }; + Autocomplete.prototype.$seen = function (completion) { + if (!this.hasSeen.has(completion) && completion && completion.completer && completion.completer.onSeen && typeof completion.completer.onSeen === "function") { + completion.completer.onSeen(this.editor, completion); + this.hasSeen.add(completion); + } + }; + Autocomplete.prototype.$onPopupChange = function (hide) { + if (this.inlineRenderer && this.inlineEnabled) { + var completion = hide ? null : this.popup.getData(this.popup.getRow()); + this.$updateGhostText(completion); + if (this.popup.isMouseOver && this.setSelectOnHover) { + this.tooltipTimer.call(null, null); + return; + } + this.popupTimer.schedule(); + this.tooltipTimer.schedule(); + } + else { + this.popupTimer.call(null, null); + this.tooltipTimer.call(null, null); + } + }; + Autocomplete.prototype.$updateGhostText = function (completion) { + var row = this.base.row; + var column = this.base.column; + var cursorColumn = this.editor.getCursorPosition().column; + var prefix = this.editor.session.getLine(row).slice(column, cursorColumn); + if (!this.inlineRenderer.show(this.editor, completion, prefix)) { + this.inlineRenderer.hide(); + } + else { + this.$seen(completion); + } + }; + Autocomplete.prototype.$onPopupRender = function () { + var inlineEnabled = this.inlineRenderer && this.inlineEnabled; + if (this.completions && this.completions.filtered && this.completions.filtered.length > 0) { + for (var i = this.popup.getFirstVisibleRow(); i <= this.popup.getLastVisibleRow(); i++) { + var completion = this.popup.getData(i); + if (completion && (!inlineEnabled || completion.hideInlinePreview)) { + this.$seen(completion); + } + } + } + }; + Autocomplete.prototype.$onPopupShow = function (hide) { + this.$onPopupChange(hide); + this.stickySelection = false; + if (this.stickySelectionDelay >= 0) + this.stickySelectionTimer.schedule(this.stickySelectionDelay); + }; + Autocomplete.prototype.observeLayoutChanges = function () { + if (this.$elements || !this.editor) + return; + window.addEventListener("resize", this.onLayoutChange, { passive: true }); + window.addEventListener("wheel", this.mousewheelListener); + var el = this.editor.container.parentNode; + var elements = []; + while (el) { + elements.push(el); + el.addEventListener("scroll", this.onLayoutChange, { passive: true }); + el = el.parentNode; + } + this.$elements = elements; + }; + Autocomplete.prototype.unObserveLayoutChanges = function () { + var _this = this; + window.removeEventListener("resize", this.onLayoutChange, { passive: true }); + window.removeEventListener("wheel", this.mousewheelListener); + this.$elements && this.$elements.forEach(function (el) { + el.removeEventListener("scroll", _this.onLayoutChange, { passive: true }); + }); + this.$elements = null; + }; + Autocomplete.prototype.onLayoutChange = function () { + if (!this.popup.isOpen) + return this.unObserveLayoutChanges(); + this.$updatePopupPosition(); + this.updateDocTooltip(); + }; + Autocomplete.prototype.$updatePopupPosition = function () { + var editor = this.editor; + var renderer = editor.renderer; + var lineHeight = renderer.layerConfig.lineHeight; + var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); + pos.left -= this.popup.getTextLeftOffset(); + var rect = editor.container.getBoundingClientRect(); + pos.top += rect.top - renderer.layerConfig.offset; + pos.left += rect.left - editor.renderer.scrollLeft; + pos.left += renderer.gutterWidth; + var posGhostText = { + top: pos.top, + left: pos.left + }; + if (renderer.$ghostText && renderer.$ghostTextWidget) { + if (this.base.row === renderer.$ghostText.position.row) { + posGhostText.top += renderer.$ghostTextWidget.el.offsetHeight; + } + } + var editorContainerBottom = editor.container.getBoundingClientRect().bottom - lineHeight; + var lowestPosition = editorContainerBottom < posGhostText.top ? + { top: editorContainerBottom, left: posGhostText.left } : + posGhostText; + if (this.popup.tryShow(lowestPosition, lineHeight, "bottom")) { + return; + } + if (this.popup.tryShow(pos, lineHeight, "top")) { + return; + } + this.popup.show(pos, lineHeight); + }; + Autocomplete.prototype.openPopup = function (editor, prefix, keepPopupPosition) { + this.$firstOpenTimer.cancel(); if (!this.popup) this.$init(); - - this.popup.autoSelect = this.autoSelect; - - this.popup.setData(this.completions.filtered); - + if (this.inlineEnabled && !this.inlineRenderer) + this.$initInline(); + this.popup.autoSelect = this.autoSelect; + this.popup.setSelectOnHover(this.setSelectOnHover); + var oldRow = this.popup.getRow(); + var previousSelectedItem = this.popup.data[oldRow]; + this.popup.setData(this.completions.filtered, this.completions.filterText); + if (this.editor.textInput.setAriaOptions) { + this.editor.textInput.setAriaOptions({ + activeDescendant: getAriaId(this.popup.getRow()), + inline: this.inlineEnabled + }); + } editor.keyBinding.addKeyboardHandler(this.keyboardHandler); - - var renderer = editor.renderer; - this.popup.setRow(this.autoSelect ? 0 : -1); + var newRow; + if (this.stickySelection) + newRow = this.popup.data.indexOf(previousSelectedItem); + if (!newRow || newRow === -1) + newRow = 0; + this.popup.setRow(this.autoSelect ? newRow : -1); + if (newRow === oldRow && previousSelectedItem !== this.completions.filtered[newRow]) + this.$onPopupChange(); + var inlineEnabled = this.inlineRenderer && this.inlineEnabled; + if (newRow === oldRow && inlineEnabled) { + var completion = this.popup.getData(this.popup.getRow()); + this.$updateGhostText(completion); + } if (!keepPopupPosition) { this.popup.setTheme(editor.getTheme()); this.popup.setFontSize(editor.getFontSize()); - - var lineHeight = renderer.layerConfig.lineHeight; - - var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); - pos.left -= this.popup.getTextLeftOffset(); - - var rect = editor.container.getBoundingClientRect(); - pos.top += rect.top - renderer.layerConfig.offset; - pos.left += rect.left - editor.renderer.scrollLeft; - pos.left += renderer.gutterWidth; - - this.popup.show(pos, lineHeight); - } else if (keepPopupPosition && !prefix) { + this.$updatePopupPosition(); + if (this.tooltipNode) { + this.updateDocTooltip(); + } + } + else if (keepPopupPosition && !prefix) { this.detach(); } + this.changeTimer.cancel(); + this.observeLayoutChanges(); }; - - this.detach = function() { - this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); - this.editor.off("changeSelection", this.changeListener); - this.editor.off("blur", this.blurListener); - this.editor.off("mousedown", this.mousedownListener); - this.editor.off("mousewheel", this.mousewheelListener); + Autocomplete.prototype.detach = function () { + if (this.editor) { + this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); + this.editor.off("changeSelection", this.changeListener); + this.editor.off("blur", this.blurListener); + this.editor.off("mousedown", this.mousedownListener); + this.editor.off("mousewheel", this.mousewheelListener); + } + this.$firstOpenTimer.cancel(); this.changeTimer.cancel(); this.hideDocTooltip(); - - this.gatherCompletionsId += 1; + if (this.completionProvider) { + this.completionProvider.detach(); + } if (this.popup && this.popup.isOpen) this.popup.hide(); - + if (this.popup && this.popup.renderer) { + this.popup.renderer.off("afterRender", this.$onPopupRender); + } if (this.base) this.base.detach(); this.activated = false; - this.completions = this.base = null; + this.completionProvider = this.completions = this.base = null; + this.unObserveLayoutChanges(); }; - - this.changeListener = function(e) { + Autocomplete.prototype.changeListener = function (e) { var cursor = this.editor.selection.lead; if (cursor.row != this.base.row || cursor.column < this.base.column) { this.detach(); @@ -1391,100 +1796,385 @@ var Autocomplete = function() { else this.detach(); }; - - this.blurListener = function(e) { + Autocomplete.prototype.blurListener = function (e) { var el = document.activeElement; var text = this.editor.textInput.getElement(); var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget); var container = this.popup && this.popup.container; if (el != text && el.parentNode != container && !fromTooltip - && el != this.tooltipNode && e.relatedTarget != text - ) { + && el != this.tooltipNode && e.relatedTarget != text) { this.detach(); } }; - - this.mousedownListener = function(e) { + Autocomplete.prototype.mousedownListener = function (e) { this.detach(); }; - - this.mousewheelListener = function(e) { - this.detach(); + Autocomplete.prototype.mousewheelListener = function (e) { + if (!this.popup.isMouseOver) + this.detach(); }; - - this.goTo = function(where) { - var row = this.popup.getRow(); - var max = this.popup.session.getLength() - 1; - - switch(where) { - case "up": row = row <= 0 ? max : row - 1; break; - case "down": row = row >= max ? -1 : row + 1; break; - case "start": row = 0; break; - case "end": row = max; break; - } - - this.popup.setRow(row); + Autocomplete.prototype.mouseOutListener = function (e) { + if (this.popup.isOpen) + this.$updatePopupPosition(); }; - - this.insertMatch = function(data, options) { + Autocomplete.prototype.goTo = function (where) { + this.popup.goTo(where); + }; + Autocomplete.prototype.insertMatch = function (data, options) { if (!data) data = this.popup.getData(this.popup.getRow()); if (!data) return false; - - if (data.completer && data.completer.insertMatch) { - data.completer.insertMatch(this.editor, data); - } else { - if (this.completions.filterText) { - var ranges = this.editor.selection.getAllRanges(); - for (var i = 0, range; range = ranges[i]; i++) { - range.start.column -= this.completions.filterText.length; - this.editor.session.remove(range); - } - } - if (data.snippet) - snippetManager.insertSnippet(this.editor, data.snippet); - else - this.editor.execCommand("insertstring", data.value || data); + if (data.value === "") // Explicitly given nothing to insert, e.g. "No suggestion state" + return this.detach(); + var completions = this.completions; + var result = this.getCompletionProvider().insertMatch(this.editor, data, completions.filterText, options); + if (this.completions == completions) + this.detach(); + return result; + }; + Autocomplete.prototype.showPopup = function (editor, options) { + if (this.editor) + this.detach(); + this.activated = true; + this.editor = editor; + if (editor.completer != this) { + if (editor.completer) + editor.completer.detach(); + editor.completer = this; } - this.detach(); + editor.on("changeSelection", this.changeListener); + editor.on("blur", this.blurListener); + editor.on("mousedown", this.mousedownListener); + editor.on("mousewheel", this.mousewheelListener); + this.updateCompletions(false, options); }; - - - this.commands = { - "Up": function(editor) { editor.completer.goTo("up"); }, - "Down": function(editor) { editor.completer.goTo("down"); }, - "Ctrl-Up|Ctrl-Home": function(editor) { editor.completer.goTo("start"); }, - "Ctrl-Down|Ctrl-End": function(editor) { editor.completer.goTo("end"); }, - - "Esc": function(editor) { editor.completer.detach(); }, - "Return": function(editor) { return editor.completer.insertMatch(); }, - "Shift-Return": function(editor) { editor.completer.insertMatch(null, {deleteSuffix: true}); }, - "Tab": function(editor) { - var result = editor.completer.insertMatch(); - if (!result && !editor.tabstopManager) - editor.completer.goTo("down"); - else - return result; - }, - - "PageUp": function(editor) { editor.completer.popup.gotoPageUp(); }, - "PageDown": function(editor) { editor.completer.popup.gotoPageDown(); } + Autocomplete.prototype.getCompletionProvider = function (initialPosition) { + if (!this.completionProvider) + this.completionProvider = new CompletionProvider(initialPosition); + return this.completionProvider; }; - - this.gatherCompletions = function(editor, callback) { - var session = editor.getSession(); - var pos = editor.getCursorPosition(); - - var prefix = util.getCompletionPrefix(editor); - + Autocomplete.prototype.gatherCompletions = function (editor, callback) { + return this.getCompletionProvider().gatherCompletions(editor, callback); + }; + Autocomplete.prototype.updateCompletions = function (keepPopupPosition, options) { + if (keepPopupPosition && this.base && this.completions) { + var pos = this.editor.getCursorPosition(); + var prefix = this.editor.session.getTextRange({ start: this.base, end: pos }); + if (prefix == this.completions.filterText) + return; + this.completions.setFilter(prefix); + if (!this.completions.filtered.length) + return this.detach(); + if (this.completions.filtered.length == 1 + && this.completions.filtered[0].value == prefix + && !this.completions.filtered[0].snippet) + return this.detach(); + this.openPopup(this.editor, prefix, keepPopupPosition); + return; + } + if (options && options.matches) { + var pos = this.editor.getSelectionRange().start; + this.base = this.editor.session.doc.createAnchor(pos.row, pos.column); + this.base.$insertRight = true; + this.completions = new FilteredList(options.matches); + this.getCompletionProvider().completions = this.completions; + return this.openPopup(this.editor, "", keepPopupPosition); + } + var session = this.editor.getSession(); + var pos = this.editor.getCursorPosition(); + var prefix = util.getCompletionPrefix(this.editor); this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); this.base.$insertRight = true; - + var completionOptions = { + exactMatch: this.exactMatch, + ignoreCaption: this.ignoreCaption + }; + this.getCompletionProvider({ + prefix: prefix, + pos: pos + }).provideCompletions(this.editor, completionOptions, + function (err, completions, finished) { + var filtered = completions.filtered; + var prefix = util.getCompletionPrefix(this.editor); + this.$firstOpenTimer.cancel(); + if (finished) { + if (!filtered.length) { + var emptyMessage = !this.autoShown && this.emptyMessage; + if (typeof emptyMessage == "function") + emptyMessage = this.emptyMessage(prefix); + if (emptyMessage) { + var completionsForEmpty = [{ + caption: emptyMessage, + value: "" + } + ]; + this.completions = new FilteredList(completionsForEmpty); + this.openPopup(this.editor, prefix, keepPopupPosition); + this.popup.renderer.setStyle("ace_loading", false); + return; + } + return this.detach(); + } + if (filtered.length == 1 && filtered[0].value == prefix + && !filtered[0].snippet) + return this.detach(); + if (this.autoInsert && !this.autoShown && filtered.length == 1) + return this.insertMatch(filtered[0]); + } + this.completions = !finished && this.showLoadingState ? + new FilteredList(Autocomplete.completionsForLoading.concat(filtered), completions.filterText) : + completions; + this.openPopup(this.editor, prefix, keepPopupPosition); + this.popup.renderer.setStyle("ace_loading", !finished); + }.bind(this)); + if (this.showLoadingState && !this.autoShown && !(this.popup && this.popup.isOpen)) { + this.$firstOpenTimer.delay(this.stickySelectionDelay / 2); + } + }; + Autocomplete.prototype.cancelContextMenu = function () { + this.editor.$mouseHandler.cancelContextMenu(); + }; + Autocomplete.prototype.updateDocTooltip = function () { + var popup = this.popup; + var all = this.completions.filtered; + var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); + var doc = null; + if (!selected || !this.editor || !this.popup.isOpen) + return this.hideDocTooltip(); + var completersLength = this.editor.completers.length; + for (var i = 0; i < completersLength; i++) { + var completer = this.editor.completers[i]; + if (completer.getDocTooltip && selected.completerId === completer.id) { + doc = completer.getDocTooltip(selected); + break; + } + } + if (!doc && typeof selected != "string") + doc = selected; + if (typeof doc == "string") + doc = { docText: doc }; + if (!doc || !(doc.docHTML || doc.docText)) + return this.hideDocTooltip(); + this.showDocTooltip(doc); + }; + Autocomplete.prototype.showDocTooltip = function (item) { + if (!this.tooltipNode) { + this.tooltipNode = dom.createElement("div"); + this.tooltipNode.style.margin = "0"; + this.tooltipNode.style.pointerEvents = "auto"; + this.tooltipNode.style.overscrollBehavior = "contain"; + this.tooltipNode.tabIndex = -1; + this.tooltipNode.onblur = this.blurListener.bind(this); + this.tooltipNode.onclick = this.onTooltipClick.bind(this); + this.tooltipNode.id = "doc-tooltip"; + this.tooltipNode.setAttribute("role", "tooltip"); + this.tooltipNode.addEventListener("wheel", preventParentScroll); + } + var theme = this.editor.renderer.theme; + this.tooltipNode.className = "ace_tooltip ace_doc-tooltip " + + (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); + var tooltipNode = this.tooltipNode; + if (item.docHTML) { + tooltipNode.innerHTML = item.docHTML; + } + else if (item.docText) { + tooltipNode.textContent = item.docText; + } + if (!tooltipNode.parentNode) + this.popup.container.appendChild(this.tooltipNode); + var popup = this.popup; + var rect = popup.container.getBoundingClientRect(); + tooltipNode.style.top = popup.container.style.top; + tooltipNode.style.bottom = popup.container.style.bottom; + tooltipNode.style.display = "block"; + if (window.innerWidth - rect.right < 320) { + if (rect.left < 320) { + if (popup.isTopdown) { + tooltipNode.style.top = rect.bottom + "px"; + tooltipNode.style.left = rect.left + "px"; + tooltipNode.style.right = ""; + tooltipNode.style.bottom = ""; + } + else { + tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + "px"; + tooltipNode.style.left = rect.left + "px"; + tooltipNode.style.right = ""; + tooltipNode.style.bottom = ""; + } + } + else { + tooltipNode.style.right = window.innerWidth - rect.left + "px"; + tooltipNode.style.left = ""; + } + } + else { + tooltipNode.style.left = (rect.right + 1) + "px"; + tooltipNode.style.right = ""; + } + }; + Autocomplete.prototype.hideDocTooltip = function () { + this.tooltipTimer.cancel(); + if (!this.tooltipNode) + return; + var el = this.tooltipNode; + if (!this.editor.isFocused() && document.activeElement == el) + this.editor.focus(); + this.tooltipNode = null; + if (el.parentNode) + el.parentNode.removeChild(el); + }; + Autocomplete.prototype.onTooltipClick = function (e) { + var a = e.target; + while (a && a != this.tooltipNode) { + if (a.nodeName == "A" && a.href) { + a.rel = "noreferrer"; + a.target = "_blank"; + break; + } + a = a.parentNode; + } + }; + Autocomplete.prototype.destroy = function () { + this.detach(); + if (this.popup) { + this.popup.destroy(); + var el = this.popup.container; + if (el && el.parentNode) + el.parentNode.removeChild(el); + } + if (this.editor && this.editor.completer == this) { + this.editor.off("destroy", destroyCompleter); + this.editor.completer = null; + } + this.inlineRenderer = this.popup = this.editor = null; + }; + return Autocomplete; +}()); +Autocomplete.prototype.commands = { + "Up": function (editor) { editor.completer.goTo("up"); }, + "Down": function (editor) { editor.completer.goTo("down"); }, + "Ctrl-Up|Ctrl-Home": function (editor) { editor.completer.goTo("start"); }, + "Ctrl-Down|Ctrl-End": function (editor) { editor.completer.goTo("end"); }, + "Esc": function (editor) { editor.completer.detach(); }, + "Return": function (editor) { return editor.completer.insertMatch(); }, + "Shift-Return": function (editor) { editor.completer.insertMatch(null, { deleteSuffix: true }); }, + "Tab": function (editor) { + var result = editor.completer.insertMatch(); + if (!result && !editor.tabstopManager) + editor.completer.goTo("down"); + else + return result; + }, + "PageUp": function (editor) { editor.completer.popup.gotoPageUp(); }, + "PageDown": function (editor) { editor.completer.popup.gotoPageDown(); } +}; +Autocomplete.for = function (editor) { + if (editor.completer instanceof Autocomplete) { + return editor.completer; + } + if (editor.completer) { + editor.completer.destroy(); + editor.completer = null; + } + if (config.get("sharedPopups")) { + if (!Autocomplete["$sharedInstance"]) + Autocomplete["$sharedInstance"] = new Autocomplete(); + editor.completer = Autocomplete["$sharedInstance"]; + } + else { + editor.completer = new Autocomplete(); + editor.once("destroy", destroyCompleter); + } + return editor.completer; +}; +Autocomplete.startCommand = { + name: "startAutocomplete", + exec: function (editor, options) { + var completer = Autocomplete.for(editor); + completer.autoInsert = false; + completer.autoSelect = true; + completer.autoShown = false; + completer.showPopup(editor, options); + completer.cancelContextMenu(); + }, + bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" +}; +var CompletionProvider = /** @class */ (function () { + function CompletionProvider(initialPosition) { + this.initialPosition = initialPosition; + this.active = true; + } + CompletionProvider.prototype.insertByIndex = function (editor, index, options) { + if (!this.completions || !this.completions.filtered) { + return false; + } + return this.insertMatch(editor, this.completions.filtered[index], options); + }; + CompletionProvider.prototype.insertMatch = function (editor, data, options) { + if (!data) + return false; + editor.startOperation({ command: { name: "insertMatch" } }); + if (data.completer && data.completer.insertMatch) { + data.completer.insertMatch(editor, data); + } + else { + if (!this.completions) + return false; + var replaceBefore = this.completions.filterText.length; + var replaceAfter = 0; + if (data.range && data.range.start.row === data.range.end.row) { + replaceBefore -= this.initialPosition.prefix.length; + replaceBefore += this.initialPosition.pos.column - data.range.start.column; + replaceAfter += data.range.end.column - this.initialPosition.pos.column; + } + if (replaceBefore || replaceAfter) { + var ranges; + if (editor.selection.getAllRanges) { + ranges = editor.selection.getAllRanges(); + } + else { + ranges = [editor.getSelectionRange()]; + } + for (var i = 0, range; range = ranges[i]; i++) { + range.start.column -= replaceBefore; + range.end.column += replaceAfter; + editor.session.remove(range); + } + } + if (data.snippet) { + snippetManager.insertSnippet(editor, data.snippet); + } + else { + this.$insertString(editor, data); + } + if (data.completer && data.completer.onInsert && typeof data.completer.onInsert == "function") { + data.completer.onInsert(editor, data); + } + if (data.command && data.command === "startAutocomplete") { + editor.execCommand(data.command); + } + } + editor.endOperation(); + return true; + }; + CompletionProvider.prototype.$insertString = function (editor, data) { + var text = data.value || data; + editor.execCommand("insertstring", text); + }; + CompletionProvider.prototype.gatherCompletions = function (editor, callback) { + var session = editor.getSession(); + var pos = editor.getCursorPosition(); + var prefix = util.getCompletionPrefix(editor); var matches = []; + this.completers = editor.completers; var total = editor.completers.length; - editor.completers.forEach(function(completer, i) { - completer.getCompletions(editor, session, pos, prefix, function(err, results) { + editor.completers.forEach(function (completer, i) { + completer.getCompletions(editor, session, pos, prefix, function (err, results) { + if (completer.hideInlinePreview) + results = results.map(function (result) { + return Object.assign(result, { hideInlinePreview: completer.hideInlinePreview }); + }); if (!err && results) matches = matches.concat(results); callback(null, { @@ -1496,320 +2186,222 @@ var Autocomplete = function() { }); return true; }; - - this.showPopup = function(editor) { - if (this.editor) - this.detach(); - - this.activated = true; - - this.editor = editor; - if (editor.completer != this) { - if (editor.completer) - editor.completer.detach(); - editor.completer = this; - } - - editor.on("changeSelection", this.changeListener); - editor.on("blur", this.blurListener); - editor.on("mousedown", this.mousedownListener); - editor.on("mousewheel", this.mousewheelListener); - - this.updateCompletions(); - }; - - this.updateCompletions = function(keepPopupPosition) { - if (keepPopupPosition && this.base && this.completions) { - var pos = this.editor.getCursorPosition(); - var prefix = this.editor.session.getTextRange({start: this.base, end: pos}); - if (prefix == this.completions.filterText) - return; - this.completions.setFilter(prefix); - if (!this.completions.filtered.length) - return this.detach(); - if (this.completions.filtered.length == 1 - && this.completions.filtered[0].value == prefix - && !this.completions.filtered[0].snippet) - return this.detach(); - this.openPopup(this.editor, prefix, keepPopupPosition); - return; - } - var _id = this.gatherCompletionsId; - this.gatherCompletions(this.editor, function(err, results) { - var detachIfFinished = function() { - if (!results.finished) return; - return this.detach(); - }.bind(this); - + CompletionProvider.prototype.provideCompletions = function (editor, options, callback) { + var processResults = function (results) { var prefix = results.prefix; - var matches = results && results.matches; - - if (!matches || !matches.length) - return detachIfFinished(); - if (prefix.indexOf(results.prefix) !== 0 || _id != this.gatherCompletionsId) - return; - + var matches = results.matches; this.completions = new FilteredList(matches); - - if (this.exactMatch) + if (options.exactMatch) this.completions.exactMatch = true; - + if (options.ignoreCaption) + this.completions.ignoreCaption = true; this.completions.setFilter(prefix); - var filtered = this.completions.filtered; - if (!filtered.length) - return detachIfFinished(); - if (filtered.length == 1 && filtered[0].value == prefix && !filtered[0].snippet) - return detachIfFinished(); - if (this.autoInsert && filtered.length == 1 && results.finished) - return this.insertMatch(filtered[0]); - - this.openPopup(this.editor, prefix, keepPopupPosition); - }.bind(this)); - }; - - this.cancelContextMenu = function() { - this.editor.$mouseHandler.cancelContextMenu(); - }; - - this.updateDocTooltip = function() { - var popup = this.popup; - var all = popup.data; - var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); - var doc = null; - if (!selected || !this.editor || !this.popup.isOpen) - return this.hideDocTooltip(); - this.editor.completers.some(function(completer) { - if (completer.getDocTooltip) - doc = completer.getDocTooltip(selected); - return doc; - }); - if (!doc) - doc = selected; - - if (typeof doc == "string") - doc = {docText: doc}; - if (!doc || !(doc.docHTML || doc.docText)) - return this.hideDocTooltip(); - this.showDocTooltip(doc); - }; - - this.showDocTooltip = function(item) { - if (!this.tooltipNode) { - this.tooltipNode = dom.createElement("div"); - this.tooltipNode.className = "ace_tooltip ace_doc-tooltip"; - this.tooltipNode.style.margin = 0; - this.tooltipNode.style.pointerEvents = "auto"; - this.tooltipNode.tabIndex = -1; - this.tooltipNode.onblur = this.blurListener.bind(this); - this.tooltipNode.onclick = this.onTooltipClick.bind(this); - } - - var tooltipNode = this.tooltipNode; - if (item.docHTML) { - tooltipNode.innerHTML = item.docHTML; - } else if (item.docText) { - tooltipNode.textContent = item.docText; - } - - if (!tooltipNode.parentNode) - document.body.appendChild(tooltipNode); - var popup = this.popup; - var rect = popup.container.getBoundingClientRect(); - tooltipNode.style.top = popup.container.style.top; - tooltipNode.style.bottom = popup.container.style.bottom; - - if (window.innerWidth - rect.right < 320) { - tooltipNode.style.right = window.innerWidth - rect.left + "px"; - tooltipNode.style.left = ""; - } else { - tooltipNode.style.left = (rect.right + 1) + "px"; - tooltipNode.style.right = ""; - } - tooltipNode.style.display = "block"; - }; - - this.hideDocTooltip = function() { - this.tooltipTimer.cancel(); - if (!this.tooltipNode) return; - var el = this.tooltipNode; - if (!this.editor.isFocused() && document.activeElement == el) - this.editor.focus(); - this.tooltipNode = null; - if (el.parentNode) - el.parentNode.removeChild(el); - }; - - this.onTooltipClick = function(e) { - var a = e.target; - while (a && a != this.tooltipNode) { - if (a.nodeName == "A" && a.href) { - a.rel = "noreferrer"; - a.target = "_blank"; - break; + if (results.finished || this.completions.filtered.length) + callback(null, this.completions, results.finished); + }.bind(this); + var isImmediate = true; + var immediateResults = null; + this.gatherCompletions(editor, function (err, results) { + if (!this.active) { + return; } - a = a.parentNode; + if (err) { + callback(err, [], true); + this.detach(); + } + var prefix = results.prefix; + if (prefix.indexOf(results.prefix) !== 0) + return; + if (isImmediate) { + immediateResults = results; + return; + } + processResults(results); + }.bind(this)); + isImmediate = false; + if (immediateResults) { + var results = immediateResults; + immediateResults = null; + processResults(results); } }; - -}).call(Autocomplete.prototype); - -Autocomplete.startCommand = { - name: "startAutocomplete", - exec: function(editor) { - if (!editor.completer) - editor.completer = new Autocomplete(); - editor.completer.autoInsert = false; - editor.completer.autoSelect = true; - editor.completer.showPopup(editor); - editor.completer.cancelContextMenu(); - }, - bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" -}; - -var FilteredList = function(array, filterText) { - this.all = array; - this.filtered = array; - this.filterText = filterText || ""; - this.exactMatch = false; -}; -(function(){ - this.setFilter = function(str) { + CompletionProvider.prototype.detach = function () { + this.active = false; + this.completers && this.completers.forEach(function (completer) { + if (typeof completer.cancel === "function") { + completer.cancel(); + } + }); + }; + return CompletionProvider; +}()); +var FilteredList = /** @class */ (function () { + function FilteredList(array, filterText) { + this.all = array; + this.filtered = array; + this.filterText = filterText || ""; + this.exactMatch = false; + this.ignoreCaption = false; + } + FilteredList.prototype.setFilter = function (str) { if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) var matches = this.filtered; else var matches = this.all; - this.filterText = str; matches = this.filterCompletions(matches, this.filterText); - matches = matches.sort(function(a, b) { - return b.exactMatch - a.exactMatch || b.score - a.score; + matches = matches.sort(function (a, b) { + return b.exactMatch - a.exactMatch || b.$score - a.$score + || (a.caption || a.value).localeCompare(b.caption || b.value); }); var prev = null; - matches = matches.filter(function(item){ + matches = matches.filter(function (item) { var caption = item.snippet || item.caption || item.value; - if (caption === prev) return false; + if (caption === prev) + return false; prev = caption; return true; }); - this.filtered = matches; }; - this.filterCompletions = function(items, needle) { + FilteredList.prototype.filterCompletions = function (items, needle) { var results = []; var upper = needle.toUpperCase(); var lower = needle.toLowerCase(); loop: for (var i = 0, item; item = items[i]; i++) { - var caption = item.value || item.caption || item.snippet; - if (!caption) continue; + var caption = (!this.ignoreCaption && item.caption) || item.value || item.snippet; + if (!caption) + continue; var lastIndex = -1; var matchMask = 0; var penalty = 0; var index, distance; - if (this.exactMatch) { if (needle !== caption.substr(0, needle.length)) continue loop; - }else{ - for (var j = 0; j < needle.length; j++) { - var i1 = caption.indexOf(lower[j], lastIndex + 1); - var i2 = caption.indexOf(upper[j], lastIndex + 1); - index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; - if (index < 0) - continue loop; - distance = index - lastIndex - 1; - if (distance > 0) { - if (lastIndex === -1) - penalty += 10; - penalty += distance; + } + else { + var fullMatchIndex = caption.toLowerCase().indexOf(lower); + if (fullMatchIndex > -1) { + penalty = fullMatchIndex; + } + else { + for (var j = 0; j < needle.length; j++) { + var i1 = caption.indexOf(lower[j], lastIndex + 1); + var i2 = caption.indexOf(upper[j], lastIndex + 1); + index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; + if (index < 0) + continue loop; + distance = index - lastIndex - 1; + if (distance > 0) { + if (lastIndex === -1) + penalty += 10; + penalty += distance; + matchMask = matchMask | (1 << j); + } + lastIndex = index; } - matchMask = matchMask | (1 << index); - lastIndex = index; } } item.matchMask = matchMask; item.exactMatch = penalty ? 0 : 1; - item.score = (item.score || 0) - penalty; + item.$score = (item.score || 0) - penalty; results.push(item); } return results; }; -}).call(FilteredList.prototype); - + return FilteredList; +}()); exports.Autocomplete = Autocomplete; +exports.CompletionProvider = CompletionProvider; exports.FilteredList = FilteredList; }); -define("ace/autocomplete/text_completer",["require","exports","module","ace/range"], function(require, exports, module) { - var Range = require("../range").Range; - - var splitRegex = /[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/; +define("ace/autocomplete/text_completer",["require","exports","module","ace/range"], function(require, exports, module){var Range = require("../range").Range; +var splitRegex = /[^a-zA-Z_0-9\$\-\u00C0-\u1FFF\u2C00-\uD7FF\w]+/; +function getWordIndex(doc, pos) { + var textBefore = doc.getTextRange(Range.fromPoints({ + row: 0, + column: 0 + }, pos)); + return textBefore.split(splitRegex).length - 1; +} +function wordDistance(doc, pos) { + var prefixPos = getWordIndex(doc, pos); + var words = doc.getValue().split(splitRegex); + var wordScores = Object.create(null); + var currentWord = words[prefixPos]; + words.forEach(function (word, idx) { + if (!word || word === currentWord) + return; + var distance = Math.abs(prefixPos - idx); + var score = words.length - distance; + if (wordScores[word]) { + wordScores[word] = Math.max(score, wordScores[word]); + } + else { + wordScores[word] = score; + } + }); + return wordScores; +} +exports.getCompletions = function (editor, session, pos, prefix, callback) { + var wordScore = wordDistance(session, pos); + var wordList = Object.keys(wordScore); + callback(null, wordList.map(function (word) { + return { + caption: word, + value: word, + score: wordScore[word], + meta: "local" + }; + })); +}; - function getWordIndex(doc, pos) { - var textBefore = doc.getTextRange(Range.fromPoints({row: 0, column:0}, pos)); - return textBefore.split(splitRegex).length - 1; - } - function wordDistance(doc, pos) { - var prefixPos = getWordIndex(doc, pos); - var words = doc.getValue().split(splitRegex); - var wordScores = Object.create(null); - - var currentWord = words[prefixPos]; - - words.forEach(function(word, idx) { - if (!word || word === currentWord) return; - - var distance = Math.abs(prefixPos - idx); - var score = words.length - distance; - if (wordScores[word]) { - wordScores[word] = Math.max(score, wordScores[word]); - } else { - wordScores[word] = score; - } - }); - return wordScores; - } - - exports.getCompletions = function(editor, session, pos, prefix, callback) { - var wordScore = wordDistance(session, pos, prefix); - var wordList = Object.keys(wordScore); - callback(null, wordList.map(function(word) { - return { - caption: word, - value: word, - score: wordScore[word], - meta: "local" - }; - })); - }; }); -define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; - +define("ace/ext/language_tools",["require","exports","module","ace/snippets","ace/autocomplete","ace/config","ace/lib/lang","ace/autocomplete/util","ace/autocomplete/text_completer","ace/editor","ace/config"], function(require, exports, module){"use strict"; var snippetManager = require("../snippets").snippetManager; var Autocomplete = require("../autocomplete").Autocomplete; var config = require("../config"); var lang = require("../lib/lang"); var util = require("../autocomplete/util"); - var textCompleter = require("../autocomplete/text_completer"); var keyWordCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { + getCompletions: function (editor, session, pos, prefix, callback) { if (session.$mode.completer) { return session.$mode.completer.getCompletions(editor, session, pos, prefix, callback); } var state = editor.session.getState(pos.row); var completions = session.$mode.getCompletions(state, session, pos, prefix); + completions = completions.map(function (el) { + el.completerId = keyWordCompleter.id; + return el; + }); callback(null, completions); - } + }, + id: "keywordCompleter" +}; +var transformSnippetTooltip = function (str) { + var record = {}; + return str.replace(/\${(\d+)(:(.*?))?}/g, function (_, p1, p2, p3) { + return (record[p1] = p3 || ''); + }).replace(/\$(\d+?)/g, function (_, p1) { + return record[p1]; + }); }; - var snippetCompleter = { - getCompletions: function(editor, session, pos, prefix, callback) { + getCompletions: function (editor, session, pos, prefix, callback) { + var scopes = []; + var token = session.getTokenAt(pos.row, pos.column); + if (token && token.type.match(/(tag-name|tag-open|tag-whitespace|attribute-name|attribute-value)\.xml$/)) + scopes.push('html-tag'); + else + scopes = snippetManager.getActiveScopes(editor); var snippetMap = snippetManager.snippetMap; var completions = []; - snippetManager.getActiveScopes(editor).forEach(function(scope) { + scopes.forEach(function (scope) { var snippets = snippetMap[scope] || []; for (var i = snippets.length; i--;) { var s = snippets[i]; @@ -1820,128 +2412,148 @@ var snippetCompleter = { caption: caption, snippet: s.content, meta: s.tabTrigger && !s.name ? s.tabTrigger + "\u21E5 " : "snippet", - type: "snippet" + completerId: snippetCompleter.id }); } }, this); callback(null, completions); }, - getDocTooltip: function(item) { - if (item.type == "snippet" && !item.docHTML) { + getDocTooltip: function (item) { + if (item.snippet && !item.docHTML) { item.docHTML = [ "", lang.escapeHTML(item.caption), "", "
", - lang.escapeHTML(item.snippet) + lang.escapeHTML(transformSnippetTooltip(item.snippet)) ].join(""); } - } + }, + id: "snippetCompleter" }; - var completers = [snippetCompleter, textCompleter, keyWordCompleter]; -exports.setCompleters = function(val) { +exports.setCompleters = function (val) { completers.length = 0; - if (val) completers.push.apply(completers, val); + if (val) + completers.push.apply(completers, val); }; -exports.addCompleter = function(completer) { +exports.addCompleter = function (completer) { completers.push(completer); }; exports.textCompleter = textCompleter; exports.keyWordCompleter = keyWordCompleter; exports.snippetCompleter = snippetCompleter; - var expandSnippet = { name: "expandSnippet", - exec: function(editor) { + exec: function (editor) { return snippetManager.expandWithTab(editor); }, bindKey: "Tab" }; - -var onChangeMode = function(e, editor) { +var onChangeMode = function (e, editor) { loadSnippetsForMode(editor.session.$mode); }; - -var loadSnippetsForMode = function(mode) { - var id = mode.$id; +var loadSnippetsForMode = function (mode) { + if (typeof mode == "string") + mode = config.$modes[mode]; + if (!mode) + return; if (!snippetManager.files) snippetManager.files = {}; - loadSnippetFile(id); + loadSnippetFile(mode.$id, mode.snippetFileId); if (mode.modes) mode.modes.forEach(loadSnippetsForMode); }; - -var loadSnippetFile = function(id) { - if (!id || snippetManager.files[id]) +var loadSnippetFile = function (id, snippetFilePath) { + if (!snippetFilePath || !id || snippetManager.files[id]) return; - var snippetFilePath = id.replace("mode", "snippets"); snippetManager.files[id] = {}; - config.loadModule(snippetFilePath, function(m) { - if (m) { - snippetManager.files[id] = m; - if (!m.snippets && m.snippetText) - m.snippets = snippetManager.parseSnippetFile(m.snippetText); - snippetManager.register(m.snippets || [], m.scope); - if (m.includeScopes) { - snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes; - m.includeScopes.forEach(function(x) { - loadSnippetFile("ace/mode/" + x); - }); - } + config.loadModule(snippetFilePath, function (m) { + if (!m) + return; + snippetManager.files[id] = m; + if (!m.snippets && m.snippetText) + m.snippets = snippetManager.parseSnippetFile(m.snippetText); + snippetManager.register(m.snippets || [], m.scope); + if (m.includeScopes) { + snippetManager.snippetMap[m.scope].includeScopes = m.includeScopes; + m.includeScopes.forEach(function (x) { + loadSnippetsForMode("ace/mode/" + x); + }); } }); }; - -var doLiveAutocomplete = function(e) { +var doLiveAutocomplete = function (e) { var editor = e.editor; var hasCompleter = editor.completer && editor.completer.activated; if (e.command.name === "backspace") { if (hasCompleter && !util.getCompletionPrefix(editor)) editor.completer.detach(); } - else if (e.command.name === "insertstring") { - var prefix = util.getCompletionPrefix(editor); - if (prefix && !hasCompleter) { - if (!editor.completer) { - editor.completer = new Autocomplete(); - } - editor.completer.autoInsert = false; - editor.completer.showPopup(editor); + else if (e.command.name === "insertstring" && !hasCompleter) { + lastExecEvent = e; + var delay = e.editor.$liveAutocompletionDelay; + if (delay) { + liveAutocompleteTimer.delay(delay); + } + else { + showLiveAutocomplete(e); } } }; - +var lastExecEvent; +var liveAutocompleteTimer = lang.delayedCall(function () { + showLiveAutocomplete(lastExecEvent); +}, 0); +var showLiveAutocomplete = function (e) { + var editor = e.editor; + var prefix = util.getCompletionPrefix(editor); + var triggerAutocomplete = util.triggerAutocomplete(editor); + if (prefix && prefix.length >= editor.$liveAutocompletionThreshold || triggerAutocomplete) { + var completer = Autocomplete.for(editor); + completer.autoShown = true; + completer.showPopup(editor); + } +}; var Editor = require("../editor").Editor; require("../config").defineOptions(Editor.prototype, "editor", { enableBasicAutocompletion: { - set: function(val) { + set: function (val) { if (val) { if (!this.completers) - this.completers = Array.isArray(val)? val: completers; + this.completers = Array.isArray(val) ? val : completers; this.commands.addCommand(Autocomplete.startCommand); - } else { + } + else { this.commands.removeCommand(Autocomplete.startCommand); } }, value: false }, enableLiveAutocompletion: { - set: function(val) { + set: function (val) { if (val) { if (!this.completers) - this.completers = Array.isArray(val)? val: completers; + this.completers = Array.isArray(val) ? val : completers; this.commands.on('afterExec', doLiveAutocomplete); - } else { - this.commands.removeListener('afterExec', doLiveAutocomplete); + } + else { + this.commands.off('afterExec', doLiveAutocomplete); } }, value: false }, + liveAutocompletionDelay: { + initialValue: 0 + }, + liveAutocompletionThreshold: { + initialValue: 0 + }, enableSnippets: { - set: function(val) { + set: function (val) { if (val) { this.commands.addCommand(expandSnippet); this.on("changeMode", onChangeMode); onChangeMode(null, this); - } else { + } + else { this.commands.removeCommand(expandSnippet); this.off("changeMode", onChangeMode); } @@ -1949,8 +2561,12 @@ require("../config").defineOptions(Editor.prototype, "editor", { value: false } }); -}); - (function() { - window.require(["ace/ext/language_tools"], function() {}); + +}); (function() { + window.require(["ace/ext/language_tools"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-linking.js b/vendor/assets/javascripts/ace/ext-linking.js index 808e1097..ae143464 100644 --- a/vendor/assets/javascripts/ace/ext-linking.js +++ b/vendor/assets/javascripts/ace/ext-linking.js @@ -1,14 +1,12 @@ -define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"], function(require, exports, module) { - -var Editor = require("ace/editor").Editor; - +define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"], function(require, exports, module){var Editor = require("../editor").Editor; require("../config").defineOptions(Editor.prototype, "editor", { enableLinking: { - set: function(val) { + set: function (val) { if (val) { this.on("click", onClick); this.on("mousemove", onMouseMove); - } else { + } + else { this.off("click", onClick); this.off("mousemove", onMouseMove); } @@ -16,46 +14,43 @@ require("../config").defineOptions(Editor.prototype, "editor", { value: false } }); - exports.previousLinkingHover = false; - function onMouseMove(e) { var editor = e.editor; var ctrl = e.getAccelKey(); - if (ctrl) { var editor = e.editor; var docPos = e.getDocumentPosition(); var session = editor.session; var token = session.getTokenAt(docPos.row, docPos.column); - if (exports.previousLinkingHover && exports.previousLinkingHover != token) { editor._emit("linkHoverOut"); } - editor._emit("linkHover", {position: docPos, token: token}); + editor._emit("linkHover", { position: docPos, token: token }); exports.previousLinkingHover = token; - } else if (exports.previousLinkingHover) { + } + else if (exports.previousLinkingHover) { editor._emit("linkHoverOut"); exports.previousLinkingHover = false; } } - function onClick(e) { var ctrl = e.getAccelKey(); var button = e.getButton(); - if (button == 0 && ctrl) { var editor = e.editor; var docPos = e.getDocumentPosition(); var session = editor.session; var token = session.getTokenAt(docPos.row, docPos.column); - - editor._emit("linkClick", {position: docPos, token: token}); + editor._emit("linkClick", { position: docPos, token: token }); } } -}); - (function() { - window.require(["ace/ext/linking"], function() {}); +}); (function() { + window.require(["ace/ext/linking"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-modelist.js b/vendor/assets/javascripts/ace/ext-modelist.js index 6ed618df..19fb7c96 100644 --- a/vendor/assets/javascripts/ace/ext-modelist.js +++ b/vendor/assets/javascripts/ace/ext-modelist.js @@ -1,6 +1,4 @@ -define("ace/ext/modelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/ext/modelist",["require","exports","module"], function(require, exports, module){"use strict"; var modes = []; function getModeForPath(path) { var mode = modesByName.text; @@ -13,174 +11,216 @@ function getModeForPath(path) { } return mode; } - -var Mode = function(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - var re; - if (/\^/.test(extensions)) { - re = extensions.replace(/\|(\^)?/g, function(a, b){ - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - re = "^.*\\.(" + extensions + ")$"; +var Mode = /** @class */ (function () { + function Mode(name, caption, extensions) { + this.name = name; + this.caption = caption; + this.mode = "ace/mode/" + name; + this.extensions = extensions; + var re; + if (/\^/.test(extensions)) { + re = extensions.replace(/\|(\^)?/g, function (a, b) { + return "$|" + (b ? "^" : "^.*\\."); + }) + "$"; + } + else { + re = "^.*\\.(" + extensions + ")$"; + } + this.extRe = new RegExp(re, "gi"); } - - this.extRe = new RegExp(re, "gi"); -}; - -Mode.prototype.supportsFile = function(filename) { - return filename.match(this.extRe); -}; + Mode.prototype.supportsFile = function (filename) { + return filename.match(this.extRe); + }; + return Mode; +}()); var supportedModes = { - ABAP: ["abap"], - ABC: ["abc"], - ActionScript:["as"], - ADA: ["ada|adb"], + ABAP: ["abap"], + ABC: ["abc"], + ActionScript: ["as"], + ADA: ["ada|adb"], + Alda: ["alda"], Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - AsciiDoc: ["asciidoc|adoc"], - Assembly_x86:["asm|a"], - AutoHotKey: ["ahk"], - BatchFile: ["bat|cmd"], - Bro: ["bro"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], - C9Search: ["c9search_results"], - Cirru: ["cirru|cr"], - Clojure: ["clj|cljs"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm"], - CSharp: ["cs"], + Apex: ["apex|cls|trigger|tgr"], + AQL: ["aql"], + AsciiDoc: ["asciidoc|adoc"], + ASL: ["dsl|asl|asl.json"], + Assembly_x86: ["asm|a"], + Astro: ["astro"], + AutoHotKey: ["ahk"], + BatchFile: ["bat|cmd"], + BibTeX: ["bib"], + C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], + C9Search: ["c9search_results"], + Cirru: ["cirru|cr"], + Clojure: ["clj|cljs"], + Cobol: ["CBL|COB"], + coffee: ["coffee|cf|cson|^Cakefile"], + ColdFusion: ["cfm|cfc"], + Crystal: ["cr"], + CSharp: ["cs"], Csound_Document: ["csd"], Csound_Orchestra: ["orc"], Csound_Score: ["sco"], - CSS: ["css"], - Curly: ["curly"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Dockerfile: ["^Dockerfile"], - Dot: ["dot"], - Drools: ["drl"], - Dummy: ["dummy"], - DummySyntax: ["dummy"], - Eiffel: ["e|ge"], - EJS: ["ejs"], - Elixir: ["ex|exs"], - Elm: ["elm"], - Erlang: ["erl|hrl"], - Forth: ["frt|fs|ldr|fth|4th"], - Fortran: ["f|f90"], - FTL: ["ftl"], - Gcode: ["gcode"], - Gherkin: ["feature"], - Gitignore: ["^.gitignore"], - Glsl: ["glsl|frag|vert"], - Gobstones: ["gbs"], - golang: ["go"], + CSS: ["css"], + Curly: ["curly"], + Cuttlefish: ["conf"], + D: ["d|di"], + Dart: ["dart"], + Diff: ["diff|patch"], + Django: ["djt|html.djt|dj.html|djhtml"], + Dockerfile: ["^Dockerfile"], + Dot: ["dot"], + Drools: ["drl"], + Edifact: ["edi"], + Eiffel: ["e|ge"], + EJS: ["ejs"], + Elixir: ["ex|exs"], + Elm: ["elm"], + Erlang: ["erl|hrl"], + Flix: ["flix"], + Forth: ["frt|fs|ldr|fth|4th"], + Fortran: ["f|f90"], + FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], + FSL: ["fsl"], + FTL: ["ftl"], + Gcode: ["gcode"], + Gherkin: ["feature"], + Gitignore: ["^.gitignore"], + Glsl: ["glsl|frag|vert"], + Gobstones: ["gbs"], + golang: ["go"], GraphQLSchema: ["gql"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - Haskell_Cabal: ["cabal"], - haXe: ["hx"], - Hjson: ["hjson"], - HTML: ["html|htm|xhtml|vue|we|wpy"], + Groovy: ["groovy"], + HAML: ["haml"], + Handlebars: ["hbs|handlebars|tpl|mustache"], + Haskell: ["hs"], + Haskell_Cabal: ["cabal"], + haXe: ["hx"], + Hjson: ["hjson"], + HTML: ["html|htm|xhtml|vue|we|wpy"], HTML_Elixir: ["eex|html.eex"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Io: ["io"], - Jack: ["jack"], - Jade: ["jade|pug"], - Java: ["java"], - JavaScript: ["js|jsm|jsx"], - JSON: ["json"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSSM: ["jssm|jssm_state"], - JSX: ["jsx"], - Julia: ["jl"], - Kotlin: ["kt|kts"], - LaTeX: ["tex|latex|ltx|bib"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - LogiQL: ["logic|lql"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - Markdown: ["md|markdown"], - Mask: ["mask"], - MATLAB: ["matlab"], - Maze: ["mz"], - MEL: ["mel"], - MUSHCode: ["mc|mush"], - MySQL: ["mysql"], - Nix: ["nix"], - NSIS: ["nsi|nsh"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], - Pig: ["pig"], - Powershell: ["ps1"], - Praat: ["praat|praatscript|psc|proc"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - Python: ["py"], - R: ["r"], - Razor: ["cshtml|asp"], - RDoc: ["Rd"], - Red: ["red|reds"], - RHTML: ["Rhtml"], - RST: ["rst"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala"], - Scheme: ["scm|sm|rkt|oak|scheme"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Smarty: ["smarty|tpl"], - snippets: ["snippets"], - Soy_Template:["soy"], - Space: ["space"], - SQL: ["sql"], - SQLServer: ["sqlserver"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Swift: ["swift"], - Tcl: ["tcl"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - TSX: ["tsx"], - Twig: ["twig|swig"], - Typescript: ["ts|typescript|str"], - Vala: ["vala"], - VBScript: ["vbs|vb"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - VHDL: ["vhd|vhdl"], - Wollok: ["wlk|wpgm|wtest"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], - XQuery: ["xq"], - YAML: ["yaml|yml"], - Django: ["html"] + HTML_Ruby: ["erb|rhtml|html.erb"], + INI: ["ini|conf|cfg|prefs"], + Io: ["io"], + Ion: ["ion"], + Jack: ["jack"], + Jade: ["jade|pug"], + Java: ["java"], + JavaScript: ["js|jsm|cjs|mjs"], + JEXL: ["jexl"], + JSON: ["json"], + JSON5: ["json5"], + JSONiq: ["jq"], + JSP: ["jsp"], + JSSM: ["jssm|jssm_state"], + JSX: ["jsx"], + Julia: ["jl"], + Kotlin: ["kt|kts"], + LaTeX: ["tex|latex|ltx|bib"], + Latte: ["latte"], + LESS: ["less"], + Liquid: ["liquid"], + Lisp: ["lisp"], + LiveScript: ["ls"], + Log: ["log"], + LogiQL: ["logic|lql"], + Logtalk: ["lgt"], + LSL: ["lsl"], + Lua: ["lua"], + LuaPage: ["lp"], + Lucene: ["lucene"], + Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], + Markdown: ["md|markdown"], + Mask: ["mask"], + MATLAB: ["matlab"], + Maze: ["mz"], + MediaWiki: ["wiki|mediawiki"], + MEL: ["mel"], + MIPS: ["s|asm"], + MIXAL: ["mixal"], + MUSHCode: ["mc|mush"], + MySQL: ["mysql"], + Nasal: ["nas"], + Nginx: ["nginx|conf"], + Nim: ["nim"], + Nix: ["nix"], + NSIS: ["nsi|nsh"], + Nunjucks: ["nunjucks|nunjs|nj|njk"], + ObjectiveC: ["m|mm"], + OCaml: ["ml|mli"], + Odin: ["odin"], + PartiQL: ["partiql|pql"], + Pascal: ["pas|p"], + Perl: ["pl|pm"], + pgSQL: ["pgsql"], + PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], + PHP_Laravel_blade: ["blade.php"], + Pig: ["pig"], + PLSQL: ["plsql"], + Powershell: ["ps1"], + Praat: ["praat|praatscript|psc|proc"], + Prisma: ["prisma"], + Prolog: ["plg|prolog"], + Properties: ["properties"], + Protobuf: ["proto"], + PRQL: ["prql"], + Puppet: ["epp|pp"], + Python: ["py"], + QML: ["qml"], + R: ["r"], + Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], + Razor: ["cshtml|asp"], + RDoc: ["Rd"], + Red: ["red|reds"], + RHTML: ["Rhtml"], + Robot: ["robot|resource"], + RST: ["rst"], + Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], + Rust: ["rs"], + SaC: ["sac"], + SASS: ["sass"], + SCAD: ["scad"], + Scala: ["scala|sbt"], + Scheme: ["scm|sm|rkt|oak|scheme"], + Scrypt: ["scrypt"], + SCSS: ["scss"], + SH: ["sh|bash|^.bashrc"], + SJS: ["sjs"], + Slim: ["slim|skim"], + Smarty: ["smarty|tpl"], + Smithy: ["smithy"], + snippets: ["snippets"], + Soy_Template: ["soy"], + Space: ["space"], + SPARQL: ["rq"], + SQL: ["sql"], + SQLServer: ["sqlserver"], + Stylus: ["styl|stylus"], + SVG: ["svg"], + Swift: ["swift"], + Tcl: ["tcl"], + Terraform: ["tf", "tfvars", "terragrunt"], + Tex: ["tex"], + Text: ["txt"], + Textile: ["textile"], + Toml: ["toml"], + TSX: ["tsx"], + Turtle: ["ttl"], + Twig: ["twig|swig"], + Typescript: ["ts|mts|cts|typescript|str"], + Vala: ["vala"], + VBScript: ["vbs|vb"], + Velocity: ["vm"], + Verilog: ["v|vh|sv|svh"], + VHDL: ["vhd|vhdl"], + Visualforce: ["vfp|component|page"], + Wollok: ["wlk|wpgm|wtest"], + XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], + XQuery: ["xq"], + YAML: ["yaml|yml"], + Zeek: ["zeek|bro"], + Zig: ["zig"] }; - var nameOverrides = { ObjectiveC: "Objective-C", CSharp: "C#", @@ -192,7 +232,10 @@ var nameOverrides = { coffee: "CoffeeScript", HTML_Ruby: "HTML (Ruby)", HTML_Elixir: "HTML (Elixir)", - FTL: "FreeMarker" + FTL: "FreeMarker", + PHP_Laravel_blade: "PHP (Blade Template)", + Perl6: "Perl 6", + AutoHotKey: "AutoHotkey / AutoIt" }; var modesByName = {}; for (var name in supportedModes) { @@ -203,15 +246,17 @@ for (var name in supportedModes) { modesByName[filename] = mode; modes.push(mode); } - module.exports = { getModeForPath: getModeForPath, modes: modes, modesByName: modesByName }; -}); - (function() { - window.require(["ace/ext/modelist"], function() {}); +}); (function() { + window.require(["ace/ext/modelist"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-old_ie.js b/vendor/assets/javascripts/ace/ext-old_ie.js deleted file mode 100644 index bdef4029..00000000 --- a/vendor/assets/javascripts/ace/ext-old_ie.js +++ /dev/null @@ -1,502 +0,0 @@ -define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module) { -"use strict"; - -var dom = require("../lib/dom"); -var lang = require("../lib/lang"); -var event = require("../lib/event"); -var searchboxCss = "\ -.ace_search {\ -background-color: #ddd;\ -border: 1px solid #cbcbcb;\ -border-top: 0 none;\ -max-width: 325px;\ -overflow: hidden;\ -margin: 0;\ -padding: 4px;\ -padding-right: 6px;\ -padding-bottom: 0;\ -position: absolute;\ -top: 0px;\ -z-index: 99;\ -white-space: normal;\ -}\ -.ace_search.left {\ -border-left: 0 none;\ -border-radius: 0px 0px 5px 0px;\ -left: 0;\ -}\ -.ace_search.right {\ -border-radius: 0px 0px 0px 5px;\ -border-right: 0 none;\ -right: 0;\ -}\ -.ace_search_form, .ace_replace_form {\ -border-radius: 3px;\ -border: 1px solid #cbcbcb;\ -float: left;\ -margin-bottom: 4px;\ -overflow: hidden;\ -}\ -.ace_search_form.ace_nomatch {\ -outline: 1px solid red;\ -}\ -.ace_search_field {\ -background-color: white;\ -color: black;\ -border-right: 1px solid #cbcbcb;\ -border: 0 none;\ --webkit-box-sizing: border-box;\ --moz-box-sizing: border-box;\ -box-sizing: border-box;\ -float: left;\ -height: 22px;\ -outline: 0;\ -padding: 0 7px;\ -width: 214px;\ -margin: 0;\ -}\ -.ace_searchbtn,\ -.ace_replacebtn {\ -background: #fff;\ -border: 0 none;\ -border-left: 1px solid #dcdcdc;\ -cursor: pointer;\ -float: left;\ -height: 22px;\ -margin: 0;\ -position: relative;\ -}\ -.ace_searchbtn:last-child,\ -.ace_replacebtn:last-child {\ -border-top-right-radius: 3px;\ -border-bottom-right-radius: 3px;\ -}\ -.ace_searchbtn:disabled {\ -background: none;\ -cursor: default;\ -}\ -.ace_searchbtn {\ -background-position: 50% 50%;\ -background-repeat: no-repeat;\ -width: 27px;\ -}\ -.ace_searchbtn.prev {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \ -}\ -.ace_searchbtn.next {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \ -}\ -.ace_searchbtn_close {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\ -border-radius: 50%;\ -border: 0 none;\ -color: #656565;\ -cursor: pointer;\ -float: right;\ -font: 16px/16px Arial;\ -height: 14px;\ -margin: 5px 1px 9px 5px;\ -padding: 0;\ -text-align: center;\ -width: 14px;\ -}\ -.ace_searchbtn_close:hover {\ -background-color: #656565;\ -background-position: 50% 100%;\ -color: white;\ -}\ -.ace_replacebtn.prev {\ -width: 54px\ -}\ -.ace_replacebtn.next {\ -width: 27px\ -}\ -.ace_button {\ -margin-left: 2px;\ -cursor: pointer;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -overflow: hidden;\ -opacity: 0.7;\ -border: 1px solid rgba(100,100,100,0.23);\ -padding: 1px;\ --moz-box-sizing: border-box;\ -box-sizing: border-box;\ -color: black;\ -}\ -.ace_button:hover {\ -background-color: #eee;\ -opacity:1;\ -}\ -.ace_button:active {\ -background-color: #ddd;\ -}\ -.ace_button.checked {\ -border-color: #3399ff;\ -opacity:1;\ -}\ -.ace_search_options{\ -margin-bottom: 3px;\ -text-align: right;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -}"; -var HashHandler = require("../keyboard/hash_handler").HashHandler; -var keyUtil = require("../lib/keys"); - -dom.importCssString(searchboxCss, "ace_searchbox"); - -var html = ''.replace(/>\s+/g, ">"); - -var SearchBox = function(editor, range, showReplaceForm) { - var div = dom.createElement("div"); - div.innerHTML = html; - this.element = div.firstChild; - - this.$init(); - this.setEditor(editor); -}; - -(function() { - this.setEditor = function(editor) { - editor.searchBox = this; - editor.container.appendChild(this.element); - this.editor = editor; - }; - - this.$initElements = function(sb) { - this.searchBox = sb.querySelector(".ace_search_form"); - this.replaceBox = sb.querySelector(".ace_replace_form"); - this.searchOptions = sb.querySelector(".ace_search_options"); - this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); - this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); - this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); - this.searchInput = this.searchBox.querySelector(".ace_search_field"); - this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); - }; - - this.$init = function() { - var sb = this.element; - - this.$initElements(sb); - - var _this = this; - event.addListener(sb, "mousedown", function(e) { - setTimeout(function(){ - _this.activeInput.focus(); - }, 0); - event.stopPropagation(e); - }); - event.addListener(sb, "click", function(e) { - var t = e.target || e.srcElement; - var action = t.getAttribute("action"); - if (action && _this[action]) - _this[action](); - else if (_this.$searchBarKb.commands[action]) - _this.$searchBarKb.commands[action].exec(_this); - event.stopPropagation(e); - }); - - event.addCommandKeyListener(sb, function(e, hashId, keyCode) { - var keyString = keyUtil.keyCodeToString(keyCode); - var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); - if (command && command.exec) { - command.exec(_this); - event.stopEvent(e); - } - }); - - this.$onChange = lang.delayedCall(function() { - _this.find(false, false); - }); - - event.addListener(this.searchInput, "input", function() { - _this.$onChange.schedule(20); - }); - event.addListener(this.searchInput, "focus", function() { - _this.activeInput = _this.searchInput; - _this.searchInput.value && _this.highlight(); - }); - event.addListener(this.replaceInput, "focus", function() { - _this.activeInput = _this.replaceInput; - _this.searchInput.value && _this.highlight(); - }); - }; - this.$closeSearchBarKb = new HashHandler([{ - bindKey: "Esc", - name: "closeSearchBar", - exec: function(editor) { - editor.searchBox.hide(); - } - }]); - this.$searchBarKb = new HashHandler(); - this.$searchBarKb.bindKeys({ - "Ctrl-f|Command-f": function(sb) { - var isReplace = sb.isReplace = !sb.isReplace; - sb.replaceBox.style.display = isReplace ? "" : "none"; - sb.searchInput.focus(); - }, - "Ctrl-H|Command-Option-F": function(sb) { - sb.replaceBox.style.display = ""; - sb.replaceInput.focus(); - }, - "Ctrl-G|Command-G": function(sb) { - sb.findNext(); - }, - "Ctrl-Shift-G|Command-Shift-G": function(sb) { - sb.findPrev(); - }, - "esc": function(sb) { - setTimeout(function() { sb.hide();}); - }, - "Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findNext(); - }, - "Shift-Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findPrev(); - }, - "Alt-Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replaceAll(); - sb.findAll(); - }, - "Tab": function(sb) { - (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); - } - }); - - this.$searchBarKb.addCommands([{ - name: "toggleRegexpMode", - bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"}, - exec: function(sb) { - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleCaseSensitive", - bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"}, - exec: function(sb) { - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleWholeWords", - bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"}, - exec: function(sb) { - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - } - }]); - - this.$syncOptions = function() { - dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); - dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); - dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - this.find(false, false); - }; - - this.highlight = function(re) { - this.editor.session.highlight(re || this.editor.$search.$options.re); - this.editor.renderer.updateBackMarkers() - }; - this.find = function(skipCurrent, backwards, preventScroll) { - var range = this.editor.find(this.searchInput.value, { - skipCurrent: skipCurrent, - backwards: backwards, - wrap: true, - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked, - preventScroll: preventScroll - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - }; - this.findNext = function() { - this.find(true, false); - }; - this.findPrev = function() { - this.find(true, true); - }; - this.findAll = function(){ - var range = this.editor.findAll(this.searchInput.value, { - regExp: this.regExpOption.checked, - caseSensitive: this.caseSensitiveOption.checked, - wholeWord: this.wholeWordOption.checked - }); - var noMatch = !range && this.searchInput.value; - dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); - this.editor._emit("findSearchBox", { match: !noMatch }); - this.highlight(); - this.hide(); - }; - this.replace = function() { - if (!this.editor.getReadOnly()) - this.editor.replace(this.replaceInput.value); - }; - this.replaceAndFindNext = function() { - if (!this.editor.getReadOnly()) { - this.editor.replace(this.replaceInput.value); - this.findNext() - } - }; - this.replaceAll = function() { - if (!this.editor.getReadOnly()) - this.editor.replaceAll(this.replaceInput.value); - }; - - this.hide = function() { - this.element.style.display = "none"; - this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); - this.editor.focus(); - }; - this.show = function(value, isReplace) { - this.element.style.display = ""; - this.replaceBox.style.display = isReplace ? "" : "none"; - - this.isReplace = isReplace; - - if (value) - this.searchInput.value = value; - - this.find(false, false, true); - - this.searchInput.focus(); - this.searchInput.select(); - - this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); - }; - - this.isFocused = function() { - var el = document.activeElement; - return el == this.searchInput || el == this.replaceInput; - } -}).call(SearchBox.prototype); - -exports.SearchBox = SearchBox; - -exports.Search = function(editor, isReplace) { - var sb = editor.searchBox || new SearchBox(editor); - sb.show(editor.session.getTextRange(), isReplace); -}; - -}); - -define("ace/ext/old_ie",["require","exports","module","ace/lib/useragent","ace/tokenizer","ace/ext/searchbox","ace/mode/text"], function(require, exports, module) { -"use strict"; -var MAX_TOKEN_COUNT = 1000; -var useragent = require("../lib/useragent"); -var TokenizerModule = require("../tokenizer"); - -function patch(obj, name, regexp, replacement) { - eval("obj['" + name + "']=" + obj[name].toString().replace( - regexp, replacement - )); -} - -if (useragent.isIE && useragent.isIE < 10 && window.top.document.compatMode === "BackCompat") - useragent.isOldIE = true; - -if (typeof document != "undefined" && !document.documentElement.querySelector) { - useragent.isOldIE = true; - var qs = function(el, selector) { - if (selector.charAt(0) == ".") { - var classNeme = selector.slice(1); - } else { - var m = selector.match(/(\w+)=(\w+)/); - var attr = m && m[1]; - var attrVal = m && m[2]; - } - for (var i = 0; i < el.all.length; i++) { - var ch = el.all[i]; - if (classNeme) { - if (ch.className.indexOf(classNeme) != -1) - return ch; - } else if (attr) { - if (ch.getAttribute(attr) == attrVal) - return ch; - } - } - }; - var sb = require("./searchbox").SearchBox.prototype; - patch( - sb, "$initElements", - /([^\s=]*).querySelector\((".*?")\)/g, - "qs($1, $2)" - ); -} - -var compliantExecNpcg = /()??/.exec("")[1] === undefined; -if (compliantExecNpcg) - return; -var proto = TokenizerModule.Tokenizer.prototype; -TokenizerModule.Tokenizer_orig = TokenizerModule.Tokenizer; -proto.getLineTokens_orig = proto.getLineTokens; - -patch( - TokenizerModule, "Tokenizer", - "ruleRegExps.push(adjustedregex);\n", - function(m) { - return m + '\ - if (state[i].next && RegExp(adjustedregex).test(""))\n\ - rule._qre = RegExp(adjustedregex, "g");\n\ - '; - } -); -TokenizerModule.Tokenizer.prototype = proto; -patch( - proto, "getLineTokens", - /if \(match\[i \+ 1\] === undefined\)\s*continue;/, - "if (!match[i + 1]) {\n\ - if (value)continue;\n\ - var qre = state[mapping[i]]._qre;\n\ - if (!qre) continue;\n\ - qre.lastIndex = lastIndex;\n\ - if (!qre.exec(line) || qre.lastIndex != lastIndex)\n\ - continue;\n\ - }" -); - -patch( - require("../mode/text").Mode.prototype, "getTokenizer", - /Tokenizer/, - "TokenizerModule.Tokenizer" -); - -useragent.isOldIE = true; - -}); - (function() { - window.require(["ace/ext/old_ie"], function() {}); - })(); - \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-options.js b/vendor/assets/javascripts/ace/ext-options.js new file mode 100644 index 00000000..a8cd01f0 --- /dev/null +++ b/vendor/assets/javascripts/ace/ext-options.js @@ -0,0 +1,764 @@ +define("ace/ext/menu_tools/settings_menu.css",["require","exports","module"], function(require, exports, module){module.exports = "#ace_settingsmenu, #kbshortcutmenu {\n background-color: #F7F7F7;\n color: black;\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\n padding: 1em 0.5em 2em 1em;\n overflow: auto;\n position: absolute;\n margin: 0;\n bottom: 0;\n right: 0;\n top: 0;\n z-index: 9991;\n cursor: default;\n}\n\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\n background-color: rgba(255, 255, 255, 0.6);\n color: black;\n}\n\n.ace_optionsMenuEntry:hover {\n background-color: rgba(100, 100, 100, 0.1);\n transition: all 0.3s\n}\n\n.ace_closeButton {\n background: rgba(245, 146, 146, 0.5);\n border: 1px solid #F48A8A;\n border-radius: 50%;\n padding: 7px;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 100000;\n}\n.ace_closeButton{\n background: rgba(245, 146, 146, 0.9);\n}\n.ace_optionsMenuKey {\n color: darkslateblue;\n font-weight: bold;\n}\n.ace_optionsMenuCommand {\n color: darkcyan;\n font-weight: normal;\n}\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\n vertical-align: middle;\n}\n\n.ace_optionsMenuEntry button[ace_selected_button=true] {\n background: #e7e7e7;\n box-shadow: 1px 0px 2px 0px #adadad inset;\n border-color: #adadad;\n}\n.ace_optionsMenuEntry button {\n background: white;\n border: 1px solid lightgray;\n margin: 0px;\n}\n.ace_optionsMenuEntry button:hover{\n background: #f0f0f0;\n}"; + +}); + +define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom","ace/ext/menu_tools/settings_menu.css"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +'use strict'; +var dom = require("../../lib/dom"); +var cssText = require("./settings_menu.css"); +dom.importCssString(cssText, "settings_menu.css", false); +module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { + var closer = document.createElement('div'); + var ignoreFocusOut = false; + function documentEscListener(e) { + if (e.keyCode === 27) { + close(); + } + } + function close() { + if (!closer) + return; + document.removeEventListener('keydown', documentEscListener); + closer.parentNode.removeChild(closer); + if (editor) { + editor.focus(); + } + closer = null; + callback && callback(); + } + function setIgnoreFocusOut(ignore) { + ignoreFocusOut = ignore; + if (ignore) { + closer.style.pointerEvents = "none"; + contentElement.style.pointerEvents = "auto"; + } + } + closer.style.cssText = 'margin: 0; padding: 0; ' + + 'position: fixed; top:0; bottom:0; left:0; right:0;' + + 'z-index: 9990; ' + + (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); + closer.addEventListener('click', function (e) { + if (!ignoreFocusOut) { + close(); + } + }); + document.addEventListener('keydown', documentEscListener); + contentElement.addEventListener('click', function (e) { + e.stopPropagation(); + }); + closer.appendChild(contentElement); + document.body.appendChild(closer); + if (editor) { + editor.blur(); + } + return { + close: close, + setIgnoreFocusOut: setIgnoreFocusOut + }; +}; + +}); + +define("ace/ext/modelist",["require","exports","module"], function(require, exports, module){"use strict"; +var modes = []; +function getModeForPath(path) { + var mode = modesByName.text; + var fileName = path.split(/[\/\\]/).pop(); + for (var i = 0; i < modes.length; i++) { + if (modes[i].supportsFile(fileName)) { + mode = modes[i]; + break; + } + } + return mode; +} +var Mode = /** @class */ (function () { + function Mode(name, caption, extensions) { + this.name = name; + this.caption = caption; + this.mode = "ace/mode/" + name; + this.extensions = extensions; + var re; + if (/\^/.test(extensions)) { + re = extensions.replace(/\|(\^)?/g, function (a, b) { + return "$|" + (b ? "^" : "^.*\\."); + }) + "$"; + } + else { + re = "^.*\\.(" + extensions + ")$"; + } + this.extRe = new RegExp(re, "gi"); + } + Mode.prototype.supportsFile = function (filename) { + return filename.match(this.extRe); + }; + return Mode; +}()); +var supportedModes = { + ABAP: ["abap"], + ABC: ["abc"], + ActionScript: ["as"], + ADA: ["ada|adb"], + Alda: ["alda"], + Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], + Apex: ["apex|cls|trigger|tgr"], + AQL: ["aql"], + AsciiDoc: ["asciidoc|adoc"], + ASL: ["dsl|asl|asl.json"], + Assembly_x86: ["asm|a"], + Astro: ["astro"], + AutoHotKey: ["ahk"], + BatchFile: ["bat|cmd"], + BibTeX: ["bib"], + C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], + C9Search: ["c9search_results"], + Cirru: ["cirru|cr"], + Clojure: ["clj|cljs"], + Cobol: ["CBL|COB"], + coffee: ["coffee|cf|cson|^Cakefile"], + ColdFusion: ["cfm|cfc"], + Crystal: ["cr"], + CSharp: ["cs"], + Csound_Document: ["csd"], + Csound_Orchestra: ["orc"], + Csound_Score: ["sco"], + CSS: ["css"], + Curly: ["curly"], + Cuttlefish: ["conf"], + D: ["d|di"], + Dart: ["dart"], + Diff: ["diff|patch"], + Django: ["djt|html.djt|dj.html|djhtml"], + Dockerfile: ["^Dockerfile"], + Dot: ["dot"], + Drools: ["drl"], + Edifact: ["edi"], + Eiffel: ["e|ge"], + EJS: ["ejs"], + Elixir: ["ex|exs"], + Elm: ["elm"], + Erlang: ["erl|hrl"], + Flix: ["flix"], + Forth: ["frt|fs|ldr|fth|4th"], + Fortran: ["f|f90"], + FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], + FSL: ["fsl"], + FTL: ["ftl"], + Gcode: ["gcode"], + Gherkin: ["feature"], + Gitignore: ["^.gitignore"], + Glsl: ["glsl|frag|vert"], + Gobstones: ["gbs"], + golang: ["go"], + GraphQLSchema: ["gql"], + Groovy: ["groovy"], + HAML: ["haml"], + Handlebars: ["hbs|handlebars|tpl|mustache"], + Haskell: ["hs"], + Haskell_Cabal: ["cabal"], + haXe: ["hx"], + Hjson: ["hjson"], + HTML: ["html|htm|xhtml|vue|we|wpy"], + HTML_Elixir: ["eex|html.eex"], + HTML_Ruby: ["erb|rhtml|html.erb"], + INI: ["ini|conf|cfg|prefs"], + Io: ["io"], + Ion: ["ion"], + Jack: ["jack"], + Jade: ["jade|pug"], + Java: ["java"], + JavaScript: ["js|jsm|cjs|mjs"], + JEXL: ["jexl"], + JSON: ["json"], + JSON5: ["json5"], + JSONiq: ["jq"], + JSP: ["jsp"], + JSSM: ["jssm|jssm_state"], + JSX: ["jsx"], + Julia: ["jl"], + Kotlin: ["kt|kts"], + LaTeX: ["tex|latex|ltx|bib"], + Latte: ["latte"], + LESS: ["less"], + Liquid: ["liquid"], + Lisp: ["lisp"], + LiveScript: ["ls"], + Log: ["log"], + LogiQL: ["logic|lql"], + Logtalk: ["lgt"], + LSL: ["lsl"], + Lua: ["lua"], + LuaPage: ["lp"], + Lucene: ["lucene"], + Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], + Markdown: ["md|markdown"], + Mask: ["mask"], + MATLAB: ["matlab"], + Maze: ["mz"], + MediaWiki: ["wiki|mediawiki"], + MEL: ["mel"], + MIPS: ["s|asm"], + MIXAL: ["mixal"], + MUSHCode: ["mc|mush"], + MySQL: ["mysql"], + Nasal: ["nas"], + Nginx: ["nginx|conf"], + Nim: ["nim"], + Nix: ["nix"], + NSIS: ["nsi|nsh"], + Nunjucks: ["nunjucks|nunjs|nj|njk"], + ObjectiveC: ["m|mm"], + OCaml: ["ml|mli"], + Odin: ["odin"], + PartiQL: ["partiql|pql"], + Pascal: ["pas|p"], + Perl: ["pl|pm"], + pgSQL: ["pgsql"], + PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], + PHP_Laravel_blade: ["blade.php"], + Pig: ["pig"], + PLSQL: ["plsql"], + Powershell: ["ps1"], + Praat: ["praat|praatscript|psc|proc"], + Prisma: ["prisma"], + Prolog: ["plg|prolog"], + Properties: ["properties"], + Protobuf: ["proto"], + PRQL: ["prql"], + Puppet: ["epp|pp"], + Python: ["py"], + QML: ["qml"], + R: ["r"], + Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], + Razor: ["cshtml|asp"], + RDoc: ["Rd"], + Red: ["red|reds"], + RHTML: ["Rhtml"], + Robot: ["robot|resource"], + RST: ["rst"], + Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], + Rust: ["rs"], + SaC: ["sac"], + SASS: ["sass"], + SCAD: ["scad"], + Scala: ["scala|sbt"], + Scheme: ["scm|sm|rkt|oak|scheme"], + Scrypt: ["scrypt"], + SCSS: ["scss"], + SH: ["sh|bash|^.bashrc"], + SJS: ["sjs"], + Slim: ["slim|skim"], + Smarty: ["smarty|tpl"], + Smithy: ["smithy"], + snippets: ["snippets"], + Soy_Template: ["soy"], + Space: ["space"], + SPARQL: ["rq"], + SQL: ["sql"], + SQLServer: ["sqlserver"], + Stylus: ["styl|stylus"], + SVG: ["svg"], + Swift: ["swift"], + Tcl: ["tcl"], + Terraform: ["tf", "tfvars", "terragrunt"], + Tex: ["tex"], + Text: ["txt"], + Textile: ["textile"], + Toml: ["toml"], + TSX: ["tsx"], + Turtle: ["ttl"], + Twig: ["twig|swig"], + Typescript: ["ts|mts|cts|typescript|str"], + Vala: ["vala"], + VBScript: ["vbs|vb"], + Velocity: ["vm"], + Verilog: ["v|vh|sv|svh"], + VHDL: ["vhd|vhdl"], + Visualforce: ["vfp|component|page"], + Wollok: ["wlk|wpgm|wtest"], + XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], + XQuery: ["xq"], + YAML: ["yaml|yml"], + Zeek: ["zeek|bro"], + Zig: ["zig"] +}; +var nameOverrides = { + ObjectiveC: "Objective-C", + CSharp: "C#", + golang: "Go", + C_Cpp: "C and C++", + Csound_Document: "Csound Document", + Csound_Orchestra: "Csound", + Csound_Score: "Csound Score", + coffee: "CoffeeScript", + HTML_Ruby: "HTML (Ruby)", + HTML_Elixir: "HTML (Elixir)", + FTL: "FreeMarker", + PHP_Laravel_blade: "PHP (Blade Template)", + Perl6: "Perl 6", + AutoHotKey: "AutoHotkey / AutoIt" +}; +var modesByName = {}; +for (var name in supportedModes) { + var data = supportedModes[name]; + var displayName = (nameOverrides[name] || name).replace(/_/g, " "); + var filename = name.toLowerCase(); + var mode = new Mode(filename, displayName, data[0]); + modesByName[filename] = mode; + modes.push(mode); +} +module.exports = { + getModeForPath: getModeForPath, + modes: modes, + modesByName: modesByName +}; + +}); + +define("ace/ext/themelist",["require","exports","module"], function(require, exports, module){/** + * Generates a list of themes available when ace was built. + * @fileOverview Generates a list of themes available when ace was built. + * @author + * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭ + */ +"use strict"; +var themeData = [ + ["Chrome"], + ["Clouds"], + ["Crimson Editor"], + ["Dawn"], + ["Dreamweaver"], + ["Eclipse"], + ["GitHub"], + ["IPlastic"], + ["Solarized Light"], + ["TextMate"], + ["Tomorrow"], + ["XCode"], + ["Kuroir"], + ["KatzenMilch"], + ["SQL Server", "sqlserver", "light"], + ["CloudEditor", "cloud_editor", "light"], + ["Ambiance", "ambiance", "dark"], + ["Chaos", "chaos", "dark"], + ["Clouds Midnight", "clouds_midnight", "dark"], + ["Dracula", "", "dark"], + ["Cobalt", "cobalt", "dark"], + ["Gruvbox", "gruvbox", "dark"], + ["Green on Black", "gob", "dark"], + ["idle Fingers", "idle_fingers", "dark"], + ["krTheme", "kr_theme", "dark"], + ["Merbivore", "merbivore", "dark"], + ["Merbivore Soft", "merbivore_soft", "dark"], + ["Mono Industrial", "mono_industrial", "dark"], + ["Monokai", "monokai", "dark"], + ["Nord Dark", "nord_dark", "dark"], + ["One Dark", "one_dark", "dark"], + ["Pastel on dark", "pastel_on_dark", "dark"], + ["Solarized Dark", "solarized_dark", "dark"], + ["Terminal", "terminal", "dark"], + ["Tomorrow Night", "tomorrow_night", "dark"], + ["Tomorrow Night Blue", "tomorrow_night_blue", "dark"], + ["Tomorrow Night Bright", "tomorrow_night_bright", "dark"], + ["Tomorrow Night 80s", "tomorrow_night_eighties", "dark"], + ["Twilight", "twilight", "dark"], + ["Vibrant Ink", "vibrant_ink", "dark"], + ["GitHub Dark", "github_dark", "dark"], + ["CloudEditor Dark", "cloud_editor_dark", "dark"] +]; +exports.themesByName = {}; +exports.themes = themeData.map(function (data) { + var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); + var theme = { + caption: data[0], + theme: "ace/theme/" + name, + isDark: data[2] == "dark", + name: name + }; + exports.themesByName[name] = theme; + return theme; +}); + +}); + +define("ace/ext/options",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/lib/oop","ace/config","ace/lib/event_emitter","ace/ext/modelist","ace/ext/themelist"], function(require, exports, module){"use strict"; +require("./menu_tools/overlay_page"); +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var config = require("../config"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var buildDom = dom.buildDom; +var modelist = require("./modelist"); +var themelist = require("./themelist"); +var themes = { Bright: [], Dark: [] }; +themelist.themes.forEach(function (x) { + themes[x.isDark ? "Dark" : "Bright"].push({ caption: x.caption, value: x.theme }); +}); +var modes = modelist.modes.map(function (x) { + return { caption: x.caption, value: x.mode }; +}); +var optionGroups = { + Main: { + Mode: { + path: "mode", + type: "select", + items: modes + }, + Theme: { + path: "theme", + type: "select", + items: themes + }, + "Keybinding": { + type: "buttonBar", + path: "keyboardHandler", + items: [ + { caption: "Ace", value: null }, + { caption: "Vim", value: "ace/keyboard/vim" }, + { caption: "Emacs", value: "ace/keyboard/emacs" }, + { caption: "Sublime", value: "ace/keyboard/sublime" }, + { caption: "VSCode", value: "ace/keyboard/vscode" } + ] + }, + "Font Size": { + path: "fontSize", + type: "number", + defaultValue: 12, + defaults: [ + { caption: "12px", value: 12 }, + { caption: "24px", value: 24 } + ] + }, + "Soft Wrap": { + type: "buttonBar", + path: "wrap", + items: [ + { caption: "Off", value: "off" }, + { caption: "View", value: "free" }, + { caption: "margin", value: "printMargin" }, + { caption: "40", value: "40" } + ] + }, + "Cursor Style": { + path: "cursorStyle", + items: [ + { caption: "Ace", value: "ace" }, + { caption: "Slim", value: "slim" }, + { caption: "Smooth", value: "smooth" }, + { caption: "Smooth And Slim", value: "smooth slim" }, + { caption: "Wide", value: "wide" } + ] + }, + "Folding": { + path: "foldStyle", + items: [ + { caption: "Manual", value: "manual" }, + { caption: "Mark begin", value: "markbegin" }, + { caption: "Mark begin and end", value: "markbeginend" } + ] + }, + "Soft Tabs": [{ + path: "useSoftTabs" + }, { + ariaLabel: "Tab Size", + path: "tabSize", + type: "number", + values: [2, 3, 4, 8, 16] + }], + "Overscroll": { + type: "buttonBar", + path: "scrollPastEnd", + items: [ + { caption: "None", value: 0 }, + { caption: "Half", value: 0.5 }, + { caption: "Full", value: 1 } + ] + } + }, + More: { + "Atomic soft tabs": { + path: "navigateWithinSoftTabs" + }, + "Enable Behaviours": { + path: "behavioursEnabled" + }, + "Wrap with quotes": { + path: "wrapBehavioursEnabled" + }, + "Enable Auto Indent": { + path: "enableAutoIndent" + }, + "Full Line Selection": { + type: "checkbox", + values: "text|line", + path: "selectionStyle" + }, + "Highlight Active Line": { + path: "highlightActiveLine" + }, + "Show Invisibles": { + path: "showInvisibles" + }, + "Show Indent Guides": { + path: "displayIndentGuides" + }, + "Highlight Indent Guides": { + path: "highlightIndentGuides" + }, + "Persistent HScrollbar": { + path: "hScrollBarAlwaysVisible" + }, + "Persistent VScrollbar": { + path: "vScrollBarAlwaysVisible" + }, + "Animate scrolling": { + path: "animatedScroll" + }, + "Show Gutter": { + path: "showGutter" + }, + "Show Line Numbers": { + path: "showLineNumbers" + }, + "Relative Line Numbers": { + path: "relativeLineNumbers" + }, + "Fixed Gutter Width": { + path: "fixedWidthGutter" + }, + "Show Print Margin": [{ + path: "showPrintMargin" + }, { + ariaLabel: "Print Margin", + type: "number", + path: "printMarginColumn" + }], + "Indented Soft Wrap": { + path: "indentedSoftWrap" + }, + "Highlight selected word": { + path: "highlightSelectedWord" + }, + "Fade Fold Widgets": { + path: "fadeFoldWidgets" + }, + "Use textarea for IME": { + path: "useTextareaForIME" + }, + "Merge Undo Deltas": { + path: "mergeUndoDeltas", + items: [ + { caption: "Always", value: "always" }, + { caption: "Never", value: "false" }, + { caption: "Timed", value: "true" } + ] + }, + "Elastic Tabstops": { + path: "useElasticTabstops" + }, + "Incremental Search": { + path: "useIncrementalSearch" + }, + "Read-only": { + path: "readOnly" + }, + "Copy without selection": { + path: "copyWithEmptySelection" + }, + "Live Autocompletion": { + path: "enableLiveAutocompletion" + }, + "Custom scrollbar": { + path: "customScrollbar" + }, + "Use SVG gutter icons": { + path: "useSvgGutterIcons" + }, + "Annotations for folded lines": { + path: "showFoldedAnnotations" + }, + "Keyboard Accessibility Mode": { + path: "enableKeyboardAccessibility" + }, + "Gutter tooltip follows mouse": { + path: "tooltipFollowsMouse", + defaultValue: true + } + } +}; +var OptionPanel = /** @class */ (function () { + function OptionPanel(editor, element) { + this.editor = editor; + this.container = element || document.createElement("div"); + this.groups = []; + this.options = {}; + } + OptionPanel.prototype.add = function (config) { + if (config.Main) + oop.mixin(optionGroups.Main, config.Main); + if (config.More) + oop.mixin(optionGroups.More, config.More); + }; + OptionPanel.prototype.render = function () { + this.container.innerHTML = ""; + buildDom(["table", { role: "presentation", id: "controls" }, + this.renderOptionGroup(optionGroups.Main), + ["tr", null, ["td", { colspan: 2 }, + ["table", { role: "presentation", id: "more-controls" }, + this.renderOptionGroup(optionGroups.More) + ] + ]], + ["tr", null, ["td", { colspan: 2 }, "version " + config.version]] + ], this.container); + }; + OptionPanel.prototype.renderOptionGroup = function (group) { + return Object.keys(group).map(function (key, i) { + var item = group[key]; + if (!item.position) + item.position = i / 10000; + if (!item.label) + item.label = key; + return item; + }).sort(function (a, b) { + return a.position - b.position; + }).map(function (item) { + return this.renderOption(item.label, item); + }, this); + }; + OptionPanel.prototype.renderOptionControl = function (key, option) { + var self = this; + if (Array.isArray(option)) { + return option.map(function (x) { + return self.renderOptionControl(key, x); + }); + } + var control; + var value = self.getOption(option); + if (option.values && option.type != "checkbox") { + if (typeof option.values == "string") + option.values = option.values.split("|"); + option.items = option.values.map(function (v) { + return { value: v, name: v }; + }); + } + if (option.type == "buttonBar") { + control = ["div", { role: "group", "aria-labelledby": option.path + "-label" }, option.items.map(function (item) { + return ["button", { + value: item.value, + ace_selected_button: value == item.value, + 'aria-pressed': value == item.value, + onclick: function () { + self.setOption(option, item.value); + var nodes = this.parentNode.querySelectorAll("[ace_selected_button]"); + for (var i = 0; i < nodes.length; i++) { + nodes[i].removeAttribute("ace_selected_button"); + nodes[i].setAttribute("aria-pressed", false); + } + this.setAttribute("ace_selected_button", true); + this.setAttribute("aria-pressed", true); + } + }, item.desc || item.caption || item.name]; + })]; + } + else if (option.type == "number") { + control = ["input", { type: "number", value: value || option.defaultValue, style: "width:3em", oninput: function () { + self.setOption(option, parseInt(this.value)); + } }]; + if (option.ariaLabel) { + control[1]["aria-label"] = option.ariaLabel; + } + else { + control[1].id = key; + } + if (option.defaults) { + control = [control, option.defaults.map(function (item) { + return ["button", { onclick: function () { + var input = this.parentNode.firstChild; + input.value = item.value; + input.oninput(); + } }, item.caption]; + })]; + } + } + else if (option.items) { + var buildItems = function (items) { + return items.map(function (item) { + return ["option", { value: item.value || item.name }, item.desc || item.caption || item.name]; + }); + }; + var items = Array.isArray(option.items) + ? buildItems(option.items) + : Object.keys(option.items).map(function (key) { + return ["optgroup", { "label": key }, buildItems(option.items[key])]; + }); + control = ["select", { id: key, value: value, onchange: function () { + self.setOption(option, this.value); + } }, items]; + } + else { + if (typeof option.values == "string") + option.values = option.values.split("|"); + if (option.values) + value = value == option.values[1]; + control = ["input", { type: "checkbox", id: key, checked: value || null, onchange: function () { + var value = this.checked; + if (option.values) + value = option.values[value ? 1 : 0]; + self.setOption(option, value); + } }]; + if (option.type == "checkedNumber") { + control = [control, []]; + } + } + return control; + }; + OptionPanel.prototype.renderOption = function (key, option) { + if (option.path && !option.onchange && !this.editor.$options[option.path]) + return; + var path = Array.isArray(option) ? option[0].path : option.path; + this.options[path] = option; + var safeKey = "-" + path; + var safeId = path + "-label"; + var control = this.renderOptionControl(safeKey, option); + return ["tr", { class: "ace_optionsMenuEntry" }, ["td", + ["label", { for: safeKey, id: safeId }, key] + ], ["td", control]]; + }; + OptionPanel.prototype.setOption = function (option, value) { + if (typeof option == "string") + option = this.options[option]; + if (value == "false") + value = false; + if (value == "true") + value = true; + if (value == "null") + value = null; + if (value == "undefined") + value = undefined; + if (typeof value == "string" && parseFloat(value).toString() == value) + value = parseFloat(value); + if (option.onchange) + option.onchange(value); + else if (option.path) + this.editor.setOption(option.path, value); + this._signal("setOption", { name: option.path, value: value }); + }; + OptionPanel.prototype.getOption = function (option) { + if (option.getValue) + return option.getValue(); + return this.editor.getOption(option.path); + }; + return OptionPanel; +}()); +oop.implement(OptionPanel.prototype, EventEmitter); +exports.OptionPanel = OptionPanel; + +}); (function() { + window.require(["ace/ext/options"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-prompt.js b/vendor/assets/javascripts/ace/ext-prompt.js new file mode 100644 index 00000000..779e2afb --- /dev/null +++ b/vendor/assets/javascripts/ace/ext-prompt.js @@ -0,0 +1,3059 @@ +define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"], function(require, exports, module){"use strict"; +var Renderer = require("../virtual_renderer").VirtualRenderer; +var Editor = require("../editor").Editor; +var Range = require("../range").Range; +var event = require("../lib/event"); +var lang = require("../lib/lang"); +var dom = require("../lib/dom"); +var nls = require("../config").nls; +var userAgent = require("./../lib/useragent"); +var getAriaId = function (index) { + return "suggest-aria-id:".concat(index); +}; +var popupAriaRole = userAgent.isSafari ? "menu" : "listbox"; +var optionAriaRole = userAgent.isSafari ? "menuitem" : "option"; +var ariaActiveState = userAgent.isSafari ? "aria-current" : "aria-selected"; +var $singleLineEditor = function (el) { + var renderer = new Renderer(el); + renderer.$maxLines = 4; + var editor = new Editor(renderer); + editor.setHighlightActiveLine(false); + editor.setShowPrintMargin(false); + editor.renderer.setShowGutter(false); + editor.renderer.setHighlightGutterLine(false); + editor.$mouseHandler.$focusTimeout = 0; + editor.$highlightTagPending = true; + return editor; +}; +var AcePopup = /** @class */ (function () { + function AcePopup(parentNode) { + var el = dom.createElement("div"); + var popup = $singleLineEditor(el); + if (parentNode) { + parentNode.appendChild(el); + } + el.style.display = "none"; + popup.renderer.content.style.cursor = "default"; + popup.renderer.setStyle("ace_autocomplete"); + popup.renderer.$textLayer.element.setAttribute("role", popupAriaRole); + popup.renderer.$textLayer.element.setAttribute("aria-roledescription", nls("Autocomplete suggestions")); + popup.renderer.$textLayer.element.setAttribute("aria-label", nls("Autocomplete suggestions")); + popup.renderer.textarea.setAttribute("aria-hidden", "true"); + popup.setOption("displayIndentGuides", false); + popup.setOption("dragDelay", 150); + var noop = function () { }; + popup.focus = noop; + popup.$isFocused = true; + popup.renderer.$cursorLayer.restartTimer = noop; + popup.renderer.$cursorLayer.element.style.opacity = "0"; + popup.renderer.$maxLines = 8; + popup.renderer.$keepTextAreaAtCursor = false; + popup.setHighlightActiveLine(false); + popup.session.highlight(""); + popup.session.$searchHighlight.clazz = "ace_highlight-marker"; + popup.on("mousedown", function (e) { + var pos = e.getDocumentPosition(); + popup.selection.moveToPosition(pos); + selectionMarker.start.row = selectionMarker.end.row = pos.row; + e.stop(); + }); + var lastMouseEvent; + var hoverMarker = new Range(-1, 0, -1, Infinity); + var selectionMarker = new Range(-1, 0, -1, Infinity); + selectionMarker.id = popup.session.addMarker(selectionMarker, "ace_active-line", "fullLine"); + popup.setSelectOnHover = function (val) { + if (!val) { + hoverMarker.id = popup.session.addMarker(hoverMarker, "ace_line-hover", "fullLine"); + } + else if (hoverMarker.id) { + popup.session.removeMarker(hoverMarker.id); + hoverMarker.id = null; + } + }; + popup.setSelectOnHover(false); + popup.on("mousemove", function (e) { + if (!lastMouseEvent) { + lastMouseEvent = e; + return; + } + if (lastMouseEvent.x == e.x && lastMouseEvent.y == e.y) { + return; + } + lastMouseEvent = e; + lastMouseEvent.scrollTop = popup.renderer.scrollTop; + popup.isMouseOver = true; + var row = lastMouseEvent.getDocumentPosition().row; + if (hoverMarker.start.row != row) { + if (!hoverMarker.id) + popup.setRow(row); + setHoverMarker(row); + } + }); + popup.renderer.on("beforeRender", function () { + if (lastMouseEvent && hoverMarker.start.row != -1) { + lastMouseEvent.$pos = null; + var row = lastMouseEvent.getDocumentPosition().row; + if (!hoverMarker.id) + popup.setRow(row); + setHoverMarker(row, true); + } + }); + popup.renderer.on("afterRender", function () { + var row = popup.getRow(); + var t = popup.renderer.$textLayer; + var selected = /** @type {HTMLElement|null} */ (t.element.childNodes[row - t.config.firstRow]); + var el = document.activeElement; // Active element is textarea of main editor + if (selected !== popup.selectedNode && popup.selectedNode) { + dom.removeCssClass(popup.selectedNode, "ace_selected"); + el.removeAttribute("aria-activedescendant"); + popup.selectedNode.removeAttribute(ariaActiveState); + popup.selectedNode.removeAttribute("id"); + } + popup.selectedNode = selected; + if (selected) { + dom.addCssClass(selected, "ace_selected"); + var ariaId = getAriaId(row); + selected.id = ariaId; + t.element.setAttribute("aria-activedescendant", ariaId); + el.setAttribute("aria-activedescendant", ariaId); + selected.setAttribute("role", optionAriaRole); + selected.setAttribute("aria-roledescription", nls("item")); + selected.setAttribute("aria-label", popup.getData(row).caption || popup.getData(row).value); + selected.setAttribute("aria-setsize", popup.data.length); + selected.setAttribute("aria-posinset", row + 1); + selected.setAttribute("aria-describedby", "doc-tooltip"); + selected.setAttribute(ariaActiveState, "true"); + } + }); + var hideHoverMarker = function () { setHoverMarker(-1); }; + var setHoverMarker = function (row, suppressRedraw) { + if (row !== hoverMarker.start.row) { + hoverMarker.start.row = hoverMarker.end.row = row; + if (!suppressRedraw) + popup.session._emit("changeBackMarker"); + popup._emit("changeHoverMarker"); + } + }; + popup.getHoveredRow = function () { + return hoverMarker.start.row; + }; + event.addListener(popup.container, "mouseout", function () { + popup.isMouseOver = false; + hideHoverMarker(); + }); + popup.on("hide", hideHoverMarker); + popup.on("changeSelection", hideHoverMarker); + popup.session.doc.getLength = function () { + return popup.data.length; + }; + popup.session.doc.getLine = function (i) { + var data = popup.data[i]; + if (typeof data == "string") + return data; + return (data && data.value) || ""; + }; + var bgTokenizer = popup.session.bgTokenizer; + bgTokenizer.$tokenizeRow = function (row) { + var data = popup.data[row]; + var tokens = []; + if (!data) + return tokens; + if (typeof data == "string") + data = { value: data }; + var caption = data.caption || data.value || data.name; + function addToken(value, className) { + value && tokens.push({ + type: (data.className || "") + (className || ""), + value: value + }); + } + var lower = caption.toLowerCase(); + var filterText = (popup.filterText || "").toLowerCase(); + var lastIndex = 0; + var lastI = 0; + for (var i = 0; i <= filterText.length; i++) { + if (i != lastI && (data.matchMask & (1 << i) || i == filterText.length)) { + var sub = filterText.slice(lastI, i); + lastI = i; + var index = lower.indexOf(sub, lastIndex); + if (index == -1) + continue; + addToken(caption.slice(lastIndex, index), ""); + lastIndex = index + sub.length; + addToken(caption.slice(index, lastIndex), "completion-highlight"); + } + } + addToken(caption.slice(lastIndex, caption.length), ""); + tokens.push({ type: "completion-spacer", value: " " }); + if (data.meta) + tokens.push({ type: "completion-meta", value: data.meta }); + if (data.message) + tokens.push({ type: "completion-message", value: data.message }); + return tokens; + }; + bgTokenizer.$updateOnChange = noop; + bgTokenizer.start = noop; + popup.session.$computeWidth = function () { + return this.screenWidth = 0; + }; + popup.isOpen = false; + popup.isTopdown = false; + popup.autoSelect = true; + popup.filterText = ""; + popup.isMouseOver = false; + popup.data = []; + popup.setData = function (list, filterText) { + popup.filterText = filterText || ""; + popup.setValue(lang.stringRepeat("\n", list.length), -1); + popup.data = list || []; + popup.setRow(0); + }; + popup.getData = function (row) { + return popup.data[row]; + }; + popup.getRow = function () { + return selectionMarker.start.row; + }; + popup.setRow = function (line) { + line = Math.max(this.autoSelect ? 0 : -1, Math.min(this.data.length - 1, line)); + if (selectionMarker.start.row != line) { + popup.selection.clearSelection(); + selectionMarker.start.row = selectionMarker.end.row = line || 0; + popup.session._emit("changeBackMarker"); + popup.moveCursorTo(line || 0, 0); + if (popup.isOpen) + popup._signal("select"); + } + }; + popup.on("changeSelection", function () { + if (popup.isOpen) + popup.setRow(popup.selection.lead.row); + popup.renderer.scrollCursorIntoView(); + }); + popup.hide = function () { + this.container.style.display = "none"; + popup.anchorPos = null; + popup.anchor = null; + if (popup.isOpen) { + popup.isOpen = false; + this._signal("hide"); + } + }; + popup.tryShow = function (pos, lineHeight, anchor, forceShow) { + if (!forceShow && popup.isOpen && popup.anchorPos && popup.anchor && + popup.anchorPos.top === pos.top && popup.anchorPos.left === pos.left && + popup.anchor === anchor) { + return true; + } + var el = this.container; + var screenHeight = window.innerHeight; + var screenWidth = window.innerWidth; + var renderer = this.renderer; + var maxH = renderer.$maxLines * lineHeight * 1.4; + var dims = { top: 0, bottom: 0, left: 0 }; + var spaceBelow = screenHeight - pos.top - 3 * this.$borderSize - lineHeight; + var spaceAbove = pos.top - 3 * this.$borderSize; + if (!anchor) { + if (spaceAbove <= spaceBelow || spaceBelow >= maxH) { + anchor = "bottom"; + } + else { + anchor = "top"; + } + } + if (anchor === "top") { + dims.bottom = pos.top - this.$borderSize; + dims.top = dims.bottom - maxH; + } + else if (anchor === "bottom") { + dims.top = pos.top + lineHeight + this.$borderSize; + dims.bottom = dims.top + maxH; + } + var fitsX = dims.top >= 0 && dims.bottom <= screenHeight; + if (!forceShow && !fitsX) { + return false; + } + if (!fitsX) { + if (anchor === "top") { + renderer.$maxPixelHeight = spaceAbove; + } + else { + renderer.$maxPixelHeight = spaceBelow; + } + } + else { + renderer.$maxPixelHeight = null; + } + if (anchor === "top") { + el.style.top = ""; + el.style.bottom = (screenHeight - dims.bottom) + "px"; + popup.isTopdown = false; + } + else { + el.style.top = dims.top + "px"; + el.style.bottom = ""; + popup.isTopdown = true; + } + el.style.display = ""; + var left = pos.left; + if (left + el.offsetWidth > screenWidth) + left = screenWidth - el.offsetWidth; + el.style.left = left + "px"; + el.style.right = ""; + if (!popup.isOpen) { + popup.isOpen = true; + this._signal("show"); + lastMouseEvent = null; + } + popup.anchorPos = pos; + popup.anchor = anchor; + return true; + }; + popup.show = function (pos, lineHeight, topdownOnly) { + this.tryShow(pos, lineHeight, topdownOnly ? "bottom" : undefined, true); + }; + popup.goTo = function (where) { + var row = this.getRow(); + var max = this.session.getLength() - 1; + switch (where) { + case "up": + row = row <= 0 ? max : row - 1; + break; + case "down": + row = row >= max ? -1 : row + 1; + break; + case "start": + row = 0; + break; + case "end": + row = max; + break; + } + this.setRow(row); + }; + popup.getTextLeftOffset = function () { + return this.$borderSize + this.renderer.$padding + this.$imageSize; + }; + popup.$imageSize = 0; + popup.$borderSize = 1; + return popup; + } + return AcePopup; +}()); +dom.importCssString("\n.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #CAD6FA;\n z-index: 1;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #3a674e;\n}\n.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #abbffe;\n margin-top: -1px;\n background: rgba(233,233,253,0.4);\n position: absolute;\n z-index: 2;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid rgba(109, 150, 13, 0.8);\n background: rgba(58, 103, 78, 0.62);\n}\n.ace_completion-meta {\n opacity: 0.5;\n margin-left: 0.9em;\n}\n.ace_completion-message {\n margin-left: 0.9em;\n color: blue;\n}\n.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2d69c7;\n}\n.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #93ca12;\n}\n.ace_editor.ace_autocomplete {\n width: 300px;\n z-index: 200000;\n border: 1px lightgray solid;\n position: fixed;\n box-shadow: 2px 3px 5px rgba(0,0,0,.2);\n line-height: 1.4;\n background: #fefefe;\n color: #111;\n}\n.ace_dark.ace_editor.ace_autocomplete {\n border: 1px #484747 solid;\n box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51);\n line-height: 1.4;\n background: #25282c;\n color: #c1c1c1;\n}\n.ace_autocomplete .ace_text-layer {\n width: calc(100% - 8px);\n}\n.ace_autocomplete .ace_line {\n display: flex;\n align-items: center;\n}\n.ace_autocomplete .ace_line > * {\n min-width: 0;\n flex: 0 0 auto;\n}\n.ace_autocomplete .ace_line .ace_ {\n flex: 0 1 auto;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.ace_autocomplete .ace_completion-spacer {\n flex: 1;\n}\n.ace_autocomplete.ace_loading:after {\n content: \"\";\n position: absolute;\n top: 0px;\n height: 2px;\n width: 8%;\n background: blue;\n z-index: 100;\n animation: ace_progress 3s infinite linear;\n animation-delay: 300ms;\n transform: translateX(-100%) scaleX(1);\n}\n@keyframes ace_progress {\n 0% { transform: translateX(-100%) scaleX(1) }\n 50% { transform: translateX(625%) scaleX(2) } \n 100% { transform: translateX(1500%) scaleX(3) } \n}\n@media (prefers-reduced-motion) {\n .ace_autocomplete.ace_loading:after {\n transform: translateX(625%) scaleX(2);\n animation: none;\n }\n}\n", "autocompletion.css", false); +exports.AcePopup = AcePopup; +exports.$singleLineEditor = $singleLineEditor; +exports.getAriaId = getAriaId; + +}); + +define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"], function(require, exports, module){"use strict"; +var dom = require("./lib/dom"); +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var lang = require("./lib/lang"); +var Range = require("./range").Range; +var RangeList = require("./range_list").RangeList; +var HashHandler = require("./keyboard/hash_handler").HashHandler; +var Tokenizer = require("./tokenizer").Tokenizer; +var clipboard = require("./clipboard"); +var VARIABLES = { + CURRENT_WORD: function (editor) { + return editor.session.getTextRange(editor.session.getWordRange()); + }, + SELECTION: function (editor, name, indentation) { + var text = editor.session.getTextRange(); + if (indentation) + return text.replace(/\n\r?([ \t]*\S)/g, "\n" + indentation + "$1"); + return text; + }, + CURRENT_LINE: function (editor) { + return editor.session.getLine(editor.getCursorPosition().row); + }, + PREV_LINE: function (editor) { + return editor.session.getLine(editor.getCursorPosition().row - 1); + }, + LINE_INDEX: function (editor) { + return editor.getCursorPosition().row; + }, + LINE_NUMBER: function (editor) { + return editor.getCursorPosition().row + 1; + }, + SOFT_TABS: function (editor) { + return editor.session.getUseSoftTabs() ? "YES" : "NO"; + }, + TAB_SIZE: function (editor) { + return editor.session.getTabSize(); + }, + CLIPBOARD: function (editor) { + return clipboard.getText && clipboard.getText(); + }, + FILENAME: function (editor) { + return /[^/\\]*$/.exec(this.FILEPATH(editor))[0]; + }, + FILENAME_BASE: function (editor) { + return /[^/\\]*$/.exec(this.FILEPATH(editor))[0].replace(/\.[^.]*$/, ""); + }, + DIRECTORY: function (editor) { + return this.FILEPATH(editor).replace(/[^/\\]*$/, ""); + }, + FILEPATH: function (editor) { return "/not implemented.txt"; }, + WORKSPACE_NAME: function () { return "Unknown"; }, + FULLNAME: function () { return "Unknown"; }, + BLOCK_COMMENT_START: function (editor) { + var mode = editor.session.$mode || {}; + return mode.blockComment && mode.blockComment.start || ""; + }, + BLOCK_COMMENT_END: function (editor) { + var mode = editor.session.$mode || {}; + return mode.blockComment && mode.blockComment.end || ""; + }, + LINE_COMMENT: function (editor) { + var mode = editor.session.$mode || {}; + return mode.lineCommentStart || ""; + }, + CURRENT_YEAR: date.bind(null, { year: "numeric" }), + CURRENT_YEAR_SHORT: date.bind(null, { year: "2-digit" }), + CURRENT_MONTH: date.bind(null, { month: "numeric" }), + CURRENT_MONTH_NAME: date.bind(null, { month: "long" }), + CURRENT_MONTH_NAME_SHORT: date.bind(null, { month: "short" }), + CURRENT_DATE: date.bind(null, { day: "2-digit" }), + CURRENT_DAY_NAME: date.bind(null, { weekday: "long" }), + CURRENT_DAY_NAME_SHORT: date.bind(null, { weekday: "short" }), + CURRENT_HOUR: date.bind(null, { hour: "2-digit", hour12: false }), + CURRENT_MINUTE: date.bind(null, { minute: "2-digit" }), + CURRENT_SECOND: date.bind(null, { second: "2-digit" }) +}; +VARIABLES.SELECTED_TEXT = VARIABLES.SELECTION; +function date(dateFormat) { + var str = new Date().toLocaleString("en-us", dateFormat); + return str.length == 1 ? "0" + str : str; +} +var SnippetManager = /** @class */ (function () { + function SnippetManager() { + this.snippetMap = {}; + this.snippetNameMap = {}; + this.variables = VARIABLES; + } + SnippetManager.prototype.getTokenizer = function () { + return SnippetManager["$tokenizer"] || this.createTokenizer(); + }; + SnippetManager.prototype.createTokenizer = function () { + function TabstopToken(str) { + str = str.substr(1); + if (/^\d+$/.test(str)) + return [{ tabstopId: parseInt(str, 10) }]; + return [{ text: str }]; + } + function escape(ch) { + return "(?:[^\\\\" + ch + "]|\\\\.)"; + } + var formatMatcher = { + regex: "/(" + escape("/") + "+)/", + onMatch: function (val, state, stack) { + var ts = stack[0]; + ts.fmtString = true; + ts.guard = val.slice(1, -1); + ts.flag = ""; + return ""; + }, + next: "formatString" + }; + SnippetManager["$tokenizer"] = new Tokenizer({ + start: [ + { regex: /\\./, onMatch: function (val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) { + val = ch; + } + else if ("`$\\".indexOf(ch) != -1) { + val = ch; + } + return [val]; + } }, + { regex: /}/, onMatch: function (val, state, stack) { + return [stack.length ? stack.shift() : val]; + } }, + { regex: /\$(?:\d+|\w+)/, onMatch: TabstopToken }, + { regex: /\$\{[\dA-Z_a-z]+/, onMatch: function (str, state, stack) { + var t = TabstopToken(str.substr(1)); + stack.unshift(t[0]); + return t; + }, next: "snippetVar" }, + { regex: /\n/, token: "newline", merge: false } + ], + snippetVar: [ + { regex: "\\|" + escape("\\|") + "*\\|", onMatch: function (val, state, stack) { + var choices = val.slice(1, -1).replace(/\\[,|\\]|,/g, function (operator) { + return operator.length == 2 ? operator[1] : "\x00"; + }).split("\x00").map(function (value) { + return { value: value }; + }); + stack[0].choices = choices; + return [choices[0]]; + }, next: "start" }, + formatMatcher, + { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "start" } + ], + formatString: [ + { regex: /:/, onMatch: function (val, state, stack) { + if (stack.length && stack[0].expectElse) { + stack[0].expectElse = false; + stack[0].ifEnd = { elseEnd: stack[0] }; + return [stack[0].ifEnd]; + } + return ":"; + } }, + { regex: /\\./, onMatch: function (val, state, stack) { + var ch = val[1]; + if (ch == "}" && stack.length) + val = ch; + else if ("`$\\".indexOf(ch) != -1) + val = ch; + else if (ch == "n") + val = "\n"; + else if (ch == "t") + val = "\t"; + else if ("ulULE".indexOf(ch) != -1) + val = { changeCase: ch, local: ch > "a" }; + return [val]; + } }, + { regex: "/\\w*}", onMatch: function (val, state, stack) { + var next = stack.shift(); + if (next) + next.flag = val.slice(1, -1); + this.next = next && next.tabstopId ? "start" : ""; + return [next || val]; + }, next: "start" }, + { regex: /\$(?:\d+|\w+)/, onMatch: function (val, state, stack) { + return [{ text: val.slice(1) }]; + } }, + { regex: /\${\w+/, onMatch: function (val, state, stack) { + var token = { text: val.slice(2) }; + stack.unshift(token); + return [token]; + }, next: "formatStringVar" }, + { regex: /\n/, token: "newline", merge: false }, + { regex: /}/, onMatch: function (val, state, stack) { + var next = stack.shift(); + this.next = next && next.tabstopId ? "start" : ""; + return [next || val]; + }, next: "start" } + ], + formatStringVar: [ + { regex: /:\/\w+}/, onMatch: function (val, state, stack) { + var ts = stack[0]; + ts.formatFunction = val.slice(2, -1); + return [stack.shift()]; + }, next: "formatString" }, + formatMatcher, + { regex: /:[\?\-+]?/, onMatch: function (val, state, stack) { + if (val[1] == "+") + stack[0].ifEnd = stack[0]; + if (val[1] == "?") + stack[0].expectElse = true; + }, next: "formatString" }, + { regex: "([^:}\\\\]|\\\\.)*:?", token: "", next: "formatString" } + ] + }); + return SnippetManager["$tokenizer"]; + }; + SnippetManager.prototype.tokenizeTmSnippet = function (str, startState) { + return this.getTokenizer().getLineTokens(str, startState).tokens.map(function (x) { + return x.value || x; + }); + }; + SnippetManager.prototype.getVariableValue = function (editor, name, indentation) { + if (/^\d+$/.test(name)) + return (this.variables.__ || {})[name] || ""; + if (/^[A-Z]\d+$/.test(name)) + return (this.variables[name[0] + "__"] || {})[name.substr(1)] || ""; + name = name.replace(/^TM_/, ""); + if (!this.variables.hasOwnProperty(name)) + return ""; + var value = this.variables[name]; + if (typeof value == "function") + value = this.variables[name](editor, name, indentation); + return value == null ? "" : value; + }; + SnippetManager.prototype.tmStrFormat = function (str, ch, editor) { + if (!ch.fmt) + return str; + var flag = ch.flag || ""; + var re = ch.guard; + re = new RegExp(re, flag.replace(/[^gim]/g, "")); + var fmtTokens = typeof ch.fmt == "string" ? this.tokenizeTmSnippet(ch.fmt, "formatString") : ch.fmt; + var _self = this; + var formatted = str.replace(re, function () { + var oldArgs = _self.variables.__; + _self.variables.__ = [].slice.call(arguments); + var fmtParts = _self.resolveVariables(fmtTokens, editor); + var gChangeCase = "E"; + for (var i = 0; i < fmtParts.length; i++) { + var ch = fmtParts[i]; + if (typeof ch == "object") { + fmtParts[i] = ""; + if (ch.changeCase && ch.local) { + var next = fmtParts[i + 1]; + if (next && typeof next == "string") { + if (ch.changeCase == "u") + fmtParts[i] = next[0].toUpperCase(); + else + fmtParts[i] = next[0].toLowerCase(); + fmtParts[i + 1] = next.substr(1); + } + } + else if (ch.changeCase) { + gChangeCase = ch.changeCase; + } + } + else if (gChangeCase == "U") { + fmtParts[i] = ch.toUpperCase(); + } + else if (gChangeCase == "L") { + fmtParts[i] = ch.toLowerCase(); + } + } + _self.variables.__ = oldArgs; + return fmtParts.join(""); + }); + return formatted; + }; + SnippetManager.prototype.tmFormatFunction = function (str, ch, editor) { + if (ch.formatFunction == "upcase") + return str.toUpperCase(); + if (ch.formatFunction == "downcase") + return str.toLowerCase(); + return str; + }; + SnippetManager.prototype.resolveVariables = function (snippet, editor) { + var result = []; + var indentation = ""; + var afterNewLine = true; + for (var i = 0; i < snippet.length; i++) { + var ch = snippet[i]; + if (typeof ch == "string") { + result.push(ch); + if (ch == "\n") { + afterNewLine = true; + indentation = ""; + } + else if (afterNewLine) { + indentation = /^\t*/.exec(ch)[0]; + afterNewLine = /\S/.test(ch); + } + continue; + } + if (!ch) + continue; + afterNewLine = false; + if (ch.fmtString) { + var j = snippet.indexOf(ch, i + 1); + if (j == -1) + j = snippet.length; + ch.fmt = snippet.slice(i + 1, j); + i = j; + } + if (ch.text) { + var value = this.getVariableValue(editor, ch.text, indentation) + ""; + if (ch.fmtString) + value = this.tmStrFormat(value, ch, editor); + if (ch.formatFunction) + value = this.tmFormatFunction(value, ch, editor); + if (value && !ch.ifEnd) { + result.push(value); + gotoNext(ch); + } + else if (!value && ch.ifEnd) { + gotoNext(ch.ifEnd); + } + } + else if (ch.elseEnd) { + gotoNext(ch.elseEnd); + } + else if (ch.tabstopId != null) { + result.push(ch); + } + else if (ch.changeCase != null) { + result.push(ch); + } + } + function gotoNext(ch) { + var i1 = snippet.indexOf(ch, i + 1); + if (i1 != -1) + i = i1; + } + return result; + }; + SnippetManager.prototype.getDisplayTextForSnippet = function (editor, snippetText) { + var processedSnippet = processSnippetText.call(this, editor, snippetText); + return processedSnippet.text; + }; + SnippetManager.prototype.insertSnippetForSelection = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var processedSnippet = processSnippetText.call(this, editor, snippetText, options); + var range = editor.getSelectionRange(); + var end = editor.session.replace(range, processedSnippet.text); + var tabstopManager = new TabstopManager(editor); + var selectionId = editor.inVirtualSelectionMode && editor.selection.index; + tabstopManager.addTabstops(processedSnippet.tabstops, range.start, end, selectionId); + }; + SnippetManager.prototype.insertSnippet = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var self = this; + if (editor.inVirtualSelectionMode) + return self.insertSnippetForSelection(editor, snippetText, options); + editor.forEachSelection(function () { + self.insertSnippetForSelection(editor, snippetText, options); + }, null, { keepOrder: true }); + if (editor.tabstopManager) + editor.tabstopManager.tabNext(); + }; + SnippetManager.prototype.$getScope = function (editor) { + var scope = editor.session.$mode.$id || ""; + scope = scope.split("/").pop(); + if (scope === "html" || scope === "php") { + if (scope === "php" && !editor.session.$mode.inlinePhp) + scope = "html"; + var c = editor.getCursorPosition(); + var state = editor.session.getState(c.row); + if (typeof state === "object") { + state = state[0]; + } + if (state.substring) { + if (state.substring(0, 3) == "js-") + scope = "javascript"; + else if (state.substring(0, 4) == "css-") + scope = "css"; + else if (state.substring(0, 4) == "php-") + scope = "php"; + } + } + return scope; + }; + SnippetManager.prototype.getActiveScopes = function (editor) { + var scope = this.$getScope(editor); + var scopes = [scope]; + var snippetMap = this.snippetMap; + if (snippetMap[scope] && snippetMap[scope].includeScopes) { + scopes.push.apply(scopes, snippetMap[scope].includeScopes); + } + scopes.push("_"); + return scopes; + }; + SnippetManager.prototype.expandWithTab = function (editor, options) { + var self = this; + var result = editor.forEachSelection(function () { + return self.expandSnippetForSelection(editor, options); + }, null, { keepOrder: true }); + if (result && editor.tabstopManager) + editor.tabstopManager.tabNext(); + return result; + }; + SnippetManager.prototype.expandSnippetForSelection = function (editor, options) { + var cursor = editor.getCursorPosition(); + var line = editor.session.getLine(cursor.row); + var before = line.substring(0, cursor.column); + var after = line.substr(cursor.column); + var snippetMap = this.snippetMap; + var snippet; + this.getActiveScopes(editor).some(function (scope) { + var snippets = snippetMap[scope]; + if (snippets) + snippet = this.findMatchingSnippet(snippets, before, after); + return !!snippet; + }, this); + if (!snippet) + return false; + if (options && options.dryRun) + return true; + editor.session.doc.removeInLine(cursor.row, cursor.column - snippet.replaceBefore.length, cursor.column + snippet.replaceAfter.length); + this.variables.M__ = snippet.matchBefore; + this.variables.T__ = snippet.matchAfter; + this.insertSnippetForSelection(editor, snippet.content); + this.variables.M__ = this.variables.T__ = null; + return true; + }; + SnippetManager.prototype.findMatchingSnippet = function (snippetList, before, after) { + for (var i = snippetList.length; i--;) { + var s = snippetList[i]; + if (s.startRe && !s.startRe.test(before)) + continue; + if (s.endRe && !s.endRe.test(after)) + continue; + if (!s.startRe && !s.endRe) + continue; + s.matchBefore = s.startRe ? s.startRe.exec(before) : [""]; + s.matchAfter = s.endRe ? s.endRe.exec(after) : [""]; + s.replaceBefore = s.triggerRe ? s.triggerRe.exec(before)[0] : ""; + s.replaceAfter = s.endTriggerRe ? s.endTriggerRe.exec(after)[0] : ""; + return s; + } + }; + SnippetManager.prototype.register = function (snippets, scope) { + var snippetMap = this.snippetMap; + var snippetNameMap = this.snippetNameMap; + var self = this; + if (!snippets) + snippets = []; + function wrapRegexp(src) { + if (src && !/^\^?\(.*\)\$?$|^\\b$/.test(src)) + src = "(?:" + src + ")"; + return src || ""; + } + function guardedRegexp(re, guard, opening) { + re = wrapRegexp(re); + guard = wrapRegexp(guard); + if (opening) { + re = guard + re; + if (re && re[re.length - 1] != "$") + re = re + "$"; + } + else { + re = re + guard; + if (re && re[0] != "^") + re = "^" + re; + } + return new RegExp(re); + } + function addSnippet(s) { + if (!s.scope) + s.scope = scope || "_"; + scope = s.scope; + if (!snippetMap[scope]) { + snippetMap[scope] = []; + snippetNameMap[scope] = {}; + } + var map = snippetNameMap[scope]; + if (s.name) { + var old = map[s.name]; + if (old) + self.unregister(old); + map[s.name] = s; + } + snippetMap[scope].push(s); + if (s.prefix) + s.tabTrigger = s.prefix; + if (!s.content && s.body) + s.content = Array.isArray(s.body) ? s.body.join("\n") : s.body; + if (s.tabTrigger && !s.trigger) { + if (!s.guard && /^\w/.test(s.tabTrigger)) + s.guard = "\\b"; + s.trigger = lang.escapeRegExp(s.tabTrigger); + } + if (!s.trigger && !s.guard && !s.endTrigger && !s.endGuard) + return; + s.startRe = guardedRegexp(s.trigger, s.guard, true); + s.triggerRe = new RegExp(s.trigger); + s.endRe = guardedRegexp(s.endTrigger, s.endGuard, true); + s.endTriggerRe = new RegExp(s.endTrigger); + } + if (Array.isArray(snippets)) { + snippets.forEach(addSnippet); + } + else { + Object.keys(snippets).forEach(function (key) { + addSnippet(snippets[key]); + }); + } + this._signal("registerSnippets", { scope: scope }); + }; + SnippetManager.prototype.unregister = function (snippets, scope) { + var snippetMap = this.snippetMap; + var snippetNameMap = this.snippetNameMap; + function removeSnippet(s) { + var nameMap = snippetNameMap[s.scope || scope]; + if (nameMap && nameMap[s.name]) { + delete nameMap[s.name]; + var map = snippetMap[s.scope || scope]; + var i = map && map.indexOf(s); + if (i >= 0) + map.splice(i, 1); + } + } + if (snippets.content) + removeSnippet(snippets); + else if (Array.isArray(snippets)) + snippets.forEach(removeSnippet); + }; + SnippetManager.prototype.parseSnippetFile = function (str) { + str = str.replace(/\r/g, ""); + var list = [], /**@type{Snippet}*/ snippet = {}; + var re = /^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm; + var m; + while (m = re.exec(str)) { + if (m[1]) { + try { + snippet = JSON.parse(m[1]); + list.push(snippet); + } + catch (e) { } + } + if (m[4]) { + snippet.content = m[4].replace(/^\t/gm, ""); + list.push(snippet); + snippet = {}; + } + else { + var key = m[2], val = m[3]; + if (key == "regex") { + var guardRe = /\/((?:[^\/\\]|\\.)*)|$/g; + snippet.guard = guardRe.exec(val)[1]; + snippet.trigger = guardRe.exec(val)[1]; + snippet.endTrigger = guardRe.exec(val)[1]; + snippet.endGuard = guardRe.exec(val)[1]; + } + else if (key == "snippet") { + snippet.tabTrigger = val.match(/^\S*/)[0]; + if (!snippet.name) + snippet.name = val; + } + else if (key) { + snippet[key] = val; + } + } + } + return list; + }; + SnippetManager.prototype.getSnippetByName = function (name, editor) { + var snippetMap = this.snippetNameMap; + var snippet; + this.getActiveScopes(editor).some(function (scope) { + var snippets = snippetMap[scope]; + if (snippets) + snippet = snippets[name]; + return !!snippet; + }, this); + return snippet; + }; + return SnippetManager; +}()); +oop.implement(SnippetManager.prototype, EventEmitter); +var processSnippetText = function (editor, snippetText, options) { + if (options === void 0) { options = {}; } + var cursor = editor.getCursorPosition(); + var line = editor.session.getLine(cursor.row); + var tabString = editor.session.getTabString(); + var indentString = line.match(/^\s*/)[0]; + if (cursor.column < indentString.length) + indentString = indentString.slice(0, cursor.column); + snippetText = snippetText.replace(/\r/g, ""); + var tokens = this.tokenizeTmSnippet(snippetText); + tokens = this.resolveVariables(tokens, editor); + tokens = tokens.map(function (x) { + if (x == "\n" && !options.excludeExtraIndent) + return x + indentString; + if (typeof x == "string") + return x.replace(/\t/g, tabString); + return x; + }); + var tabstops = []; + tokens.forEach(function (p, i) { + if (typeof p != "object") + return; + var id = p.tabstopId; + var ts = tabstops[id]; + if (!ts) { + ts = tabstops[id] = []; + ts.index = id; + ts.value = ""; + ts.parents = {}; + } + if (ts.indexOf(p) !== -1) + return; + if (p.choices && !ts.choices) + ts.choices = p.choices; + ts.push(p); + var i1 = tokens.indexOf(p, i + 1); + if (i1 === -1) + return; + var value = tokens.slice(i + 1, i1); + var isNested = value.some(function (t) { return typeof t === "object"; }); + if (isNested && !ts.value) { + ts.value = value; + } + else if (value.length && (!ts.value || typeof ts.value !== "string")) { + ts.value = value.join(""); + } + }); + tabstops.forEach(function (ts) { ts.length = 0; }); + var expanding = {}; + function copyValue(val) { + var copy = []; + for (var i = 0; i < val.length; i++) { + var p = val[i]; + if (typeof p == "object") { + if (expanding[p.tabstopId]) + continue; + var j = val.lastIndexOf(p, i - 1); + p = copy[j] || { tabstopId: p.tabstopId }; + } + copy[i] = p; + } + return copy; + } + for (var i = 0; i < tokens.length; i++) { + var p = tokens[i]; + if (typeof p != "object") + continue; + var id = p.tabstopId; + var ts = tabstops[id]; + var i1 = tokens.indexOf(p, i + 1); + if (expanding[id]) { + if (expanding[id] === p) { + delete expanding[id]; + Object.keys(expanding).forEach(function (parentId) { + ts.parents[parentId] = true; + }); + } + continue; + } + expanding[id] = p; + var value = ts.value; + if (typeof value !== "string") + value = copyValue(value); + else if (p.fmt) + value = this.tmStrFormat(value, p, editor); + tokens.splice.apply(tokens, [i + 1, Math.max(0, i1 - i)].concat(value, p)); + if (ts.indexOf(p) === -1) + ts.push(p); + } + var row = 0, column = 0; + var text = ""; + tokens.forEach(function (t) { + if (typeof t === "string") { + var lines = t.split("\n"); + if (lines.length > 1) { + column = lines[lines.length - 1].length; + row += lines.length - 1; + } + else + column += t.length; + text += t; + } + else if (t) { + if (!t.start) + t.start = { row: row, column: column }; + else + t.end = { row: row, column: column }; + } + }); + return { + text: text, + tabstops: tabstops, + tokens: tokens + }; +}; +var TabstopManager = /** @class */ (function () { + function TabstopManager(editor) { + this.index = 0; + this.ranges = []; + this.tabstops = []; + if (editor.tabstopManager) + return editor.tabstopManager; + editor.tabstopManager = this; + this.$onChange = this.onChange.bind(this); + this.$onChangeSelection = lang.delayedCall(this.onChangeSelection.bind(this)).schedule; + this.$onChangeSession = this.onChangeSession.bind(this); + this.$onAfterExec = this.onAfterExec.bind(this); + this.attach(editor); + } + TabstopManager.prototype.attach = function (editor) { + this.$openTabstops = null; + this.selectedTabstop = null; + this.editor = editor; + this.session = editor.session; + this.editor.on("change", this.$onChange); + this.editor.on("changeSelection", this.$onChangeSelection); + this.editor.on("changeSession", this.$onChangeSession); + this.editor.commands.on("afterExec", this.$onAfterExec); + this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + }; + TabstopManager.prototype.detach = function () { + this.tabstops.forEach(this.removeTabstopMarkers, this); + this.ranges.length = 0; + this.tabstops.length = 0; + this.selectedTabstop = null; + this.editor.off("change", this.$onChange); + this.editor.off("changeSelection", this.$onChangeSelection); + this.editor.off("changeSession", this.$onChangeSession); + this.editor.commands.off("afterExec", this.$onAfterExec); + this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); + this.editor.tabstopManager = null; + this.session = null; + this.editor = null; + }; + TabstopManager.prototype.onChange = function (delta) { + var isRemove = delta.action[0] == "r"; + var selectedTabstop = this.selectedTabstop || {}; + var parents = selectedTabstop.parents || {}; + var tabstops = this.tabstops.slice(); + for (var i = 0; i < tabstops.length; i++) { + var ts = tabstops[i]; + var active = ts == selectedTabstop || parents[ts.index]; + ts.rangeList.$bias = active ? 0 : 1; + if (delta.action == "remove" && ts !== selectedTabstop) { + var parentActive = ts.parents && ts.parents[selectedTabstop.index]; + var startIndex = ts.rangeList.pointIndex(delta.start, parentActive); + startIndex = startIndex < 0 ? -startIndex - 1 : startIndex + 1; + var endIndex = ts.rangeList.pointIndex(delta.end, parentActive); + endIndex = endIndex < 0 ? -endIndex - 1 : endIndex - 1; + var toRemove = ts.rangeList.ranges.slice(startIndex, endIndex); + for (var j = 0; j < toRemove.length; j++) + this.removeRange(toRemove[j]); + } + ts.rangeList.$onChange(delta); + } + var session = this.session; + if (!this.$inChange && isRemove && session.getLength() == 1 && !session.getValue()) + this.detach(); + }; + TabstopManager.prototype.updateLinkedFields = function () { + var ts = this.selectedTabstop; + if (!ts || !ts.hasLinkedRanges || !ts.firstNonLinked) + return; + this.$inChange = true; + var session = this.session; + var text = session.getTextRange(ts.firstNonLinked); + for (var i = 0; i < ts.length; i++) { + var range = ts[i]; + if (!range.linked) + continue; + var original = range.original; + var fmt = exports.snippetManager.tmStrFormat(text, original, this.editor); + session.replace(range, fmt); + } + this.$inChange = false; + }; + TabstopManager.prototype.onAfterExec = function (e) { + if (e.command && !e.command.readOnly) + this.updateLinkedFields(); + }; + TabstopManager.prototype.onChangeSelection = function () { + if (!this.editor) + return; + var lead = this.editor.selection.lead; + var anchor = this.editor.selection.anchor; + var isEmpty = this.editor.selection.isEmpty(); + for (var i = 0; i < this.ranges.length; i++) { + if (this.ranges[i].linked) + continue; + var containsLead = this.ranges[i].contains(lead.row, lead.column); + var containsAnchor = isEmpty || this.ranges[i].contains(anchor.row, anchor.column); + if (containsLead && containsAnchor) + return; + } + this.detach(); + }; + TabstopManager.prototype.onChangeSession = function () { + this.detach(); + }; + TabstopManager.prototype.tabNext = function (dir) { + var max = this.tabstops.length; + var index = this.index + (dir || 1); + index = Math.min(Math.max(index, 1), max); + if (index == max) + index = 0; + this.selectTabstop(index); + this.updateTabstopMarkers(); + if (index === 0) { + this.detach(); + } + }; + TabstopManager.prototype.selectTabstop = function (index) { + this.$openTabstops = null; + var ts = this.tabstops[this.index]; + if (ts) + this.addTabstopMarkers(ts); + this.index = index; + ts = this.tabstops[this.index]; + if (!ts || !ts.length) + return; + this.selectedTabstop = ts; + var range = ts.firstNonLinked || ts; + if (ts.choices) + range.cursor = range.start; + if (!this.editor.inVirtualSelectionMode) { + var sel = this.editor.multiSelect; + sel.toSingleRange(range); + for (var i = 0; i < ts.length; i++) { + if (ts.hasLinkedRanges && ts[i].linked) + continue; + sel.addRange(ts[i].clone(), true); + } + } + else { + this.editor.selection.fromOrientedRange(range); + } + this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + if (this.selectedTabstop && this.selectedTabstop.choices) + this.editor.execCommand("startAutocomplete", { matches: this.selectedTabstop.choices }); + }; + TabstopManager.prototype.addTabstops = function (tabstops, start, end) { + var useLink = this.useLink || !this.editor.getOption("enableMultiselect"); + if (!this.$openTabstops) + this.$openTabstops = []; + if (!tabstops[0]) { + var p = Range.fromPoints(end, end); + moveRelative(p.start, start); + moveRelative(p.end, start); + tabstops[0] = [p]; + tabstops[0].index = 0; + } + var i = this.index; + var arg = [i + 1, 0]; + var ranges = this.ranges; + var snippetId = this.snippetId = (this.snippetId || 0) + 1; + tabstops.forEach(function (ts, index) { + var dest = this.$openTabstops[index] || ts; + dest.snippetId = snippetId; + for (var i = 0; i < ts.length; i++) { + var p = ts[i]; + var range = Range.fromPoints(p.start, p.end || p.start); + movePoint(range.start, start); + movePoint(range.end, start); + range.original = p; + range.tabstop = dest; + ranges.push(range); + if (dest != ts) + dest.unshift(range); + else + dest[i] = range; + if (p.fmtString || (dest.firstNonLinked && useLink)) { + range.linked = true; + dest.hasLinkedRanges = true; + } + else if (!dest.firstNonLinked) + dest.firstNonLinked = range; + } + if (!dest.firstNonLinked) + dest.hasLinkedRanges = false; + if (dest === ts) { + arg.push(dest); + this.$openTabstops[index] = dest; + } + this.addTabstopMarkers(dest); + dest.rangeList = dest.rangeList || new RangeList(); + dest.rangeList.$bias = 0; + dest.rangeList.addList(dest); + }, this); + if (arg.length > 2) { + if (this.tabstops.length) + arg.push(arg.splice(2, 1)[0]); + this.tabstops.splice.apply(this.tabstops, arg); + } + }; + TabstopManager.prototype.addTabstopMarkers = function (ts) { + var session = this.session; + ts.forEach(function (range) { + if (!range.markerId) + range.markerId = session.addMarker(range, "ace_snippet-marker", "text"); + }); + }; + TabstopManager.prototype.removeTabstopMarkers = function (ts) { + var session = this.session; + ts.forEach(function (range) { + session.removeMarker(range.markerId); + range.markerId = null; + }); + }; + TabstopManager.prototype.updateTabstopMarkers = function () { + if (!this.selectedTabstop) + return; + var currentSnippetId = this.selectedTabstop.snippetId; + if (this.selectedTabstop.index === 0) { + currentSnippetId--; + } + this.tabstops.forEach(function (ts) { + if (ts.snippetId === currentSnippetId) + this.addTabstopMarkers(ts); + else + this.removeTabstopMarkers(ts); + }, this); + }; + TabstopManager.prototype.removeRange = function (range) { + var i = range.tabstop.indexOf(range); + if (i != -1) + range.tabstop.splice(i, 1); + i = this.ranges.indexOf(range); + if (i != -1) + this.ranges.splice(i, 1); + i = range.tabstop.rangeList.ranges.indexOf(range); + if (i != -1) + range.tabstop.splice(i, 1); + this.session.removeMarker(range.markerId); + if (!range.tabstop.length) { + i = this.tabstops.indexOf(range.tabstop); + if (i != -1) + this.tabstops.splice(i, 1); + if (!this.tabstops.length) + this.detach(); + } + }; + return TabstopManager; +}()); +TabstopManager.prototype.keyboardHandler = new HashHandler(); +TabstopManager.prototype.keyboardHandler.bindKeys({ + "Tab": function (editor) { + if (exports.snippetManager && exports.snippetManager.expandWithTab(editor)) + return; + editor.tabstopManager.tabNext(1); + editor.renderer.scrollCursorIntoView(); + }, + "Shift-Tab": function (editor) { + editor.tabstopManager.tabNext(-1); + editor.renderer.scrollCursorIntoView(); + }, + "Esc": function (editor) { + editor.tabstopManager.detach(); + } +}); +var movePoint = function (point, diff) { + if (point.row == 0) + point.column += diff.column; + point.row += diff.row; +}; +var moveRelative = function (point, start) { + if (point.row == start.row) + point.column -= start.column; + point.row -= start.row; +}; +dom.importCssString("\n.ace_snippet-marker {\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n background: rgba(194, 193, 208, 0.09);\n border: 1px dotted rgba(211, 208, 235, 0.62);\n position: absolute;\n}", "snippets.css", false); +exports.snippetManager = new SnippetManager(); +var Editor = require("./editor").Editor; +(function () { + this.insertSnippet = function (content, options) { + return exports.snippetManager.insertSnippet(this, content, options); + }; + this.expandSnippet = function (options) { + return exports.snippetManager.expandWithTab(this, options); + }; +}).call(Editor.prototype); + +}); + +define("ace/autocomplete/inline_screenreader",["require","exports","module"], function(require, exports, module){"use strict"; +var AceInlineScreenReader = /** @class */ (function () { + function AceInlineScreenReader(editor) { + this.editor = editor; + this.screenReaderDiv = document.createElement("div"); + this.screenReaderDiv.classList.add("ace_screenreader-only"); + this.editor.container.appendChild(this.screenReaderDiv); + } + AceInlineScreenReader.prototype.setScreenReaderContent = function (content) { + if (!this.popup && this.editor.completer && /**@type{import("../autocomplete").Autocomplete}*/ (this.editor.completer).popup) { + this.popup = /**@type{import("../autocomplete").Autocomplete}*/ (this.editor.completer).popup; + this.popup.renderer.on("afterRender", function () { + var row = this.popup.getRow(); + var t = this.popup.renderer.$textLayer; + var selected = t.element.childNodes[row - t.config.firstRow]; + if (selected) { + var idString = "doc-tooltip "; + for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) { + idString += "ace-inline-screenreader-line-".concat(lineIndex, " "); + } + selected.setAttribute("aria-describedby", idString); + } + }.bind(this)); + } + while (this.screenReaderDiv.firstChild) { + this.screenReaderDiv.removeChild(this.screenReaderDiv.firstChild); + } + this._lines = content.split(/\r\n|\r|\n/); + var codeElement = this.createCodeBlock(); + this.screenReaderDiv.appendChild(codeElement); + }; + AceInlineScreenReader.prototype.destroy = function () { + this.screenReaderDiv.remove(); + }; + AceInlineScreenReader.prototype.createCodeBlock = function () { + var container = document.createElement("pre"); + container.setAttribute("id", "ace-inline-screenreader"); + for (var lineIndex = 0; lineIndex < this._lines.length; lineIndex++) { + var codeElement = document.createElement("code"); + codeElement.setAttribute("id", "ace-inline-screenreader-line-".concat(lineIndex)); + var line = document.createTextNode(this._lines[lineIndex]); + codeElement.appendChild(line); + container.appendChild(codeElement); + } + return container; + }; + return AceInlineScreenReader; +}()); +exports.AceInlineScreenReader = AceInlineScreenReader; + +}); + +define("ace/autocomplete/inline",["require","exports","module","ace/snippets","ace/autocomplete/inline_screenreader"], function(require, exports, module){"use strict"; +var snippetManager = require("../snippets").snippetManager; +var AceInlineScreenReader = require("./inline_screenreader").AceInlineScreenReader; +var AceInline = /** @class */ (function () { + function AceInline() { + this.editor = null; + } + AceInline.prototype.show = function (editor, completion, prefix) { + prefix = prefix || ""; + if (editor && this.editor && this.editor !== editor) { + this.hide(); + this.editor = null; + this.inlineScreenReader = null; + } + if (!editor || !completion) { + return false; + } + if (!this.inlineScreenReader) { + this.inlineScreenReader = new AceInlineScreenReader(editor); + } + var displayText = completion.snippet ? snippetManager.getDisplayTextForSnippet(editor, completion.snippet) : completion.value; + if (completion.hideInlinePreview || !displayText || !displayText.startsWith(prefix)) { + return false; + } + this.editor = editor; + this.inlineScreenReader.setScreenReaderContent(displayText); + displayText = displayText.slice(prefix.length); + if (displayText === "") { + editor.removeGhostText(); + } + else { + editor.setGhostText(displayText); + } + return true; + }; + AceInline.prototype.isOpen = function () { + if (!this.editor) { + return false; + } + return !!this.editor.renderer.$ghostText; + }; + AceInline.prototype.hide = function () { + if (!this.editor) { + return false; + } + this.editor.removeGhostText(); + return true; + }; + AceInline.prototype.destroy = function () { + this.hide(); + this.editor = null; + if (this.inlineScreenReader) { + this.inlineScreenReader.destroy(); + this.inlineScreenReader = null; + } + }; + return AceInline; +}()); +exports.AceInline = AceInline; + +}); + +define("ace/autocomplete/util",["require","exports","module"], function(require, exports, module){"use strict"; +exports.parForEach = function (array, fn, callback) { + var completed = 0; + var arLength = array.length; + if (arLength === 0) + callback(); + for (var i = 0; i < arLength; i++) { + fn(array[i], function (result, err) { + completed++; + if (completed === arLength) + callback(result, err); + }); + } +}; +var ID_REGEX = /[a-zA-Z_0-9\$\-\u00A2-\u2000\u2070-\uFFFF]/; +exports.retrievePrecedingIdentifier = function (text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos - 1; i >= 0; i--) { + if (regex.test(text[i])) + buf.push(text[i]); + else + break; + } + return buf.reverse().join(""); +}; +exports.retrieveFollowingIdentifier = function (text, pos, regex) { + regex = regex || ID_REGEX; + var buf = []; + for (var i = pos; i < text.length; i++) { + if (regex.test(text[i])) + buf.push(text[i]); + else + break; + } + return buf; +}; +exports.getCompletionPrefix = function (editor) { + var pos = editor.getCursorPosition(); + var line = editor.session.getLine(pos.row); + var prefix; + editor.completers.forEach(function (completer) { + if (completer.identifierRegexps) { + completer.identifierRegexps.forEach(function (identifierRegex) { + if (!prefix && identifierRegex) + prefix = this.retrievePrecedingIdentifier(line, pos.column, identifierRegex); + }.bind(this)); + } + }.bind(this)); + return prefix || this.retrievePrecedingIdentifier(line, pos.column); +}; +exports.triggerAutocomplete = function (editor) { + var pos = editor.getCursorPosition(); + var line = editor.session.getLine(pos.row); + var column = (pos.column === 0) ? 0 : pos.column - 1; + var previousChar = line[column]; + return editor.completers.some(function (el) { + if (el.triggerCharacters && Array.isArray(el.triggerCharacters)) { + return el.triggerCharacters.includes(previousChar); + } + }); +}; + +}); + +define("ace/autocomplete",["require","exports","module","ace/keyboard/hash_handler","ace/autocomplete/popup","ace/autocomplete/inline","ace/autocomplete/popup","ace/autocomplete/util","ace/lib/lang","ace/lib/dom","ace/snippets","ace/config","ace/lib/event","ace/lib/scroll"], function(require, exports, module){"use strict"; +var HashHandler = require("./keyboard/hash_handler").HashHandler; +var AcePopup = require("./autocomplete/popup").AcePopup; +var AceInline = require("./autocomplete/inline").AceInline; +var getAriaId = require("./autocomplete/popup").getAriaId; +var util = require("./autocomplete/util"); +var lang = require("./lib/lang"); +var dom = require("./lib/dom"); +var snippetManager = require("./snippets").snippetManager; +var config = require("./config"); +var event = require("./lib/event"); +var preventParentScroll = require("./lib/scroll").preventParentScroll; +var destroyCompleter = function (e, editor) { + editor.completer && editor.completer.destroy(); +}; +var Autocomplete = /** @class */ (function () { + function Autocomplete() { + this.autoInsert = false; + this.autoSelect = true; + this.autoShown = false; + this.exactMatch = false; + this.inlineEnabled = false; + this.keyboardHandler = new HashHandler(); + this.keyboardHandler.bindKeys(this.commands); + this.parentNode = null; + this.setSelectOnHover = false; + this.hasSeen = new Set(); + this.showLoadingState = false; + this.stickySelectionDelay = 500; + this.blurListener = this.blurListener.bind(this); + this.changeListener = this.changeListener.bind(this); + this.mousedownListener = this.mousedownListener.bind(this); + this.mousewheelListener = this.mousewheelListener.bind(this); + this.onLayoutChange = this.onLayoutChange.bind(this); + this.changeTimer = lang.delayedCall(function () { + this.updateCompletions(true); + }.bind(this)); + this.tooltipTimer = lang.delayedCall(this.updateDocTooltip.bind(this), 50); + this.popupTimer = lang.delayedCall(this.$updatePopupPosition.bind(this), 50); + this.stickySelectionTimer = lang.delayedCall(function () { + this.stickySelection = true; + }.bind(this), this.stickySelectionDelay); + this.$firstOpenTimer = lang.delayedCall(/**@this{Autocomplete}*/ function () { + var initialPosition = this.completionProvider && this.completionProvider.initialPosition; + if (this.autoShown || (this.popup && this.popup.isOpen) || !initialPosition || this.editor.completers.length === 0) + return; + this.completions = new FilteredList(Autocomplete.completionsForLoading); + this.openPopup(this.editor, initialPosition.prefix, false); + this.popup.renderer.setStyle("ace_loading", true); + }.bind(this), this.stickySelectionDelay); + } + Object.defineProperty(Autocomplete, "completionsForLoading", { + get: function () { + return [{ + caption: config.nls("Loading..."), + value: "" + }]; + }, + enumerable: false, + configurable: true + }); + Autocomplete.prototype.$init = function () { + this.popup = new AcePopup(this.parentNode || document.body || document.documentElement); + this.popup.on("click", function (e) { + this.insertMatch(); + e.stop(); + }.bind(this)); + this.popup.focus = this.editor.focus.bind(this.editor); + this.popup.on("show", this.$onPopupShow.bind(this)); + this.popup.on("hide", this.$onHidePopup.bind(this)); + this.popup.on("select", this.$onPopupChange.bind(this)); + event.addListener(this.popup.container, "mouseout", this.mouseOutListener.bind(this)); + this.popup.on("changeHoverMarker", this.tooltipTimer.bind(null, null)); + this.popup.renderer.on("afterRender", this.$onPopupRender.bind(this)); + return this.popup; + }; + Autocomplete.prototype.$initInline = function () { + if (!this.inlineEnabled || this.inlineRenderer) + return; + this.inlineRenderer = new AceInline(); + return this.inlineRenderer; + }; + Autocomplete.prototype.getPopup = function () { + return this.popup || this.$init(); + }; + Autocomplete.prototype.$onHidePopup = function () { + if (this.inlineRenderer) { + this.inlineRenderer.hide(); + } + this.hideDocTooltip(); + this.stickySelectionTimer.cancel(); + this.popupTimer.cancel(); + this.stickySelection = false; + }; + Autocomplete.prototype.$seen = function (completion) { + if (!this.hasSeen.has(completion) && completion && completion.completer && completion.completer.onSeen && typeof completion.completer.onSeen === "function") { + completion.completer.onSeen(this.editor, completion); + this.hasSeen.add(completion); + } + }; + Autocomplete.prototype.$onPopupChange = function (hide) { + if (this.inlineRenderer && this.inlineEnabled) { + var completion = hide ? null : this.popup.getData(this.popup.getRow()); + this.$updateGhostText(completion); + if (this.popup.isMouseOver && this.setSelectOnHover) { + this.tooltipTimer.call(null, null); + return; + } + this.popupTimer.schedule(); + this.tooltipTimer.schedule(); + } + else { + this.popupTimer.call(null, null); + this.tooltipTimer.call(null, null); + } + }; + Autocomplete.prototype.$updateGhostText = function (completion) { + var row = this.base.row; + var column = this.base.column; + var cursorColumn = this.editor.getCursorPosition().column; + var prefix = this.editor.session.getLine(row).slice(column, cursorColumn); + if (!this.inlineRenderer.show(this.editor, completion, prefix)) { + this.inlineRenderer.hide(); + } + else { + this.$seen(completion); + } + }; + Autocomplete.prototype.$onPopupRender = function () { + var inlineEnabled = this.inlineRenderer && this.inlineEnabled; + if (this.completions && this.completions.filtered && this.completions.filtered.length > 0) { + for (var i = this.popup.getFirstVisibleRow(); i <= this.popup.getLastVisibleRow(); i++) { + var completion = this.popup.getData(i); + if (completion && (!inlineEnabled || completion.hideInlinePreview)) { + this.$seen(completion); + } + } + } + }; + Autocomplete.prototype.$onPopupShow = function (hide) { + this.$onPopupChange(hide); + this.stickySelection = false; + if (this.stickySelectionDelay >= 0) + this.stickySelectionTimer.schedule(this.stickySelectionDelay); + }; + Autocomplete.prototype.observeLayoutChanges = function () { + if (this.$elements || !this.editor) + return; + window.addEventListener("resize", this.onLayoutChange, { passive: true }); + window.addEventListener("wheel", this.mousewheelListener); + var el = this.editor.container.parentNode; + var elements = []; + while (el) { + elements.push(el); + el.addEventListener("scroll", this.onLayoutChange, { passive: true }); + el = el.parentNode; + } + this.$elements = elements; + }; + Autocomplete.prototype.unObserveLayoutChanges = function () { + var _this = this; + window.removeEventListener("resize", this.onLayoutChange, { passive: true }); + window.removeEventListener("wheel", this.mousewheelListener); + this.$elements && this.$elements.forEach(function (el) { + el.removeEventListener("scroll", _this.onLayoutChange, { passive: true }); + }); + this.$elements = null; + }; + Autocomplete.prototype.onLayoutChange = function () { + if (!this.popup.isOpen) + return this.unObserveLayoutChanges(); + this.$updatePopupPosition(); + this.updateDocTooltip(); + }; + Autocomplete.prototype.$updatePopupPosition = function () { + var editor = this.editor; + var renderer = editor.renderer; + var lineHeight = renderer.layerConfig.lineHeight; + var pos = renderer.$cursorLayer.getPixelPosition(this.base, true); + pos.left -= this.popup.getTextLeftOffset(); + var rect = editor.container.getBoundingClientRect(); + pos.top += rect.top - renderer.layerConfig.offset; + pos.left += rect.left - editor.renderer.scrollLeft; + pos.left += renderer.gutterWidth; + var posGhostText = { + top: pos.top, + left: pos.left + }; + if (renderer.$ghostText && renderer.$ghostTextWidget) { + if (this.base.row === renderer.$ghostText.position.row) { + posGhostText.top += renderer.$ghostTextWidget.el.offsetHeight; + } + } + var editorContainerBottom = editor.container.getBoundingClientRect().bottom - lineHeight; + var lowestPosition = editorContainerBottom < posGhostText.top ? + { top: editorContainerBottom, left: posGhostText.left } : + posGhostText; + if (this.popup.tryShow(lowestPosition, lineHeight, "bottom")) { + return; + } + if (this.popup.tryShow(pos, lineHeight, "top")) { + return; + } + this.popup.show(pos, lineHeight); + }; + Autocomplete.prototype.openPopup = function (editor, prefix, keepPopupPosition) { + this.$firstOpenTimer.cancel(); + if (!this.popup) + this.$init(); + if (this.inlineEnabled && !this.inlineRenderer) + this.$initInline(); + this.popup.autoSelect = this.autoSelect; + this.popup.setSelectOnHover(this.setSelectOnHover); + var oldRow = this.popup.getRow(); + var previousSelectedItem = this.popup.data[oldRow]; + this.popup.setData(this.completions.filtered, this.completions.filterText); + if (this.editor.textInput.setAriaOptions) { + this.editor.textInput.setAriaOptions({ + activeDescendant: getAriaId(this.popup.getRow()), + inline: this.inlineEnabled + }); + } + editor.keyBinding.addKeyboardHandler(this.keyboardHandler); + var newRow; + if (this.stickySelection) + newRow = this.popup.data.indexOf(previousSelectedItem); + if (!newRow || newRow === -1) + newRow = 0; + this.popup.setRow(this.autoSelect ? newRow : -1); + if (newRow === oldRow && previousSelectedItem !== this.completions.filtered[newRow]) + this.$onPopupChange(); + var inlineEnabled = this.inlineRenderer && this.inlineEnabled; + if (newRow === oldRow && inlineEnabled) { + var completion = this.popup.getData(this.popup.getRow()); + this.$updateGhostText(completion); + } + if (!keepPopupPosition) { + this.popup.setTheme(editor.getTheme()); + this.popup.setFontSize(editor.getFontSize()); + this.$updatePopupPosition(); + if (this.tooltipNode) { + this.updateDocTooltip(); + } + } + else if (keepPopupPosition && !prefix) { + this.detach(); + } + this.changeTimer.cancel(); + this.observeLayoutChanges(); + }; + Autocomplete.prototype.detach = function () { + if (this.editor) { + this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler); + this.editor.off("changeSelection", this.changeListener); + this.editor.off("blur", this.blurListener); + this.editor.off("mousedown", this.mousedownListener); + this.editor.off("mousewheel", this.mousewheelListener); + } + this.$firstOpenTimer.cancel(); + this.changeTimer.cancel(); + this.hideDocTooltip(); + if (this.completionProvider) { + this.completionProvider.detach(); + } + if (this.popup && this.popup.isOpen) + this.popup.hide(); + if (this.popup && this.popup.renderer) { + this.popup.renderer.off("afterRender", this.$onPopupRender); + } + if (this.base) + this.base.detach(); + this.activated = false; + this.completionProvider = this.completions = this.base = null; + this.unObserveLayoutChanges(); + }; + Autocomplete.prototype.changeListener = function (e) { + var cursor = this.editor.selection.lead; + if (cursor.row != this.base.row || cursor.column < this.base.column) { + this.detach(); + } + if (this.activated) + this.changeTimer.schedule(); + else + this.detach(); + }; + Autocomplete.prototype.blurListener = function (e) { + var el = document.activeElement; + var text = this.editor.textInput.getElement(); + var fromTooltip = e.relatedTarget && this.tooltipNode && this.tooltipNode.contains(e.relatedTarget); + var container = this.popup && this.popup.container; + if (el != text && el.parentNode != container && !fromTooltip + && el != this.tooltipNode && e.relatedTarget != text) { + this.detach(); + } + }; + Autocomplete.prototype.mousedownListener = function (e) { + this.detach(); + }; + Autocomplete.prototype.mousewheelListener = function (e) { + if (!this.popup.isMouseOver) + this.detach(); + }; + Autocomplete.prototype.mouseOutListener = function (e) { + if (this.popup.isOpen) + this.$updatePopupPosition(); + }; + Autocomplete.prototype.goTo = function (where) { + this.popup.goTo(where); + }; + Autocomplete.prototype.insertMatch = function (data, options) { + if (!data) + data = this.popup.getData(this.popup.getRow()); + if (!data) + return false; + if (data.value === "") // Explicitly given nothing to insert, e.g. "No suggestion state" + return this.detach(); + var completions = this.completions; + var result = this.getCompletionProvider().insertMatch(this.editor, data, completions.filterText, options); + if (this.completions == completions) + this.detach(); + return result; + }; + Autocomplete.prototype.showPopup = function (editor, options) { + if (this.editor) + this.detach(); + this.activated = true; + this.editor = editor; + if (editor.completer != this) { + if (editor.completer) + editor.completer.detach(); + editor.completer = this; + } + editor.on("changeSelection", this.changeListener); + editor.on("blur", this.blurListener); + editor.on("mousedown", this.mousedownListener); + editor.on("mousewheel", this.mousewheelListener); + this.updateCompletions(false, options); + }; + Autocomplete.prototype.getCompletionProvider = function (initialPosition) { + if (!this.completionProvider) + this.completionProvider = new CompletionProvider(initialPosition); + return this.completionProvider; + }; + Autocomplete.prototype.gatherCompletions = function (editor, callback) { + return this.getCompletionProvider().gatherCompletions(editor, callback); + }; + Autocomplete.prototype.updateCompletions = function (keepPopupPosition, options) { + if (keepPopupPosition && this.base && this.completions) { + var pos = this.editor.getCursorPosition(); + var prefix = this.editor.session.getTextRange({ start: this.base, end: pos }); + if (prefix == this.completions.filterText) + return; + this.completions.setFilter(prefix); + if (!this.completions.filtered.length) + return this.detach(); + if (this.completions.filtered.length == 1 + && this.completions.filtered[0].value == prefix + && !this.completions.filtered[0].snippet) + return this.detach(); + this.openPopup(this.editor, prefix, keepPopupPosition); + return; + } + if (options && options.matches) { + var pos = this.editor.getSelectionRange().start; + this.base = this.editor.session.doc.createAnchor(pos.row, pos.column); + this.base.$insertRight = true; + this.completions = new FilteredList(options.matches); + this.getCompletionProvider().completions = this.completions; + return this.openPopup(this.editor, "", keepPopupPosition); + } + var session = this.editor.getSession(); + var pos = this.editor.getCursorPosition(); + var prefix = util.getCompletionPrefix(this.editor); + this.base = session.doc.createAnchor(pos.row, pos.column - prefix.length); + this.base.$insertRight = true; + var completionOptions = { + exactMatch: this.exactMatch, + ignoreCaption: this.ignoreCaption + }; + this.getCompletionProvider({ + prefix: prefix, + pos: pos + }).provideCompletions(this.editor, completionOptions, + function (err, completions, finished) { + var filtered = completions.filtered; + var prefix = util.getCompletionPrefix(this.editor); + this.$firstOpenTimer.cancel(); + if (finished) { + if (!filtered.length) { + var emptyMessage = !this.autoShown && this.emptyMessage; + if (typeof emptyMessage == "function") + emptyMessage = this.emptyMessage(prefix); + if (emptyMessage) { + var completionsForEmpty = [{ + caption: emptyMessage, + value: "" + } + ]; + this.completions = new FilteredList(completionsForEmpty); + this.openPopup(this.editor, prefix, keepPopupPosition); + this.popup.renderer.setStyle("ace_loading", false); + return; + } + return this.detach(); + } + if (filtered.length == 1 && filtered[0].value == prefix + && !filtered[0].snippet) + return this.detach(); + if (this.autoInsert && !this.autoShown && filtered.length == 1) + return this.insertMatch(filtered[0]); + } + this.completions = !finished && this.showLoadingState ? + new FilteredList(Autocomplete.completionsForLoading.concat(filtered), completions.filterText) : + completions; + this.openPopup(this.editor, prefix, keepPopupPosition); + this.popup.renderer.setStyle("ace_loading", !finished); + }.bind(this)); + if (this.showLoadingState && !this.autoShown && !(this.popup && this.popup.isOpen)) { + this.$firstOpenTimer.delay(this.stickySelectionDelay / 2); + } + }; + Autocomplete.prototype.cancelContextMenu = function () { + this.editor.$mouseHandler.cancelContextMenu(); + }; + Autocomplete.prototype.updateDocTooltip = function () { + var popup = this.popup; + var all = this.completions.filtered; + var selected = all && (all[popup.getHoveredRow()] || all[popup.getRow()]); + var doc = null; + if (!selected || !this.editor || !this.popup.isOpen) + return this.hideDocTooltip(); + var completersLength = this.editor.completers.length; + for (var i = 0; i < completersLength; i++) { + var completer = this.editor.completers[i]; + if (completer.getDocTooltip && selected.completerId === completer.id) { + doc = completer.getDocTooltip(selected); + break; + } + } + if (!doc && typeof selected != "string") + doc = selected; + if (typeof doc == "string") + doc = { docText: doc }; + if (!doc || !(doc.docHTML || doc.docText)) + return this.hideDocTooltip(); + this.showDocTooltip(doc); + }; + Autocomplete.prototype.showDocTooltip = function (item) { + if (!this.tooltipNode) { + this.tooltipNode = dom.createElement("div"); + this.tooltipNode.style.margin = "0"; + this.tooltipNode.style.pointerEvents = "auto"; + this.tooltipNode.style.overscrollBehavior = "contain"; + this.tooltipNode.tabIndex = -1; + this.tooltipNode.onblur = this.blurListener.bind(this); + this.tooltipNode.onclick = this.onTooltipClick.bind(this); + this.tooltipNode.id = "doc-tooltip"; + this.tooltipNode.setAttribute("role", "tooltip"); + this.tooltipNode.addEventListener("wheel", preventParentScroll); + } + var theme = this.editor.renderer.theme; + this.tooltipNode.className = "ace_tooltip ace_doc-tooltip " + + (theme.isDark ? "ace_dark " : "") + (theme.cssClass || ""); + var tooltipNode = this.tooltipNode; + if (item.docHTML) { + tooltipNode.innerHTML = item.docHTML; + } + else if (item.docText) { + tooltipNode.textContent = item.docText; + } + if (!tooltipNode.parentNode) + this.popup.container.appendChild(this.tooltipNode); + var popup = this.popup; + var rect = popup.container.getBoundingClientRect(); + tooltipNode.style.top = popup.container.style.top; + tooltipNode.style.bottom = popup.container.style.bottom; + tooltipNode.style.display = "block"; + if (window.innerWidth - rect.right < 320) { + if (rect.left < 320) { + if (popup.isTopdown) { + tooltipNode.style.top = rect.bottom + "px"; + tooltipNode.style.left = rect.left + "px"; + tooltipNode.style.right = ""; + tooltipNode.style.bottom = ""; + } + else { + tooltipNode.style.top = popup.container.offsetTop - tooltipNode.offsetHeight + "px"; + tooltipNode.style.left = rect.left + "px"; + tooltipNode.style.right = ""; + tooltipNode.style.bottom = ""; + } + } + else { + tooltipNode.style.right = window.innerWidth - rect.left + "px"; + tooltipNode.style.left = ""; + } + } + else { + tooltipNode.style.left = (rect.right + 1) + "px"; + tooltipNode.style.right = ""; + } + }; + Autocomplete.prototype.hideDocTooltip = function () { + this.tooltipTimer.cancel(); + if (!this.tooltipNode) + return; + var el = this.tooltipNode; + if (!this.editor.isFocused() && document.activeElement == el) + this.editor.focus(); + this.tooltipNode = null; + if (el.parentNode) + el.parentNode.removeChild(el); + }; + Autocomplete.prototype.onTooltipClick = function (e) { + var a = e.target; + while (a && a != this.tooltipNode) { + if (a.nodeName == "A" && a.href) { + a.rel = "noreferrer"; + a.target = "_blank"; + break; + } + a = a.parentNode; + } + }; + Autocomplete.prototype.destroy = function () { + this.detach(); + if (this.popup) { + this.popup.destroy(); + var el = this.popup.container; + if (el && el.parentNode) + el.parentNode.removeChild(el); + } + if (this.editor && this.editor.completer == this) { + this.editor.off("destroy", destroyCompleter); + this.editor.completer = null; + } + this.inlineRenderer = this.popup = this.editor = null; + }; + return Autocomplete; +}()); +Autocomplete.prototype.commands = { + "Up": function (editor) { editor.completer.goTo("up"); }, + "Down": function (editor) { editor.completer.goTo("down"); }, + "Ctrl-Up|Ctrl-Home": function (editor) { editor.completer.goTo("start"); }, + "Ctrl-Down|Ctrl-End": function (editor) { editor.completer.goTo("end"); }, + "Esc": function (editor) { editor.completer.detach(); }, + "Return": function (editor) { return editor.completer.insertMatch(); }, + "Shift-Return": function (editor) { editor.completer.insertMatch(null, { deleteSuffix: true }); }, + "Tab": function (editor) { + var result = editor.completer.insertMatch(); + if (!result && !editor.tabstopManager) + editor.completer.goTo("down"); + else + return result; + }, + "PageUp": function (editor) { editor.completer.popup.gotoPageUp(); }, + "PageDown": function (editor) { editor.completer.popup.gotoPageDown(); } +}; +Autocomplete.for = function (editor) { + if (editor.completer instanceof Autocomplete) { + return editor.completer; + } + if (editor.completer) { + editor.completer.destroy(); + editor.completer = null; + } + if (config.get("sharedPopups")) { + if (!Autocomplete["$sharedInstance"]) + Autocomplete["$sharedInstance"] = new Autocomplete(); + editor.completer = Autocomplete["$sharedInstance"]; + } + else { + editor.completer = new Autocomplete(); + editor.once("destroy", destroyCompleter); + } + return editor.completer; +}; +Autocomplete.startCommand = { + name: "startAutocomplete", + exec: function (editor, options) { + var completer = Autocomplete.for(editor); + completer.autoInsert = false; + completer.autoSelect = true; + completer.autoShown = false; + completer.showPopup(editor, options); + completer.cancelContextMenu(); + }, + bindKey: "Ctrl-Space|Ctrl-Shift-Space|Alt-Space" +}; +var CompletionProvider = /** @class */ (function () { + function CompletionProvider(initialPosition) { + this.initialPosition = initialPosition; + this.active = true; + } + CompletionProvider.prototype.insertByIndex = function (editor, index, options) { + if (!this.completions || !this.completions.filtered) { + return false; + } + return this.insertMatch(editor, this.completions.filtered[index], options); + }; + CompletionProvider.prototype.insertMatch = function (editor, data, options) { + if (!data) + return false; + editor.startOperation({ command: { name: "insertMatch" } }); + if (data.completer && data.completer.insertMatch) { + data.completer.insertMatch(editor, data); + } + else { + if (!this.completions) + return false; + var replaceBefore = this.completions.filterText.length; + var replaceAfter = 0; + if (data.range && data.range.start.row === data.range.end.row) { + replaceBefore -= this.initialPosition.prefix.length; + replaceBefore += this.initialPosition.pos.column - data.range.start.column; + replaceAfter += data.range.end.column - this.initialPosition.pos.column; + } + if (replaceBefore || replaceAfter) { + var ranges; + if (editor.selection.getAllRanges) { + ranges = editor.selection.getAllRanges(); + } + else { + ranges = [editor.getSelectionRange()]; + } + for (var i = 0, range; range = ranges[i]; i++) { + range.start.column -= replaceBefore; + range.end.column += replaceAfter; + editor.session.remove(range); + } + } + if (data.snippet) { + snippetManager.insertSnippet(editor, data.snippet); + } + else { + this.$insertString(editor, data); + } + if (data.completer && data.completer.onInsert && typeof data.completer.onInsert == "function") { + data.completer.onInsert(editor, data); + } + if (data.command && data.command === "startAutocomplete") { + editor.execCommand(data.command); + } + } + editor.endOperation(); + return true; + }; + CompletionProvider.prototype.$insertString = function (editor, data) { + var text = data.value || data; + editor.execCommand("insertstring", text); + }; + CompletionProvider.prototype.gatherCompletions = function (editor, callback) { + var session = editor.getSession(); + var pos = editor.getCursorPosition(); + var prefix = util.getCompletionPrefix(editor); + var matches = []; + this.completers = editor.completers; + var total = editor.completers.length; + editor.completers.forEach(function (completer, i) { + completer.getCompletions(editor, session, pos, prefix, function (err, results) { + if (completer.hideInlinePreview) + results = results.map(function (result) { + return Object.assign(result, { hideInlinePreview: completer.hideInlinePreview }); + }); + if (!err && results) + matches = matches.concat(results); + callback(null, { + prefix: util.getCompletionPrefix(editor), + matches: matches, + finished: (--total === 0) + }); + }); + }); + return true; + }; + CompletionProvider.prototype.provideCompletions = function (editor, options, callback) { + var processResults = function (results) { + var prefix = results.prefix; + var matches = results.matches; + this.completions = new FilteredList(matches); + if (options.exactMatch) + this.completions.exactMatch = true; + if (options.ignoreCaption) + this.completions.ignoreCaption = true; + this.completions.setFilter(prefix); + if (results.finished || this.completions.filtered.length) + callback(null, this.completions, results.finished); + }.bind(this); + var isImmediate = true; + var immediateResults = null; + this.gatherCompletions(editor, function (err, results) { + if (!this.active) { + return; + } + if (err) { + callback(err, [], true); + this.detach(); + } + var prefix = results.prefix; + if (prefix.indexOf(results.prefix) !== 0) + return; + if (isImmediate) { + immediateResults = results; + return; + } + processResults(results); + }.bind(this)); + isImmediate = false; + if (immediateResults) { + var results = immediateResults; + immediateResults = null; + processResults(results); + } + }; + CompletionProvider.prototype.detach = function () { + this.active = false; + this.completers && this.completers.forEach(function (completer) { + if (typeof completer.cancel === "function") { + completer.cancel(); + } + }); + }; + return CompletionProvider; +}()); +var FilteredList = /** @class */ (function () { + function FilteredList(array, filterText) { + this.all = array; + this.filtered = array; + this.filterText = filterText || ""; + this.exactMatch = false; + this.ignoreCaption = false; + } + FilteredList.prototype.setFilter = function (str) { + if (str.length > this.filterText && str.lastIndexOf(this.filterText, 0) === 0) + var matches = this.filtered; + else + var matches = this.all; + this.filterText = str; + matches = this.filterCompletions(matches, this.filterText); + matches = matches.sort(function (a, b) { + return b.exactMatch - a.exactMatch || b.$score - a.$score + || (a.caption || a.value).localeCompare(b.caption || b.value); + }); + var prev = null; + matches = matches.filter(function (item) { + var caption = item.snippet || item.caption || item.value; + if (caption === prev) + return false; + prev = caption; + return true; + }); + this.filtered = matches; + }; + FilteredList.prototype.filterCompletions = function (items, needle) { + var results = []; + var upper = needle.toUpperCase(); + var lower = needle.toLowerCase(); + loop: for (var i = 0, item; item = items[i]; i++) { + var caption = (!this.ignoreCaption && item.caption) || item.value || item.snippet; + if (!caption) + continue; + var lastIndex = -1; + var matchMask = 0; + var penalty = 0; + var index, distance; + if (this.exactMatch) { + if (needle !== caption.substr(0, needle.length)) + continue loop; + } + else { + var fullMatchIndex = caption.toLowerCase().indexOf(lower); + if (fullMatchIndex > -1) { + penalty = fullMatchIndex; + } + else { + for (var j = 0; j < needle.length; j++) { + var i1 = caption.indexOf(lower[j], lastIndex + 1); + var i2 = caption.indexOf(upper[j], lastIndex + 1); + index = (i1 >= 0) ? ((i2 < 0 || i1 < i2) ? i1 : i2) : i2; + if (index < 0) + continue loop; + distance = index - lastIndex - 1; + if (distance > 0) { + if (lastIndex === -1) + penalty += 10; + penalty += distance; + matchMask = matchMask | (1 << j); + } + lastIndex = index; + } + } + } + item.matchMask = matchMask; + item.exactMatch = penalty ? 0 : 1; + item.$score = (item.score || 0) - penalty; + results.push(item); + } + return results; + }; + return FilteredList; +}()); +exports.Autocomplete = Autocomplete; +exports.CompletionProvider = CompletionProvider; +exports.FilteredList = FilteredList; + +}); + +define("ace/ext/menu_tools/settings_menu.css",["require","exports","module"], function(require, exports, module){module.exports = "#ace_settingsmenu, #kbshortcutmenu {\n background-color: #F7F7F7;\n color: black;\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\n padding: 1em 0.5em 2em 1em;\n overflow: auto;\n position: absolute;\n margin: 0;\n bottom: 0;\n right: 0;\n top: 0;\n z-index: 9991;\n cursor: default;\n}\n\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\n background-color: rgba(255, 255, 255, 0.6);\n color: black;\n}\n\n.ace_optionsMenuEntry:hover {\n background-color: rgba(100, 100, 100, 0.1);\n transition: all 0.3s\n}\n\n.ace_closeButton {\n background: rgba(245, 146, 146, 0.5);\n border: 1px solid #F48A8A;\n border-radius: 50%;\n padding: 7px;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 100000;\n}\n.ace_closeButton{\n background: rgba(245, 146, 146, 0.9);\n}\n.ace_optionsMenuKey {\n color: darkslateblue;\n font-weight: bold;\n}\n.ace_optionsMenuCommand {\n color: darkcyan;\n font-weight: normal;\n}\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\n vertical-align: middle;\n}\n\n.ace_optionsMenuEntry button[ace_selected_button=true] {\n background: #e7e7e7;\n box-shadow: 1px 0px 2px 0px #adadad inset;\n border-color: #adadad;\n}\n.ace_optionsMenuEntry button {\n background: white;\n border: 1px solid lightgray;\n margin: 0px;\n}\n.ace_optionsMenuEntry button:hover{\n background: #f0f0f0;\n}"; + +}); + +define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom","ace/ext/menu_tools/settings_menu.css"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ +'use strict'; +var dom = require("../../lib/dom"); +var cssText = require("./settings_menu.css"); +dom.importCssString(cssText, "settings_menu.css", false); +module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { + var closer = document.createElement('div'); + var ignoreFocusOut = false; + function documentEscListener(e) { + if (e.keyCode === 27) { + close(); + } + } + function close() { + if (!closer) + return; + document.removeEventListener('keydown', documentEscListener); + closer.parentNode.removeChild(closer); + if (editor) { + editor.focus(); + } + closer = null; + callback && callback(); + } + function setIgnoreFocusOut(ignore) { + ignoreFocusOut = ignore; + if (ignore) { + closer.style.pointerEvents = "none"; + contentElement.style.pointerEvents = "auto"; + } + } + closer.style.cssText = 'margin: 0; padding: 0; ' + + 'position: fixed; top:0; bottom:0; left:0; right:0;' + + 'z-index: 9990; ' + + (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); + closer.addEventListener('click', function (e) { + if (!ignoreFocusOut) { + close(); + } + }); + document.addEventListener('keydown', documentEscListener); + contentElement.addEventListener('click', function (e) { + e.stopPropagation(); + }); + closer.appendChild(contentElement); + document.body.appendChild(closer); + if (editor) { + editor.blur(); + } + return { + close: close, + setIgnoreFocusOut: setIgnoreFocusOut + }; +}; + +}); + +define("ace/ext/modelist",["require","exports","module"], function(require, exports, module){"use strict"; +var modes = []; +function getModeForPath(path) { + var mode = modesByName.text; + var fileName = path.split(/[\/\\]/).pop(); + for (var i = 0; i < modes.length; i++) { + if (modes[i].supportsFile(fileName)) { + mode = modes[i]; + break; + } + } + return mode; +} +var Mode = /** @class */ (function () { + function Mode(name, caption, extensions) { + this.name = name; + this.caption = caption; + this.mode = "ace/mode/" + name; + this.extensions = extensions; + var re; + if (/\^/.test(extensions)) { + re = extensions.replace(/\|(\^)?/g, function (a, b) { + return "$|" + (b ? "^" : "^.*\\."); + }) + "$"; + } + else { + re = "^.*\\.(" + extensions + ")$"; + } + this.extRe = new RegExp(re, "gi"); + } + Mode.prototype.supportsFile = function (filename) { + return filename.match(this.extRe); + }; + return Mode; +}()); +var supportedModes = { + ABAP: ["abap"], + ABC: ["abc"], + ActionScript: ["as"], + ADA: ["ada|adb"], + Alda: ["alda"], + Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], + Apex: ["apex|cls|trigger|tgr"], + AQL: ["aql"], + AsciiDoc: ["asciidoc|adoc"], + ASL: ["dsl|asl|asl.json"], + Assembly_x86: ["asm|a"], + Astro: ["astro"], + AutoHotKey: ["ahk"], + BatchFile: ["bat|cmd"], + BibTeX: ["bib"], + C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], + C9Search: ["c9search_results"], + Cirru: ["cirru|cr"], + Clojure: ["clj|cljs"], + Cobol: ["CBL|COB"], + coffee: ["coffee|cf|cson|^Cakefile"], + ColdFusion: ["cfm|cfc"], + Crystal: ["cr"], + CSharp: ["cs"], + Csound_Document: ["csd"], + Csound_Orchestra: ["orc"], + Csound_Score: ["sco"], + CSS: ["css"], + Curly: ["curly"], + Cuttlefish: ["conf"], + D: ["d|di"], + Dart: ["dart"], + Diff: ["diff|patch"], + Django: ["djt|html.djt|dj.html|djhtml"], + Dockerfile: ["^Dockerfile"], + Dot: ["dot"], + Drools: ["drl"], + Edifact: ["edi"], + Eiffel: ["e|ge"], + EJS: ["ejs"], + Elixir: ["ex|exs"], + Elm: ["elm"], + Erlang: ["erl|hrl"], + Flix: ["flix"], + Forth: ["frt|fs|ldr|fth|4th"], + Fortran: ["f|f90"], + FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], + FSL: ["fsl"], + FTL: ["ftl"], + Gcode: ["gcode"], + Gherkin: ["feature"], + Gitignore: ["^.gitignore"], + Glsl: ["glsl|frag|vert"], + Gobstones: ["gbs"], + golang: ["go"], + GraphQLSchema: ["gql"], + Groovy: ["groovy"], + HAML: ["haml"], + Handlebars: ["hbs|handlebars|tpl|mustache"], + Haskell: ["hs"], + Haskell_Cabal: ["cabal"], + haXe: ["hx"], + Hjson: ["hjson"], + HTML: ["html|htm|xhtml|vue|we|wpy"], + HTML_Elixir: ["eex|html.eex"], + HTML_Ruby: ["erb|rhtml|html.erb"], + INI: ["ini|conf|cfg|prefs"], + Io: ["io"], + Ion: ["ion"], + Jack: ["jack"], + Jade: ["jade|pug"], + Java: ["java"], + JavaScript: ["js|jsm|cjs|mjs"], + JEXL: ["jexl"], + JSON: ["json"], + JSON5: ["json5"], + JSONiq: ["jq"], + JSP: ["jsp"], + JSSM: ["jssm|jssm_state"], + JSX: ["jsx"], + Julia: ["jl"], + Kotlin: ["kt|kts"], + LaTeX: ["tex|latex|ltx|bib"], + Latte: ["latte"], + LESS: ["less"], + Liquid: ["liquid"], + Lisp: ["lisp"], + LiveScript: ["ls"], + Log: ["log"], + LogiQL: ["logic|lql"], + Logtalk: ["lgt"], + LSL: ["lsl"], + Lua: ["lua"], + LuaPage: ["lp"], + Lucene: ["lucene"], + Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], + Markdown: ["md|markdown"], + Mask: ["mask"], + MATLAB: ["matlab"], + Maze: ["mz"], + MediaWiki: ["wiki|mediawiki"], + MEL: ["mel"], + MIPS: ["s|asm"], + MIXAL: ["mixal"], + MUSHCode: ["mc|mush"], + MySQL: ["mysql"], + Nasal: ["nas"], + Nginx: ["nginx|conf"], + Nim: ["nim"], + Nix: ["nix"], + NSIS: ["nsi|nsh"], + Nunjucks: ["nunjucks|nunjs|nj|njk"], + ObjectiveC: ["m|mm"], + OCaml: ["ml|mli"], + Odin: ["odin"], + PartiQL: ["partiql|pql"], + Pascal: ["pas|p"], + Perl: ["pl|pm"], + pgSQL: ["pgsql"], + PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], + PHP_Laravel_blade: ["blade.php"], + Pig: ["pig"], + PLSQL: ["plsql"], + Powershell: ["ps1"], + Praat: ["praat|praatscript|psc|proc"], + Prisma: ["prisma"], + Prolog: ["plg|prolog"], + Properties: ["properties"], + Protobuf: ["proto"], + PRQL: ["prql"], + Puppet: ["epp|pp"], + Python: ["py"], + QML: ["qml"], + R: ["r"], + Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], + Razor: ["cshtml|asp"], + RDoc: ["Rd"], + Red: ["red|reds"], + RHTML: ["Rhtml"], + Robot: ["robot|resource"], + RST: ["rst"], + Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], + Rust: ["rs"], + SaC: ["sac"], + SASS: ["sass"], + SCAD: ["scad"], + Scala: ["scala|sbt"], + Scheme: ["scm|sm|rkt|oak|scheme"], + Scrypt: ["scrypt"], + SCSS: ["scss"], + SH: ["sh|bash|^.bashrc"], + SJS: ["sjs"], + Slim: ["slim|skim"], + Smarty: ["smarty|tpl"], + Smithy: ["smithy"], + snippets: ["snippets"], + Soy_Template: ["soy"], + Space: ["space"], + SPARQL: ["rq"], + SQL: ["sql"], + SQLServer: ["sqlserver"], + Stylus: ["styl|stylus"], + SVG: ["svg"], + Swift: ["swift"], + Tcl: ["tcl"], + Terraform: ["tf", "tfvars", "terragrunt"], + Tex: ["tex"], + Text: ["txt"], + Textile: ["textile"], + Toml: ["toml"], + TSX: ["tsx"], + Turtle: ["ttl"], + Twig: ["twig|swig"], + Typescript: ["ts|mts|cts|typescript|str"], + Vala: ["vala"], + VBScript: ["vbs|vb"], + Velocity: ["vm"], + Verilog: ["v|vh|sv|svh"], + VHDL: ["vhd|vhdl"], + Visualforce: ["vfp|component|page"], + Wollok: ["wlk|wpgm|wtest"], + XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], + XQuery: ["xq"], + YAML: ["yaml|yml"], + Zeek: ["zeek|bro"], + Zig: ["zig"] +}; +var nameOverrides = { + ObjectiveC: "Objective-C", + CSharp: "C#", + golang: "Go", + C_Cpp: "C and C++", + Csound_Document: "Csound Document", + Csound_Orchestra: "Csound", + Csound_Score: "Csound Score", + coffee: "CoffeeScript", + HTML_Ruby: "HTML (Ruby)", + HTML_Elixir: "HTML (Elixir)", + FTL: "FreeMarker", + PHP_Laravel_blade: "PHP (Blade Template)", + Perl6: "Perl 6", + AutoHotKey: "AutoHotkey / AutoIt" +}; +var modesByName = {}; +for (var name in supportedModes) { + var data = supportedModes[name]; + var displayName = (nameOverrides[name] || name).replace(/_/g, " "); + var filename = name.toLowerCase(); + var mode = new Mode(filename, displayName, data[0]); + modesByName[filename] = mode; + modes.push(mode); +} +module.exports = { + getModeForPath: getModeForPath, + modes: modes, + modesByName: modesByName +}; + +}); + +define("ace/ext/prompt",["require","exports","module","ace/config","ace/range","ace/lib/dom","ace/autocomplete","ace/autocomplete/popup","ace/autocomplete/popup","ace/undomanager","ace/tokenizer","ace/ext/menu_tools/overlay_page","ace/ext/modelist"], function(require, exports, module){/** + * @typedef {import("../editor").Editor} Editor + */ +"use strict"; +var nls = require("../config").nls; +var Range = require("../range").Range; +var dom = require("../lib/dom"); +var FilteredList = require("../autocomplete").FilteredList; +var AcePopup = require('../autocomplete/popup').AcePopup; +var $singleLineEditor = require('../autocomplete/popup').$singleLineEditor; +var UndoManager = require("../undomanager").UndoManager; +var Tokenizer = require("../tokenizer").Tokenizer; +var overlayPage = require("./menu_tools/overlay_page").overlayPage; +var modelist = require("./modelist"); +var openPrompt; +function prompt(editor, message, options, callback) { + if (typeof message == "object") { + return prompt(editor, "", message, options); + } + if (openPrompt) { + var lastPrompt = openPrompt; + editor = lastPrompt.editor; + lastPrompt.close(); + if (lastPrompt.name && lastPrompt.name == options.name) + return; + } + if (options.$type) + return prompt[options.$type](editor, callback); + var cmdLine = $singleLineEditor(); + cmdLine.session.setUndoManager(new UndoManager()); + var el = dom.buildDom(["div", { class: "ace_prompt_container" + (options.hasDescription ? " input-box-with-description" : "") }]); + var overlay = overlayPage(editor, el, done); + el.appendChild(cmdLine.container); + if (editor) { + editor.cmdLine = cmdLine; + cmdLine.setOption("fontSize", editor.getOption("fontSize")); + } + if (message) { + cmdLine.setValue(message, 1); + } + if (options.selection) { + cmdLine.selection.setRange({ + start: cmdLine.session.doc.indexToPosition(options.selection[0]), + end: cmdLine.session.doc.indexToPosition(options.selection[1]) + }); + } + if (options.getCompletions) { + var popup = new AcePopup(); + popup.renderer.setStyle("ace_autocomplete_inline"); + popup.container.style.display = "block"; + popup.container.style.maxWidth = "600px"; + popup.container.style.width = "100%"; + popup.container.style.marginTop = "3px"; + popup.renderer.setScrollMargin(2, 2, 0, 0); + popup.autoSelect = false; + popup.renderer.$maxLines = 15; + popup.setRow(-1); + popup.on("click", function (e) { + var data = popup.getData(popup.getRow()); + if (!data["error"]) { + cmdLine.setValue(data.value || data["name"] || data); + accept(); + e.stop(); + } + }); + el.appendChild(popup.container); + updateCompletions(); + } + if (options.$rules) { + var tokenizer = new Tokenizer(options.$rules); + cmdLine.session.bgTokenizer.setTokenizer(tokenizer); + } + if (options.placeholder) { + cmdLine.setOption("placeholder", options.placeholder); + } + if (options.hasDescription) { + var promptTextContainer = dom.buildDom(["div", { class: "ace_prompt_text_container" }]); + dom.buildDom(options.prompt || "Press 'Enter' to confirm or 'Escape' to cancel", promptTextContainer); + el.appendChild(promptTextContainer); + } + overlay.setIgnoreFocusOut(options.ignoreFocusOut); + function accept() { + var val; + if (popup && popup.getCursorPosition().row > 0) { + val = valueFromRecentList(); + } + else { + val = cmdLine.getValue(); + } + var curData = popup ? popup.getData(popup.getRow()) : val; + if (curData && !curData["error"]) { + done(); + options.onAccept && options.onAccept({ + value: val, + item: curData + }, cmdLine); + } + } + var keys = { + "Enter": accept, + "Esc|Shift-Esc": function () { + options.onCancel && options.onCancel(cmdLine.getValue(), cmdLine); + done(); + } + }; + if (popup) { + Object.assign(keys, { + "Up": function (editor) { popup.goTo("up"); valueFromRecentList(); }, + "Down": function (editor) { popup.goTo("down"); valueFromRecentList(); }, + "Ctrl-Up|Ctrl-Home": function (editor) { popup.goTo("start"); valueFromRecentList(); }, + "Ctrl-Down|Ctrl-End": function (editor) { popup.goTo("end"); valueFromRecentList(); }, + "Tab": function (editor) { + popup.goTo("down"); + valueFromRecentList(); + }, + "PageUp": function (editor) { popup.gotoPageUp(); valueFromRecentList(); }, + "PageDown": function (editor) { popup.gotoPageDown(); valueFromRecentList(); } + }); + } + cmdLine.commands.bindKeys(keys); + function done() { + overlay.close(); + callback && callback(); + openPrompt = null; + } + cmdLine.on("input", function () { + options.onInput && options.onInput(); + updateCompletions(); + }); + function updateCompletions() { + if (options.getCompletions) { + var prefix; + if (options.getPrefix) { + prefix = options.getPrefix(cmdLine); + } + var completions = options.getCompletions(cmdLine); + popup.setData(completions, prefix); + popup.resize(true); + } + } + function valueFromRecentList() { + var current = popup.getData(popup.getRow()); + if (current && !current["error"]) + return current.value || current.caption || current; + } + cmdLine.resize(true); + if (popup) { + popup.resize(true); + } + cmdLine.focus(); + openPrompt = { + close: done, + name: options.name, + editor: editor + }; +} +prompt.gotoLine = function (editor, callback) { + function stringifySelection(selection) { + if (!Array.isArray(selection)) + selection = [selection]; + return selection.map(function (r) { + var cursor = r.isBackwards ? r.start : r.end; + var anchor = r.isBackwards ? r.end : r.start; + var row = anchor.row; + var s = (row + 1) + ":" + anchor.column; + if (anchor.row == cursor.row) { + if (anchor.column != cursor.column) + s += ">" + ":" + cursor.column; + } + else { + s += ">" + (cursor.row + 1) + ":" + cursor.column; + } + return s; + }).reverse().join(", "); + } + prompt(editor, ":" + stringifySelection(editor.selection.toJSON()), { + name: "gotoLine", + selection: [1, Number.MAX_VALUE], + onAccept: function (data) { + var value = data.value; + var _history = prompt.gotoLine["_history"]; + if (!_history) + prompt.gotoLine["_history"] = _history = []; + if (_history.indexOf(value) != -1) + _history.splice(_history.indexOf(value), 1); + _history.unshift(value); + if (_history.length > 20) + _history.length = 20; + var pos = editor.getCursorPosition(); + var ranges = []; + value.replace(/^:/, "").split(/,/).map(function (str) { + var parts = str.split(/([<>:+-]|c?\d+)|[^c\d<>:+-]+/).filter(Boolean); + var i = 0; + function readPosition() { + var c = parts[i++]; + if (!c) + return; + if (c[0] == "c") { + var index = parseInt(c.slice(1)) || 0; + return editor.session.doc.indexToPosition(index); + } + var row = pos.row; + var column = 0; + if (/\d/.test(c)) { + row = parseInt(c) - 1; + c = parts[i++]; + } + if (c == ":") { + c = parts[i++]; + if (/\d/.test(c)) { + column = parseInt(c) || 0; + } + } + return { row: row, column: column }; + } + pos = readPosition(); + var range = Range.fromPoints(pos, pos); + if (parts[i] == ">") { + i++; + range.end = readPosition(); + } + else if (parts[i] == "<") { + i++; + range.start = readPosition(); + } + ranges.unshift(range); + }); + editor.selection.fromJSON(ranges); + var scrollTop = editor.renderer.scrollTop; + editor.renderer.scrollSelectionIntoView(editor.selection.anchor, editor.selection.cursor, 0.5); + editor.renderer.animateScrolling(scrollTop); + }, + history: function () { + if (!prompt.gotoLine["_history"]) + return []; + return prompt.gotoLine["_history"]; + }, + getCompletions: function (cmdLine) { + var value = cmdLine.getValue(); + var m = value.replace(/^:/, "").split(":"); + var row = Math.min(parseInt(m[0]) || 1, editor.session.getLength()) - 1; + var line = editor.session.getLine(row); + var current = value + " " + line; + return [current].concat(this.history()); + }, + $rules: { + start: [{ + regex: /\d+/, + token: "string" + }, { + regex: /[:,><+\-c]/, + token: "keyword" + }] + } + }); +}; +prompt.commands = function (editor, callback) { + function normalizeName(name) { + return (name || "").replace(/^./, function (x) { + return x.toUpperCase(x); + }).replace(/[a-z][A-Z]/g, function (x) { + return x[0] + " " + x[1].toLowerCase(x); + }); + } + function getEditorCommandsByName(excludeCommands) { + var commandsByName = []; + var commandMap = {}; + editor.keyBinding.$handlers.forEach(function (handler) { + var platform = handler["platform"]; + var cbn = handler["byName"]; + for (var i in cbn) { + var key = cbn[i].bindKey; + if (typeof key !== "string") { + key = key && key[platform] || ""; + } + var commands = cbn[i]; + var description = commands.description || normalizeName(commands.name); + if (!Array.isArray(commands)) + commands = [commands]; + commands.forEach(function (command) { + if (typeof command != "string") + command = command.name; + var needle = excludeCommands.find(function (el) { + return el === command; + }); + if (!needle) { + if (commandMap[command]) { + commandMap[command].key += "|" + key; + } + else { + commandMap[command] = { key: key, command: command, description: description }; + commandsByName.push(commandMap[command]); + } + } + }); + } + }); + return commandsByName; + } + var excludeCommandsList = ["insertstring", "inserttext", "setIndentation", "paste"]; + var shortcutsArray = getEditorCommandsByName(excludeCommandsList); + shortcutsArray = shortcutsArray.map(function (item) { + return { value: item.description, meta: item.key, command: item.command }; + }); + prompt(editor, "", { + name: "commands", + selection: [0, Number.MAX_VALUE], + maxHistoryCount: 5, + onAccept: function (data) { + if (data.item) { + var commandName = data.item.command; + this.addToHistory(data.item); + editor.execCommand(commandName); + } + }, + addToHistory: function (item) { + var history = this.history(); + history.unshift(item); + delete item.message; + for (var i = 1; i < history.length; i++) { + if (history[i]["command"] == item.command) { + history.splice(i, 1); + break; + } + } + if (this.maxHistoryCount > 0 && history.length > this.maxHistoryCount) { + history.splice(history.length - 1, 1); + } + prompt.commands["history"] = history; + }, + history: function () { + return prompt.commands["history"] || []; + }, + getPrefix: function (cmdLine) { + var currentPos = cmdLine.getCursorPosition(); + var filterValue = cmdLine.getValue(); + return filterValue.substring(0, currentPos.column); + }, + getCompletions: function (cmdLine) { + function getFilteredCompletions(commands, prefix) { + var resultCommands = JSON.parse(JSON.stringify(commands)); + var filtered = new FilteredList(resultCommands); + return filtered.filterCompletions(resultCommands, prefix); + } + function getUniqueCommandList(commands, usedCommands) { + if (!usedCommands || !usedCommands.length) { + return commands; + } + var excludeCommands = []; + usedCommands.forEach(function (item) { + excludeCommands.push(item.command); + }); + var resultCommands = []; + commands.forEach(function (item) { + if (excludeCommands.indexOf(item.command) === -1) { + resultCommands.push(item); + } + }); + return resultCommands; + } + var prefix = this.getPrefix(cmdLine); + var recentlyUsedCommands = getFilteredCompletions(this.history(), prefix); + var otherCommands = getUniqueCommandList(shortcutsArray, recentlyUsedCommands); + otherCommands = getFilteredCompletions(otherCommands, prefix); + if (recentlyUsedCommands.length && otherCommands.length) { + recentlyUsedCommands[0].message = nls("Recently used"); + otherCommands[0].message = nls("Other commands"); + } + var completions = recentlyUsedCommands.concat(otherCommands); + return completions.length > 0 ? completions : [{ + value: nls("No matching commands"), + error: 1 + }]; + } + }); +}; +prompt.modes = function (editor, callback) { + var modesArray = modelist.modes; + modesArray = modesArray.map(function (item) { + return { value: item.caption, mode: item.name }; + }); + prompt(editor, "", { + name: "modes", + selection: [0, Number.MAX_VALUE], + onAccept: function (data) { + if (data.item) { + var modeName = "ace/mode/" + data.item.mode; + editor.session.setMode(modeName); + } + }, + getPrefix: function (cmdLine) { + var currentPos = cmdLine.getCursorPosition(); + var filterValue = cmdLine.getValue(); + return filterValue.substring(0, currentPos.column); + }, + getCompletions: function (cmdLine) { + function getFilteredCompletions(modes, prefix) { + var resultCommands = JSON.parse(JSON.stringify(modes)); + var filtered = new FilteredList(resultCommands); + return filtered.filterCompletions(resultCommands, prefix); + } + var prefix = this.getPrefix(cmdLine); + var completions = getFilteredCompletions(modesArray, prefix); + return completions.length > 0 ? completions : [{ + "caption": "No mode matching", + "value": "No mode matching", + "error": 1 + }]; + } + }); +}; +dom.importCssString(".ace_prompt_container {\n max-width: 603px;\n width: 100%;\n margin: 20px auto;\n padding: 3px;\n background: white;\n border-radius: 2px;\n box-shadow: 0px 2px 3px 0px #555;\n}", "promtp.css", false); +exports.prompt = prompt; + +}); (function() { + window.require(["ace/ext/prompt"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-rtl.js b/vendor/assets/javascripts/ace/ext-rtl.js new file mode 100644 index 00000000..e7a269f9 --- /dev/null +++ b/vendor/assets/javascripts/ace/ext-rtl.js @@ -0,0 +1,120 @@ +define("ace/ext/rtl",["require","exports","module","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var commands = [{ + name: "leftToRight", + bindKey: { win: "Ctrl-Alt-Shift-L", mac: "Command-Alt-Shift-L" }, + exec: function (editor) { + editor.session.$bidiHandler.setRtlDirection(editor, false); + }, + readOnly: true + }, { + name: "rightToLeft", + bindKey: { win: "Ctrl-Alt-Shift-R", mac: "Command-Alt-Shift-R" }, + exec: function (editor) { + editor.session.$bidiHandler.setRtlDirection(editor, true); + }, + readOnly: true + }]; +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + rtlText: { + set: function (val) { + if (val) { + this.on("change", onChange); + this.on("changeSelection", onChangeSelection); + this.renderer.on("afterRender", updateLineDirection); + this.commands.on("exec", onCommandEmitted); + this.commands.addCommands(commands); + } + else { + this.off("change", onChange); + this.off("changeSelection", onChangeSelection); + this.renderer.off("afterRender", updateLineDirection); + this.commands.off("exec", onCommandEmitted); + this.commands.removeCommands(commands); + clearTextLayer(this.renderer); + } + this.renderer.updateFull(); + } + }, + rtl: { + set: function (val) { + this.session.$bidiHandler.$isRtl = val; + if (val) { + this.setOption("rtlText", false); + this.renderer.on("afterRender", updateLineDirection); + this.session.$bidiHandler.seenBidi = true; + } + else { + this.renderer.off("afterRender", updateLineDirection); + clearTextLayer(this.renderer); + } + this.renderer.updateFull(); + } + } +}); +function onChangeSelection(e, editor) { + var lead = editor.getSelection().lead; + if (editor.session.$bidiHandler.isRtlLine(lead.row)) { + if (lead.column === 0) { + if (editor.session.$bidiHandler.isMoveLeftOperation && lead.row > 0) { + editor.getSelection().moveCursorTo(lead.row - 1, editor.session.getLine(lead.row - 1).length); + } + else { + if (editor.getSelection().isEmpty()) + lead.column += 1; + else + lead.setPosition(lead.row, lead.column + 1); + } + } + } +} +function onCommandEmitted(commadEvent) { + commadEvent.editor.session.$bidiHandler.isMoveLeftOperation = /gotoleft|selectleft|backspace|removewordleft/.test(commadEvent.command.name); +} +function onChange(delta, editor) { + var session = editor.session; + session.$bidiHandler.currentRow = null; + if (session.$bidiHandler.isRtlLine(delta.start.row) && delta.action === 'insert' && delta.lines.length > 1) { + for (var row = delta.start.row; row < delta.end.row; row++) { + if (session.getLine(row + 1).charAt(0) !== session.$bidiHandler.RLE) + session.doc.$lines[row + 1] = session.$bidiHandler.RLE + session.getLine(row + 1); + } + } +} +function updateLineDirection(e, renderer) { + var session = renderer.session; + var $bidiHandler = session.$bidiHandler; + var cells = renderer.$textLayer.$lines.cells; + var width = renderer.layerConfig.width - renderer.layerConfig.padding + "px"; + cells.forEach(function (cell) { + var style = cell.element.style; + if ($bidiHandler && $bidiHandler.isRtlLine(cell.row)) { + style.direction = "rtl"; + style.textAlign = "right"; + style.width = width; + } + else { + style.direction = ""; + style.textAlign = ""; + style.width = ""; + } + }); +} +function clearTextLayer(renderer) { + var lines = renderer.$textLayer.$lines; + lines.cells.forEach(clear); + lines.cellCache.forEach(clear); + function clear(cell) { + var style = cell.element.style; + style.direction = style.textAlign = style.width = ""; + } +} + +}); (function() { + window.require(["ace/ext/rtl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-searchbox.js b/vendor/assets/javascripts/ace/ext-searchbox.js index afaa3bbb..0387b5cd 100644 --- a/vendor/assets/javascripts/ace/ext-searchbox.js +++ b/vendor/assets/javascripts/ace/ext-searchbox.js @@ -1,215 +1,60 @@ -define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module) { -"use strict"; +define("ace/ext/searchbox-css",["require","exports","module"], function(require, exports, module){module.exports = "\n\n/* ------------------------------------------------------------------------------------------\n * Editor Search Form\n * --------------------------------------------------------------------------------------- */\n.ace_search {\n background-color: #ddd;\n color: #666;\n border: 1px solid #cbcbcb;\n border-top: 0 none;\n overflow: hidden;\n margin: 0;\n padding: 4px 6px 0 4px;\n position: absolute;\n top: 0;\n z-index: 99;\n white-space: normal;\n}\n.ace_search.left {\n border-left: 0 none;\n border-radius: 0px 0px 5px 0px;\n left: 0;\n}\n.ace_search.right {\n border-radius: 0px 0px 0px 5px;\n border-right: 0 none;\n right: 0;\n}\n\n.ace_search_form, .ace_replace_form {\n margin: 0 20px 4px 0;\n overflow: hidden;\n line-height: 1.9;\n}\n.ace_replace_form {\n margin-right: 0;\n}\n.ace_search_form.ace_nomatch {\n outline: 1px solid red;\n}\n\n.ace_search_field {\n border-radius: 3px 0 0 3px;\n background-color: white;\n color: black;\n border: 1px solid #cbcbcb;\n border-right: 0 none;\n outline: 0;\n padding: 0;\n font-size: inherit;\n margin: 0;\n line-height: inherit;\n padding: 0 6px;\n min-width: 17em;\n vertical-align: top;\n min-height: 1.8em;\n box-sizing: content-box;\n}\n.ace_searchbtn {\n border: 1px solid #cbcbcb;\n line-height: inherit;\n display: inline-block;\n padding: 0 6px;\n background: #fff;\n border-right: 0 none;\n border-left: 1px solid #dcdcdc;\n cursor: pointer;\n margin: 0;\n position: relative;\n color: #666;\n}\n.ace_searchbtn:last-child {\n border-radius: 0 3px 3px 0;\n border-right: 1px solid #cbcbcb;\n}\n.ace_searchbtn:disabled {\n background: none;\n cursor: default;\n}\n.ace_searchbtn:hover {\n background-color: #eef1f6;\n}\n.ace_searchbtn.prev, .ace_searchbtn.next {\n padding: 0px 0.7em\n}\n.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\n content: \"\";\n border: solid 2px #888;\n width: 0.5em;\n height: 0.5em;\n border-width: 2px 0 0 2px;\n display:inline-block;\n transform: rotate(-45deg);\n}\n.ace_searchbtn.next:after {\n border-width: 0 2px 2px 0 ;\n}\n.ace_searchbtn_close {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\n border-radius: 50%;\n border: 0 none;\n color: #656565;\n cursor: pointer;\n font: 16px/16px Arial;\n padding: 0;\n height: 14px;\n width: 14px;\n top: 9px;\n right: 7px;\n position: absolute;\n}\n.ace_searchbtn_close:hover {\n background-color: #656565;\n background-position: 50% 100%;\n color: white;\n}\n\n.ace_button {\n margin-left: 2px;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n overflow: hidden;\n opacity: 0.7;\n border: 1px solid rgba(100,100,100,0.23);\n padding: 1px;\n box-sizing: border-box!important;\n color: black;\n}\n\n.ace_button:hover {\n background-color: #eee;\n opacity:1;\n}\n.ace_button:active {\n background-color: #ddd;\n}\n\n.ace_button.checked {\n border-color: #3399ff;\n opacity:1;\n}\n\n.ace_search_options{\n margin-bottom: 3px;\n text-align: right;\n -webkit-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n -ms-user-select: none;\n user-select: none;\n clear: both;\n}\n\n.ace_search_counter {\n float: left;\n font-family: arial;\n padding: 0 8px;\n}"; +}); + +define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/ext/searchbox-css","ace/keyboard/hash_handler","ace/lib/keys","ace/config"], function(require, exports, module){"use strict"; var dom = require("../lib/dom"); var lang = require("../lib/lang"); var event = require("../lib/event"); -var searchboxCss = "\ -.ace_search {\ -background-color: #ddd;\ -color: #666;\ -border: 1px solid #cbcbcb;\ -border-top: 0 none;\ -overflow: hidden;\ -margin: 0;\ -padding: 4px 6px 0 4px;\ -position: absolute;\ -top: 0;\ -z-index: 99;\ -white-space: normal;\ -}\ -.ace_search.left {\ -border-left: 0 none;\ -border-radius: 0px 0px 5px 0px;\ -left: 0;\ -}\ -.ace_search.right {\ -border-radius: 0px 0px 0px 5px;\ -border-right: 0 none;\ -right: 0;\ -}\ -.ace_search_form, .ace_replace_form {\ -margin: 0 20px 4px 0;\ -overflow: hidden;\ -line-height: 1.9;\ -}\ -.ace_replace_form {\ -margin-right: 0;\ -}\ -.ace_search_form.ace_nomatch {\ -outline: 1px solid red;\ -}\ -.ace_search_field {\ -border-radius: 3px 0 0 3px;\ -background-color: white;\ -color: black;\ -border: 1px solid #cbcbcb;\ -border-right: 0 none;\ -box-sizing: border-box!important;\ -outline: 0;\ -padding: 0;\ -font-size: inherit;\ -margin: 0;\ -line-height: inherit;\ -padding: 0 6px;\ -min-width: 17em;\ -vertical-align: top;\ -}\ -.ace_searchbtn {\ -border: 1px solid #cbcbcb;\ -line-height: inherit;\ -display: inline-block;\ -padding: 0 6px;\ -background: #fff;\ -border-right: 0 none;\ -border-left: 1px solid #dcdcdc;\ -cursor: pointer;\ -margin: 0;\ -position: relative;\ -box-sizing: content-box!important;\ -color: #666;\ -}\ -.ace_searchbtn:last-child {\ -border-radius: 0 3px 3px 0;\ -border-right: 1px solid #cbcbcb;\ -}\ -.ace_searchbtn:disabled {\ -background: none;\ -cursor: default;\ -}\ -.ace_searchbtn:hover {\ -background-color: #eef1f6;\ -}\ -.ace_searchbtn.prev, .ace_searchbtn.next {\ -padding: 0px 0.7em\ -}\ -.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\ -content: \"\";\ -border: solid 2px #888;\ -width: 0.5em;\ -height: 0.5em;\ -border-width: 2px 0 0 2px;\ -display:inline-block;\ -transform: rotate(-45deg);\ -}\ -.ace_searchbtn.next:after {\ -border-width: 0 2px 2px 0 ;\ -}\ -.ace_searchbtn_close {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\ -border-radius: 50%;\ -border: 0 none;\ -color: #656565;\ -cursor: pointer;\ -font: 16px/16px Arial;\ -padding: 0;\ -height: 14px;\ -width: 14px;\ -top: 9px;\ -right: 7px;\ -position: absolute;\ -}\ -.ace_searchbtn_close:hover {\ -background-color: #656565;\ -background-position: 50% 100%;\ -color: white;\ -}\ -.ace_button {\ -margin-left: 2px;\ -cursor: pointer;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -overflow: hidden;\ -opacity: 0.7;\ -border: 1px solid rgba(100,100,100,0.23);\ -padding: 1px;\ -box-sizing: border-box!important;\ -color: black;\ -}\ -.ace_button:hover {\ -background-color: #eee;\ -opacity:1;\ -}\ -.ace_button:active {\ -background-color: #ddd;\ -}\ -.ace_button.checked {\ -border-color: #3399ff;\ -opacity:1;\ -}\ -.ace_search_options{\ -margin-bottom: 3px;\ -text-align: right;\ --webkit-user-select: none;\ --moz-user-select: none;\ --o-user-select: none;\ --ms-user-select: none;\ -user-select: none;\ -clear: both;\ -}\ -.ace_search_counter {\ -float: left;\ -font-family: arial;\ -padding: 0 8px;\ -}"; +var searchboxCss = require("./searchbox-css"); var HashHandler = require("../keyboard/hash_handler").HashHandler; var keyUtil = require("../lib/keys"); - +var nls = require("../config").nls; var MAX_COUNT = 999; - -dom.importCssString(searchboxCss, "ace_searchbox"); - -var html = ''.replace(/> +/g, ">"); - -var SearchBox = function(editor, range, showReplaceForm) { - var div = dom.createElement("div"); - div.innerHTML = html; - this.element = div.firstChild; - - this.setSession = this.setSession.bind(this); - - this.$init(); - this.setEditor(editor); -}; - -(function() { - this.setEditor = function(editor) { +dom.importCssString(searchboxCss, "ace_searchbox", false); +var SearchBox = /** @class */ (function () { + function SearchBox(editor, range, showReplaceForm) { + this.activeInput; + var div = dom.createElement("div"); + dom.buildDom(["div", { class: "ace_search right" }, + ["span", { action: "hide", class: "ace_searchbtn_close" }], + ["div", { class: "ace_search_form" }, + ["input", { class: "ace_search_field", placeholder: nls("Search for"), spellcheck: "false" }], + ["span", { action: "findPrev", class: "ace_searchbtn prev" }, "\u200b"], + ["span", { action: "findNext", class: "ace_searchbtn next" }, "\u200b"], + ["span", { action: "findAll", class: "ace_searchbtn", title: "Alt-Enter" }, nls("All")] + ], + ["div", { class: "ace_replace_form" }, + ["input", { class: "ace_search_field", placeholder: nls("Replace with"), spellcheck: "false" }], + ["span", { action: "replaceAndFindNext", class: "ace_searchbtn" }, nls("Replace")], + ["span", { action: "replaceAll", class: "ace_searchbtn" }, nls("All")] + ], + ["div", { class: "ace_search_options" }, + ["span", { action: "toggleReplace", class: "ace_button", title: nls("Toggle Replace mode"), + style: "float:left;margin-top:-2px;padding:0 5px;" }, "+"], + ["span", { class: "ace_search_counter" }], + ["span", { action: "toggleRegexpMode", class: "ace_button", title: nls("RegExp Search") }, ".*"], + ["span", { action: "toggleCaseSensitive", class: "ace_button", title: nls("CaseSensitive Search") }, "Aa"], + ["span", { action: "toggleWholeWords", class: "ace_button", title: nls("Whole Word Search") }, "\\b"], + ["span", { action: "searchInSelection", class: "ace_button", title: nls("Search In Selection") }, "S"] + ] + ], div); + this.element = div.firstChild; + this.setSession = this.setSession.bind(this); + this.$init(); + this.setEditor(editor); + dom.importCssString(searchboxCss, "ace_searchbox", editor.container); + } + SearchBox.prototype.setEditor = function (editor) { editor.searchBox = this; editor.renderer.scroller.appendChild(this.element); this.editor = editor; }; - - this.setSession = function(e) { + SearchBox.prototype.setSession = function (e) { this.searchRange = null; this.$syncOptions(true); }; - - this.$initElements = function(sb) { + SearchBox.prototype.$initElements = function (sb) { this.searchBox = sb.querySelector(".ace_search_form"); this.replaceBox = sb.querySelector(".ace_replace_form"); this.searchOption = sb.querySelector("[action=searchInSelection]"); @@ -221,20 +66,17 @@ var SearchBox = function(editor, range, showReplaceForm) { this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); this.searchCounter = sb.querySelector(".ace_search_counter"); }; - - this.$init = function() { + SearchBox.prototype.$init = function () { var sb = this.element; - this.$initElements(sb); - var _this = this; - event.addListener(sb, "mousedown", function(e) { - setTimeout(function(){ + event.addListener(sb, "mousedown", function (e) { + setTimeout(function () { _this.activeInput.focus(); }, 0); event.stopPropagation(e); }); - event.addListener(sb, "click", function(e) { + event.addListener(sb, "click", function (e) { var t = e.target || e.srcElement; var action = t.getAttribute("action"); if (action && _this[action]) @@ -243,8 +85,7 @@ var SearchBox = function(editor, range, showReplaceForm) { _this.$searchBarKb.commands[action].exec(_this); event.stopPropagation(e); }); - - event.addCommandKeyListener(sb, function(e, hashId, keyCode) { + event.addCommandKeyListener(sb, function (e, hashId, keyCode) { var keyString = keyUtil.keyCodeToString(keyCode); var command = _this.$searchBarKb.findKeyCommand(hashId, keyString); if (command && command.exec) { @@ -252,135 +93,48 @@ var SearchBox = function(editor, range, showReplaceForm) { event.stopEvent(e); } }); - - this.$onChange = lang.delayedCall(function() { + this.$onChange = lang.delayedCall(function () { _this.find(false, false); }); - - event.addListener(this.searchInput, "input", function() { + event.addListener(this.searchInput, "input", function () { _this.$onChange.schedule(20); }); - event.addListener(this.searchInput, "focus", function() { + event.addListener(this.searchInput, "focus", function () { _this.activeInput = _this.searchInput; _this.searchInput.value && _this.highlight(); }); - event.addListener(this.replaceInput, "focus", function() { + event.addListener(this.replaceInput, "focus", function () { _this.activeInput = _this.replaceInput; _this.searchInput.value && _this.highlight(); }); }; - this.$closeSearchBarKb = new HashHandler([{ - bindKey: "Esc", - name: "closeSearchBar", - exec: function(editor) { - editor.searchBox.hide(); - } - }]); - this.$searchBarKb = new HashHandler(); - this.$searchBarKb.bindKeys({ - "Ctrl-f|Command-f": function(sb) { - var isReplace = sb.isReplace = !sb.isReplace; - sb.replaceBox.style.display = isReplace ? "" : "none"; - sb.replaceOption.checked = false; - sb.$syncOptions(); - sb.searchInput.focus(); - }, - "Ctrl-H|Command-Option-F": function(sb) { - sb.replaceOption.checked = true; - sb.$syncOptions(); - sb.replaceInput.focus(); - }, - "Ctrl-G|Command-G": function(sb) { - sb.findNext(); - }, - "Ctrl-Shift-G|Command-Shift-G": function(sb) { - sb.findPrev(); - }, - "esc": function(sb) { - setTimeout(function() { sb.hide();}); - }, - "Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findNext(); - }, - "Shift-Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replace(); - sb.findPrev(); - }, - "Alt-Return": function(sb) { - if (sb.activeInput == sb.replaceInput) - sb.replaceAll(); - sb.findAll(); - }, - "Tab": function(sb) { - (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); - } - }); - - this.$searchBarKb.addCommands([{ - name: "toggleRegexpMode", - bindKey: {win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/"}, - exec: function(sb) { - sb.regExpOption.checked = !sb.regExpOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleCaseSensitive", - bindKey: {win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I"}, - exec: function(sb) { - sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleWholeWords", - bindKey: {win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W"}, - exec: function(sb) { - sb.wholeWordOption.checked = !sb.wholeWordOption.checked; - sb.$syncOptions(); - } - }, { - name: "toggleReplace", - exec: function(sb) { - sb.replaceOption.checked = !sb.replaceOption.checked; - sb.$syncOptions(); - } - }, { - name: "searchInSelection", - exec: function(sb) { - sb.searchOption.checked = !sb.searchRange; - sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); - sb.$syncOptions(); - } - }]); - - this.setSearchRange = function(range) { + SearchBox.prototype.setSearchRange = function (range) { this.searchRange = range; if (range) { this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); - } else if (this.searchRangeMarker) { + } + else if (this.searchRangeMarker) { this.editor.session.removeMarker(this.searchRangeMarker); this.searchRangeMarker = null; } }; - - this.$syncOptions = function(preventScroll) { + SearchBox.prototype.$syncOptions = function (preventScroll) { dom.setCssClass(this.replaceOption, "checked", this.searchRange); dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - this.replaceBox.style.display = this.replaceOption.checked ? "" : "none"; + var readOnly = this.editor.getReadOnly(); + this.replaceOption.style.display = readOnly ? "none" : ""; + this.replaceBox.style.display = this.replaceOption.checked && !readOnly ? "" : "none"; this.find(false, false, preventScroll); }; - - this.highlight = function(re) { + SearchBox.prototype.highlight = function (re) { this.editor.session.highlight(re || this.editor.$search.$options.re); this.editor.renderer.updateBackMarkers(); }; - this.find = function(skipCurrent, backwards, preventScroll) { + SearchBox.prototype.find = function (skipCurrent, backwards, preventScroll) { var range = this.editor.find(this.searchInput.value, { skipCurrent: skipCurrent, backwards: backwards, @@ -397,20 +151,19 @@ var SearchBox = function(editor, range, showReplaceForm) { this.highlight(); this.updateCounter(); }; - this.updateCounter = function() { + SearchBox.prototype.updateCounter = function () { var editor = this.editor; var regex = editor.$search.$options.re; + var supportsUnicodeFlag = regex.unicode; var all = 0; var before = 0; if (regex) { var value = this.searchRange ? editor.session.getTextRange(this.searchRange) : editor.getValue(); - var offset = editor.session.doc.positionToIndex(editor.selection.anchor); if (this.searchRange) offset -= editor.session.doc.positionToIndex(this.searchRange.start); - var last = regex.lastIndex = 0; var m; while ((m = regex.exec(value))) { @@ -421,22 +174,22 @@ var SearchBox = function(editor, range, showReplaceForm) { if (all > MAX_COUNT) break; if (!m[0]) { - regex.lastIndex = last += 1; + regex.lastIndex = last += lang.skipEmptyMatch(value, last, supportsUnicodeFlag); if (last >= value.length) break; } } } - this.searchCounter.textContent = before + " of " + (all > MAX_COUNT ? MAX_COUNT + "+" : all); + this.searchCounter.textContent = nls("$0 of $1", [before, (all > MAX_COUNT ? MAX_COUNT + "+" : all)]); }; - this.findNext = function() { + SearchBox.prototype.findNext = function () { this.find(true, false); }; - this.findPrev = function() { + SearchBox.prototype.findPrev = function () { this.find(true, true); }; - this.findAll = function(){ - var range = this.editor.findAll(this.searchInput.value, { + SearchBox.prototype.findAll = function () { + var range = this.editor.findAll(this.searchInput.value, { regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked @@ -447,62 +200,145 @@ var SearchBox = function(editor, range, showReplaceForm) { this.highlight(); this.hide(); }; - this.replace = function() { + SearchBox.prototype.replace = function () { if (!this.editor.getReadOnly()) this.editor.replace(this.replaceInput.value); - }; - this.replaceAndFindNext = function() { + }; + SearchBox.prototype.replaceAndFindNext = function () { if (!this.editor.getReadOnly()) { this.editor.replace(this.replaceInput.value); this.findNext(); } }; - this.replaceAll = function() { + SearchBox.prototype.replaceAll = function () { if (!this.editor.getReadOnly()) this.editor.replaceAll(this.replaceInput.value); }; - - this.hide = function() { + SearchBox.prototype.hide = function () { this.active = false; this.setSearchRange(null); this.editor.off("changeSession", this.setSession); - this.element.style.display = "none"; this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); this.editor.focus(); }; - this.show = function(value, isReplace) { + SearchBox.prototype.show = function (value, isReplace) { this.active = true; this.editor.on("changeSession", this.setSession); this.element.style.display = ""; this.replaceOption.checked = isReplace; - if (value) this.searchInput.value = value; - this.searchInput.focus(); this.searchInput.select(); - this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); - this.$syncOptions(true); }; - - this.isFocused = function() { + SearchBox.prototype.isFocused = function () { var el = document.activeElement; return el == this.searchInput || el == this.replaceInput; }; -}).call(SearchBox.prototype); - + return SearchBox; +}()); +var $searchBarKb = new HashHandler(); +$searchBarKb.bindKeys({ + "Ctrl-f|Command-f": function (sb) { + var isReplace = sb.isReplace = !sb.isReplace; + sb.replaceBox.style.display = isReplace ? "" : "none"; + sb.replaceOption.checked = false; + sb.$syncOptions(); + sb.searchInput.focus(); + }, + "Ctrl-H|Command-Option-F": function (sb) { + if (sb.editor.getReadOnly()) + return; + sb.replaceOption.checked = true; + sb.$syncOptions(); + sb.replaceInput.focus(); + }, + "Ctrl-G|Command-G": function (sb) { + sb.findNext(); + }, + "Ctrl-Shift-G|Command-Shift-G": function (sb) { + sb.findPrev(); + }, + "esc": function (sb) { + setTimeout(function () { sb.hide(); }); + }, + "Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findNext(); + }, + "Shift-Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replace(); + sb.findPrev(); + }, + "Alt-Return": function (sb) { + if (sb.activeInput == sb.replaceInput) + sb.replaceAll(); + sb.findAll(); + }, + "Tab": function (sb) { + (sb.activeInput == sb.replaceInput ? sb.searchInput : sb.replaceInput).focus(); + } +}); +$searchBarKb.addCommands([{ + name: "toggleRegexpMode", + bindKey: { win: "Alt-R|Alt-/", mac: "Ctrl-Alt-R|Ctrl-Alt-/" }, + exec: function (sb) { + sb.regExpOption.checked = !sb.regExpOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleCaseSensitive", + bindKey: { win: "Alt-C|Alt-I", mac: "Ctrl-Alt-R|Ctrl-Alt-I" }, + exec: function (sb) { + sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleWholeWords", + bindKey: { win: "Alt-B|Alt-W", mac: "Ctrl-Alt-B|Ctrl-Alt-W" }, + exec: function (sb) { + sb.wholeWordOption.checked = !sb.wholeWordOption.checked; + sb.$syncOptions(); + } + }, { + name: "toggleReplace", + exec: function (sb) { + sb.replaceOption.checked = !sb.replaceOption.checked; + sb.$syncOptions(); + } + }, { + name: "searchInSelection", + exec: function (sb) { + sb.searchOption.checked = !sb.searchRange; + sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); + sb.$syncOptions(); + } + }]); +var $closeSearchBarKb = new HashHandler([{ + bindKey: "Esc", + name: "closeSearchBar", + exec: function (editor) { + editor.searchBox.hide(); + } + }]); +SearchBox.prototype.$searchBarKb = $searchBarKb; +SearchBox.prototype.$closeSearchBarKb = $closeSearchBarKb; exports.SearchBox = SearchBox; - -exports.Search = function(editor, isReplace) { +exports.Search = function (editor, isReplace) { var sb = editor.searchBox || new SearchBox(editor); sb.show(editor.session.getTextRange(), isReplace); }; -}); - (function() { - window.require(["ace/ext/searchbox"], function() {}); +}); (function() { + window.require(["ace/ext/searchbox"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-settings_menu.js b/vendor/assets/javascripts/ace/ext-settings_menu.js index 807bbf3f..ad9cbd4f 100644 --- a/vendor/assets/javascripts/ace/ext-settings_menu.js +++ b/vendor/assets/javascripts/ace/ext-settings_menu.js @@ -1,62 +1,65 @@ -define("ace/ext/menu_tools/element_generator",["require","exports","module"], function(require, exports, module) { +define("ace/ext/menu_tools/settings_menu.css",["require","exports","module"], function(require, exports, module){module.exports = "#ace_settingsmenu, #kbshortcutmenu {\n background-color: #F7F7F7;\n color: black;\n box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\n padding: 1em 0.5em 2em 1em;\n overflow: auto;\n position: absolute;\n margin: 0;\n bottom: 0;\n right: 0;\n top: 0;\n z-index: 9991;\n cursor: default;\n}\n\n.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\n box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\n background-color: rgba(255, 255, 255, 0.6);\n color: black;\n}\n\n.ace_optionsMenuEntry:hover {\n background-color: rgba(100, 100, 100, 0.1);\n transition: all 0.3s\n}\n\n.ace_closeButton {\n background: rgba(245, 146, 146, 0.5);\n border: 1px solid #F48A8A;\n border-radius: 50%;\n padding: 7px;\n position: absolute;\n right: -8px;\n top: -8px;\n z-index: 100000;\n}\n.ace_closeButton{\n background: rgba(245, 146, 146, 0.9);\n}\n.ace_optionsMenuKey {\n color: darkslateblue;\n font-weight: bold;\n}\n.ace_optionsMenuCommand {\n color: darkcyan;\n font-weight: normal;\n}\n.ace_optionsMenuEntry input, .ace_optionsMenuEntry button {\n vertical-align: middle;\n}\n\n.ace_optionsMenuEntry button[ace_selected_button=true] {\n background: #e7e7e7;\n box-shadow: 1px 0px 2px 0px #adadad inset;\n border-color: #adadad;\n}\n.ace_optionsMenuEntry button {\n background: white;\n border: 1px solid lightgray;\n margin: 0px;\n}\n.ace_optionsMenuEntry button:hover{\n background: #f0f0f0;\n}"; + +}); + +define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom","ace/ext/menu_tools/settings_menu.css"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ 'use strict'; -module.exports.createOption = function createOption (obj) { - var attribute; - var el = document.createElement('option'); - for(attribute in obj) { - if(obj.hasOwnProperty(attribute)) { - if(attribute === 'selected') { - el.setAttribute(attribute, obj[attribute]); - } else { - el[attribute] = obj[attribute]; - } +var dom = require("../../lib/dom"); +var cssText = require("./settings_menu.css"); +dom.importCssString(cssText, "settings_menu.css", false); +module.exports.overlayPage = function overlayPage(editor, contentElement, callback) { + var closer = document.createElement('div'); + var ignoreFocusOut = false; + function documentEscListener(e) { + if (e.keyCode === 27) { + close(); } } - return el; -}; -module.exports.createCheckbox = function createCheckbox (id, checked, clss) { - var el = document.createElement('input'); - el.setAttribute('type', 'checkbox'); - el.setAttribute('id', id); - el.setAttribute('name', id); - el.setAttribute('value', checked); - el.setAttribute('class', clss); - if(checked) { - el.setAttribute('checked', 'checked'); + function close() { + if (!closer) + return; + document.removeEventListener('keydown', documentEscListener); + closer.parentNode.removeChild(closer); + if (editor) { + editor.focus(); + } + closer = null; + callback && callback(); } - return el; -}; -module.exports.createInput = function createInput (id, value, clss) { - var el = document.createElement('input'); - el.setAttribute('type', 'text'); - el.setAttribute('id', id); - el.setAttribute('name', id); - el.setAttribute('value', value); - el.setAttribute('class', clss); - return el; -}; -module.exports.createLabel = function createLabel (text, labelFor) { - var el = document.createElement('label'); - el.setAttribute('for', labelFor); - el.textContent = text; - return el; -}; -module.exports.createSelection = function createSelection (id, values, clss) { - var el = document.createElement('select'); - el.setAttribute('id', id); - el.setAttribute('name', id); - el.setAttribute('class', clss); - values.forEach(function(item) { - el.appendChild(module.exports.createOption(item)); + function setIgnoreFocusOut(ignore) { + ignoreFocusOut = ignore; + if (ignore) { + closer.style.pointerEvents = "none"; + contentElement.style.pointerEvents = "auto"; + } + } + closer.style.cssText = 'margin: 0; padding: 0; ' + + 'position: fixed; top:0; bottom:0; left:0; right:0;' + + 'z-index: 9990; ' + + (editor ? 'background-color: rgba(0, 0, 0, 0.3);' : ''); + closer.addEventListener('click', function (e) { + if (!ignoreFocusOut) { + close(); + } }); - return el; + document.addEventListener('keydown', documentEscListener); + contentElement.addEventListener('click', function (e) { + e.stopPropagation(); + }); + closer.appendChild(contentElement); + document.body.appendChild(closer); + if (editor) { + editor.blur(); + } + return { + close: close, + setIgnoreFocusOut: setIgnoreFocusOut + }; }; }); -define("ace/ext/modelist",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/ext/modelist",["require","exports","module"], function(require, exports, module){"use strict"; var modes = []; function getModeForPath(path) { var mode = modesByName.text; @@ -69,174 +72,216 @@ function getModeForPath(path) { } return mode; } - -var Mode = function(name, caption, extensions) { - this.name = name; - this.caption = caption; - this.mode = "ace/mode/" + name; - this.extensions = extensions; - var re; - if (/\^/.test(extensions)) { - re = extensions.replace(/\|(\^)?/g, function(a, b){ - return "$|" + (b ? "^" : "^.*\\."); - }) + "$"; - } else { - re = "^.*\\.(" + extensions + ")$"; +var Mode = /** @class */ (function () { + function Mode(name, caption, extensions) { + this.name = name; + this.caption = caption; + this.mode = "ace/mode/" + name; + this.extensions = extensions; + var re; + if (/\^/.test(extensions)) { + re = extensions.replace(/\|(\^)?/g, function (a, b) { + return "$|" + (b ? "^" : "^.*\\."); + }) + "$"; + } + else { + re = "^.*\\.(" + extensions + ")$"; + } + this.extRe = new RegExp(re, "gi"); } - - this.extRe = new RegExp(re, "gi"); -}; - -Mode.prototype.supportsFile = function(filename) { - return filename.match(this.extRe); -}; + Mode.prototype.supportsFile = function (filename) { + return filename.match(this.extRe); + }; + return Mode; +}()); var supportedModes = { - ABAP: ["abap"], - ABC: ["abc"], - ActionScript:["as"], - ADA: ["ada|adb"], + ABAP: ["abap"], + ABC: ["abc"], + ActionScript: ["as"], + ADA: ["ada|adb"], + Alda: ["alda"], Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"], - AsciiDoc: ["asciidoc|adoc"], - Assembly_x86:["asm|a"], - AutoHotKey: ["ahk"], - BatchFile: ["bat|cmd"], - Bro: ["bro"], - C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], - C9Search: ["c9search_results"], - Cirru: ["cirru|cr"], - Clojure: ["clj|cljs"], - Cobol: ["CBL|COB"], - coffee: ["coffee|cf|cson|^Cakefile"], - ColdFusion: ["cfm"], - CSharp: ["cs"], + Apex: ["apex|cls|trigger|tgr"], + AQL: ["aql"], + AsciiDoc: ["asciidoc|adoc"], + ASL: ["dsl|asl|asl.json"], + Assembly_x86: ["asm|a"], + Astro: ["astro"], + AutoHotKey: ["ahk"], + BatchFile: ["bat|cmd"], + BibTeX: ["bib"], + C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], + C9Search: ["c9search_results"], + Cirru: ["cirru|cr"], + Clojure: ["clj|cljs"], + Cobol: ["CBL|COB"], + coffee: ["coffee|cf|cson|^Cakefile"], + ColdFusion: ["cfm|cfc"], + Crystal: ["cr"], + CSharp: ["cs"], Csound_Document: ["csd"], Csound_Orchestra: ["orc"], Csound_Score: ["sco"], - CSS: ["css"], - Curly: ["curly"], - D: ["d|di"], - Dart: ["dart"], - Diff: ["diff|patch"], - Dockerfile: ["^Dockerfile"], - Dot: ["dot"], - Drools: ["drl"], - Dummy: ["dummy"], - DummySyntax: ["dummy"], - Eiffel: ["e|ge"], - EJS: ["ejs"], - Elixir: ["ex|exs"], - Elm: ["elm"], - Erlang: ["erl|hrl"], - Forth: ["frt|fs|ldr|fth|4th"], - Fortran: ["f|f90"], - FTL: ["ftl"], - Gcode: ["gcode"], - Gherkin: ["feature"], - Gitignore: ["^.gitignore"], - Glsl: ["glsl|frag|vert"], - Gobstones: ["gbs"], - golang: ["go"], + CSS: ["css"], + Curly: ["curly"], + Cuttlefish: ["conf"], + D: ["d|di"], + Dart: ["dart"], + Diff: ["diff|patch"], + Django: ["djt|html.djt|dj.html|djhtml"], + Dockerfile: ["^Dockerfile"], + Dot: ["dot"], + Drools: ["drl"], + Edifact: ["edi"], + Eiffel: ["e|ge"], + EJS: ["ejs"], + Elixir: ["ex|exs"], + Elm: ["elm"], + Erlang: ["erl|hrl"], + Flix: ["flix"], + Forth: ["frt|fs|ldr|fth|4th"], + Fortran: ["f|f90"], + FSharp: ["fsi|fs|ml|mli|fsx|fsscript"], + FSL: ["fsl"], + FTL: ["ftl"], + Gcode: ["gcode"], + Gherkin: ["feature"], + Gitignore: ["^.gitignore"], + Glsl: ["glsl|frag|vert"], + Gobstones: ["gbs"], + golang: ["go"], GraphQLSchema: ["gql"], - Groovy: ["groovy"], - HAML: ["haml"], - Handlebars: ["hbs|handlebars|tpl|mustache"], - Haskell: ["hs"], - Haskell_Cabal: ["cabal"], - haXe: ["hx"], - Hjson: ["hjson"], - HTML: ["html|htm|xhtml|vue|we|wpy"], + Groovy: ["groovy"], + HAML: ["haml"], + Handlebars: ["hbs|handlebars|tpl|mustache"], + Haskell: ["hs"], + Haskell_Cabal: ["cabal"], + haXe: ["hx"], + Hjson: ["hjson"], + HTML: ["html|htm|xhtml|vue|we|wpy"], HTML_Elixir: ["eex|html.eex"], - HTML_Ruby: ["erb|rhtml|html.erb"], - INI: ["ini|conf|cfg|prefs"], - Io: ["io"], - Jack: ["jack"], - Jade: ["jade|pug"], - Java: ["java"], - JavaScript: ["js|jsm|jsx"], - JSON: ["json"], - JSONiq: ["jq"], - JSP: ["jsp"], - JSSM: ["jssm|jssm_state"], - JSX: ["jsx"], - Julia: ["jl"], - Kotlin: ["kt|kts"], - LaTeX: ["tex|latex|ltx|bib"], - LESS: ["less"], - Liquid: ["liquid"], - Lisp: ["lisp"], - LiveScript: ["ls"], - LogiQL: ["logic|lql"], - LSL: ["lsl"], - Lua: ["lua"], - LuaPage: ["lp"], - Lucene: ["lucene"], - Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], - Markdown: ["md|markdown"], - Mask: ["mask"], - MATLAB: ["matlab"], - Maze: ["mz"], - MEL: ["mel"], - MUSHCode: ["mc|mush"], - MySQL: ["mysql"], - Nix: ["nix"], - NSIS: ["nsi|nsh"], - ObjectiveC: ["m|mm"], - OCaml: ["ml|mli"], - Pascal: ["pas|p"], - Perl: ["pl|pm"], - pgSQL: ["pgsql"], - PHP: ["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], - Pig: ["pig"], - Powershell: ["ps1"], - Praat: ["praat|praatscript|psc|proc"], - Prolog: ["plg|prolog"], - Properties: ["properties"], - Protobuf: ["proto"], - Python: ["py"], - R: ["r"], - Razor: ["cshtml|asp"], - RDoc: ["Rd"], - Red: ["red|reds"], - RHTML: ["Rhtml"], - RST: ["rst"], - Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], - Rust: ["rs"], - SASS: ["sass"], - SCAD: ["scad"], - Scala: ["scala"], - Scheme: ["scm|sm|rkt|oak|scheme"], - SCSS: ["scss"], - SH: ["sh|bash|^.bashrc"], - SJS: ["sjs"], - Smarty: ["smarty|tpl"], - snippets: ["snippets"], - Soy_Template:["soy"], - Space: ["space"], - SQL: ["sql"], - SQLServer: ["sqlserver"], - Stylus: ["styl|stylus"], - SVG: ["svg"], - Swift: ["swift"], - Tcl: ["tcl"], - Tex: ["tex"], - Text: ["txt"], - Textile: ["textile"], - Toml: ["toml"], - TSX: ["tsx"], - Twig: ["twig|swig"], - Typescript: ["ts|typescript|str"], - Vala: ["vala"], - VBScript: ["vbs|vb"], - Velocity: ["vm"], - Verilog: ["v|vh|sv|svh"], - VHDL: ["vhd|vhdl"], - Wollok: ["wlk|wpgm|wtest"], - XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], - XQuery: ["xq"], - YAML: ["yaml|yml"], - Django: ["html"] + HTML_Ruby: ["erb|rhtml|html.erb"], + INI: ["ini|conf|cfg|prefs"], + Io: ["io"], + Ion: ["ion"], + Jack: ["jack"], + Jade: ["jade|pug"], + Java: ["java"], + JavaScript: ["js|jsm|cjs|mjs"], + JEXL: ["jexl"], + JSON: ["json"], + JSON5: ["json5"], + JSONiq: ["jq"], + JSP: ["jsp"], + JSSM: ["jssm|jssm_state"], + JSX: ["jsx"], + Julia: ["jl"], + Kotlin: ["kt|kts"], + LaTeX: ["tex|latex|ltx|bib"], + Latte: ["latte"], + LESS: ["less"], + Liquid: ["liquid"], + Lisp: ["lisp"], + LiveScript: ["ls"], + Log: ["log"], + LogiQL: ["logic|lql"], + Logtalk: ["lgt"], + LSL: ["lsl"], + Lua: ["lua"], + LuaPage: ["lp"], + Lucene: ["lucene"], + Makefile: ["^Makefile|^GNUmakefile|^makefile|^OCamlMakefile|make"], + Markdown: ["md|markdown"], + Mask: ["mask"], + MATLAB: ["matlab"], + Maze: ["mz"], + MediaWiki: ["wiki|mediawiki"], + MEL: ["mel"], + MIPS: ["s|asm"], + MIXAL: ["mixal"], + MUSHCode: ["mc|mush"], + MySQL: ["mysql"], + Nasal: ["nas"], + Nginx: ["nginx|conf"], + Nim: ["nim"], + Nix: ["nix"], + NSIS: ["nsi|nsh"], + Nunjucks: ["nunjucks|nunjs|nj|njk"], + ObjectiveC: ["m|mm"], + OCaml: ["ml|mli"], + Odin: ["odin"], + PartiQL: ["partiql|pql"], + Pascal: ["pas|p"], + Perl: ["pl|pm"], + pgSQL: ["pgsql"], + PHP: ["php|inc|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], + PHP_Laravel_blade: ["blade.php"], + Pig: ["pig"], + PLSQL: ["plsql"], + Powershell: ["ps1"], + Praat: ["praat|praatscript|psc|proc"], + Prisma: ["prisma"], + Prolog: ["plg|prolog"], + Properties: ["properties"], + Protobuf: ["proto"], + PRQL: ["prql"], + Puppet: ["epp|pp"], + Python: ["py"], + QML: ["qml"], + R: ["r"], + Raku: ["raku|rakumod|rakutest|p6|pl6|pm6"], + Razor: ["cshtml|asp"], + RDoc: ["Rd"], + Red: ["red|reds"], + RHTML: ["Rhtml"], + Robot: ["robot|resource"], + RST: ["rst"], + Ruby: ["rb|ru|gemspec|rake|^Guardfile|^Rakefile|^Gemfile"], + Rust: ["rs"], + SaC: ["sac"], + SASS: ["sass"], + SCAD: ["scad"], + Scala: ["scala|sbt"], + Scheme: ["scm|sm|rkt|oak|scheme"], + Scrypt: ["scrypt"], + SCSS: ["scss"], + SH: ["sh|bash|^.bashrc"], + SJS: ["sjs"], + Slim: ["slim|skim"], + Smarty: ["smarty|tpl"], + Smithy: ["smithy"], + snippets: ["snippets"], + Soy_Template: ["soy"], + Space: ["space"], + SPARQL: ["rq"], + SQL: ["sql"], + SQLServer: ["sqlserver"], + Stylus: ["styl|stylus"], + SVG: ["svg"], + Swift: ["swift"], + Tcl: ["tcl"], + Terraform: ["tf", "tfvars", "terragrunt"], + Tex: ["tex"], + Text: ["txt"], + Textile: ["textile"], + Toml: ["toml"], + TSX: ["tsx"], + Turtle: ["ttl"], + Twig: ["twig|swig"], + Typescript: ["ts|mts|cts|typescript|str"], + Vala: ["vala"], + VBScript: ["vbs|vb"], + Velocity: ["vm"], + Verilog: ["v|vh|sv|svh"], + VHDL: ["vhd|vhdl"], + Visualforce: ["vfp|component|page"], + Wollok: ["wlk|wpgm|wtest"], + XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl|xaml"], + XQuery: ["xq"], + YAML: ["yaml|yml"], + Zeek: ["zeek|bro"], + Zig: ["zig"] }; - var nameOverrides = { ObjectiveC: "Objective-C", CSharp: "C#", @@ -248,7 +293,10 @@ var nameOverrides = { coffee: "CoffeeScript", HTML_Ruby: "HTML (Ruby)", HTML_Elixir: "HTML (Elixir)", - FTL: "FreeMarker" + FTL: "FreeMarker", + PHP_Laravel_blade: "PHP (Blade Template)", + Perl6: "Perl 6", + AutoHotKey: "AutoHotkey / AutoIt" }; var modesByName = {}; for (var name in supportedModes) { @@ -259,7 +307,6 @@ for (var name in supportedModes) { modesByName[filename] = mode; modes.push(mode); } - module.exports = { getModeForPath: getModeForPath, modes: modes, @@ -268,52 +315,60 @@ module.exports = { }); -define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"], function(require, exports, module) { +define("ace/ext/themelist",["require","exports","module"], function(require, exports, module){/** + * Generates a list of themes available when ace was built. + * @fileOverview Generates a list of themes available when ace was built. + * @author + * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭ + */ "use strict"; -require("ace/lib/fixoldbrowsers"); - var themeData = [ - ["Chrome" ], - ["Clouds" ], - ["Crimson Editor" ], - ["Dawn" ], - ["Dreamweaver" ], - ["Eclipse" ], - ["GitHub" ], - ["IPlastic" ], + ["Chrome"], + ["Clouds"], + ["Crimson Editor"], + ["Dawn"], + ["Dreamweaver"], + ["Eclipse"], + ["GitHub"], + ["IPlastic"], ["Solarized Light"], - ["TextMate" ], - ["Tomorrow" ], - ["XCode" ], + ["TextMate"], + ["Tomorrow"], + ["XCode"], ["Kuroir"], ["KatzenMilch"], - ["SQL Server" ,"sqlserver" , "light"], - ["Ambiance" ,"ambiance" , "dark"], - ["Chaos" ,"chaos" , "dark"], - ["Clouds Midnight" ,"clouds_midnight" , "dark"], - ["Cobalt" ,"cobalt" , "dark"], - ["Gruvbox" ,"gruvbox" , "dark"], - ["Green on Black" ,"gob" , "dark"], - ["idle Fingers" ,"idle_fingers" , "dark"], - ["krTheme" ,"kr_theme" , "dark"], - ["Merbivore" ,"merbivore" , "dark"], - ["Merbivore Soft" ,"merbivore_soft" , "dark"], - ["Mono Industrial" ,"mono_industrial" , "dark"], - ["Monokai" ,"monokai" , "dark"], - ["Pastel on dark" ,"pastel_on_dark" , "dark"], - ["Solarized Dark" ,"solarized_dark" , "dark"], - ["Terminal" ,"terminal" , "dark"], - ["Tomorrow Night" ,"tomorrow_night" , "dark"], - ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"], - ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"], - ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"], - ["Twilight" ,"twilight" , "dark"], - ["Vibrant Ink" ,"vibrant_ink" , "dark"] + ["SQL Server", "sqlserver", "light"], + ["CloudEditor", "cloud_editor", "light"], + ["Ambiance", "ambiance", "dark"], + ["Chaos", "chaos", "dark"], + ["Clouds Midnight", "clouds_midnight", "dark"], + ["Dracula", "", "dark"], + ["Cobalt", "cobalt", "dark"], + ["Gruvbox", "gruvbox", "dark"], + ["Green on Black", "gob", "dark"], + ["idle Fingers", "idle_fingers", "dark"], + ["krTheme", "kr_theme", "dark"], + ["Merbivore", "merbivore", "dark"], + ["Merbivore Soft", "merbivore_soft", "dark"], + ["Mono Industrial", "mono_industrial", "dark"], + ["Monokai", "monokai", "dark"], + ["Nord Dark", "nord_dark", "dark"], + ["One Dark", "one_dark", "dark"], + ["Pastel on dark", "pastel_on_dark", "dark"], + ["Solarized Dark", "solarized_dark", "dark"], + ["Terminal", "terminal", "dark"], + ["Tomorrow Night", "tomorrow_night", "dark"], + ["Tomorrow Night Blue", "tomorrow_night_blue", "dark"], + ["Tomorrow Night Bright", "tomorrow_night_bright", "dark"], + ["Tomorrow Night 80s", "tomorrow_night_eighties", "dark"], + ["Twilight", "twilight", "dark"], + ["Vibrant Ink", "vibrant_ink", "dark"], + ["GitHub Dark", "github_dark", "dark"], + ["CloudEditor Dark", "cloud_editor_dark", "dark"] ]; - - exports.themesByName = {}; -exports.themes = themeData.map(function(data) { +exports.themes = themeData.map(function (data) { var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); var theme = { caption: data[0], @@ -327,345 +382,405 @@ exports.themes = themeData.map(function(data) { }); -define("ace/ext/menu_tools/add_editor_menu_options",["require","exports","module","ace/ext/modelist","ace/ext/themelist"], function(require, exports, module) { -'use strict'; -module.exports.addEditorMenuOptions = function addEditorMenuOptions (editor) { - var modelist = require('../modelist'); - var themelist = require('../themelist'); - editor.menuOptions = { - setNewLineMode: [{ - textContent: "unix", - value: "unix" - }, { - textContent: "windows", - value: "windows" - }, { - textContent: "auto", - value: "auto" - }], - setTheme: [], - setMode: [], - setKeyboardHandler: [{ - textContent: "ace", - value: "" - }, { - textContent: "vim", - value: "ace/keyboard/vim" - }, { - textContent: "emacs", - value: "ace/keyboard/emacs" - }, { - textContent: "textarea", - value: "ace/keyboard/textarea" - }, { - textContent: "sublime", - value: "ace/keyboard/sublime" - }] - }; - - editor.menuOptions.setTheme = themelist.themes.map(function(theme) { - return { - textContent: theme.caption, - value: theme.theme - }; - }); - - editor.menuOptions.setMode = modelist.modes.map(function(mode) { - return { - textContent: mode.name, - value: mode.mode - }; - }); -}; - - +define("ace/ext/options",["require","exports","module","ace/ext/menu_tools/overlay_page","ace/lib/dom","ace/lib/oop","ace/config","ace/lib/event_emitter","ace/ext/modelist","ace/ext/themelist"], function(require, exports, module){"use strict"; +require("./menu_tools/overlay_page"); +var dom = require("../lib/dom"); +var oop = require("../lib/oop"); +var config = require("../config"); +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var buildDom = dom.buildDom; +var modelist = require("./modelist"); +var themelist = require("./themelist"); +var themes = { Bright: [], Dark: [] }; +themelist.themes.forEach(function (x) { + themes[x.isDark ? "Dark" : "Bright"].push({ caption: x.caption, value: x.theme }); }); - -define("ace/ext/menu_tools/get_set_functions",["require","exports","module"], function(require, exports, module) { -'use strict'; -module.exports.getSetFunctions = function getSetFunctions (editor) { - var out = []; - var my = { - 'editor' : editor, - 'session' : editor.session, - 'renderer' : editor.renderer +var modes = modelist.modes.map(function (x) { + return { caption: x.caption, value: x.mode }; +}); +var optionGroups = { + Main: { + Mode: { + path: "mode", + type: "select", + items: modes + }, + Theme: { + path: "theme", + type: "select", + items: themes + }, + "Keybinding": { + type: "buttonBar", + path: "keyboardHandler", + items: [ + { caption: "Ace", value: null }, + { caption: "Vim", value: "ace/keyboard/vim" }, + { caption: "Emacs", value: "ace/keyboard/emacs" }, + { caption: "Sublime", value: "ace/keyboard/sublime" }, + { caption: "VSCode", value: "ace/keyboard/vscode" } + ] + }, + "Font Size": { + path: "fontSize", + type: "number", + defaultValue: 12, + defaults: [ + { caption: "12px", value: 12 }, + { caption: "24px", value: 24 } + ] + }, + "Soft Wrap": { + type: "buttonBar", + path: "wrap", + items: [ + { caption: "Off", value: "off" }, + { caption: "View", value: "free" }, + { caption: "margin", value: "printMargin" }, + { caption: "40", value: "40" } + ] + }, + "Cursor Style": { + path: "cursorStyle", + items: [ + { caption: "Ace", value: "ace" }, + { caption: "Slim", value: "slim" }, + { caption: "Smooth", value: "smooth" }, + { caption: "Smooth And Slim", value: "smooth slim" }, + { caption: "Wide", value: "wide" } + ] + }, + "Folding": { + path: "foldStyle", + items: [ + { caption: "Manual", value: "manual" }, + { caption: "Mark begin", value: "markbegin" }, + { caption: "Mark begin and end", value: "markbeginend" } + ] + }, + "Soft Tabs": [{ + path: "useSoftTabs" + }, { + ariaLabel: "Tab Size", + path: "tabSize", + type: "number", + values: [2, 3, 4, 8, 16] + }], + "Overscroll": { + type: "buttonBar", + path: "scrollPastEnd", + items: [ + { caption: "None", value: 0 }, + { caption: "Half", value: 0.5 }, + { caption: "Full", value: 1 } + ] + } + }, + More: { + "Atomic soft tabs": { + path: "navigateWithinSoftTabs" + }, + "Enable Behaviours": { + path: "behavioursEnabled" + }, + "Wrap with quotes": { + path: "wrapBehavioursEnabled" + }, + "Enable Auto Indent": { + path: "enableAutoIndent" + }, + "Full Line Selection": { + type: "checkbox", + values: "text|line", + path: "selectionStyle" + }, + "Highlight Active Line": { + path: "highlightActiveLine" + }, + "Show Invisibles": { + path: "showInvisibles" + }, + "Show Indent Guides": { + path: "displayIndentGuides" + }, + "Highlight Indent Guides": { + path: "highlightIndentGuides" + }, + "Persistent HScrollbar": { + path: "hScrollBarAlwaysVisible" + }, + "Persistent VScrollbar": { + path: "vScrollBarAlwaysVisible" + }, + "Animate scrolling": { + path: "animatedScroll" + }, + "Show Gutter": { + path: "showGutter" + }, + "Show Line Numbers": { + path: "showLineNumbers" + }, + "Relative Line Numbers": { + path: "relativeLineNumbers" + }, + "Fixed Gutter Width": { + path: "fixedWidthGutter" + }, + "Show Print Margin": [{ + path: "showPrintMargin" + }, { + ariaLabel: "Print Margin", + type: "number", + path: "printMarginColumn" + }], + "Indented Soft Wrap": { + path: "indentedSoftWrap" + }, + "Highlight selected word": { + path: "highlightSelectedWord" + }, + "Fade Fold Widgets": { + path: "fadeFoldWidgets" + }, + "Use textarea for IME": { + path: "useTextareaForIME" + }, + "Merge Undo Deltas": { + path: "mergeUndoDeltas", + items: [ + { caption: "Always", value: "always" }, + { caption: "Never", value: "false" }, + { caption: "Timed", value: "true" } + ] + }, + "Elastic Tabstops": { + path: "useElasticTabstops" + }, + "Incremental Search": { + path: "useIncrementalSearch" + }, + "Read-only": { + path: "readOnly" + }, + "Copy without selection": { + path: "copyWithEmptySelection" + }, + "Live Autocompletion": { + path: "enableLiveAutocompletion" + }, + "Custom scrollbar": { + path: "customScrollbar" + }, + "Use SVG gutter icons": { + path: "useSvgGutterIcons" + }, + "Annotations for folded lines": { + path: "showFoldedAnnotations" + }, + "Keyboard Accessibility Mode": { + path: "enableKeyboardAccessibility" + }, + "Gutter tooltip follows mouse": { + path: "tooltipFollowsMouse", + defaultValue: true + } + } +}; +var OptionPanel = /** @class */ (function () { + function OptionPanel(editor, element) { + this.editor = editor; + this.container = element || document.createElement("div"); + this.groups = []; + this.options = {}; + } + OptionPanel.prototype.add = function (config) { + if (config.Main) + oop.mixin(optionGroups.Main, config.Main); + if (config.More) + oop.mixin(optionGroups.More, config.More); }; - var opts = []; - var skip = [ - 'setOption', - 'setUndoManager', - 'setDocument', - 'setValue', - 'setBreakpoints', - 'setScrollTop', - 'setScrollLeft', - 'setSelectionStyle', - 'setWrapLimitRange' - ]; - ['renderer', 'session', 'editor'].forEach(function(esra) { - var esr = my[esra]; - var clss = esra; - for(var fn in esr) { - if(skip.indexOf(fn) === -1) { - if(/^set/.test(fn) && opts.indexOf(fn) === -1) { - opts.push(fn); - out.push({ - 'functionName' : fn, - 'parentObj' : esr, - 'parentName' : clss - }); - } + OptionPanel.prototype.render = function () { + this.container.innerHTML = ""; + buildDom(["table", { role: "presentation", id: "controls" }, + this.renderOptionGroup(optionGroups.Main), + ["tr", null, ["td", { colspan: 2 }, + ["table", { role: "presentation", id: "more-controls" }, + this.renderOptionGroup(optionGroups.More) + ] + ]], + ["tr", null, ["td", { colspan: 2 }, "version " + config.version]] + ], this.container); + }; + OptionPanel.prototype.renderOptionGroup = function (group) { + return Object.keys(group).map(function (key, i) { + var item = group[key]; + if (!item.position) + item.position = i / 10000; + if (!item.label) + item.label = key; + return item; + }).sort(function (a, b) { + return a.position - b.position; + }).map(function (item) { + return this.renderOption(item.label, item); + }, this); + }; + OptionPanel.prototype.renderOptionControl = function (key, option) { + var self = this; + if (Array.isArray(option)) { + return option.map(function (x) { + return self.renderOptionControl(key, x); + }); + } + var control; + var value = self.getOption(option); + if (option.values && option.type != "checkbox") { + if (typeof option.values == "string") + option.values = option.values.split("|"); + option.items = option.values.map(function (v) { + return { value: v, name: v }; + }); + } + if (option.type == "buttonBar") { + control = ["div", { role: "group", "aria-labelledby": option.path + "-label" }, option.items.map(function (item) { + return ["button", { + value: item.value, + ace_selected_button: value == item.value, + 'aria-pressed': value == item.value, + onclick: function () { + self.setOption(option, item.value); + var nodes = this.parentNode.querySelectorAll("[ace_selected_button]"); + for (var i = 0; i < nodes.length; i++) { + nodes[i].removeAttribute("ace_selected_button"); + nodes[i].setAttribute("aria-pressed", false); + } + this.setAttribute("ace_selected_button", true); + this.setAttribute("aria-pressed", true); + } + }, item.desc || item.caption || item.name]; + })]; + } + else if (option.type == "number") { + control = ["input", { type: "number", value: value || option.defaultValue, style: "width:3em", oninput: function () { + self.setOption(option, parseInt(this.value)); + } }]; + if (option.ariaLabel) { + control[1]["aria-label"] = option.ariaLabel; + } + else { + control[1].id = key; + } + if (option.defaults) { + control = [control, option.defaults.map(function (item) { + return ["button", { onclick: function () { + var input = this.parentNode.firstChild; + input.value = item.value; + input.oninput(); + } }, item.caption]; + })]; } } - }); - return out; -}; - -}); - -define("ace/ext/menu_tools/generate_settings_menu",["require","exports","module","ace/ext/menu_tools/element_generator","ace/ext/menu_tools/add_editor_menu_options","ace/ext/menu_tools/get_set_functions","ace/ace"], function(require, exports, module) { -'use strict'; -var egen = require('./element_generator'); -var addEditorMenuOptions = require('./add_editor_menu_options').addEditorMenuOptions; -var getSetFunctions = require('./get_set_functions').getSetFunctions; -module.exports.generateSettingsMenu = function generateSettingsMenu (editor) { - var elements = []; - function cleanupElementsList() { - elements.sort(function(a, b) { - var x = a.getAttribute('contains'); - var y = b.getAttribute('contains'); - return x.localeCompare(y); - }); - } - function wrapElements() { - var topmenu = document.createElement('div'); - topmenu.setAttribute('id', 'ace_settingsmenu'); - elements.forEach(function(element) { - topmenu.appendChild(element); - }); - - var el = topmenu.appendChild(document.createElement('div')); - var version = require("../../ace").version; - el.style.padding = "1em"; - el.textContent = "Ace version " + version; - - return topmenu; - } - function createNewEntry(obj, clss, item, val) { - var el; - var div = document.createElement('div'); - div.setAttribute('contains', item); - div.setAttribute('class', 'ace_optionsMenuEntry'); - div.setAttribute('style', 'clear: both;'); - - div.appendChild(egen.createLabel( - item.replace(/^set/, '').replace(/([A-Z])/g, ' $1').trim(), - item - )); - - if (Array.isArray(val)) { - el = egen.createSelection(item, val, clss); - el.addEventListener('change', function(e) { - try{ - editor.menuOptions[e.target.id].forEach(function(x) { - if(x.textContent !== e.target.textContent) { - delete x.selected; - } - }); - obj[e.target.id](e.target.value); - } catch (err) { - throw new Error(err); - } - }); - } else if(typeof val === 'boolean') { - el = egen.createCheckbox(item, val, clss); - el.addEventListener('change', function(e) { - try{ - obj[e.target.id](!!e.target.checked); - } catch (err) { - throw new Error(err); - } - }); - } else { - el = egen.createInput(item, val, clss); - el.addEventListener('change', function(e) { - try{ - if(e.target.value === 'true') { - obj[e.target.id](true); - } else if(e.target.value === 'false') { - obj[e.target.id](false); - } else { - obj[e.target.id](e.target.value); - } - } catch (err) { - throw new Error(err); - } - }); + else if (option.items) { + var buildItems = function (items) { + return items.map(function (item) { + return ["option", { value: item.value || item.name }, item.desc || item.caption || item.name]; + }); + }; + var items = Array.isArray(option.items) + ? buildItems(option.items) + : Object.keys(option.items).map(function (key) { + return ["optgroup", { "label": key }, buildItems(option.items[key])]; + }); + control = ["select", { id: key, value: value, onchange: function () { + self.setOption(option, this.value); + } }, items]; } - el.style.cssText = 'float:right;'; - div.appendChild(el); - return div; - } - function makeDropdown(item, esr, clss, fn) { - var val = editor.menuOptions[item]; - var currentVal = esr[fn](); - if (typeof currentVal == 'object') - currentVal = currentVal.$id; - val.forEach(function(valuex) { - if (valuex.value === currentVal) - valuex.selected = 'selected'; - }); - return createNewEntry(esr, clss, item, val); - } - function handleSet(setObj) { - var item = setObj.functionName; - var esr = setObj.parentObj; - var clss = setObj.parentName; - var val; - var fn = item.replace(/^set/, 'get'); - if(editor.menuOptions[item] !== undefined) { - elements.push(makeDropdown(item, esr, clss, fn)); - } else if(typeof esr[fn] === 'function') { - try { - val = esr[fn](); - if(typeof val === 'object') { - val = val.$id; - } - elements.push( - createNewEntry(esr, clss, item, val) - ); - } catch (e) { + else { + if (typeof option.values == "string") + option.values = option.values.split("|"); + if (option.values) + value = value == option.values[1]; + control = ["input", { type: "checkbox", id: key, checked: value || null, onchange: function () { + var value = this.checked; + if (option.values) + value = option.values[value ? 1 : 0]; + self.setOption(option, value); + } }]; + if (option.type == "checkedNumber") { + control = [control, []]; } } - } - addEditorMenuOptions(editor); - getSetFunctions(editor).forEach(function(setObj) { - handleSet(setObj); - }); - cleanupElementsList(); - return wrapElements(); -}; + return control; + }; + OptionPanel.prototype.renderOption = function (key, option) { + if (option.path && !option.onchange && !this.editor.$options[option.path]) + return; + var path = Array.isArray(option) ? option[0].path : option.path; + this.options[path] = option; + var safeKey = "-" + path; + var safeId = path + "-label"; + var control = this.renderOptionControl(safeKey, option); + return ["tr", { class: "ace_optionsMenuEntry" }, ["td", + ["label", { for: safeKey, id: safeId }, key] + ], ["td", control]]; + }; + OptionPanel.prototype.setOption = function (option, value) { + if (typeof option == "string") + option = this.options[option]; + if (value == "false") + value = false; + if (value == "true") + value = true; + if (value == "null") + value = null; + if (value == "undefined") + value = undefined; + if (typeof value == "string" && parseFloat(value).toString() == value) + value = parseFloat(value); + if (option.onchange) + option.onchange(value); + else if (option.path) + this.editor.setOption(option.path, value); + this._signal("setOption", { name: option.path, value: value }); + }; + OptionPanel.prototype.getOption = function (option) { + if (option.getValue) + return option.getValue(); + return this.editor.getOption(option.path); + }; + return OptionPanel; +}()); +oop.implement(OptionPanel.prototype, EventEmitter); +exports.OptionPanel = OptionPanel; }); -define("ace/ext/menu_tools/overlay_page",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -'use strict'; -var dom = require("../../lib/dom"); -var cssText = "#ace_settingsmenu, #kbshortcutmenu {\ -background-color: #F7F7F7;\ -color: black;\ -box-shadow: -5px 4px 5px rgba(126, 126, 126, 0.55);\ -padding: 1em 0.5em 2em 1em;\ -overflow: auto;\ -position: absolute;\ -margin: 0;\ -bottom: 0;\ -right: 0;\ -top: 0;\ -z-index: 9991;\ -cursor: default;\ -}\ -.ace_dark #ace_settingsmenu, .ace_dark #kbshortcutmenu {\ -box-shadow: -20px 10px 25px rgba(126, 126, 126, 0.25);\ -background-color: rgba(255, 255, 255, 0.6);\ -color: black;\ -}\ -.ace_optionsMenuEntry:hover {\ -background-color: rgba(100, 100, 100, 0.1);\ --webkit-transition: all 0.5s;\ -transition: all 0.3s\ -}\ -.ace_closeButton {\ -background: rgba(245, 146, 146, 0.5);\ -border: 1px solid #F48A8A;\ -border-radius: 50%;\ -padding: 7px;\ -position: absolute;\ -right: -8px;\ -top: -8px;\ -z-index: 1000;\ -}\ -.ace_closeButton{\ -background: rgba(245, 146, 146, 0.9);\ -}\ -.ace_optionsMenuKey {\ -color: darkslateblue;\ -font-weight: bold;\ -}\ -.ace_optionsMenuCommand {\ -color: darkcyan;\ -font-weight: normal;\ -}"; -dom.importCssString(cssText); -module.exports.overlayPage = function overlayPage(editor, contentElement, top, right, bottom, left) { - top = top ? 'top: ' + top + ';' : ''; - bottom = bottom ? 'bottom: ' + bottom + ';' : ''; - right = right ? 'right: ' + right + ';' : ''; - left = left ? 'left: ' + left + ';' : ''; - - var closer = document.createElement('div'); - var contentContainer = document.createElement('div'); - - function documentEscListener(e) { - if (e.keyCode === 27) { - closer.click(); - } - } - - closer.style.cssText = 'margin: 0; padding: 0; ' + - 'position: fixed; top:0; bottom:0; left:0; right:0;' + - 'z-index: 9990; ' + - 'background-color: rgba(0, 0, 0, 0.3);'; - closer.addEventListener('click', function() { - document.removeEventListener('keydown', documentEscListener); - closer.parentNode.removeChild(closer); - editor.focus(); - closer = null; - }); - document.addEventListener('keydown', documentEscListener); - - contentContainer.style.cssText = top + right + bottom + left; - contentContainer.addEventListener('click', function(e) { - e.stopPropagation(); - }); - - var wrapper = dom.createElement("div"); - wrapper.style.position = "relative"; - - var closeButton = dom.createElement("div"); - closeButton.className = "ace_closeButton"; - closeButton.addEventListener('click', function() { - closer.click(); - }); - - wrapper.appendChild(closeButton); - contentContainer.appendChild(wrapper); - - contentContainer.appendChild(contentElement); - closer.appendChild(contentContainer); - document.body.appendChild(closer); - editor.blur(); -}; - -}); - -define("ace/ext/settings_menu",["require","exports","module","ace/ext/menu_tools/generate_settings_menu","ace/ext/menu_tools/overlay_page","ace/editor"], function(require, exports, module) { +define("ace/ext/settings_menu",["require","exports","module","ace/ext/options","ace/ext/menu_tools/overlay_page","ace/editor"], function(require, exports, module){/*jslint indent: 4, maxerr: 50, white: true, browser: true, vars: true*/ "use strict"; -var generateSettingsMenu = require('./menu_tools/generate_settings_menu').generateSettingsMenu; +var OptionPanel = require("./options").OptionPanel; var overlayPage = require('./menu_tools/overlay_page').overlayPage; function showSettingsMenu(editor) { - var sm = document.getElementById('ace_settingsmenu'); - if (!sm) - overlayPage(editor, generateSettingsMenu(editor), '0', '0', '0'); + if (!document.getElementById('ace_settingsmenu')) { + var options = new OptionPanel(editor); + options.render(); + options.container.id = "ace_settingsmenu"; + overlayPage(editor, options.container); + options.container.querySelector("select,input,button,checkbox").focus(); + } } -module.exports.init = function(editor) { - var Editor = require("ace/editor").Editor; - Editor.prototype.showSettingsMenu = function() { +module.exports.init = function () { + var Editor = require("../editor").Editor; + Editor.prototype.showSettingsMenu = function () { showSettingsMenu(this); }; }; -}); - (function() { - window.require(["ace/ext/settings_menu"], function() {}); + +}); (function() { + window.require(["ace/ext/settings_menu"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-simple_tokenizer.js b/vendor/assets/javascripts/ace/ext-simple_tokenizer.js new file mode 100644 index 00000000..b1a91a06 --- /dev/null +++ b/vendor/assets/javascripts/ace/ext-simple_tokenizer.js @@ -0,0 +1,45 @@ +define("ace/ext/simple_tokenizer",["require","exports","module","ace/tokenizer","ace/layer/text_util"], function(require, exports, module){"use strict"; +var Tokenizer = require("../tokenizer").Tokenizer; +var isTextToken = require("../layer/text_util").isTextToken; +var SimpleTokenizer = /** @class */ (function () { + function SimpleTokenizer(content, tokenizer) { + this._lines = content.split(/\r\n|\r|\n/); + this._states = []; + this._tokenizer = tokenizer; + } + SimpleTokenizer.prototype.getTokens = function (row) { + var line = this._lines[row]; + var previousState = this._states[row - 1]; + var data = this._tokenizer.getLineTokens(line, previousState); + this._states[row] = data.state; + return data.tokens; + }; + SimpleTokenizer.prototype.getLength = function () { + return this._lines.length; + }; + return SimpleTokenizer; +}()); +function tokenize(content, highlightRules) { + var tokenizer = new SimpleTokenizer(content, new Tokenizer(highlightRules.getRules())); + var result = []; + for (var lineIndex = 0; lineIndex < tokenizer.getLength(); lineIndex++) { + var lineTokens = tokenizer.getTokens(lineIndex); + result.push(lineTokens.map(function (token) { return ({ + className: isTextToken(token.type) ? undefined : "ace_" + token.type.replace(/\./g, " ace_"), + value: token.value + }); })); + } + return result; +} +module.exports = { + tokenize: tokenize +}; + +}); (function() { + window.require(["ace/ext/simple_tokenizer"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-spellcheck.js b/vendor/assets/javascripts/ace/ext-spellcheck.js index f2cd9a8e..8f295a76 100644 --- a/vendor/assets/javascripts/ace/ext-spellcheck.js +++ b/vendor/assets/javascripts/ace/ext-spellcheck.js @@ -1,8 +1,6 @@ -define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; +define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"], function(require, exports, module){"use strict"; var event = require("../lib/event"); - -exports.contextMenuHandler = function(e){ +exports.contextMenuHandler = function (e) { var host = e.target; var text = host.textInput.getElement(); if (!host.selection.isEmpty()) @@ -10,7 +8,6 @@ exports.contextMenuHandler = function(e){ var c = host.getCursorPosition(); var r = host.session.getWordRange(c.row, c.column); var w = host.session.getTextRange(r); - host.session.tokenRe.lastIndex = 0; if (!host.session.tokenRe.test(w)) return; @@ -20,15 +17,12 @@ exports.contextMenuHandler = function(e){ text.setSelectionRange(w.length, w.length + 1); text.setSelectionRange(0, 0); text.setSelectionRange(0, w.length); - var afterKeydown = false; event.addListener(text, "keydown", function onKeydown() { event.removeListener(text, "keydown", onKeydown); afterKeydown = true; }); - - host.textInput.setInputHandler(function(newVal) { - console.log(newVal , value, text.selectionStart, text.selectionEnd); + host.textInput.setInputHandler(function (newVal) { if (newVal == value) return ''; if (newVal.lastIndexOf(value, 0) === 0) @@ -45,14 +39,13 @@ exports.contextMenuHandler = function(e){ return ""; } } - return newVal; }); }; var Editor = require("../editor").Editor; require("../config").defineOptions(Editor.prototype, "editor", { spellcheck: { - set: function(val) { + set: function (val) { var text = this.textInput.getElement(); text.spellcheck = !!val; if (!val) @@ -64,8 +57,11 @@ require("../config").defineOptions(Editor.prototype, "editor", { } }); -}); - (function() { - window.require(["ace/ext/spellcheck"], function() {}); +}); (function() { + window.require(["ace/ext/spellcheck"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-split.js b/vendor/assets/javascripts/ace/ext-split.js index 30a3f6f0..9cc75ccd 100644 --- a/vendor/assets/javascripts/ace/ext-split.js +++ b/vendor/assets/javascripts/ace/ext-split.js @@ -1,174 +1,150 @@ -define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"], function(require, exports, module) { -"use strict"; - +define("ace/split",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/editor","ace/virtual_renderer","ace/edit_session"], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var lang = require("./lib/lang"); var EventEmitter = require("./lib/event_emitter").EventEmitter; - var Editor = require("./editor").Editor; var Renderer = require("./virtual_renderer").VirtualRenderer; var EditSession = require("./edit_session").EditSession; - - -var Split = function(container, theme, splits) { +var Split; +Split = function (container, theme, splits) { this.BELOW = 1; this.BESIDE = 0; - this.$container = container; this.$theme = theme; this.$splits = 0; this.$editorCSS = ""; this.$editors = []; this.$orientation = this.BESIDE; - this.setSplits(splits || 1); this.$cEditor = this.$editors[0]; - - - this.on("focus", function(editor) { + this.on("focus", function (editor) { this.$cEditor = editor; }.bind(this)); }; - -(function(){ - +(function () { oop.implement(this, EventEmitter); - - this.$createEditor = function() { + this.$createEditor = function () { var el = document.createElement("div"); el.className = this.$editorCSS; el.style.cssText = "position: absolute; top:0px; bottom:0px"; this.$container.appendChild(el); var editor = new Editor(new Renderer(el, this.$theme)); - - editor.on("focus", function() { + editor.on("focus", function () { this._emit("focus", editor); }.bind(this)); - this.$editors.push(editor); editor.setFontSize(this.$fontSize); return editor; }; - - this.setSplits = function(splits) { + this.setSplits = function (splits) { var editor; if (splits < 1) { throw "The number of splits have to be > 0!"; } - if (splits == this.$splits) { return; - } else if (splits > this.$splits) { + } + else if (splits > this.$splits) { while (this.$splits < this.$editors.length && this.$splits < splits) { editor = this.$editors[this.$splits]; this.$container.appendChild(editor.container); editor.setFontSize(this.$fontSize); - this.$splits ++; + this.$splits++; } while (this.$splits < splits) { this.$createEditor(); - this.$splits ++; + this.$splits++; } - } else { + } + else { while (this.$splits > splits) { editor = this.$editors[this.$splits - 1]; this.$container.removeChild(editor.container); - this.$splits --; + this.$splits--; } } this.resize(); }; - this.getSplits = function() { + this.getSplits = function () { return this.$splits; }; - this.getEditor = function(idx) { + this.getEditor = function (idx) { return this.$editors[idx]; }; - this.getCurrentEditor = function() { + this.getCurrentEditor = function () { return this.$cEditor; }; - this.focus = function() { + this.focus = function () { this.$cEditor.focus(); }; - this.blur = function() { + this.blur = function () { this.$cEditor.blur(); }; - this.setTheme = function(theme) { - this.$editors.forEach(function(editor) { + this.setTheme = function (theme) { + this.$editors.forEach(function (editor) { editor.setTheme(theme); }); }; - this.setKeyboardHandler = function(keybinding) { - this.$editors.forEach(function(editor) { + this.setKeyboardHandler = function (keybinding) { + this.$editors.forEach(function (editor) { editor.setKeyboardHandler(keybinding); }); }; - this.forEach = function(callback, scope) { + this.forEach = function (callback, scope) { this.$editors.forEach(callback, scope); }; - - this.$fontSize = ""; - this.setFontSize = function(size) { + this.setFontSize = function (size) { this.$fontSize = size; - this.forEach(function(editor) { - editor.setFontSize(size); + this.forEach(function (editor) { + editor.setFontSize(size); }); }; - - this.$cloneSession = function(session) { + this.$cloneSession = function (session) { var s = new EditSession(session.getDocument(), session.getMode()); - var undoManager = session.getUndoManager(); - if (undoManager) { - var undoManagerProxy = new UndoManagerProxy(undoManager, s); - s.setUndoManager(undoManagerProxy); - } - s.$informUndoManager = lang.delayedCall(function() { s.$deltas = []; }); + s.setUndoManager(undoManager); s.setTabSize(session.getTabSize()); s.setUseSoftTabs(session.getUseSoftTabs()); s.setOverwrite(session.getOverwrite()); s.setBreakpoints(session.getBreakpoints()); s.setUseWrapMode(session.getUseWrapMode()); s.setUseWorker(session.getUseWorker()); - s.setWrapLimitRange(session.$wrapLimitRange.min, - session.$wrapLimitRange.max); + s.setWrapLimitRange(session.$wrapLimitRange.min, session.$wrapLimitRange.max); s.$foldData = session.$cloneFoldData(); - return s; }; - this.setSession = function(session, idx) { + this.setSession = function (session, idx) { var editor; if (idx == null) { editor = this.$cEditor; - } else { + } + else { editor = this.$editors[idx]; } - var isUsed = this.$editors.some(function(editor) { - return editor.session === session; + var isUsed = this.$editors.some(function (editor) { + return editor.session === session; }); - if (isUsed) { session = this.$cloneSession(session); } editor.setSession(session); return session; }; - this.getOrientation = function() { + this.getOrientation = function () { return this.$orientation; }; - this.setOrientation = function(orientation) { + this.setOrientation = function (orientation) { if (this.$orientation == orientation) { return; } this.$orientation = orientation; this.resize(); }; - this.resize = function() { + this.resize = function () { var width = this.$container.clientWidth; var height = this.$container.clientHeight; var editor; - if (this.$orientation == this.BESIDE) { var editorWidth = width / this.$splits; for (var i = 0; i < this.$splits; i++) { @@ -179,7 +155,8 @@ var Split = function(container, theme, splits) { editor.container.style.height = height + "px"; editor.resize(); } - } else { + } + else { var editorHeight = height / this.$splits; for (var i = 0; i < this.$splits; i++) { editor = this.$editors[i]; @@ -191,56 +168,19 @@ var Split = function(container, theme, splits) { } } }; - }).call(Split.prototype); - - -function UndoManagerProxy(undoManager, session) { - this.$u = undoManager; - this.$doc = session; -} - -(function() { - this.execute = function(options) { - this.$u.execute(options); - }; - - this.undo = function() { - var selectionRange = this.$u.undo(true); - if (selectionRange) { - this.$doc.selection.setSelectionRange(selectionRange); - } - }; - - this.redo = function() { - var selectionRange = this.$u.redo(true); - if (selectionRange) { - this.$doc.selection.setSelectionRange(selectionRange); - } - }; - - this.reset = function() { - this.$u.reset(); - }; - - this.hasUndo = function() { - return this.$u.hasUndo(); - }; - - this.hasRedo = function() { - return this.$u.hasRedo(); - }; -}).call(UndoManagerProxy.prototype); - exports.Split = Split; + }); -define("ace/ext/split",["require","exports","module","ace/split"], function(require, exports, module) { -"use strict"; +define("ace/ext/split",["require","exports","module","ace/split"], function(require, exports, module){"use strict"; module.exports = require("../split"); -}); - (function() { - window.require(["ace/ext/split"], function() {}); +}); (function() { + window.require(["ace/ext/split"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-static_highlight.js b/vendor/assets/javascripts/ace/ext-static_highlight.js index 497d5130..8adb2e30 100644 --- a/vendor/assets/javascripts/ace/ext-static_highlight.js +++ b/vendor/assets/javascripts/ace/ext-static_highlight.js @@ -1,59 +1,74 @@ -define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/config","ace/lib/dom"], function(require, exports, module) { -"use strict"; +define("ace/ext/static-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace_static_highlight {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', 'Droid Sans Mono', monospace;\n font-size: 12px;\n white-space: pre-wrap\n}\n\n.ace_static_highlight .ace_gutter {\n width: 2em;\n text-align: right;\n padding: 0 3px 0 0;\n margin-right: 3px;\n contain: none;\n}\n\n.ace_static_highlight.ace_show_gutter .ace_line {\n padding-left: 2.6em;\n}\n\n.ace_static_highlight .ace_line { position: relative; }\n\n.ace_static_highlight .ace_gutter-cell {\n -moz-user-select: -moz-none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n top: 0;\n bottom: 0;\n left: 0;\n position: absolute;\n}\n\n\n.ace_static_highlight .ace_gutter-cell:before {\n content: counter(ace_line, decimal);\n counter-increment: ace_line;\n}\n.ace_static_highlight {\n counter-reset: ace_line;\n}\n"; +}); + +define("ace/ext/static_highlight",["require","exports","module","ace/edit_session","ace/layer/text","ace/ext/static-css","ace/config","ace/lib/dom","ace/lib/lang"], function(require, exports, module){"use strict"; var EditSession = require("../edit_session").EditSession; var TextLayer = require("../layer/text").Text; -var baseStyles = ".ace_static_highlight {\ -font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', 'Droid Sans Mono', monospace;\ -font-size: 12px;\ -white-space: pre-wrap\ -}\ -.ace_static_highlight .ace_gutter {\ -width: 2em;\ -text-align: right;\ -padding: 0 3px 0 0;\ -margin-right: 3px;\ -}\ -.ace_static_highlight.ace_show_gutter .ace_line {\ -padding-left: 2.6em;\ -}\ -.ace_static_highlight .ace_line { position: relative; }\ -.ace_static_highlight .ace_gutter-cell {\ --moz-user-select: -moz-none;\ --khtml-user-select: none;\ --webkit-user-select: none;\ -user-select: none;\ -top: 0;\ -bottom: 0;\ -left: 0;\ -position: absolute;\ -}\ -.ace_static_highlight .ace_gutter-cell:before {\ -content: counter(ace_line, decimal);\ -counter-increment: ace_line;\ -}\ -.ace_static_highlight {\ -counter-reset: ace_line;\ -}\ -"; +var baseStyles = require("./static-css"); var config = require("../config"); var dom = require("../lib/dom"); - -var SimpleTextLayer = function() { +var escapeHTML = require("../lib/lang").escapeHTML; +var Element = /** @class */ (function () { + function Element(type) { this.className; + this.type = type; + this.style = {}; + this.textContent = ""; + } + Element.prototype.cloneNode = function () { + return this; + }; + Element.prototype.appendChild = function (child) { + this.textContent += child.toString(); + }; + Element.prototype.toString = function () { + var stringBuilder = []; + if (this.type != "fragment") { + stringBuilder.push("<", this.type); + if (this.className) + stringBuilder.push(" class='", this.className, "'"); + var styleStr = []; + for (var key in this.style) { + styleStr.push(key, ":", this.style[key]); + } + if (styleStr.length) + stringBuilder.push(" style='", styleStr.join(""), "'"); + stringBuilder.push(">"); + } + if (this.textContent) { + stringBuilder.push(this.textContent); + } + if (this.type != "fragment") { + stringBuilder.push(""); + } + return stringBuilder.join(""); + }; + return Element; +}()); +var simpleDom = { + createTextNode: function (/** @type {string} */ textContent, /** @type {any} */ element) { + return escapeHTML(textContent); + }, + createElement: function (/** @type {string} */ type) { + return new Element(type); + }, + createFragment: function () { + return new Element("fragment"); + } +}; +var SimpleTextLayer = function () { this.config = {}; + this.dom = simpleDom; }; SimpleTextLayer.prototype = TextLayer.prototype; - -var highlight = function(el, opts, callback) { +var highlight = function (el, opts, callback) { var m = el.className.match(/lang-(\w+)/); var mode = opts.mode || m && ("ace/mode/" + m[1]); if (!mode) return false; var theme = opts.theme || "ace/theme/textmate"; - var data = ""; var nodes = []; - if (el.firstElementChild) { var textLen = 0; for (var i = 0; i < el.childNodes.length; i++) { @@ -61,18 +76,19 @@ var highlight = function(el, opts, callback) { if (ch.nodeType == 3) { textLen += ch.data.length; data += ch.data; - } else { + } + else { nodes.push(textLen, ch); } } - } else { - data = dom.getInnerText(el); + } + else { + data = el.textContent; if (opts.trim) data = data.trim(); } - highlight.render(data, mode, theme, opts.firstLineNumber, !opts.showGutter, function (highlighted) { - dom.importCssString(highlighted.css, "ace_highlight"); + dom.importCssString(highlighted.css, "ace_highlight", true); el.innerHTML = highlighted.html; var container = el.firstChild.firstChild; for (var i = 0; i < nodes.length; i += 2) { @@ -84,12 +100,12 @@ var highlight = function(el, opts, callback) { callback && callback(); }); }; -highlight.render = function(input, mode, theme, lineStart, disableGutter, callback) { +highlight.render = function (input, mode, theme, lineStart, disableGutter, callback) { var waiting = 1; var modeCache = EditSession.prototype.$modes; if (typeof theme == "string") { waiting++; - config.loadModule(['theme', theme], function(m) { + config.loadModule(['theme', theme], function (m) { theme = m; --waiting || done(); }); @@ -101,10 +117,10 @@ highlight.render = function(input, mode, theme, lineStart, disableGutter, callba } if (typeof mode == "string") { waiting++; - config.loadModule(['mode', mode], function(m) { - if (!modeCache[mode] || modeOptions) - modeCache[mode] = new m.Mode(modeOptions); - mode = modeCache[mode]; + config.loadModule(['mode', mode], function (m) { + if (!modeCache[ /**@type{string}*/(mode)] || modeOptions) + modeCache[ /**@type{string}*/(mode)] = new m.Mode(modeOptions); + mode = modeCache[ /**@type{string}*/(mode)]; --waiting || done(); }); } @@ -114,48 +130,55 @@ highlight.render = function(input, mode, theme, lineStart, disableGutter, callba } return --waiting || done(); }; -highlight.renderSync = function(input, mode, theme, lineStart, disableGutter) { +highlight.renderSync = function (input, mode, theme, lineStart, disableGutter) { lineStart = parseInt(lineStart || 1, 10); - var session = new EditSession(""); session.setUseWorker(false); session.setMode(mode); - var textLayer = new SimpleTextLayer(); textLayer.setSession(session); - + Object.keys(textLayer.$tabStrings).forEach(function (k) { + if (typeof textLayer.$tabStrings[k] == "string") { + var el = simpleDom.createFragment(); + el.textContent = textLayer.$tabStrings[k]; + textLayer.$tabStrings[k] = el; + } + }); session.setValue(input); - - var stringBuilder = []; - var length = session.getLength(); - - for(var ix = 0; ix < length; ix++) { - stringBuilder.push("
"); - if (!disableGutter) - stringBuilder.push("" + /*(ix + lineStart) + */ ""); - textLayer.$renderLine(stringBuilder, ix, true, false); - stringBuilder.push("\n
"); + var length = session.getLength(); + var outerEl = simpleDom.createElement("div"); + outerEl.className = theme.cssClass; + var innerEl = simpleDom.createElement("div"); + innerEl.className = "ace_static_highlight" + (disableGutter ? "" : " ace_show_gutter"); + innerEl.style["counter-reset"] = "ace_line " + (lineStart - 1); + for (var ix = 0; ix < length; ix++) { + var lineEl = simpleDom.createElement("div"); + lineEl.className = "ace_line"; + if (!disableGutter) { + var gutterEl = simpleDom.createElement("span"); + gutterEl.className = "ace_gutter ace_gutter-cell"; + gutterEl.textContent = ""; + lineEl.appendChild(gutterEl); + } + textLayer.$renderLine(lineEl, ix, false); + lineEl.textContent += "\n"; + innerEl.appendChild(lineEl); } - var html = "
" + - "
" + - stringBuilder.join("") + - "
" + - "
"; - - textLayer.destroy(); - + outerEl.appendChild(innerEl); return { css: baseStyles + theme.cssText, - html: html, + html: outerEl.toString(), session: session }; }; - module.exports = highlight; module.exports.highlight = highlight; -}); - (function() { - window.require(["ace/ext/static_highlight"], function() {}); + +}); (function() { + window.require(["ace/ext/static_highlight"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-statusbar.js b/vendor/assets/javascripts/ace/ext-statusbar.js index 6d88ad44..a71b32a4 100644 --- a/vendor/assets/javascripts/ace/ext-statusbar.js +++ b/vendor/assets/javascripts/ace/ext-statusbar.js @@ -1,53 +1,48 @@ -define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"], function(require, exports, module) { -"use strict"; -var dom = require("ace/lib/dom"); -var lang = require("ace/lib/lang"); - -var StatusBar = function(editor, parentNode) { - this.element = dom.createElement("div"); - this.element.className = "ace_status-indicator"; - this.element.style.cssText = "display: inline-block;"; - parentNode.appendChild(this.element); - - var statusUpdate = lang.delayedCall(function(){ - this.updateStatus(editor); - }.bind(this)).schedule.bind(null, 100); - - editor.on("changeStatus", statusUpdate); - editor.on("changeSelection", statusUpdate); - editor.on("keyboardActivity", statusUpdate); -}; - -(function(){ - this.updateStatus = function(editor) { +define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"], function(require, exports, module){"use strict"; +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var StatusBar = /** @class */ (function () { + function StatusBar(editor, parentNode) { + this.element = dom.createElement("div"); + this.element.className = "ace_status-indicator"; + this.element.style.cssText = "display: inline-block;"; + parentNode.appendChild(this.element); + var statusUpdate = lang.delayedCall(function () { + this.updateStatus(editor); + }.bind(this)).schedule.bind(null, 100); + editor.on("changeStatus", statusUpdate); + editor.on("changeSelection", statusUpdate); + editor.on("keyboardActivity", statusUpdate); + } + StatusBar.prototype.updateStatus = function (editor) { var status = []; function add(str, separator) { str && status.push(str, separator || "|"); } - add(editor.keyBinding.getStatusText(editor)); if (editor.commands.recording) add("REC"); - var sel = editor.selection; var c = sel.lead; - if (!sel.isEmpty()) { var r = editor.getSelectionRange(); - add("(" + (r.end.row - r.start.row) + ":" +(r.end.column - r.start.column) + ")", " "); + add("(" + (r.end.row - r.start.row) + ":" + (r.end.column - r.start.column) + ")", " "); } - add(c.row + ":" + c.column, " "); + add(c.row + ":" + c.column, " "); if (sel.rangeCount) add("[" + sel.rangeCount + "]", " "); status.pop(); this.element.textContent = status.join(""); }; -}).call(StatusBar.prototype); - + return StatusBar; +}()); exports.StatusBar = StatusBar; -}); - (function() { - window.require(["ace/ext/statusbar"], function() {}); +}); (function() { + window.require(["ace/ext/statusbar"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-textarea.js b/vendor/assets/javascripts/ace/ext-textarea.js index ac25e7e7..f3860db3 100644 --- a/vendor/assets/javascripts/ace/ext-textarea.js +++ b/vendor/assets/javascripts/ace/ext-textarea.js @@ -1,187 +1,47 @@ -define("ace/theme/textmate",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - -exports.isDark = false; -exports.cssClass = "ace-tm"; -exports.cssText = ".ace-tm .ace_gutter {\ -background: #f0f0f0;\ -color: #333;\ -}\ -.ace-tm .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-tm .ace_fold {\ -background-color: #6B72E6;\ -}\ -.ace-tm {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-tm .ace_cursor {\ -color: black;\ -}\ -.ace-tm .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-tm .ace_storage,\ -.ace-tm .ace_keyword {\ -color: blue;\ -}\ -.ace-tm .ace_constant {\ -color: rgb(197, 6, 11);\ -}\ -.ace-tm .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-tm .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-tm .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_invalid {\ -background-color: rgba(255, 0, 0, 0.1);\ -color: red;\ -}\ -.ace-tm .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-tm .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_support.ace_type,\ -.ace-tm .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-tm .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-tm .ace_string {\ -color: rgb(3, 106, 7);\ -}\ -.ace-tm .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-tm .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-tm .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-tm .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-tm .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-tm .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-tm .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-tm .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-tm .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-tm .ace_meta.ace_tag {\ -color:rgb(0, 22, 142);\ -}\ -.ace-tm .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-tm .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-tm.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -}\ -.ace-tm .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-tm .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-tm .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-tm .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-tm .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-tm .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-tm .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); - -define("ace/ext/textarea",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/net","ace/ace","ace/theme/textmate"], function(require, exports, module) { -"use strict"; - +define("ace/ext/textarea",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/ace"], function(require, exports, module){"use strict"; var event = require("../lib/event"); var UA = require("../lib/useragent"); -var net = require("../lib/net"); var ace = require("../ace"); - -require("../theme/textmate"); - module.exports = exports = ace; -var getCSSProperty = function(element, container, property) { +var getCSSProperty = function (element, container, property) { var ret = element.style[property]; - if (!ret) { if (window.getComputedStyle) { ret = window.getComputedStyle(element, '').getPropertyValue(property); - } else { + } + else { ret = element.currentStyle[property]; } } - if (!ret || ret == 'auto' || ret == 'intrinsic') { ret = container.style[property]; } return ret; }; - function applyStyles(elm, styles) { for (var style in styles) { elm.style[style] = styles[style]; } } - function setupContainer(element, getValue) { if (element.type != 'textarea') { throw new Error("Textarea required!"); } - var parentNode = element.parentNode; var container = document.createElement('div'); - var resizeEvent = function() { + var resizeEvent = function () { var style = 'position:relative;'; [ 'margin-top', 'margin-left', 'margin-right', 'margin-bottom' - ].forEach(function(item) { + ].forEach(function (item) { style += item + ':' + - getCSSProperty(element, container, item) + ';'; + getCSSProperty(element, container, item) + ';'; }); var width = getCSSProperty(element, container, 'width') || (element.clientWidth + "px"); - var height = getCSSProperty(element, container, 'height') || (element.clientHeight + "px"); + var height = getCSSProperty(element, container, 'height') || (element.clientHeight + "px"); style += 'height:' + height + ';width:' + width + ';'; style += 'display:inline-block;'; - container.setAttribute('style', style); + container.style.cssText = style; }; event.addListener(window, 'resize', resizeEvent); resizeEvent(); @@ -189,7 +49,7 @@ function setupContainer(element, getValue) { while (parentNode !== document) { if (parentNode.tagName.toUpperCase() === 'FORM') { var oldSumit = parentNode.onsubmit; - parentNode.onsubmit = function(evt) { + parentNode.onsubmit = function (evt) { element.value = getValue(); if (oldSumit) { oldSumit.call(this, evt); @@ -201,10 +61,10 @@ function setupContainer(element, getValue) { } return container; } - -exports.transformTextarea = function(element, options) { +exports.transformTextarea = function (element, options) { + var isFocused = element.autofocus || document.activeElement == element; var session; - var container = setupContainer(element, function() { + var container = setupContainer(element, function () { return session.getValue(); }); element.style.display = 'none'; @@ -219,21 +79,16 @@ exports.transformTextarea = function(element, options) { position: "absolute" }); container.appendChild(editorDiv); - var settingOpener = document.createElement("div"); applyStyles(settingOpener, { position: "absolute", right: "0px", bottom: "0px", - background: "red", cursor: "nw-resize", - borderStyle: "solid", - borderWidth: "9px 8px 10px 9px", - width: "2px", - borderColor: "lightblue gray gray lightblue", + border: "solid 9px", + borderColor: "lightblue gray gray #ceade6", zIndex: 101 }); - var settingDiv = document.createElement("div"); var settingDivStyles = { top: "0px", @@ -251,71 +106,57 @@ exports.transformTextarea = function(element, options) { }; if (!UA.isOldIE) { settingDivStyles.backgroundColor = "rgba(0, 0, 0, 0.6)"; - } else { + } + else { settingDivStyles.backgroundColor = "#333"; } - applyStyles(settingDiv, settingDivStyles); container.appendChild(settingDiv); - options = options || exports.defaultOptions; var editor = ace.edit(editorDiv); session = editor.getSession(); - session.setValue(element.value || element.innerHTML); - editor.focus(); + if (isFocused) + editor.focus(); container.appendChild(settingOpener); - setupApi(editor, editorDiv, settingDiv, ace, options, load); + setupApi(editor, editorDiv, settingDiv, ace, options); setupSettingPanel(settingDiv, settingOpener, editor); - var state = ""; - event.addListener(settingOpener, "mousemove", function(e) { + event.addListener(settingOpener, "mousemove", function (e) { var rect = this.getBoundingClientRect(); var x = e.clientX - rect.left, y = e.clientY - rect.top; - if (x + y < (rect.width + rect.height)/2) { + if (x + y < (rect.width + rect.height) / 2) { this.style.cursor = "pointer"; state = "toggle"; - } else { + } + else { state = "resize"; this.style.cursor = "nw-resize"; } }); - - event.addListener(settingOpener, "mousedown", function(e) { + event.addListener(settingOpener, "mousedown", function (e) { + e.preventDefault(); if (state == "toggle") { editor.setDisplaySettings(); return; } - container.style.zIndex = 100000; + container.style.zIndex = "100000"; var rect = container.getBoundingClientRect(); - var startX = rect.width + rect.left - e.clientX; - var startY = rect.height + rect.top - e.clientY; - event.capture(settingOpener, function(e) { + var startX = rect.width + rect.left - e.clientX; + var startY = rect.height + rect.top - e.clientY; + event.capture(settingOpener, function (e) { container.style.width = e.clientX - rect.left + startX + "px"; container.style.height = e.clientY - rect.top + startY + "px"; editor.resize(); - }, function() {}); + }, function () { }); }); - return editor; }; - -function load(url, module, callback) { - net.loadScript(url, function() { - require([module], callback); - }); -} - -function setupApi(editor, editorDiv, settingDiv, ace, options, loader) { - var session = editor.getSession(); - var renderer = editor.renderer; - loader = loader || load; - +function setupApi(editor, editorDiv, settingDiv, ace, options) { function toBool(value) { return value === "true" || value == true; } - - editor.setDisplaySettings = function(display) { + editor.setDisplaySettings = function (display) { if (display == null) display = settingDiv.style.display == "none"; if (display) { @@ -325,21 +166,21 @@ function setupApi(editor, editorDiv, settingDiv, ace, options, loader) { editor.removeListener("focus", onFocus); settingDiv.style.display = "none"; }); - } else { + } + else { editor.focus(); } }; - editor.$setOption = editor.setOption; editor.$getOption = editor.getOption; - editor.setOption = function(key, value) { + editor.setOption = function (key, value) { switch (key) { case "mode": editor.$setOption("mode", "ace/mode/" + value); - break; + break; case "theme": editor.$setOption("theme", "ace/theme/" + value); - break; + break; case "keybindings": switch (value) { case "vim": @@ -351,28 +192,23 @@ function setupApi(editor, editorDiv, settingDiv, ace, options, loader) { default: editor.setKeyboardHandler(null); } - break; - - case "softWrap": + break; + case "wrap": case "fontSize": editor.$setOption(key, value); - break; - + break; default: editor.$setOption(key, toBool(value)); } }; - - editor.getOption = function(key) { + editor.getOption = function (key) { switch (key) { case "mode": return editor.$getOption("mode").substr("ace/mode/".length); - break; - + break; case "theme": return editor.$getOption("theme").substr("ace/theme/".length); - break; - + break; case "keybindings": var value = editor.getKeyboardHandler(); switch (value && value.$id) { @@ -383,78 +219,73 @@ function setupApi(editor, editorDiv, settingDiv, ace, options, loader) { default: return "ace"; } - break; - + break; default: return editor.$getOption(key); } }; - editor.setOptions(options); return editor; } - function setupSettingPanel(settingDiv, settingOpener, editor) { var BOOL = null; - var desc = { - mode: "Mode:", - wrap: "Soft Wrap:", - theme: "Theme:", - fontSize: "Font Size:", - showGutter: "Display Gutter:", - keybindings: "Keyboard", + mode: "Mode:", + wrap: "Soft Wrap:", + theme: "Theme:", + fontSize: "Font Size:", + showGutter: "Display Gutter:", + keybindings: "Keyboard", showPrintMargin: "Show Print Margin:", - useSoftTabs: "Use Soft Tabs:", - showInvisibles: "Show Invisibles" + useSoftTabs: "Use Soft Tabs:", + showInvisibles: "Show Invisibles" }; - var optionValues = { mode: { - text: "Plain", + text: "Plain", javascript: "JavaScript", - xml: "XML", - html: "HTML", - css: "CSS", - scss: "SCSS", - python: "Python", - php: "PHP", - java: "Java", - ruby: "Ruby", - c_cpp: "C/C++", - coffee: "CoffeeScript", - json: "json", - perl: "Perl", - clojure: "Clojure", - ocaml: "OCaml", - csharp: "C#", - haxe: "haXe", - svg: "SVG", - textile: "Textile", - groovy: "Groovy", - liquid: "Liquid", - Scala: "Scala" + xml: "XML", + html: "HTML", + css: "CSS", + scss: "SCSS", + python: "Python", + php: "PHP", + java: "Java", + ruby: "Ruby", + c_cpp: "C/C++", + coffee: "CoffeeScript", + json: "json", + perl: "Perl", + clojure: "Clojure", + ocaml: "OCaml", + csharp: "C#", + haxe: "haXe", + svg: "SVG", + textile: "Textile", + groovy: "Groovy", + liquid: "Liquid", + Scala: "Scala" }, theme: { - clouds: "Clouds", - clouds_midnight: "Clouds Midnight", - cobalt: "Cobalt", - crimson_editor: "Crimson Editor", - dawn: "Dawn", - gob: "Green on Black", - eclipse: "Eclipse", - idle_fingers: "Idle Fingers", - kr_theme: "Kr Theme", - merbivore: "Merbivore", - merbivore_soft: "Merbivore Soft", - mono_industrial: "Mono Industrial", - monokai: "Monokai", - pastel_on_dark: "Pastel On Dark", - solarized_dark: "Solarized Dark", - solarized_light: "Solarized Light", - textmate: "Textmate", - twilight: "Twilight", - vibrant_ink: "Vibrant Ink" + clouds: "Clouds", + clouds_midnight: "Clouds Midnight", + cobalt: "Cobalt", + crimson_editor: "Crimson Editor", + dawn: "Dawn", + gob: "Green on Black", + eclipse: "Eclipse", + idle_fingers: "Idle Fingers", + kr_theme: "Kr Theme", + merbivore: "Merbivore", + merbivore_soft: "Merbivore Soft", + mono_industrial: "Mono Industrial", + monokai: "Monokai", + pastel_on_dark: "Pastel On Dark", + solarized_dark: "Solarized Dark", + solarized_light: "Solarized Light", + textmate: "Textmate", + twilight: "Twilight", + vibrant_ink: "Vibrant Ink" }, showGutter: BOOL, fontSize: { @@ -465,48 +296,37 @@ function setupSettingPanel(settingDiv, settingOpener, editor) { "16px": "16px" }, wrap: { - off: "Off", - 40: "40", - 80: "80", - free: "Free" + off: "Off", + 40: "40", + 80: "80", + free: "Free" }, keybindings: { ace: "ace", vim: "vim", emacs: "emacs" }, - showPrintMargin: BOOL, - useSoftTabs: BOOL, - showInvisibles: BOOL + showPrintMargin: BOOL, + useSoftTabs: BOOL, + showInvisibles: BOOL }; - var table = []; table.push(""); - function renderOption(builder, option, obj, cValue) { if (!obj) { - builder.push( - "" - ); + builder.push(""); return; } builder.push(""); } - for (var option in exports.defaultOptions) { table.push(""); table.push("
SettingValue
", desc[option], ""); @@ -515,12 +335,11 @@ function setupSettingPanel(settingDiv, settingOpener, editor) { } table.push("
"); settingDiv.innerHTML = table.join(""); - - var onChange = function(e) { + var onChange = function (e) { var select = e.currentTarget; editor.setOption(select.title, select.value); }; - var onClick = function(e) { + var onClick = function (e) { var cb = e.currentTarget; editor.setOption(cb.title, cb.checked); }; @@ -530,31 +349,32 @@ function setupSettingPanel(settingDiv, settingOpener, editor) { var cbs = settingDiv.getElementsByTagName("input"); for (var i = 0; i < cbs.length; i++) cbs[i].onclick = onClick; - - var button = document.createElement("input"); button.type = "button"; button.value = "Hide"; - event.addListener(button, "click", function() { + event.addListener(button, "click", function () { editor.setDisplaySettings(false); }); settingDiv.appendChild(button); settingDiv.hideButton = button; } exports.defaultOptions = { - mode: "javascript", - theme: "textmate", - wrap: "off", - fontSize: "12px", - showGutter: "false", - keybindings: "ace", - showPrintMargin: "false", - useSoftTabs: "true", - showInvisibles: "false" + mode: "javascript", + theme: "textmate", + wrap: "off", + fontSize: "12px", + showGutter: "false", + keybindings: "ace", + showPrintMargin: "false", + useSoftTabs: "true", + showInvisibles: "false" }; -}); - (function() { - window.require(["ace/ext/textarea"], function() {}); +}); (function() { + window.require(["ace/ext/textarea"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-themelist.js b/vendor/assets/javascripts/ace/ext-themelist.js index 6b2d0569..caf6b85b 100644 --- a/vendor/assets/javascripts/ace/ext-themelist.js +++ b/vendor/assets/javascripts/ace/ext-themelist.js @@ -1,49 +1,57 @@ -define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"], function(require, exports, module) { +define("ace/ext/themelist",["require","exports","module"], function(require, exports, module){/** + * Generates a list of themes available when ace was built. + * @fileOverview Generates a list of themes available when ace was built. + * @author + * Matthew Christopher Kastor-Inare III
+ * ☭ Hial Atropa!! ☭ + */ "use strict"; -require("ace/lib/fixoldbrowsers"); - var themeData = [ - ["Chrome" ], - ["Clouds" ], - ["Crimson Editor" ], - ["Dawn" ], - ["Dreamweaver" ], - ["Eclipse" ], - ["GitHub" ], - ["IPlastic" ], + ["Chrome"], + ["Clouds"], + ["Crimson Editor"], + ["Dawn"], + ["Dreamweaver"], + ["Eclipse"], + ["GitHub"], + ["IPlastic"], ["Solarized Light"], - ["TextMate" ], - ["Tomorrow" ], - ["XCode" ], + ["TextMate"], + ["Tomorrow"], + ["XCode"], ["Kuroir"], ["KatzenMilch"], - ["SQL Server" ,"sqlserver" , "light"], - ["Ambiance" ,"ambiance" , "dark"], - ["Chaos" ,"chaos" , "dark"], - ["Clouds Midnight" ,"clouds_midnight" , "dark"], - ["Cobalt" ,"cobalt" , "dark"], - ["Gruvbox" ,"gruvbox" , "dark"], - ["Green on Black" ,"gob" , "dark"], - ["idle Fingers" ,"idle_fingers" , "dark"], - ["krTheme" ,"kr_theme" , "dark"], - ["Merbivore" ,"merbivore" , "dark"], - ["Merbivore Soft" ,"merbivore_soft" , "dark"], - ["Mono Industrial" ,"mono_industrial" , "dark"], - ["Monokai" ,"monokai" , "dark"], - ["Pastel on dark" ,"pastel_on_dark" , "dark"], - ["Solarized Dark" ,"solarized_dark" , "dark"], - ["Terminal" ,"terminal" , "dark"], - ["Tomorrow Night" ,"tomorrow_night" , "dark"], - ["Tomorrow Night Blue" ,"tomorrow_night_blue" , "dark"], - ["Tomorrow Night Bright","tomorrow_night_bright" , "dark"], - ["Tomorrow Night 80s" ,"tomorrow_night_eighties" , "dark"], - ["Twilight" ,"twilight" , "dark"], - ["Vibrant Ink" ,"vibrant_ink" , "dark"] + ["SQL Server", "sqlserver", "light"], + ["CloudEditor", "cloud_editor", "light"], + ["Ambiance", "ambiance", "dark"], + ["Chaos", "chaos", "dark"], + ["Clouds Midnight", "clouds_midnight", "dark"], + ["Dracula", "", "dark"], + ["Cobalt", "cobalt", "dark"], + ["Gruvbox", "gruvbox", "dark"], + ["Green on Black", "gob", "dark"], + ["idle Fingers", "idle_fingers", "dark"], + ["krTheme", "kr_theme", "dark"], + ["Merbivore", "merbivore", "dark"], + ["Merbivore Soft", "merbivore_soft", "dark"], + ["Mono Industrial", "mono_industrial", "dark"], + ["Monokai", "monokai", "dark"], + ["Nord Dark", "nord_dark", "dark"], + ["One Dark", "one_dark", "dark"], + ["Pastel on dark", "pastel_on_dark", "dark"], + ["Solarized Dark", "solarized_dark", "dark"], + ["Terminal", "terminal", "dark"], + ["Tomorrow Night", "tomorrow_night", "dark"], + ["Tomorrow Night Blue", "tomorrow_night_blue", "dark"], + ["Tomorrow Night Bright", "tomorrow_night_bright", "dark"], + ["Tomorrow Night 80s", "tomorrow_night_eighties", "dark"], + ["Twilight", "twilight", "dark"], + ["Vibrant Ink", "vibrant_ink", "dark"], + ["GitHub Dark", "github_dark", "dark"], + ["CloudEditor Dark", "cloud_editor_dark", "dark"] ]; - - exports.themesByName = {}; -exports.themes = themeData.map(function(data) { +exports.themes = themeData.map(function (data) { var name = data[1] || data[0].replace(/ /g, "_").toLowerCase(); var theme = { caption: data[0], @@ -55,8 +63,11 @@ exports.themes = themeData.map(function(data) { return theme; }); -}); - (function() { - window.require(["ace/ext/themelist"], function() {}); +}); (function() { + window.require(["ace/ext/themelist"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/ext-whitespace.js b/vendor/assets/javascripts/ace/ext-whitespace.js index aa6b0a8f..ea934551 100644 --- a/vendor/assets/javascripts/ace/ext-whitespace.js +++ b/vendor/assets/javascripts/ace/ext-whitespace.js @@ -1,8 +1,6 @@ -define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/ext/whitespace",["require","exports","module","ace/lib/lang"], function(require, exports, module){"use strict"; var lang = require("../lib/lang"); -exports.$detectIndentation = function(lines, fallback) { +exports.$detectIndentation = function (lines, fallback) { var stats = []; var changes = []; var tabIndents = 0; @@ -12,17 +10,16 @@ exports.$detectIndentation = function(lines, fallback) { var line = lines[i]; if (!/^\s*[^*+\-\s]/.test(line)) continue; - if (line[0] == "\t") { tabIndents++; prevSpaces = -Number.MAX_VALUE; - } else { + } + else { var spaces = line.match(/^ */)[0].length; if (spaces && line[spaces] != "\t") { var diff = spaces - prevSpaces; - if (diff > 0 && !(prevSpaces%diff) && !(spaces%diff)) + if (diff > 0 && !(prevSpaces % diff) && !(spaces % diff)) changes[diff] = (changes[diff] || 0) + 1; - stats[spaces] = (stats[spaces] || 0) + 1; } prevSpaces = spaces; @@ -30,17 +27,14 @@ exports.$detectIndentation = function(lines, fallback) { while (i < max && line[line.length - 1] == "\\") line = lines[i++]; } - function getScore(indent) { var score = 0; for (var i = indent; i < stats.length; i += indent) score += stats[i] || 0; return score; } - - var changesTotal = changes.reduce(function(a,b){return a+b;}, 0); - - var first = {score: 0, length: 0}; + var changesTotal = changes.reduce(function (a, b) { return a + b; }, 0); + var first = { score: 0, length: 0 }; var spaceIndents = 0; for (var i = 1; i < 12; i++) { var score = getScore(i); @@ -49,110 +43,97 @@ exports.$detectIndentation = function(lines, fallback) { score = stats[1] ? 0.9 : 0.8; if (!stats.length) score = 0; - } else + } + else score /= spaceIndents; - if (changes[i]) score += changes[i] / changesTotal; - if (score > first.score) - first = {score: score, length: i}; + first = { score: score, length: i }; } - if (first.score && first.score > 1.4) var tabLength = first.length; - if (tabIndents > spaceIndents + 1) { if (tabLength == 1 || spaceIndents < tabIndents / 4 || first.score < 1.8) tabLength = undefined; - return {ch: "\t", length: tabLength}; + return { ch: "\t", length: tabLength }; } if (spaceIndents > tabIndents + 1) - return {ch: " ", length: tabLength}; + return { ch: " ", length: tabLength }; }; - -exports.detectIndentation = function(session) { +exports.detectIndentation = function (session) { var lines = session.getLines(0, 1000); var indent = exports.$detectIndentation(lines) || {}; - if (indent.ch) session.setUseSoftTabs(indent.ch == " "); - if (indent.length) session.setTabSize(indent.length); return indent; }; -exports.trimTrailingSpace = function(session, options) { +exports.trimTrailingSpace = function (session, options) { var doc = session.getDocument(); var lines = doc.getAllLines(); - var min = options && options.trimEmpty ? -1 : 0; var cursors = [], ci = -1; if (options && options.keepCursorPosition) { if (session.selection.rangeCount) { - session.selection.rangeList.ranges.forEach(function(x, i, ranges) { - var next = ranges[i + 1]; - if (next && next.cursor.row == x.cursor.row) - return; - cursors.push(x.cursor); + session.selection.rangeList.ranges.forEach(function (x, i, ranges) { + var next = ranges[i + 1]; + if (next && next.cursor.row == x.cursor.row) + return; + cursors.push(x.cursor); }); - } else { + } + else { cursors.push(session.selection.getCursor()); } ci = 0; } var cursorRow = cursors[ci] && cursors[ci].row; - - for (var i = 0, l=lines.length; i < l; i++) { + for (var i = 0, l = lines.length; i < l; i++) { var line = lines[i]; var index = line.search(/\s+$/); - if (i == cursorRow) { if (index < cursors[ci].column && index > min) - index = cursors[ci].column; + index = cursors[ci].column; ci++; cursorRow = cursors[ci] ? cursors[ci].row : -1; } - if (index > min) doc.removeInLine(i, index, line.length); } }; - -exports.convertIndentation = function(session, ch, len) { +exports.convertIndentation = function (session, ch, len) { var oldCh = session.getTabString()[0]; var oldLen = session.getTabSize(); - if (!len) len = oldLen; - if (!ch) ch = oldCh; - - var tab = ch == "\t" ? ch: lang.stringRepeat(ch, len); - + if (!len) + len = oldLen; + if (!ch) + ch = oldCh; + var tab = ch == "\t" ? ch : lang.stringRepeat(ch, len); var doc = session.doc; var lines = doc.getAllLines(); - var cache = {}; var spaceCache = {}; - for (var i = 0, l=lines.length; i < l; i++) { + for (var i = 0, l = lines.length; i < l; i++) { var line = lines[i]; var match = line.match(/^\s*/)[0]; if (match) { var w = session.$getStringScreenWidth(match)[0]; - var tabCount = Math.floor(w/oldLen); - var reminder = w%oldLen; + var tabCount = Math.floor(w / oldLen); + var reminder = w % oldLen; var toInsert = cache[tabCount] || (cache[tabCount] = lang.stringRepeat(tab, tabCount)); toInsert += spaceCache[reminder] || (spaceCache[reminder] = lang.stringRepeat(" ", reminder)); - if (toInsert != match) { doc.removeInLine(i, 0, match.length); - doc.insertInLine({row: i, column: 0}, toInsert); + doc.insertInLine({ row: i, column: 0 }, toInsert); } } } session.setTabSize(len); session.setUseSoftTabs(ch == " "); }; - -exports.$parseStringArg = function(text) { +exports.$parseStringArg = function (text) { var indent = {}; if (/t/.test(text)) indent.ch = "\t"; @@ -163,8 +144,7 @@ exports.$parseStringArg = function(text) { indent.length = parseInt(m[0], 10); return indent; }; - -exports.$parseArg = function(arg) { +exports.$parseArg = function (arg) { if (!arg) return {}; if (typeof arg == "string") @@ -173,34 +153,40 @@ exports.$parseArg = function(arg) { return exports.$parseStringArg(arg.text); return arg; }; - exports.commands = [{ - name: "detectIndentation", - exec: function(editor) { - exports.detectIndentation(editor.session); - } -}, { - name: "trimTrailingSpace", - exec: function(editor) { - exports.trimTrailingSpace(editor.session); - } -}, { - name: "convertIndentation", - exec: function(editor, arg) { - var indent = exports.$parseArg(arg); - exports.convertIndentation(editor.session, indent.ch, indent.length); - } -}, { - name: "setIndentation", - exec: function(editor, arg) { - var indent = exports.$parseArg(arg); - indent.length && editor.session.setTabSize(indent.length); - indent.ch && editor.session.setUseSoftTabs(indent.ch == " "); - } -}]; + name: "detectIndentation", + description: "Detect indentation from content", + exec: function (editor) { + exports.detectIndentation(editor.session); + } + }, { + name: "trimTrailingSpace", + description: "Trim trailing whitespace", + exec: function (editor, args) { + exports.trimTrailingSpace(editor.session, args); + } + }, { + name: "convertIndentation", + description: "Convert indentation to ...", + exec: function (editor, arg) { + var indent = exports.$parseArg(arg); + exports.convertIndentation(editor.session, indent.ch, indent.length); + } + }, { + name: "setIndentation", + description: "Set indentation", + exec: function (editor, arg) { + var indent = exports.$parseArg(arg); + indent.length && editor.session.setTabSize(indent.length); + indent.ch && editor.session.setUseSoftTabs(indent.ch == " "); + } + }]; -}); - (function() { - window.require(["ace/ext/whitespace"], function() {}); +}); (function() { + window.require(["ace/ext/whitespace"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); })(); \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/keybinding-emacs.js b/vendor/assets/javascripts/ace/keybinding-emacs.js index 8a9c9cdd..e87dbaef 100644 --- a/vendor/assets/javascripts/ace/keybinding-emacs.js +++ b/vendor/assets/javascripts/ace/keybinding-emacs.js @@ -1,25 +1,38 @@ -define("ace/occur",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/edit_session","ace/search_highlight","ace/lib/dom"], function(require, exports, module) { -"use strict"; - +define("ace/occur",["require","exports","module","ace/lib/oop","ace/search","ace/edit_session","ace/search_highlight","ace/lib/dom"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var oop = require("./lib/oop"); -var Range = require("./range").Range; var Search = require("./search").Search; var EditSession = require("./edit_session").EditSession; var SearchHighlight = require("./search_highlight").SearchHighlight; -function Occur() {} - -oop.inherits(Occur, Search); - -(function() { - this.enter = function(editor, options) { - if (!options.needle) return false; +var Occur = /** @class */ (function (_super) { + __extends(Occur, _super); + function Occur() { + return _super !== null && _super.apply(this, arguments) || this; + } + Occur.prototype.enter = function (editor, options) { + if (!options.needle) + return false; var pos = editor.getCursorPosition(); this.displayOccurContent(editor, options); var translatedPos = this.originalToOccurPosition(editor.session, pos); editor.moveCursorToPosition(translatedPos); return true; }; - this.exit = function(editor, options) { + Occur.prototype.exit = function (editor, options) { var pos = options.translatePosition && editor.getCursorPosition(); var translatedPos = pos && this.occurToOriginalPosition(editor.session, pos); this.displayOriginalContent(editor); @@ -27,18 +40,15 @@ oop.inherits(Occur, Search); editor.moveCursorToPosition(translatedPos); return true; }; - - this.highlight = function(sess, regexp) { - var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker( - new SearchHighlight(null, "ace_occur-highlight", "text")); + Occur.prototype.highlight = function (sess, regexp) { + var hl = sess.$occurHighlight = sess.$occurHighlight || sess.addDynamicMarker(new SearchHighlight(null, "ace_occur-highlight", "text")); hl.setRegexp(regexp); sess._emit("changeBackMarker"); // force highlight layer redraw }; - - this.displayOccurContent = function(editor, options) { + Occur.prototype.displayOccurContent = function (editor, options) { this.$originalSession = editor.session; var found = this.matchingLines(editor.session, options); - var lines = found.map(function(foundLine) { return foundLine.content; }); + var lines = found.map(function (foundLine) { return foundLine.content; }); var occurSession = new EditSession(lines.join('\n')); occurSession.$occur = this; occurSession.$occurMatchingLines = found; @@ -48,71 +58,64 @@ oop.inherits(Occur, Search); this.highlight(occurSession, options.re); occurSession._emit('changeBackMarker'); }; - - this.displayOriginalContent = function(editor) { + Occur.prototype.displayOriginalContent = function (editor) { editor.setSession(this.$originalSession); this.$originalSession.$useEmacsStyleLineStart = this.$useEmacsStyleLineStart; }; - this.originalToOccurPosition = function(session, pos) { + Occur.prototype.originalToOccurPosition = function (session, pos) { var lines = session.$occurMatchingLines; - var nullPos = {row: 0, column: 0}; - if (!lines) return nullPos; + var nullPos = { row: 0, column: 0 }; + if (!lines) + return nullPos; for (var i = 0; i < lines.length; i++) { if (lines[i].row === pos.row) - return {row: i, column: pos.column}; + return { row: i, column: pos.column }; } return nullPos; }; - this.occurToOriginalPosition = function(session, pos) { + Occur.prototype.occurToOriginalPosition = function (session, pos) { var lines = session.$occurMatchingLines; if (!lines || !lines[pos.row]) return pos; - return {row: lines[pos.row].row, column: pos.column}; + return { row: lines[pos.row].row, column: pos.column }; }; - - this.matchingLines = function(session, options) { + Occur.prototype.matchingLines = function (session, options) { options = oop.mixin({}, options); - if (!session || !options.needle) return []; + if (!session || !options.needle) + return []; var search = new Search(); search.set(options); - return search.findAll(session).reduce(function(lines, range) { + return search.findAll(session).reduce(function (lines, range) { var row = range.start.row; - var last = lines[lines.length-1]; + var last = lines[lines.length - 1]; return last && last.row === row ? lines : - lines.concat({row: row, content: session.getLine(row)}); + lines.concat({ row: row, content: session.getLine(row) }); }, []); }; - -}).call(Occur.prototype); - + return Occur; +}(Search)); var dom = require('./lib/dom'); dom.importCssString(".ace_occur-highlight {\n\ border-radius: 4px;\n\ background-color: rgba(87, 255, 8, 0.25);\n\ position: absolute;\n\ z-index: 4;\n\ - -moz-box-sizing: border-box;\n\ - -webkit-box-sizing: border-box;\n\ box-sizing: border-box;\n\ box-shadow: 0 0 4px rgb(91, 255, 50);\n\ }\n\ .ace_dark .ace_occur-highlight {\n\ background-color: rgb(80, 140, 85);\n\ box-shadow: 0 0 4px rgb(60, 120, 70);\n\ -}\n", "incremental-occur-highlighting"); - +}\n", "incremental-occur-highlighting", false); exports.Occur = Occur; }); -define("ace/commands/occur_commands",["require","exports","module","ace/config","ace/occur","ace/keyboard/hash_handler","ace/lib/oop"], function(require, exports, module) { - -var config = require("../config"), - Occur = require("../occur").Occur; +define("ace/commands/occur_commands",["require","exports","module","ace/config","ace/occur","ace/keyboard/hash_handler","ace/lib/oop"], function(require, exports, module){var config = require("../config"), Occur = require("../occur").Occur; var occurStartCommand = { name: "occur", - exec: function(editor, options) { + exec: function (editor, options) { var alreadyInOccur = !!editor.session.$occur; var occurSessionActive = new Occur().enter(editor, options); if (occurSessionActive && !alreadyInOccur) @@ -120,214 +123,195 @@ var occurStartCommand = { }, readOnly: true }; - var occurCommands = [{ - name: "occurexit", - bindKey: 'esc|Ctrl-G', - exec: function(editor) { - var occur = editor.session.$occur; - if (!occur) return; - occur.exit(editor, {}); - if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); - }, - readOnly: true -}, { - name: "occuraccept", - bindKey: 'enter', - exec: function(editor) { - var occur = editor.session.$occur; - if (!occur) return; - occur.exit(editor, {translatePosition: true}); - if (!editor.session.$occur) OccurKeyboardHandler.uninstallFrom(editor); - }, - readOnly: true -}]; - + name: "occurexit", + bindKey: 'esc|Ctrl-G', + exec: function (editor) { + var occur = editor.session.$occur; + if (!occur) + return; + occur.exit(editor, {}); + if (!editor.session.$occur) + OccurKeyboardHandler.uninstallFrom(editor); + }, + readOnly: true + }, { + name: "occuraccept", + bindKey: 'enter', + exec: function (editor) { + var occur = editor.session.$occur; + if (!occur) + return; + occur.exit(editor, { translatePosition: true }); + if (!editor.session.$occur) + OccurKeyboardHandler.uninstallFrom(editor); + }, + readOnly: true + }]; var HashHandler = require("../keyboard/hash_handler").HashHandler; var oop = require("../lib/oop"); - - -function OccurKeyboardHandler() {} - +function OccurKeyboardHandler() { } oop.inherits(OccurKeyboardHandler, HashHandler); - -(function() { - +(function () { this.isOccurHandler = true; - - this.attach = function(editor) { + this.attach = function (editor) { HashHandler.call(this, occurCommands, editor.commands.platform); this.$editor = editor; }; - var handleKeyboard$super = this.handleKeyboard; - this.handleKeyboard = function(data, hashId, key, keyCode) { + this.handleKeyboard = function (data, hashId, key, keyCode) { var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); return (cmd && cmd.command) ? cmd : undefined; }; - }).call(OccurKeyboardHandler.prototype); - -OccurKeyboardHandler.installIn = function(editor) { +OccurKeyboardHandler.installIn = function (editor) { var handler = new this(); editor.keyBinding.addKeyboardHandler(handler); editor.commands.addCommands(occurCommands); }; - -OccurKeyboardHandler.uninstallFrom = function(editor) { +OccurKeyboardHandler.uninstallFrom = function (editor) { editor.commands.removeCommands(occurCommands); var handler = editor.getKeyboardHandler(); if (handler.isOccurHandler) editor.keyBinding.removeKeyboardHandler(handler); }; - exports.occurStartCommand = occurStartCommand; }); -define("ace/commands/incremental_search_commands",["require","exports","module","ace/config","ace/lib/oop","ace/keyboard/hash_handler","ace/commands/occur_commands"], function(require, exports, module) { - -var config = require("../config"); +define("ace/commands/incremental_search_commands",["require","exports","module","ace/config","ace/lib/oop","ace/keyboard/hash_handler","ace/commands/occur_commands"], function(require, exports, module){var config = require("../config"); var oop = require("../lib/oop"); var HashHandler = require("../keyboard/hash_handler").HashHandler; var occurStartCommand = require("./occur_commands").occurStartCommand; exports.iSearchStartCommands = [{ - name: "iSearch", - bindKey: {win: "Ctrl-F", mac: "Command-F"}, - exec: function(editor, options) { - config.loadModule(["core", "ace/incremental_search"], function(e) { - var iSearch = e.iSearch = e.iSearch || new e.IncrementalSearch(); - iSearch.activate(editor, options.backwards); - if (options.jumpToFirstMatch) iSearch.next(options); - }); - }, - readOnly: true -}, { - name: "iSearchBackwards", - exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {backwards: true}); }, - readOnly: true -}, { - name: "iSearchAndGo", - bindKey: {win: "Ctrl-K", mac: "Command-G"}, - exec: function(editor, jumpToNext) { editor.execCommand('iSearch', {jumpToFirstMatch: true, useCurrentOrPrevSearch: true}); }, - readOnly: true -}, { - name: "iSearchBackwardsAndGo", - bindKey: {win: "Ctrl-Shift-K", mac: "Command-Shift-G"}, - exec: function(editor) { editor.execCommand('iSearch', {jumpToFirstMatch: true, backwards: true, useCurrentOrPrevSearch: true}); }, - readOnly: true -}]; + name: "iSearch", + bindKey: { win: "Ctrl-F", mac: "Command-F" }, + exec: function (editor, options) { + config.loadModule(["core", "ace/incremental_search"], function (e) { + var iSearch = e.iSearch = e.iSearch || new e.IncrementalSearch(); + iSearch.activate(editor, options.backwards); + if (options.jumpToFirstMatch) + iSearch.next(options); + }); + }, + readOnly: true + }, { + name: "iSearchBackwards", + exec: function (editor, jumpToNext) { editor.execCommand('iSearch', { backwards: true }); }, + readOnly: true + }, { + name: "iSearchAndGo", + bindKey: { win: "Ctrl-K", mac: "Command-G" }, + exec: function (editor, jumpToNext) { editor.execCommand('iSearch', { jumpToFirstMatch: true, useCurrentOrPrevSearch: true }); }, + readOnly: true + }, { + name: "iSearchBackwardsAndGo", + bindKey: { win: "Ctrl-Shift-K", mac: "Command-Shift-G" }, + exec: function (editor) { editor.execCommand('iSearch', { jumpToFirstMatch: true, backwards: true, useCurrentOrPrevSearch: true }); }, + readOnly: true + }]; exports.iSearchCommands = [{ - name: "restartSearch", - bindKey: {win: "Ctrl-F", mac: "Command-F"}, - exec: function(iSearch) { - iSearch.cancelSearch(true); - } -}, { - name: "searchForward", - bindKey: {win: "Ctrl-S|Ctrl-K", mac: "Ctrl-S|Command-G"}, - exec: function(iSearch, options) { - options.useCurrentOrPrevSearch = true; - iSearch.next(options); - } -}, { - name: "searchBackward", - bindKey: {win: "Ctrl-R|Ctrl-Shift-K", mac: "Ctrl-R|Command-Shift-G"}, - exec: function(iSearch, options) { - options.useCurrentOrPrevSearch = true; - options.backwards = true; - iSearch.next(options); - } -}, { - name: "extendSearchTerm", - exec: function(iSearch, string) { - iSearch.addString(string); - } -}, { - name: "extendSearchTermSpace", - bindKey: "space", - exec: function(iSearch) { iSearch.addString(' '); } -}, { - name: "shrinkSearchTerm", - bindKey: "backspace", - exec: function(iSearch) { - iSearch.removeChar(); - } -}, { - name: 'confirmSearch', - bindKey: 'return', - exec: function(iSearch) { iSearch.deactivate(); } -}, { - name: 'cancelSearch', - bindKey: 'esc|Ctrl-G', - exec: function(iSearch) { iSearch.deactivate(true); } -}, { - name: 'occurisearch', - bindKey: 'Ctrl-O', - exec: function(iSearch) { - var options = oop.mixin({}, iSearch.$options); - iSearch.deactivate(); - occurStartCommand.exec(iSearch.$editor, options); - } -}, { - name: "yankNextWord", - bindKey: "Ctrl-w", - exec: function(iSearch) { - var ed = iSearch.$editor, - range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorWordRight(); }), - string = ed.session.getTextRange(range); - iSearch.addString(string); - } -}, { - name: "yankNextChar", - bindKey: "Ctrl-Alt-y", - exec: function(iSearch) { - var ed = iSearch.$editor, - range = ed.selection.getRangeOfMovements(function(sel) { sel.moveCursorRight(); }), - string = ed.session.getTextRange(range); - iSearch.addString(string); - } -}, { - name: 'recenterTopBottom', - bindKey: 'Ctrl-l', - exec: function(iSearch) { iSearch.$editor.execCommand('recenterTopBottom'); } -}, { - name: 'selectAllMatches', - bindKey: 'Ctrl-space', - exec: function(iSearch) { - var ed = iSearch.$editor, - hl = ed.session.$isearchHighlight, - ranges = hl && hl.cache ? hl.cache - .reduce(function(ranges, ea) { - return ranges.concat(ea ? ea : []); }, []) : []; - iSearch.deactivate(false); - ranges.forEach(ed.selection.addRange.bind(ed.selection)); - } -}, { - name: 'searchAsRegExp', - bindKey: 'Alt-r', - exec: function(iSearch) { - iSearch.convertNeedleToRegExp(); - } -}].map(function(cmd) { + name: "restartSearch", + bindKey: { win: "Ctrl-F", mac: "Command-F" }, + exec: function (iSearch) { + iSearch.cancelSearch(true); + } + }, { + name: "searchForward", + bindKey: { win: "Ctrl-S|Ctrl-K", mac: "Ctrl-S|Command-G" }, + exec: function (iSearch, options) { + options.useCurrentOrPrevSearch = true; + iSearch.next(options); + } + }, { + name: "searchBackward", + bindKey: { win: "Ctrl-R|Ctrl-Shift-K", mac: "Ctrl-R|Command-Shift-G" }, + exec: function (iSearch, options) { + options.useCurrentOrPrevSearch = true; + options.backwards = true; + iSearch.next(options); + } + }, { + name: "extendSearchTerm", + exec: function (iSearch, string) { + iSearch.addString(string); + } + }, { + name: "extendSearchTermSpace", + bindKey: "space", + exec: function (iSearch) { iSearch.addString(' '); } + }, { + name: "shrinkSearchTerm", + bindKey: "backspace", + exec: function (iSearch) { + iSearch.removeChar(); + } + }, { + name: 'confirmSearch', + bindKey: 'return', + exec: function (iSearch) { iSearch.deactivate(); } + }, { + name: 'cancelSearch', + bindKey: 'esc|Ctrl-G', + exec: function (iSearch) { iSearch.deactivate(true); } + }, { + name: 'occurisearch', + bindKey: 'Ctrl-O', + exec: function (iSearch) { + var options = oop.mixin({}, iSearch.$options); + iSearch.deactivate(); + occurStartCommand.exec(iSearch.$editor, options); + } + }, { + name: "yankNextWord", + bindKey: "Ctrl-w", + exec: function (iSearch) { + var ed = iSearch.$editor, range = ed.selection.getRangeOfMovements(function (sel) { sel.moveCursorWordRight(); }), string = ed.session.getTextRange(range); + iSearch.addString(string); + } + }, { + name: "yankNextChar", + bindKey: "Ctrl-Alt-y", + exec: function (iSearch) { + var ed = iSearch.$editor, range = ed.selection.getRangeOfMovements(function (sel) { sel.moveCursorRight(); }), string = ed.session.getTextRange(range); + iSearch.addString(string); + } + }, { + name: 'recenterTopBottom', + bindKey: 'Ctrl-l', + exec: function (iSearch) { iSearch.$editor.execCommand('recenterTopBottom'); } + }, { + name: 'selectAllMatches', + bindKey: 'Ctrl-space', + exec: function (iSearch) { + var ed = iSearch.$editor, hl = ed.session.$isearchHighlight, ranges = hl && hl.cache ? hl.cache + .reduce(function (ranges, ea) { + return ranges.concat(ea ? ea : []); + }, []) : []; + iSearch.deactivate(false); + ranges.forEach(ed.selection.addRange.bind(ed.selection)); + } + }, { + name: 'searchAsRegExp', + bindKey: 'Alt-r', + exec: function (iSearch) { + iSearch.convertNeedleToRegExp(); + } + }].map(function (cmd) { cmd.readOnly = true; cmd.isIncrementalSearchCommand = true; cmd.scrollIntoView = "animate-cursor"; return cmd; }); - function IncrementalSearchKeyboardHandler(iSearch) { this.$iSearch = iSearch; } - oop.inherits(IncrementalSearchKeyboardHandler, HashHandler); - -(function() { - - this.attach = function(editor) { +(function () { + this.attach = function (editor) { var iSearch = this.$iSearch; HashHandler.call(this, exports.iSearchCommands, editor.commands.platform); - this.$commandExecHandler = editor.commands.addEventListener('exec', function(e) { + this.$commandExecHandler = editor.commands.on('exec', function (e) { if (!e.command.isIncrementalSearchCommand) return iSearch.deactivate(); e.stopPropagation(); @@ -339,129 +323,134 @@ oop.inherits(IncrementalSearchKeyboardHandler, HashHandler); return result; }); }; - - this.detach = function(editor) { - if (!this.$commandExecHandler) return; - editor.commands.removeEventListener('exec', this.$commandExecHandler); + this.detach = function (editor) { + if (!this.$commandExecHandler) + return; + editor.commands.off('exec', this.$commandExecHandler); delete this.$commandExecHandler; }; - var handleKeyboard$super = this.handleKeyboard; - this.handleKeyboard = function(data, hashId, key, keyCode) { - if (((hashId === 1/*ctrl*/ || hashId === 8/*command*/) && key === 'v') - || (hashId === 1/*ctrl*/ && key === 'y')) return null; + this.handleKeyboard = function (data, hashId, key, keyCode) { + if (((hashId === 1 /*ctrl*/ || hashId === 8 /*command*/) && key === 'v') + || (hashId === 1 /*ctrl*/ && key === 'y')) + return null; var cmd = handleKeyboard$super.call(this, data, hashId, key, keyCode); - if (cmd.command) { return cmd; } + if (cmd && cmd.command) { + return cmd; + } if (hashId == -1) { var extendCmd = this.commands.extendSearchTerm; - if (extendCmd) { return {command: extendCmd, args: key}; } + if (extendCmd) { + return { command: extendCmd, args: key }; + } } return false; }; - }).call(IncrementalSearchKeyboardHandler.prototype); - - exports.IncrementalSearchKeyboardHandler = IncrementalSearchKeyboardHandler; }); -define("ace/incremental_search",["require","exports","module","ace/lib/oop","ace/range","ace/search","ace/search_highlight","ace/commands/incremental_search_commands","ace/lib/dom","ace/commands/command_manager","ace/editor","ace/config"], function(require, exports, module) { -"use strict"; - -var oop = require("./lib/oop"); +define("ace/incremental_search",["require","exports","module","ace/range","ace/search","ace/search_highlight","ace/commands/incremental_search_commands","ace/lib/dom","ace/commands/command_manager","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); var Range = require("./range").Range; var Search = require("./search").Search; var SearchHighlight = require("./search_highlight").SearchHighlight; var iSearchCommandModule = require("./commands/incremental_search_commands"); var ISearchKbd = iSearchCommandModule.IncrementalSearchKeyboardHandler; -function IncrementalSearch() { - this.$options = {wrap: false, skipCurrent: false}; - this.$keyboardHandler = new ISearchKbd(this); -} - -oop.inherits(IncrementalSearch, Search); - function isRegExp(obj) { return obj instanceof RegExp; } - function regExpToObject(re) { - var string = String(re), - start = string.indexOf('/'), - flagStart = string.lastIndexOf('/'); + var string = String(re), start = string.indexOf('/'), flagStart = string.lastIndexOf('/'); return { - expression: string.slice(start+1, flagStart), - flags: string.slice(flagStart+1) + expression: string.slice(start + 1, flagStart), + flags: string.slice(flagStart + 1) }; } - function stringToRegExp(string, flags) { try { return new RegExp(string, flags); - } catch (e) { return string; } + } + catch (e) { + return string; + } } - function objectToRegExp(obj) { return stringToRegExp(obj.expression, obj.flags); } - -(function() { - - this.activate = function(ed, backwards) { - this.$editor = ed; - this.$startPos = this.$currentPos = ed.getCursorPosition(); +var IncrementalSearch = /** @class */ (function (_super) { + __extends(IncrementalSearch, _super); + function IncrementalSearch() { + var _this = _super.call(this) || this; + _this.$options = { wrap: false, skipCurrent: false }; + _this.$keyboardHandler = new ISearchKbd(_this); + return _this; + } + IncrementalSearch.prototype.activate = function (editor, backwards) { + this.$editor = editor; + this.$startPos = this.$currentPos = editor.getCursorPosition(); this.$options.needle = ''; this.$options.backwards = backwards; - ed.keyBinding.addKeyboardHandler(this.$keyboardHandler); - this.$originalEditorOnPaste = ed.onPaste; ed.onPaste = this.onPaste.bind(this); - this.$mousedownHandler = ed.addEventListener('mousedown', this.onMouseDown.bind(this)); - this.selectionFix(ed); + editor.keyBinding.addKeyboardHandler(this.$keyboardHandler); + this.$originalEditorOnPaste = editor.onPaste; + editor.onPaste = this.onPaste.bind(this); + this.$mousedownHandler = editor.on('mousedown', this.onMouseDown.bind(this)); + this.selectionFix(editor); this.statusMessage(true); }; - - this.deactivate = function(reset) { + IncrementalSearch.prototype.deactivate = function (reset) { this.cancelSearch(reset); - var ed = this.$editor; - ed.keyBinding.removeKeyboardHandler(this.$keyboardHandler); + var editor = this.$editor; + editor.keyBinding.removeKeyboardHandler(this.$keyboardHandler); if (this.$mousedownHandler) { - ed.removeEventListener('mousedown', this.$mousedownHandler); + editor.off('mousedown', this.$mousedownHandler); delete this.$mousedownHandler; } - ed.onPaste = this.$originalEditorOnPaste; + editor.onPaste = this.$originalEditorOnPaste; this.message(''); }; - - this.selectionFix = function(editor) { + IncrementalSearch.prototype.selectionFix = function (editor) { if (editor.selection.isEmpty() && !editor.session.$emacsMark) { editor.clearSelection(); } }; - - this.highlight = function(regexp) { - var sess = this.$editor.session, - hl = sess.$isearchHighlight = sess.$isearchHighlight || sess.addDynamicMarker( - new SearchHighlight(null, "ace_isearch-result", "text")); + IncrementalSearch.prototype.highlight = function (regexp) { + var sess = this.$editor.session, hl = sess.$isearchHighlight = sess.$isearchHighlight || sess.addDynamicMarker(new SearchHighlight(null, "ace_isearch-result", "text")); hl.setRegexp(regexp); sess._emit("changeBackMarker"); // force highlight layer redraw }; - - this.cancelSearch = function(reset) { + IncrementalSearch.prototype.cancelSearch = function (reset) { var e = this.$editor; this.$prevNeedle = this.$options.needle; this.$options.needle = ''; if (reset) { e.moveCursorToPosition(this.$startPos); this.$currentPos = this.$startPos; - } else { + } + else { e.pushEmacsMark && e.pushEmacsMark(this.$startPos, false); } this.highlight(null); return Range.fromPoints(this.$currentPos, this.$currentPos); }; - - this.highlightAndFindWithNeedle = function(moveToNext, needleUpdateFunc) { - if (!this.$editor) return null; + IncrementalSearch.prototype.highlightAndFindWithNeedle = function (moveToNext, needleUpdateFunc) { + if (!this.$editor) + return null; var options = this.$options; if (needleUpdateFunc) { options.needle = needleUpdateFunc.call(this, options.needle || '') || ''; @@ -471,117 +460,86 @@ function objectToRegExp(obj) { return this.cancelSearch(true); } options.start = this.$currentPos; - var session = this.$editor.session, - found = this.find(session), - shouldSelect = this.$editor.emacsMark ? - !!this.$editor.emacsMark() : !this.$editor.selection.isEmpty(); + var session = this.$editor.session, found = this.find(session), shouldSelect = this.$editor.emacsMark ? + !!this.$editor.emacsMark() : !this.$editor.selection.isEmpty(); if (found) { - if (options.backwards) found = Range.fromPoints(found.end, found.start); + if (options.backwards) + found = Range.fromPoints(found.end, found.start); this.$editor.selection.setRange(Range.fromPoints(shouldSelect ? this.$startPos : found.end, found.end)); - if (moveToNext) this.$currentPos = found.end; + if (moveToNext) + this.$currentPos = found.end; this.highlight(options.re); } - this.statusMessage(found); - return found; }; - - this.addString = function(s) { - return this.highlightAndFindWithNeedle(false, function(needle) { + IncrementalSearch.prototype.addString = function (s) { + return this.highlightAndFindWithNeedle(false, function (needle) { if (!isRegExp(needle)) - return needle + s; + return needle + s; var reObj = regExpToObject(needle); reObj.expression += s; return objectToRegExp(reObj); }); }; - - this.removeChar = function(c) { - return this.highlightAndFindWithNeedle(false, function(needle) { + IncrementalSearch.prototype.removeChar = function (c) { + return this.highlightAndFindWithNeedle(false, function (needle) { if (!isRegExp(needle)) - return needle.substring(0, needle.length-1); + return needle.substring(0, needle.length - 1); var reObj = regExpToObject(needle); - reObj.expression = reObj.expression.substring(0, reObj.expression.length-1); + reObj.expression = reObj.expression.substring(0, reObj.expression.length - 1); return objectToRegExp(reObj); }); }; - - this.next = function(options) { + IncrementalSearch.prototype.next = function (options) { options = options || {}; this.$options.backwards = !!options.backwards; this.$currentPos = this.$editor.getCursorPosition(); - return this.highlightAndFindWithNeedle(true, function(needle) { + return this.highlightAndFindWithNeedle(true, function (needle) { return options.useCurrentOrPrevSearch && needle.length === 0 ? this.$prevNeedle || '' : needle; }); }; - - this.onMouseDown = function(evt) { + IncrementalSearch.prototype.onMouseDown = function (evt) { this.deactivate(); return true; }; - - this.onPaste = function(text) { + IncrementalSearch.prototype.onPaste = function (text) { this.addString(text); }; - - this.convertNeedleToRegExp = function() { - return this.highlightAndFindWithNeedle(false, function(needle) { + IncrementalSearch.prototype.convertNeedleToRegExp = function () { + return this.highlightAndFindWithNeedle(false, function (needle) { return isRegExp(needle) ? needle : stringToRegExp(needle, 'ig'); }); }; - - this.convertNeedleToString = function() { - return this.highlightAndFindWithNeedle(false, function(needle) { + IncrementalSearch.prototype.convertNeedleToString = function () { + return this.highlightAndFindWithNeedle(false, function (needle) { return isRegExp(needle) ? regExpToObject(needle).expression : needle; }); }; - - this.statusMessage = function(found) { + IncrementalSearch.prototype.statusMessage = function (found) { var options = this.$options, msg = ''; msg += options.backwards ? 'reverse-' : ''; msg += 'isearch: ' + options.needle; msg += found ? '' : ' (not found)'; this.message(msg); }; - - this.message = function(msg) { + IncrementalSearch.prototype.message = function (msg) { if (this.$editor.showCommandLine) { this.$editor.showCommandLine(msg); this.$editor.focus(); - } else { - console.log(msg); } }; - -}).call(IncrementalSearch.prototype); - - + return IncrementalSearch; +}(Search)); exports.IncrementalSearch = IncrementalSearch; - var dom = require('./lib/dom'); -dom.importCssString && dom.importCssString("\ -.ace_marker-layer .ace_isearch-result {\ - position: absolute;\ - z-index: 6;\ - -moz-box-sizing: border-box;\ - -webkit-box-sizing: border-box;\ - box-sizing: border-box;\ -}\ -div.ace_isearch-result {\ - border-radius: 4px;\ - background-color: rgba(255, 200, 0, 0.5);\ - box-shadow: 0 0 4px rgb(255, 200, 0);\ -}\ -.ace_dark div.ace_isearch-result {\ - background-color: rgb(100, 110, 160);\ - box-shadow: 0 0 4px rgb(80, 90, 140);\ -}", "incremental-search-highlighting"); +dom.importCssString("\n.ace_marker-layer .ace_isearch-result {\n position: absolute;\n z-index: 6;\n box-sizing: border-box;\n}\ndiv.ace_isearch-result {\n border-radius: 4px;\n background-color: rgba(255, 200, 0, 0.5);\n box-shadow: 0 0 4px rgb(255, 200, 0);\n}\n.ace_dark div.ace_isearch-result {\n background-color: rgb(100, 110, 160);\n box-shadow: 0 0 4px rgb(80, 90, 140);\n}", "incremental-search-highlighting", false); var commands = require("./commands/command_manager"); -(function() { - this.setupIncrementalSearch = function(editor, val) { - if (this.usesIncrementalSearch == val) return; +(function () { + this.setupIncrementalSearch = function (editor, val) { + if (this.usesIncrementalSearch == val) + return; this.usesIncrementalSearch = val; var iSearchCommands = iSearchCommandModule.iSearchStartCommands; var method = val ? 'addCommands' : 'removeCommands'; @@ -591,231 +549,164 @@ var commands = require("./commands/command_manager"); var Editor = require("./editor").Editor; require("./config").defineOptions(Editor.prototype, "editor", { useIncrementalSearch: { - set: function(val) { - this.keyBinding.$handlers.forEach(function(handler) { + set: function (val) { + this.keyBinding.$handlers.forEach(function (handler) { if (handler.setupIncrementalSearch) { handler.setupIncrementalSearch(this, val); } }); - this._emit('incrementalSearchSettingChanged', {isEnabled: val}); + this._emit('incrementalSearchSettingChanged', { isEnabled: val }); } } }); }); -define("ace/keyboard/emacs",["require","exports","module","ace/lib/dom","ace/incremental_search","ace/commands/incremental_search_commands","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module) { -"use strict"; - +define("ace/keyboard/emacs",["require","exports","module","ace/lib/dom","ace/incremental_search","ace/commands/incremental_search_commands","ace/keyboard/hash_handler","ace/lib/keys"], function(require, exports, module){"use strict"; var dom = require("../lib/dom"); require("../incremental_search"); var iSearchCommandModule = require("../commands/incremental_search_commands"); - - -var screenToTextBlockCoordinates = function(x, y) { - var canvasPos = this.scroller.getBoundingClientRect(); - var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding; - - var col = Math.floor(offsetX / this.characterWidth); - - var row = Math.floor( - (y + this.scrollTop - canvasPos.top) / this.lineHeight - ); - - return this.session.screenToDocumentPosition(row, col, offsetX); -}; - var HashHandler = require("./hash_handler").HashHandler; exports.handler = new HashHandler(); - exports.handler.isEmacs = true; exports.handler.$id = "ace/keyboard/emacs"; - -var initialized = false; +dom.importCssString("\n.emacs-mode .ace_cursor{\n border: 1px rgba(50,250,50,0.8) solid!important;\n box-sizing: border-box!important;\n background-color: rgba(0,250,0,0.9);\n opacity: 0.5;\n}\n.emacs-mode .ace_hidden-cursors .ace_cursor{\n opacity: 1;\n background-color: transparent;\n}\n.emacs-mode .ace_overwrite-cursors .ace_cursor {\n opacity: 1;\n background-color: transparent;\n border-width: 0 0 2px 2px !important;\n}\n.emacs-mode .ace_text-layer {\n z-index: 4\n}\n.emacs-mode .ace_cursor-layer {\n z-index: 2\n}", 'emacsMode'); var $formerLongWords; var $formerLineStart; - -exports.handler.attach = function(editor) { - if (!initialized) { - initialized = true; - dom.importCssString('\ - .emacs-mode .ace_cursor{\ - border: 1px rgba(50,250,50,0.8) solid!important;\ - -moz-box-sizing: border-box!important;\ - -webkit-box-sizing: border-box!important;\ - box-sizing: border-box!important;\ - background-color: rgba(0,250,0,0.9);\ - opacity: 0.5;\ - }\ - .emacs-mode .ace_hidden-cursors .ace_cursor{\ - opacity: 1;\ - background-color: transparent;\ - }\ - .emacs-mode .ace_overwrite-cursors .ace_cursor {\ - opacity: 1;\ - background-color: transparent;\ - border-width: 0 0 2px 2px !important;\ - }\ - .emacs-mode .ace_text-layer {\ - z-index: 4\ - }\ - .emacs-mode .ace_cursor-layer {\ - z-index: 2\ - }', 'emacsMode' - ); - } +exports.handler.attach = function (editor) { $formerLongWords = editor.session.$selectLongWords; editor.session.$selectLongWords = true; $formerLineStart = editor.session.$useEmacsStyleLineStart; editor.session.$useEmacsStyleLineStart = true; - editor.session.$emacsMark = null; // the active mark editor.session.$emacsMarkRing = editor.session.$emacsMarkRing || []; - - editor.emacsMark = function() { + editor.emacsMark = function () { return this.session.$emacsMark; }; - - editor.setEmacsMark = function(p) { + editor.setEmacsMark = function (p) { this.session.$emacsMark = p; }; - - editor.pushEmacsMark = function(p, activate) { + editor.pushEmacsMark = function (p, activate) { var prevMark = this.session.$emacsMark; if (prevMark) this.session.$emacsMarkRing.push(prevMark); - if (!p || activate) this.setEmacsMark(p); - else this.session.$emacsMarkRing.push(p); + if (!p || activate) + this.setEmacsMark(p); + else + this.session.$emacsMarkRing.push(p); }; - - editor.popEmacsMark = function() { + editor.popEmacsMark = function () { var mark = this.emacsMark(); - if (mark) { this.setEmacsMark(null); return mark; } + if (mark) { + this.setEmacsMark(null); + return mark; + } return this.session.$emacsMarkRing.pop(); }; - - editor.getLastEmacsMark = function(p) { + editor.getLastEmacsMark = function (p) { return this.session.$emacsMark || this.session.$emacsMarkRing.slice(-1)[0]; }; - - editor.emacsMarkForSelection = function(replacement) { - var sel = this.selection, - multiRangeLength = this.multiSelect ? - this.multiSelect.getAllRanges().length : 1, - selIndex = sel.index || 0, - markRing = this.session.$emacsMarkRing, - markIndex = markRing.length - (multiRangeLength - selIndex), - lastMark = markRing[markIndex] || sel.anchor; + editor.emacsMarkForSelection = function (replacement) { + var sel = this.selection, multiRangeLength = this.multiSelect ? + this.multiSelect.getAllRanges().length : 1, selIndex = sel.index || 0, markRing = this.session.$emacsMarkRing, markIndex = markRing.length - (multiRangeLength - selIndex), lastMark = markRing[markIndex] || sel.anchor; if (replacement) { - markRing.splice(markIndex, 1, - "row" in replacement && "column" in replacement ? - replacement : undefined); + markRing.splice(markIndex, 1, "row" in replacement && "column" in replacement ? + replacement : undefined); } return lastMark; }; - editor.on("click", $resetMarkMode); editor.on("changeSession", $kbSessionChange); - editor.renderer.screenToTextCoordinates = screenToTextBlockCoordinates; + editor.renderer.$blockCursor = true; editor.setStyle("emacs-mode"); editor.commands.addCommands(commands); exports.handler.platform = editor.commands.platform; editor.$emacsModeHandler = this; - editor.addEventListener('copy', this.onCopy); - editor.addEventListener('paste', this.onPaste); + editor.on('copy', this.onCopy); + editor.on('paste', this.onPaste); }; - -exports.handler.detach = function(editor) { - delete editor.renderer.screenToTextCoordinates; +exports.handler.detach = function (editor) { + editor.renderer.$blockCursor = false; editor.session.$selectLongWords = $formerLongWords; editor.session.$useEmacsStyleLineStart = $formerLineStart; - editor.removeEventListener("click", $resetMarkMode); - editor.removeEventListener("changeSession", $kbSessionChange); + editor.off("click", $resetMarkMode); + editor.off("changeSession", $kbSessionChange); editor.unsetStyle("emacs-mode"); editor.commands.removeCommands(commands); - editor.removeEventListener('copy', this.onCopy); - editor.removeEventListener('paste', this.onPaste); + editor.off('copy', this.onCopy); + editor.off('paste', this.onPaste); editor.$emacsModeHandler = null; }; - -var $kbSessionChange = function(e) { +var $kbSessionChange = function (e) { if (e.oldSession) { e.oldSession.$selectLongWords = $formerLongWords; e.oldSession.$useEmacsStyleLineStart = $formerLineStart; } - $formerLongWords = e.session.$selectLongWords; e.session.$selectLongWords = true; $formerLineStart = e.session.$useEmacsStyleLineStart; e.session.$useEmacsStyleLineStart = true; - if (!e.session.hasOwnProperty('$emacsMark')) e.session.$emacsMark = null; if (!e.session.hasOwnProperty('$emacsMarkRing')) e.session.$emacsMarkRing = []; }; - -var $resetMarkMode = function(e) { +var $resetMarkMode = function (e) { e.editor.session.$emacsMark = null; }; - var keys = require("../lib/keys").KEY_MODS; -var eMods = {C: "ctrl", S: "shift", M: "alt", CMD: "command"}; +var eMods = { C: "ctrl", S: "shift", M: "alt", CMD: "command" }; var combinations = ["C-S-M-CMD", - "S-M-CMD", "C-M-CMD", "C-S-CMD", "C-S-M", - "M-CMD", "S-CMD", "S-M", "C-CMD", "C-M", "C-S", - "CMD", "M", "S", "C"]; -combinations.forEach(function(c) { + "S-M-CMD", "C-M-CMD", "C-S-CMD", "C-S-M", + "M-CMD", "S-CMD", "S-M", "C-CMD", "C-M", "C-S", + "CMD", "M", "S", "C"]; +combinations.forEach(function (c) { var hashId = 0; - c.split("-").forEach(function(c) { + c.split("-").forEach(function (c) { hashId = hashId | keys[eMods[c]]; }); eMods[hashId] = c.toLowerCase() + "-"; }); - -exports.handler.onCopy = function(e, editor) { - if (editor.$handlesEmacsOnCopy) return; +exports.handler.onCopy = function (e, editor) { + if (editor.$handlesEmacsOnCopy) + return; editor.$handlesEmacsOnCopy = true; exports.handler.commands.killRingSave.exec(editor); editor.$handlesEmacsOnCopy = false; }; - -exports.handler.onPaste = function(e, editor) { +exports.handler.onPaste = function (e, editor) { editor.pushEmacsMark(editor.getCursorPosition()); }; - -exports.handler.bindKey = function(key, command) { +exports.handler.bindKey = function (key, command) { if (typeof key == "object") key = key[this.platform]; if (!key) return; - var ckb = this.commandKeyBinding; - key.split("|").forEach(function(keyPart) { + key.split("|").forEach(function (keyPart) { keyPart = keyPart.toLowerCase(); ckb[keyPart] = command; - var keyParts = keyPart.split(" ").slice(0,-1); - keyParts.reduce(function(keyMapKeys, keyPart, i) { - var prefix = keyMapKeys[i-1] ? keyMapKeys[i-1] + ' ' : ''; + var keyParts = keyPart.split(" ").slice(0, -1); + keyParts.reduce(function (keyMapKeys, keyPart, i) { + var prefix = keyMapKeys[i - 1] ? keyMapKeys[i - 1] + ' ' : ''; return keyMapKeys.concat([prefix + keyPart]); - }, []).forEach(function(keyPart) { - if (!ckb[keyPart]) ckb[keyPart] = "null"; + }, []).forEach(function (keyPart) { + if (!ckb[keyPart]) + ckb[keyPart] = "null"; }); }, this); }; - -exports.handler.getStatusText = function(editor, data) { - var str = ""; - if (data.count) - str += data.count; - if (data.keyChain) - str += " " + data.keyChain; - return str; +exports.handler.getStatusText = function (editor, data) { + var str = ""; + if (data.count) + str += data.count; + if (data.keyChain) + str += " " + data.keyChain; + return str; }; - -exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { - if (keyCode === -1) return undefined; - +exports.handler.handleKeyboard = function (data, hashId, key, keyCode) { + if (keyCode === -1) + return undefined; var editor = data.editor; editor._signal("changeStatus"); if (hashId == -1) { @@ -823,40 +714,42 @@ exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { if (data.count) { var str = new Array(data.count + 1).join(key); data.count = null; - return {command: "insertstring", args: str}; + return { command: "insertstring", args: str }; } } - var modifier = eMods[hashId]; if (modifier == "c-" || data.count) { var count = parseInt(key[key.length - 1]); if (typeof count === 'number' && !isNaN(count)) { data.count = Math.max(data.count, 0) || 0; data.count = 10 * data.count + count; - return {command: "null"}; + return { command: "null" }; } } - if (modifier) key = modifier + key; - if (data.keyChain) key = data.keyChain += " " + key; + if (modifier) + key = modifier + key; + if (data.keyChain) + key = data.keyChain += " " + key; var command = this.commandKeyBinding[key]; data.keyChain = command == "null" ? key : ""; - if (!command) return undefined; - if (command === "null") return {command: "null"}; - + if (!command) + return undefined; + if (command === "null") + return { command: "null" }; if (command === "universalArgument") { data.count = -4; - return {command: "null"}; + return { command: "null" }; } var args; if (typeof command !== "string") { args = command.args; - if (command.command) command = command.command; + if (command.command) + command = command.command; if (command === "goorselect") { command = editor.emacsMark() ? args[1] : args[0]; args = null; } } - if (typeof command === "string") { if (command === "insertstring" || command === "splitline" || @@ -864,15 +757,13 @@ exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { editor.pushEmacsMark(); } command = this.commands[command] || editor.commands.commands[command]; - if (!command) return undefined; + if (!command) + return undefined; } - if (!command.readOnly && !command.isYank) data.lastCommand = null; - if (!command.readOnly && editor.emacsMark()) editor.setEmacsMark(null); - if (data.count) { var count = data.count; data.count = 0; @@ -880,147 +771,134 @@ exports.handler.handleKeyboard = function(data, hashId, key, keyCode) { return { args: args, command: { - exec: function(editor, args) { + exec: function (editor, args) { for (var i = 0; i < count; i++) command.exec(editor, args); }, multiSelectAction: command.multiSelectAction } }; - } else { - if (!args) args = {}; - if (typeof args === 'object') args.count = count; + } + else { + if (!args) + args = {}; + if (typeof args === 'object') + args.count = count; } } - - return {command: command, args: args}; + return { command: command, args: args }; }; - exports.emacsKeys = { - "Up|C-p" : {command: "goorselect", args: ["golineup","selectup"]}, - "Down|C-n" : {command: "goorselect", args: ["golinedown","selectdown"]}, - "Left|C-b" : {command: "goorselect", args: ["gotoleft","selectleft"]}, - "Right|C-f" : {command: "goorselect", args: ["gotoright","selectright"]}, - "C-Left|M-b" : {command: "goorselect", args: ["gotowordleft","selectwordleft"]}, - "C-Right|M-f" : {command: "goorselect", args: ["gotowordright","selectwordright"]}, - "Home|C-a" : {command: "goorselect", args: ["gotolinestart","selecttolinestart"]}, - "End|C-e" : {command: "goorselect", args: ["gotolineend","selecttolineend"]}, - "C-Home|S-M-,": {command: "goorselect", args: ["gotostart","selecttostart"]}, - "C-End|S-M-." : {command: "goorselect", args: ["gotoend","selecttoend"]}, - "S-Up|S-C-p" : "selectup", - "S-Down|S-C-n" : "selectdown", - "S-Left|S-C-b" : "selectleft", - "S-Right|S-C-f" : "selectright", - "S-C-Left|S-M-b" : "selectwordleft", - "S-C-Right|S-M-f" : "selectwordright", - "S-Home|S-C-a" : "selecttolinestart", - "S-End|S-C-e" : "selecttolineend", - "S-C-Home" : "selecttostart", - "S-C-End" : "selecttoend", - - "C-l" : "recenterTopBottom", - "M-s" : "centerselection", + "Up|C-p": { command: "goorselect", args: ["golineup", "selectup"] }, + "Down|C-n": { command: "goorselect", args: ["golinedown", "selectdown"] }, + "Left|C-b": { command: "goorselect", args: ["gotoleft", "selectleft"] }, + "Right|C-f": { command: "goorselect", args: ["gotoright", "selectright"] }, + "C-Left|M-b": { command: "goorselect", args: ["gotowordleft", "selectwordleft"] }, + "C-Right|M-f": { command: "goorselect", args: ["gotowordright", "selectwordright"] }, + "Home|C-a": { command: "goorselect", args: ["gotolinestart", "selecttolinestart"] }, + "End|C-e": { command: "goorselect", args: ["gotolineend", "selecttolineend"] }, + "C-Home|S-M-,": { command: "goorselect", args: ["gotostart", "selecttostart"] }, + "C-End|S-M-.": { command: "goorselect", args: ["gotoend", "selecttoend"] }, + "S-Up|S-C-p": "selectup", + "S-Down|S-C-n": "selectdown", + "S-Left|S-C-b": "selectleft", + "S-Right|S-C-f": "selectright", + "S-C-Left|S-M-b": "selectwordleft", + "S-C-Right|S-M-f": "selectwordright", + "S-Home|S-C-a": "selecttolinestart", + "S-End|S-C-e": "selecttolineend", + "S-C-Home": "selecttostart", + "S-C-End": "selecttoend", + "C-l": "recenterTopBottom", + "M-s": "centerselection", "M-g": "gotoline", "C-x C-p": "selectall", - "C-Down": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, - "C-Up": {command: "goorselect", args: ["gotopageup","selectpageup"]}, - "PageDown|C-v": {command: "goorselect", args: ["gotopagedown","selectpagedown"]}, - "PageUp|M-v": {command: "goorselect", args: ["gotopageup","selectpageup"]}, + "C-Down": { command: "goorselect", args: ["gotopagedown", "selectpagedown"] }, + "C-Up": { command: "goorselect", args: ["gotopageup", "selectpageup"] }, + "PageDown|C-v": { command: "goorselect", args: ["gotopagedown", "selectpagedown"] }, + "PageUp|M-v": { command: "goorselect", args: ["gotopageup", "selectpageup"] }, "S-C-Down": "selectpagedown", "S-C-Up": "selectpageup", - "C-s": "iSearch", "C-r": "iSearchBackwards", - "M-C-s": "findnext", "M-C-r": "findprevious", "S-M-5": "replace", "Backspace": "backspace", "Delete|C-d": "del", - "Return|C-m": {command: "insertstring", args: "\n"}, // "newline" + "Return|C-m": { command: "insertstring", args: "\n" }, // "newline" "C-o": "splitline", - - "M-d|C-Delete": {command: "killWord", args: "right"}, - "C-Backspace|M-Backspace|M-Delete": {command: "killWord", args: "left"}, + "M-d|C-Delete": { command: "killWord", args: "right" }, + "C-Backspace|M-Backspace|M-Delete": { command: "killWord", args: "left" }, "C-k": "killLine", - "C-y|S-Delete": "yank", "M-y": "yankRotate", "C-g": "keyboardQuit", - "C-w|C-S-W": "killRegion", "M-w": "killRingSave", "C-Space": "setMark", "C-x C-x": "exchangePointAndMark", - "C-t": "transposeletters", - "M-u": "touppercase", // Doesn't work + "M-u": "touppercase", // Doesn't work "M-l": "tolowercase", - "M-/": "autocomplete", // Doesn't work + "M-/": "autocomplete", // Doesn't work "C-u": "universalArgument", - "M-;": "togglecomment", - "C-/|C-x u|S-C--|C-z": "undo", "S-C-/|S-C-x u|C--|S-C-z": "redo", // infinite undo? - "C-x r": "selectRectangularRegion", - "M-x": {command: "focusCommandLine", args: "M-x "} + "C-x r": "selectRectangularRegion", + "M-x": { command: "focusCommandLine", args: "M-x " } }; - - exports.handler.bindKeys(exports.emacsKeys); - exports.handler.addCommands({ - recenterTopBottom: function(editor) { + recenterTopBottom: function (editor) { var renderer = editor.renderer; var pos = renderer.$cursorLayer.getPixelPosition(); var h = renderer.$size.scrollerHeight - renderer.lineHeight; var scrollTop = renderer.scrollTop; if (Math.abs(pos.top - scrollTop) < 2) { scrollTop = pos.top - h; - } else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) { + } + else if (Math.abs(pos.top - scrollTop - h * 0.5) < 2) { scrollTop = pos.top; - } else { + } + else { scrollTop = pos.top - h * 0.5; } editor.session.setScrollTop(scrollTop); }, - selectRectangularRegion: function(editor) { + selectRectangularRegion: function (editor) { editor.multiSelect.toggleBlockSelection(); }, - setMark: { - exec: function(editor, args) { - + setMark: { + exec: function (editor, args) { if (args && args.count) { - if (editor.inMultiSelectMode) editor.forEachSelection(moveToMark); - else moveToMark(); + if (editor.inMultiSelectMode) + editor.forEachSelection(moveToMark); + else + moveToMark(); moveToMark(); return; } - - var mark = editor.emacsMark(), - ranges = editor.selection.getAllRanges(), - rangePositions = ranges.map(function(r) { return {row: r.start.row, column: r.start.column}; }), - transientMarkModeActive = true, - hasNoSelection = ranges.every(function(range) { return range.isEmpty(); }); + var mark = editor.emacsMark(), ranges = editor.selection.getAllRanges(), rangePositions = ranges.map(function (r) { return { row: r.start.row, column: r.start.column }; }), transientMarkModeActive = true, hasNoSelection = ranges.every(function (range) { return range.isEmpty(); }); if (transientMarkModeActive && (mark || !hasNoSelection)) { - if (editor.inMultiSelectMode) editor.forEachSelection({exec: editor.clearSelection.bind(editor)}); - else editor.clearSelection(); - if (mark) editor.pushEmacsMark(null); + if (editor.inMultiSelectMode) + editor.forEachSelection({ exec: editor.clearSelection.bind(editor) }); + else + editor.clearSelection(); + if (mark) + editor.pushEmacsMark(null); return; } - if (!mark) { - rangePositions.forEach(function(pos) { editor.pushEmacsMark(pos); }); - editor.setEmacsMark(rangePositions[rangePositions.length-1]); + rangePositions.forEach(function (pos) { editor.pushEmacsMark(pos); }); + editor.setEmacsMark(rangePositions[rangePositions.length - 1]); return; } - function moveToMark() { var mark = editor.popEmacsMark(); mark && editor.moveCursorToPosition(mark); } - }, readOnly: true, handlesCount: true @@ -1032,12 +910,12 @@ exports.handler.addCommands({ sel.setSelectionRange(sel.getRange(), !sel.isBackwards()); return; } - if (args.count) { // replace mark and point - var pos = {row: sel.lead.row, column: sel.lead.column}; + var pos = { row: sel.lead.row, column: sel.lead.column }; sel.clearSelection(); sel.moveCursorToPosition(editor.emacsMarkForSelection(pos)); - } else { // create selection to last mark + } + else { // create selection to last mark sel.selectToPosition(editor.emacsMarkForSelection()); } }, @@ -1046,30 +924,27 @@ exports.handler.addCommands({ multiSelectAction: "forEach" }, killWord: { - exec: function(editor, dir) { + exec: function (editor, dir) { editor.clearSelection(); if (dir == "left") editor.selection.selectWordLeft(); else editor.selection.selectWordRight(); - var range = editor.getSelectionRange(); var text = editor.session.getTextRange(range); exports.killRing.add(text); - editor.session.remove(range); editor.clearSelection(); }, multiSelectAction: "forEach" }, - killLine: function(editor) { + killLine: function (editor) { editor.pushEmacsMark(null); editor.clearSelection(); var range = editor.getSelectionRange(); var line = editor.session.getLine(range.start.row); range.end.column = line.length; line = line.substr(range.start.column); - var foldLine = editor.session.getFoldLine(range.start.row); if (foldLine && range.end.row != foldLine.end.row) { range.end.row = foldLine.end.row; @@ -1085,15 +960,14 @@ exports.handler.addCommands({ exports.killRing.append(text); else exports.killRing.add(text); - editor.session.remove(range); editor.clearSelection(); }, - yank: function(editor) { + yank: function (editor) { editor.onPaste(exports.killRing.get() || ''); editor.keyBinding.$data.lastCommand = "yank"; }, - yankRotate: function(editor) { + yankRotate: function (editor) { if (editor.keyBinding.$data.lastCommand != "yank") return; editor.undo(); @@ -1102,7 +976,7 @@ exports.handler.addCommands({ editor.keyBinding.$data.lastCommand = "yank"; }, killRegion: { - exec: function(editor) { + exec: function (editor) { exports.killRing.add(editor.getCopyText()); editor.commands.byName.cut.exec(editor); editor.setEmacsMark(null); @@ -1111,71 +985,76 @@ exports.handler.addCommands({ multiSelectAction: "forEach" }, killRingSave: { - exec: function(editor) { - + exec: function (editor) { editor.$handlesEmacsOnCopy = true; - var marks = editor.session.$emacsMarkRing.slice(), - deselectedMarks = []; + var marks = editor.session.$emacsMarkRing.slice(), deselectedMarks = []; exports.killRing.add(editor.getCopyText()); - - setTimeout(function() { + setTimeout(function () { function deselect() { - var sel = editor.selection, range = sel.getRange(), - pos = sel.isBackwards() ? range.end : range.start; - deselectedMarks.push({row: pos.row, column: pos.column}); + var sel = editor.selection, range = sel.getRange(), pos = sel.isBackwards() ? range.end : range.start; + deselectedMarks.push({ row: pos.row, column: pos.column }); sel.clearSelection(); } editor.$handlesEmacsOnCopy = false; - if (editor.inMultiSelectMode) editor.forEachSelection({exec: deselect}); - else deselect(); + if (editor.inMultiSelectMode) + editor.forEachSelection({ exec: deselect }); + else + deselect(); + editor.setEmacsMark(null); editor.session.$emacsMarkRing = marks.concat(deselectedMarks.reverse()); }, 0); }, readOnly: true }, - keyboardQuit: function(editor) { + keyboardQuit: function (editor) { editor.selection.clearSelection(); editor.setEmacsMark(null); editor.keyBinding.$data.count = null; }, - focusCommandLine: function(editor, arg) { + focusCommandLine: function (editor, arg) { if (editor.showCommandLine) editor.showCommandLine(arg); } }); - exports.handler.addCommands(iSearchCommandModule.iSearchStartCommands); - var commands = exports.handler.commands; commands.yank.isYank = true; commands.yankRotate.isYank = true; - exports.killRing = { $data: [], - add: function(str) { + add: function (str) { str && this.$data.push(str); if (this.$data.length > 30) this.$data.shift(); }, - append: function(str) { + append: function (str) { var idx = this.$data.length - 1; var text = this.$data[idx] || ""; - if (str) text += str; - if (text) this.$data[idx] = text; + if (str) + text += str; + if (text) + this.$data[idx] = text; }, - get: function(n) { + get: function (n) { n = n || 1; - return this.$data.slice(this.$data.length-n, this.$data.length).reverse().join('\n'); + return this.$data.slice(this.$data.length - n, this.$data.length).reverse().join('\n'); }, - pop: function() { + pop: function () { if (this.$data.length > 1) this.$data.pop(); return this.get(); }, - rotate: function() { + rotate: function () { this.$data.unshift(this.$data.pop()); return this.get(); } }; -}); +}); (function() { + window.require(["ace/keyboard/emacs"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/keybinding-sublime.js b/vendor/assets/javascripts/ace/keybinding-sublime.js new file mode 100644 index 00000000..be4430e1 --- /dev/null +++ b/vendor/assets/javascripts/ace/keybinding-sublime.js @@ -0,0 +1,409 @@ +define("ace/keyboard/sublime",["require","exports","module","ace/keyboard/hash_handler"], function(require, exports, module){"use strict"; +var HashHandler = require("../keyboard/hash_handler").HashHandler; +function moveBySubWords(editor, direction, extend) { + var selection = editor.selection; + var row = selection.lead.row; + var column = selection.lead.column; + var line = editor.session.getLine(row); + if (!line[column + direction]) { + var method = (extend ? "selectWord" : "moveCursorShortWord") + + (direction == 1 ? "Right" : "Left"); + return editor.selection[method](); + } + if (direction == -1) + column--; + while (line[column]) { + var type = getType(line[column]) + getType(line[column + direction]); + column += direction; + if (direction == 1) { + if (type == "WW" && getType(line[column + 1]) == "w") + break; + } + else { + if (type == "wW") { + if (getType(line[column - 1]) == "W") { + column -= 1; + break; + } + else { + continue; + } + } + if (type == "Ww") + break; + } + if (/w[s_oW]|_[sWo]|o[s_wW]|s[W]|W[so]/.test(type)) + break; + } + if (direction == -1) + column++; + if (extend) + editor.selection.moveCursorTo(row, column); + else + editor.selection.moveTo(row, column); + function getType(x) { + if (!x) + return "-"; + if (/\s/.test(x)) + return "s"; + if (x == "_") + return "_"; + if (x.toUpperCase() == x && x.toLowerCase() != x) + return "W"; + if (x.toUpperCase() != x && x.toLowerCase() == x) + return "w"; + return "o"; + } +} +exports.handler = new HashHandler(); +exports.handler.addCommands([{ + name: "find_all_under", + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + editor.findAll(); + }, + readOnly: true + }, { + name: "find_under", + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + editor.findNext(); + }, + readOnly: true + }, { + name: "find_under_prev", + exec: function (editor) { + if (editor.selection.isEmpty()) + editor.selection.selectWord(); + editor.findPrevious(); + }, + readOnly: true + }, { + name: "find_under_expand", + exec: function (editor) { + editor.selectMore(1, false, true); + }, + scrollIntoView: "animate", + readOnly: true + }, { + name: "find_under_expand_skip", + exec: function (editor) { + editor.selectMore(1, true, true); + }, + scrollIntoView: "animate", + readOnly: true + }, { + name: "delete_to_hard_bol", + exec: function (editor) { + var pos = editor.selection.getCursor(); + editor.session.remove({ + start: { row: pos.row, column: 0 }, + end: pos + }); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "delete_to_hard_eol", + exec: function (editor) { + var pos = editor.selection.getCursor(); + editor.session.remove({ + start: pos, + end: { row: pos.row, column: Infinity } + }); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "moveToWordStartLeft", + exec: function (editor) { + editor.selection.moveCursorLongWordLeft(); + editor.clearSelection(); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "moveToWordEndRight", + exec: function (editor) { + editor.selection.moveCursorLongWordRight(); + editor.clearSelection(); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "selectToWordStartLeft", + exec: function (editor) { + var sel = editor.selection; + sel.$moveSelection(sel.moveCursorLongWordLeft); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "selectToWordEndRight", + exec: function (editor) { + var sel = editor.selection; + sel.$moveSelection(sel.moveCursorLongWordRight); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor" + }, { + name: "selectSubWordRight", + exec: function (editor) { + moveBySubWords(editor, 1, true); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "selectSubWordLeft", + exec: function (editor) { + moveBySubWords(editor, -1, true); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "moveSubWordRight", + exec: function (editor) { + moveBySubWords(editor, 1); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }, { + name: "moveSubWordLeft", + exec: function (editor) { + moveBySubWords(editor, -1); + }, + multiSelectAction: "forEach", + scrollIntoView: "cursor", + readOnly: true + }]); +[{ + bindKey: { mac: "cmd-k cmd-backspace|cmd-backspace", win: "ctrl-shift-backspace|ctrl-k ctrl-backspace" }, + name: "removetolinestarthard" + }, { + bindKey: { mac: "cmd-k cmd-k|cmd-delete|ctrl-k", win: "ctrl-shift-delete|ctrl-k ctrl-k" }, + name: "removetolineendhard" + }, { + bindKey: { mac: "cmd-shift-d", win: "ctrl-shift-d" }, + name: "duplicateSelection" + }, { + bindKey: { mac: "cmd-l", win: "ctrl-l" }, + name: "expandtoline" + }, + { + bindKey: { mac: "cmd-shift-a", win: "ctrl-shift-a" }, + name: "expandSelection", + args: { to: "tag" } + }, { + bindKey: { mac: "cmd-shift-j", win: "ctrl-shift-j" }, + name: "expandSelection", + args: { to: "indentation" } + }, { + bindKey: { mac: "ctrl-shift-m", win: "ctrl-shift-m" }, + name: "expandSelection", + args: { to: "brackets" } + }, { + bindKey: { mac: "cmd-shift-space", win: "ctrl-shift-space" }, + name: "expandSelection", + args: { to: "scope" } + }, + { + bindKey: { mac: "ctrl-cmd-g", win: "alt-f3" }, + name: "find_all_under" + }, { + bindKey: { mac: "alt-cmd-g", win: "ctrl-f3" }, + name: "find_under" + }, { + bindKey: { mac: "shift-alt-cmd-g", win: "ctrl-shift-f3" }, + name: "find_under_prev" + }, { + bindKey: { mac: "cmd-g", win: "f3" }, + name: "findnext" + }, { + bindKey: { mac: "shift-cmd-g", win: "shift-f3" }, + name: "findprevious" + }, { + bindKey: { mac: "cmd-d", win: "ctrl-d" }, + name: "find_under_expand" + }, { + bindKey: { mac: "cmd-k cmd-d", win: "ctrl-k ctrl-d" }, + name: "find_under_expand_skip" + }, + { + bindKey: { mac: "cmd-alt-[", win: "ctrl-shift-[" }, + name: "toggleFoldWidget" + }, { + bindKey: { mac: "cmd-alt-]", win: "ctrl-shift-]" }, + name: "unfold" + }, { + bindKey: { mac: "cmd-k cmd-0|cmd-k cmd-j", win: "ctrl-k ctrl-0|ctrl-k ctrl-j" }, + name: "unfoldall" + }, { + bindKey: { mac: "cmd-k cmd-1", win: "ctrl-k ctrl-1" }, + name: "foldOther", + args: { level: 1 } + }, + { + bindKey: { win: "ctrl-left", mac: "alt-left" }, + name: "moveToWordStartLeft" + }, { + bindKey: { win: "ctrl-right", mac: "alt-right" }, + name: "moveToWordEndRight" + }, { + bindKey: { win: "ctrl-shift-left", mac: "alt-shift-left" }, + name: "selectToWordStartLeft" + }, { + bindKey: { win: "ctrl-shift-right", mac: "alt-shift-right" }, + name: "selectToWordEndRight" + }, + { + bindKey: { mac: "ctrl-alt-shift-right|ctrl-shift-right", win: "alt-shift-right" }, + name: "selectSubWordRight" + }, { + bindKey: { mac: "ctrl-alt-shift-left|ctrl-shift-left", win: "alt-shift-left" }, + name: "selectSubWordLeft" + }, { + bindKey: { mac: "ctrl-alt-right|ctrl-right", win: "alt-right" }, + name: "moveSubWordRight" + }, { + bindKey: { mac: "ctrl-alt-left|ctrl-left", win: "alt-left" }, + name: "moveSubWordLeft" + }, + { + bindKey: { mac: "ctrl-m", win: "ctrl-m" }, + name: "jumptomatching", + args: { to: "brackets" } + }, + { + bindKey: { mac: "ctrl-f6", win: "ctrl-f6" }, + name: "goToNextError" + }, { + bindKey: { mac: "ctrl-shift-f6", win: "ctrl-shift-f6" }, + name: "goToPreviousError" + }, + { + bindKey: { mac: "ctrl-o" }, + name: "splitline" + }, + { + bindKey: { mac: "ctrl-shift-w", win: "alt-shift-w" }, + name: "surrowndWithTag" + }, { + bindKey: { mac: "cmd-alt-.", win: "alt-." }, + name: "close_tag" + }, + { + bindKey: { mac: "cmd-j", win: "ctrl-j" }, + name: "joinlines" + }, + { + bindKey: { mac: "ctrl--", win: "alt--" }, + name: "jumpBack" + }, { + bindKey: { mac: "ctrl-shift--", win: "alt-shift--" }, + name: "jumpForward" + }, + { + bindKey: { mac: "cmd-k cmd-l", win: "ctrl-k ctrl-l" }, + name: "tolowercase" + }, { + bindKey: { mac: "cmd-k cmd-u", win: "ctrl-k ctrl-u" }, + name: "touppercase" + }, + { + bindKey: { mac: "cmd-shift-v", win: "ctrl-shift-v" }, + name: "paste_and_indent" + }, { + bindKey: { mac: "cmd-k cmd-v|cmd-alt-v", win: "ctrl-k ctrl-v" }, + name: "paste_from_history" + }, + { + bindKey: { mac: "cmd-shift-enter", win: "ctrl-shift-enter" }, + name: "addLineBefore" + }, { + bindKey: { mac: "cmd-enter", win: "ctrl-enter" }, + name: "addLineAfter" + }, { + bindKey: { mac: "ctrl-shift-k", win: "ctrl-shift-k" }, + name: "removeline" + }, { + bindKey: { mac: "ctrl-alt-up", win: "ctrl-up" }, + name: "scrollup" + }, { + bindKey: { mac: "ctrl-alt-down", win: "ctrl-down" }, + name: "scrolldown" + }, { + bindKey: { mac: "cmd-a", win: "ctrl-a" }, + name: "selectall" + }, { + bindKey: { linux: "alt-shift-down", mac: "ctrl-shift-down", win: "ctrl-alt-down" }, + name: "addCursorBelow" + }, { + bindKey: { linux: "alt-shift-up", mac: "ctrl-shift-up", win: "ctrl-alt-up" }, + name: "addCursorAbove" + }, + { + bindKey: { mac: "cmd-k cmd-c|ctrl-l", win: "ctrl-k ctrl-c" }, + name: "centerselection" + }, + { + bindKey: { mac: "f5", win: "f9" }, + name: "sortlines" + }, + { + bindKey: { mac: "ctrl-f5", win: "ctrl-f9" }, + name: "sortlines", + args: { caseSensitive: true } + }, + { + bindKey: { mac: "cmd-shift-l", win: "ctrl-shift-l" }, + name: "splitSelectionIntoLines" + }, { + bindKey: { mac: "ctrl-cmd-down", win: "ctrl-shift-down" }, + name: "movelinesdown" + }, { + bindKey: { mac: "ctrl-cmd-up", win: "ctrl-shift-up" }, + name: "movelinesup" + }, { + bindKey: { mac: "alt-down", win: "alt-down" }, + name: "modifyNumberDown" + }, { + bindKey: { mac: "alt-up", win: "alt-up" }, + name: "modifyNumberUp" + }, { + bindKey: { mac: "cmd-/", win: "ctrl-/" }, + name: "togglecomment" + }, { + bindKey: { mac: "cmd-alt-/", win: "ctrl-shift-/" }, + name: "toggleBlockComment" + }, + { + bindKey: { linux: "ctrl-alt-q", mac: "ctrl-q", win: "ctrl-q" }, + name: "togglerecording" + }, { + bindKey: { linux: "ctrl-alt-shift-q", mac: "ctrl-shift-q", win: "ctrl-shift-q" }, + name: "replaymacro" + }, + { + bindKey: { mac: "ctrl-t", win: "ctrl-t" }, + name: "transpose" + } +].forEach(function (binding) { + var command = exports.handler.commands[binding.name]; + if (command) + command.bindKey = binding.bindKey; + exports.handler.bindKey(binding.bindKey, command || binding.name); +}); + +}); (function() { + window.require(["ace/keyboard/sublime"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/keybinding-vim.js b/vendor/assets/javascripts/ace/keybinding-vim.js index bea5c155..4643cb38 100644 --- a/vendor/assets/javascripts/ace/keybinding-vim.js +++ b/vendor/assets/javascripts/ace/keybinding-vim.js @@ -1,47 +1,157 @@ -define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/multi_select"], function(require, exports, module) { - 'use strict'; +define("ace/ext/hardwrap",["require","exports","module","ace/range","ace/editor","ace/config"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +function hardWrap(editor, options) { + var max = options.column || editor.getOption("printMarginColumn"); + var allowMerge = options.allowMerge != false; + var row = Math.min(options.startRow, options.endRow); + var endRow = Math.max(options.startRow, options.endRow); + var session = editor.session; + while (row <= endRow) { + var line = session.getLine(row); + if (line.length > max) { + var space = findSpace(line, max, 5); + if (space) { + var indentation = /^\s*/.exec(line)[0]; + session.replace(new Range(row, space.start, row, space.end), "\n" + indentation); + } + endRow++; + } + else if (allowMerge && /\S/.test(line) && row != endRow) { + var nextLine = session.getLine(row + 1); + if (nextLine && /\S/.test(nextLine)) { + var trimmedLine = line.replace(/\s+$/, ""); + var trimmedNextLine = nextLine.replace(/^\s+/, ""); + var mergedLine = trimmedLine + " " + trimmedNextLine; + var space = findSpace(mergedLine, max, 5); + if (space && space.start > trimmedLine.length || mergedLine.length < max) { + var replaceRange = new Range(row, trimmedLine.length, row + 1, nextLine.length - trimmedNextLine.length); + session.replace(replaceRange, " "); + row--; + endRow--; + } + else if (trimmedLine.length < line.length) { + session.remove(new Range(row, trimmedLine.length, row, line.length)); + } + } + } + row++; + } + function findSpace(line, max, min) { + if (line.length < max) + return; + var before = line.slice(0, max); + var after = line.slice(max); + var spaceAfter = /^(?:(\s+)|(\S+)(\s+))/.exec(after); + var spaceBefore = /(?:(\s+)|(\s+)(\S+))$/.exec(before); + var start = 0; + var end = 0; + if (spaceBefore && !spaceBefore[2]) { + start = max - spaceBefore[1].length; + end = max; + } + if (spaceAfter && !spaceAfter[2]) { + if (!start) + start = max; + end = max + spaceAfter[1].length; + } + if (start) { + return { + start: start, + end: end + }; + } + if (spaceBefore && spaceBefore[2] && spaceBefore.index > min) { + return { + start: spaceBefore.index, + end: spaceBefore.index + spaceBefore[2].length + }; + } + if (spaceAfter && spaceAfter[2]) { + start = max + spaceAfter[2].length; + return { + start: start, + end: start + spaceAfter[3].length + }; + } + } +} +function wrapAfterInput(e) { + if (e.command.name == "insertstring" && /\S/.test(e.args)) { + var editor = e.editor; + var cursor = editor.selection.cursor; + if (cursor.column <= editor.renderer.$printMarginColumn) + return; + var lastDelta = editor.session.$undoManager.$lastDelta; + hardWrap(editor, { + startRow: cursor.row, endRow: cursor.row, + allowMerge: false + }); + if (lastDelta != editor.session.$undoManager.$lastDelta) + editor.session.markUndoGroup(); + } +} +var Editor = require("../editor").Editor; +require("../config").defineOptions(Editor.prototype, "editor", { + hardWrap: { + set: function (val) { + if (val) { + this.commands.on("afterExec", wrapAfterInput); + } + else { + this.commands.off("afterExec", wrapAfterInput); + } + }, + value: false + } +}); +exports.hardWrap = hardWrap; - function log() { +}); + +define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/dom","ace/lib/oop","ace/lib/keys","ace/lib/event","ace/search","ace/lib/useragent","ace/search_highlight","ace/commands/multi_select_commands","ace/mode/text","ace/ext/hardwrap","ace/multi_select"], function(require, exports, module){// CodeMirror, copyright (c) by Marijn Haverbeke and others +'use strict'; +function log() { var d = ""; function format(p) { - if (typeof p != "object") - return p + ""; - if ("line" in p) { - return p.line + ":" + p.ch; - } - if ("anchor" in p) { - return format(p.anchor) + "->" + format(p.head); - } - if (Array.isArray(p)) - return "[" + p.map(function(x) { - return format(x); - }) + "]"; - return JSON.stringify(p); + if (typeof p != "object") + return p + ""; + if ("line" in p) { + return p.line + ":" + p.ch; + } + if ("anchor" in p) { + return format(p.anchor) + "->" + format(p.head); + } + if (Array.isArray(p)) + return "[" + p.map(function (x) { + return format(x); + }) + "]"; + return JSON.stringify(p); } for (var i = 0; i < arguments.length; i++) { - var p = arguments[i]; - var f = format(p); - d += f + " "; + var p = arguments[i]; + var f = format(p); + d += f + " "; } console.log(d); - } - var Range = require("../range").Range; - var EventEmitter = require("../lib/event_emitter").EventEmitter; - var dom = require("../lib/dom"); - var oop = require("../lib/oop"); - var KEYS = require("../lib/keys"); - var event = require("../lib/event"); - var Search = require("../search").Search; - var useragent = require("../lib/useragent"); - var SearchHighlight = require("../search_highlight").SearchHighlight; - var multiSelectCommands = require("../commands/multi_select_commands"); - var TextModeTokenRe = require("../mode/text").Mode.prototype.tokenRe; - require("../multi_select"); - - var CodeMirror = function(ace) { +} +var Range = require("../range").Range; +var EventEmitter = require("../lib/event_emitter").EventEmitter; +var domLib = require("../lib/dom"); +var oop = require("../lib/oop"); +var KEYS = require("../lib/keys"); +var event = require("../lib/event"); +var Search = require("../search").Search; +var useragent = require("../lib/useragent"); +var SearchHighlight = require("../search_highlight").SearchHighlight; +var multiSelectCommands = require("../commands/multi_select_commands"); +var TextModeTokenRe = require("../mode/text").Mode.prototype.tokenRe; +var hardWrap = require("../ext/hardwrap").hardWrap; +require("../multi_select"); +var CodeMirror = function (ace) { this.ace = ace; this.state = {}; this.marks = {}; + this.options = {}; this.$uid = 0; this.onChange = this.onChange.bind(this); this.onSelectionChange = this.onSelectionChange.bind(this); @@ -49,784 +159,905 @@ define("ace/keyboard/vim",["require","exports","module","ace/range","ace/lib/eve this.ace.on('change', this.onChange); this.ace.on('changeSelection', this.onSelectionChange); this.ace.on('beforeEndOperation', this.onBeforeEndOperation); - }; - CodeMirror.Pos = function(line, ch) { - if (!(this instanceof Pos)) return new Pos(line, ch); - this.line = line; this.ch = ch; - }; - CodeMirror.defineOption = function(name, val, setter) {}; - CodeMirror.commands = { - redo: function(cm) { cm.ace.redo(); }, - undo: function(cm) { cm.ace.undo(); }, - newlineAndIndent: function(cm) { cm.ace.insert("\n"); } - }; - CodeMirror.keyMap = {}; - CodeMirror.addClass = CodeMirror.rmClass = - CodeMirror.e_stop = function() {}; - CodeMirror.keyName = function(e) { - if (e.key) return e.key; - var key = (KEYS[e.keyCode] || ""); - if (key.length == 1) key = key.toUpperCase(); - key = event.getModifierString(e).replace(/(^|-)\w/g, function(m) { - return m.toUpperCase(); +}; +CodeMirror.Pos = function (line, ch) { + if (!(this instanceof Pos)) + return new Pos(line, ch); + this.line = line; + this.ch = ch; +}; +CodeMirror.defineOption = function (name, val, setter) { }; +CodeMirror.commands = { + redo: function (cm) { cm.ace.redo(); }, + undo: function (cm) { cm.ace.undo(); }, + newlineAndIndent: function (cm) { cm.ace.insert("\n"); }, + goLineLeft: function (cm) { cm.ace.selection.moveCursorLineStart(); }, + goLineRight: function (cm) { cm.ace.selection.moveCursorLineEnd(); } +}; +CodeMirror.keyMap = {}; +CodeMirror.addClass = CodeMirror.rmClass = function () { }; +CodeMirror.e_stop = CodeMirror.e_preventDefault = event.stopEvent; +CodeMirror.keyName = function (e) { + var key = (KEYS[e.keyCode] || e.key || ""); + if (key.length == 1) + key = key.toUpperCase(); + key = event.getModifierString(e).replace(/(^|-)\w/g, function (m) { + return m.toUpperCase(); }) + key; return key; - }; - CodeMirror.keyMap['default'] = function(key) { - return function(cm) { - var cmd = cm.ace.commands.commandKeyBinding[key.toLowerCase()]; - return cmd && cm.ace.execCommand(cmd) !== false; +}; +CodeMirror.keyMap['default'] = function (key) { + return function (cm) { + var cmd = cm.ace.commands.commandKeyBinding[key.toLowerCase()]; + return cmd && cm.ace.execCommand(cmd) !== false; }; - }; - CodeMirror.lookupKey = function lookupKey(key, map, handle) { +}; +CodeMirror.lookupKey = function lookupKey(key, map, handle) { + if (!map) + map = "default"; if (typeof map == "string") - map = CodeMirror.keyMap[map]; + map = CodeMirror.keyMap[map] || CodeMirror.keyMap['default']; var found = typeof map == "function" ? map(key) : map[key]; - if (found === false) return "nothing"; - if (found === "...") return "multi"; - if (found != null && handle(found)) return "handled"; - + if (found === false) + return "nothing"; + if (found === "...") + return "multi"; + if (found != null && handle(found)) + return "handled"; if (map.fallthrough) { - if (!Array.isArray(map.fallthrough)) - return lookupKey(key, map.fallthrough, handle); - for (var i = 0; i < map.fallthrough.length; i++) { - var result = lookupKey(key, map.fallthrough[i], handle); - if (result) return result; - } + if (!Array.isArray(map.fallthrough)) + return lookupKey(key, map.fallthrough, handle); + for (var i = 0; i < map.fallthrough.length; i++) { + var result = lookupKey(key, map.fallthrough[i], handle); + if (result) + return result; + } } - }; - - CodeMirror.signal = function(o, name, e) { return o._signal(name, e) }; - CodeMirror.on = event.addListener; - CodeMirror.off = event.removeListener; - CodeMirror.isWordChar = function(ch) { - if (ch < "\x7f") return /^\w$/.test(ch); +}; +CodeMirror.findMatchingTag = function (cm, head) { + return cm.findMatchingTag(head); +}; +CodeMirror.findEnclosingTag = function (cm, head) { +}; +CodeMirror.signal = function (o, name, e) { return o._signal(name, e); }; +CodeMirror.on = event.addListener; +CodeMirror.off = event.removeListener; +CodeMirror.isWordChar = function (ch) { + if (ch < "\x7f") + return /^\w$/.test(ch); TextModeTokenRe.lastIndex = 0; return TextModeTokenRe.test(ch); - }; - -(function() { - oop.implement(CodeMirror.prototype, EventEmitter); - - this.destroy = function() { - this.ace.off('change', this.onChange); - this.ace.off('changeSelection', this.onSelectionChange); - this.ace.off('beforeEndOperation', this.onBeforeEndOperation); - this.removeOverlay(); - }; - this.virtualSelectionMode = function() { - return this.ace.inVirtualSelectionMode && this.ace.selection.index; - }; - this.onChange = function(delta) { - var change = { text: delta.action[0] == 'i' ? delta.lines : [] }; - var curOp = this.curOp = this.curOp || {}; - if (!curOp.changeHandlers) - curOp.changeHandlers = this._eventRegistry["change"] && this._eventRegistry["change"].slice(); - if (this.virtualSelectionMode()) return; - if (!curOp.lastChange) { - curOp.lastChange = curOp.change = change; - } else { - curOp.lastChange.next = curOp.lastChange = change; - } - this.$updateMarkers(delta); - }; - this.onSelectionChange = function() { - var curOp = this.curOp = this.curOp || {}; - if (!curOp.cursorActivityHandlers) - curOp.cursorActivityHandlers = this._eventRegistry["cursorActivity"] && this._eventRegistry["cursorActivity"].slice(); - this.curOp.cursorActivity = true; - if (this.ace.inMultiSelectMode) { - this.ace.keyBinding.removeKeyboardHandler(multiSelectCommands.keyboardHandler); - } - }; - this.operation = function(fn, force) { - if (!force && this.curOp || force && this.curOp && this.curOp.force) { - return fn(); - } - if (force || !this.ace.curOp) { - if (this.curOp) - this.onBeforeEndOperation(); - } - if (!this.ace.curOp) { - var prevOp = this.ace.prevOp; - this.ace.startOperation({ - command: { name: "vim", scrollIntoView: "cursor" } - }); - } - var curOp = this.curOp = this.curOp || {}; - this.curOp.force = force; - var result = fn(); - if (this.ace.curOp && this.ace.curOp.command.name == "vim") { - this.ace.endOperation(); - if (!curOp.cursorActivity && !curOp.lastChange && prevOp) - this.ace.prevOp = prevOp; - } - if (force || !this.ace.curOp) { - if (this.curOp) - this.onBeforeEndOperation(); - } - return result; - }; - this.onBeforeEndOperation = function() { - var op = this.curOp; - if (op) { - if (op.change) { this.signal("change", op.change, op); } - if (op && op.cursorActivity) { this.signal("cursorActivity", null, op); } - this.curOp = null; - } - }; - - this.signal = function(eventName, e, handlers) { - var listeners = handlers ? handlers[eventName + "Handlers"] - : (this._eventRegistry || {})[eventName]; - if (!listeners) - return; - listeners = listeners.slice(); - for (var i=0; i 0) { - point.row += rowShift; - point.column += point.row == end.row ? colShift : 0; - continue; - } - if (!isInsert && cmp2 <= 0) { - point.row = start.row; - point.column = start.column; - if (cmp2 === 0) - point.bias = 1; - } - } - }; - var Marker = function(cm, id, row, column) { - this.cm = cm; - this.id = id; - this.row = row; - this.column = column; - cm.marks[this.id] = this; - }; - Marker.prototype.clear = function() { delete this.cm.marks[this.id] }; - Marker.prototype.find = function() { return toCmPos(this) }; - this.setBookmark = function(cursor, options) { - var bm = new Marker(this, this.$uid++, cursor.line, cursor.ch); - if (!options || !options.insertLeft) - bm.$insertRight = true; - this.marks[bm.id] = bm; - return bm; - }; - this.moveH = function(increment, unit) { - if (unit == 'char') { - var sel = this.ace.selection; - sel.clearSelection(); - sel.moveCursorBy(0, increment); - } - }; - this.findPosV = function(start, amount, unit, goalColumn) { - if (unit == 'page') { - var renderer = this.ace.renderer; - var config = renderer.layerConfig; - amount = amount * Math.floor(config.height / config.lineHeight); - unit = 'line'; - } - if (unit == 'line') { - var screenPos = this.ace.session.documentToScreenPosition(start.line, start.ch); - if (goalColumn != null) - screenPos.column = goalColumn; - screenPos.row += amount; - screenPos.row = Math.min(Math.max(0, screenPos.row), this.ace.session.getScreenLength() - 1); - var pos = this.ace.session.screenToDocumentPosition(screenPos.row, screenPos.column); - return toCmPos(pos); - } else { - debugger; - } - }; - this.charCoords = function(pos, mode) { - if (mode == 'div' || !mode) { - var sc = this.ace.session.documentToScreenPosition(pos.line, pos.ch); - return {left: sc.column, top: sc.row}; - }if (mode == 'local') { - var renderer = this.ace.renderer; - var sc = this.ace.session.documentToScreenPosition(pos.line, pos.ch); - var lh = renderer.layerConfig.lineHeight; - var cw = renderer.layerConfig.characterWidth; - var top = lh * sc.row; - return {left: sc.column * cw, top: top, bottom: top + lh}; - } - }; - this.coordsChar = function(pos, mode) { - var renderer = this.ace.renderer; - if (mode == 'local') { - var row = Math.max(0, Math.floor(pos.top / renderer.lineHeight)); - var col = Math.max(0, Math.floor(pos.left / renderer.characterWidth)); - var ch = renderer.session.screenToDocumentPosition(row, col); - return toCmPos(ch); - } else if (mode == 'div') { - throw "not implemented"; - } - }; - this.getSearchCursor = function(query, pos, caseFold) { - var caseSensitive = false; - var isRegexp = false; - if (query instanceof RegExp && !query.global) { - caseSensitive = !query.ignoreCase; - query = query.source; - isRegexp = true; - } - var search = new Search(); - if (pos.ch == undefined) pos.ch = Number.MAX_VALUE; - var acePos = {row: pos.line, column: pos.ch}; - var cm = this; - var last = null; - return { - findNext: function() { return this.find(false) }, - findPrevious: function() {return this.find(true) }, - find: function(back) { - search.setOptions({ - needle: query, - caseSensitive: caseSensitive, - wrap: false, - backwards: back, - regExp: isRegexp, - start: last || acePos + var change = { text: delta.action[0] == 'i' ? delta.lines : [] }; + var curOp = this.curOp = this.curOp || {}; + if (!curOp.changeHandlers) + curOp.changeHandlers = this._eventRegistry["change"] && this._eventRegistry["change"].slice(); + if (!curOp.lastChange) { + curOp.lastChange = curOp.change = change; + } + else { + curOp.lastChange.next = curOp.lastChange = change; + } + this.$updateMarkers(delta); + }; + this.onSelectionChange = function () { + var curOp = this.curOp = this.curOp || {}; + if (!curOp.cursorActivityHandlers) + curOp.cursorActivityHandlers = this._eventRegistry["cursorActivity"] && this._eventRegistry["cursorActivity"].slice(); + this.curOp.cursorActivity = true; + if (this.ace.inMultiSelectMode) { + this.ace.keyBinding.removeKeyboardHandler(multiSelectCommands.keyboardHandler); + } + }; + this.operation = function (fn, force) { + if (!force && this.curOp || force && this.curOp && this.curOp.force) { + return fn(); + } + if (force || !this.ace.curOp) { + if (this.curOp) + this.onBeforeEndOperation(); + } + if (!this.ace.curOp) { + var prevOp = this.ace.prevOp; + this.ace.startOperation({ + command: { name: "vim", scrollIntoView: "cursor" } + }); + } + var curOp = this.curOp = this.curOp || {}; + this.curOp.force = force; + var result = fn(); + if (this.ace.curOp && this.ace.curOp.command.name == "vim") { + if (this.state.dialog) + this.ace.curOp.command.scrollIntoView = this.ace.curOp.vimDialogScroll; + this.ace.endOperation(); + if (!curOp.cursorActivity && !curOp.lastChange && prevOp) + this.ace.prevOp = prevOp; + } + if (force || !this.ace.curOp) { + if (this.curOp) + this.onBeforeEndOperation(); + } + return result; + }; + this.onBeforeEndOperation = function () { + var op = this.curOp; + if (op) { + if (op.change) { + this.signal("change", op.change, op); + } + if (op && op.cursorActivity) { + this.signal("cursorActivity", null, op); + } + this.curOp = null; + } + }; + this.signal = function (eventName, e, handlers) { + var listeners = handlers ? handlers[eventName + "Handlers"] + : (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](this, e); + }; + this.firstLine = function () { return 0; }; + this.lastLine = function () { return this.ace.session.getLength() - 1; }; + this.lineCount = function () { return this.ace.session.getLength(); }; + this.setCursor = function (line, ch) { + if (typeof line === 'object') { + ch = line.ch; + line = line.line; + } + var shouldScroll = !this.curOp && !this.ace.inVirtualSelectionMode; + if (!this.ace.inVirtualSelectionMode) + this.ace.exitMultiSelectMode(); + this.ace.session.unfold({ row: line, column: ch }); + this.ace.selection.moveTo(line, ch); + if (shouldScroll) { + this.ace.renderer.scrollCursorIntoView(); + this.ace.endOperation(); + } + }; + this.getCursor = function (p) { + var sel = this.ace.selection; + var pos = p == 'anchor' ? (sel.isEmpty() ? sel.lead : sel.anchor) : + p == 'head' || !p ? sel.lead : sel.getRange()[p]; + return toCmPos(pos); + }; + this.listSelections = function (p) { + var ranges = this.ace.multiSelect.rangeList.ranges; + if (!ranges.length || this.ace.inVirtualSelectionMode) + return [{ anchor: this.getCursor('anchor'), head: this.getCursor('head') }]; + return ranges.map(function (r) { + return { + anchor: this.clipPos(toCmPos(r.cursor == r.end ? r.start : r.end)), + head: this.clipPos(toCmPos(r.cursor)) + }; + }, this); + }; + this.setSelections = function (p, primIndex) { + var sel = this.ace.multiSelect; + var ranges = p.map(function (x) { + var anchor = toAcePos(x.anchor); + var head = toAcePos(x.head); + var r = Range.comparePoints(anchor, head) < 0 + ? new Range.fromPoints(anchor, head) + : new Range.fromPoints(head, anchor); + r.cursor = Range.comparePoints(r.start, head) ? r.end : r.start; + return r; }); - var range = search.find(cm.ace.session); - if (range && range.isEmpty()) { - if (cm.getLine(range.start.row).length == range.start.column) { - search.$options.start = range; - range = search.find(cm.ace.session); - } + if (this.ace.inVirtualSelectionMode) { + this.ace.selection.fromOrientedRange(ranges[0]); + return; } - last = range; - return last; - }, - from: function() { return last && toCmPos(last.start) }, - to: function() { return last && toCmPos(last.end) }, - replace: function(text) { - if (last) { - last.end = cm.ace.session.doc.replace(last, text); + if (!primIndex) { + ranges = ranges.reverse(); + } + else if (ranges[primIndex]) { + ranges.push(ranges.splice(primIndex, 1)[0]); + } + sel.toSingleRange(ranges[0].clone()); + var session = this.ace.session; + for (var i = 0; i < ranges.length; i++) { + var range = session.$clipRangeToDocument(ranges[i]); // todo why ace doesn't do this? + sel.addRange(range); } - } }; - }; - this.scrollTo = function(x, y) { - var renderer = this.ace.renderer; - var config = renderer.layerConfig; - var maxHeight = config.maxHeight; - maxHeight -= (renderer.$size.scrollerHeight - renderer.lineHeight) * renderer.$scrollPastEnd; - if (y != null) this.ace.session.setScrollTop(Math.max(0, Math.min(y, maxHeight))); - if (x != null) this.ace.session.setScrollLeft(Math.max(0, Math.min(x, config.width))); - }; - this.scrollInfo = function() { return 0; }; - this.scrollIntoView = function(pos, margin) { - if (pos) { - var renderer = this.ace.renderer; - var viewMargin = { "top": 0, "bottom": margin }; - renderer.scrollCursorIntoView(toAcePos(pos), - (renderer.lineHeight * 2) / renderer.$size.scrollerHeight, viewMargin); - } - }; - this.getLine = function(row) { return this.ace.session.getLine(row) }; - this.getRange = function(s, e) { - return this.ace.session.getTextRange(new Range(s.line, s.ch, e.line, e.ch)); - }; - this.replaceRange = function(text, s, e) { - if (!e) e = s; - return this.ace.session.replace(new Range(s.line, s.ch, e.line, e.ch), text); - }; - this.replaceSelections = function(p) { - var sel = this.ace.selection; - if (this.ace.inVirtualSelectionMode) { - this.ace.session.replace(sel.getRange(), p[0] || ""); - return; - } - sel.inVirtualSelectionMode = true; - var ranges = sel.rangeList.ranges; - if (!ranges.length) ranges = [this.ace.multiSelect.getRange()]; - for (var i = ranges.length; i--;) - this.ace.session.replace(ranges[i], p[i] || ""); - sel.inVirtualSelectionMode = false; - }; - this.getSelection = function() { - return this.ace.getSelectedText(); - }; - this.getSelections = function() { - return this.listSelections().map(function(x) { - return this.getRange(x.anchor, x.head); - }, this); - }; - this.getInputField = function() { - return this.ace.textInput.getElement(); - }; - this.getWrapperElement = function() { - return this.ace.containter; - }; - var optMap = { - indentWithTabs: "useSoftTabs", - indentUnit: "tabSize", - tabSize: "tabSize", - firstLineNumber: "firstLineNumber", - readOnly: "readOnly" - }; - this.setOption = function(name, val) { - this.state[name] = val; - switch (name) { - case 'indentWithTabs': - name = optMap[name]; - val = !val; - break; - default: - name = optMap[name]; - } - if (name) - this.ace.setOption(name, val); - }; - this.getOption = function(name, val) { - var aceOpt = optMap[name]; - if (aceOpt) - val = this.ace.getOption(aceOpt); - switch (name) { - case 'indentWithTabs': - name = optMap[name]; - return !val; - } - return aceOpt ? val : this.state[name]; - }; - this.toggleOverwrite = function(on) { - this.state.overwrite = on; - return this.ace.setOverwrite(on); - }; - this.addOverlay = function(o) { - if (!this.$searchHighlight || !this.$searchHighlight.session) { - var highlight = new SearchHighlight(null, "ace_highlight-marker", "text"); - var marker = this.ace.session.addDynamicMarker(highlight); - highlight.id = marker.id; - highlight.session = this.ace.session; - highlight.destroy = function(o) { - highlight.session.off("change", highlight.updateOnChange); - highlight.session.off("changeEditor", highlight.destroy); - highlight.session.removeMarker(highlight.id); - highlight.session = null; - }; - highlight.updateOnChange = function(delta) { - var row = delta.start.row; - if (row == delta.end.row) highlight.cache[row] = undefined; - else highlight.cache.splice(row, highlight.cache.length); - }; - highlight.session.on("changeEditor", highlight.destroy); - highlight.session.on("change", highlight.updateOnChange); - } - var re = new RegExp(o.query.source, "gmi"); - this.$searchHighlight = o.highlight = highlight; - this.$searchHighlight.setRegexp(re); - this.ace.renderer.updateBackMarkers(); - }; - this.removeOverlay = function(o) { - if (this.$searchHighlight && this.$searchHighlight.session) { - this.$searchHighlight.destroy(); - } - }; - this.getScrollInfo = function() { - var renderer = this.ace.renderer; - var config = renderer.layerConfig; - return { - left: renderer.scrollLeft, - top: renderer.scrollTop, - height: config.maxHeight, - width: config.width, - clientHeight: config.height, - clientWidth: config.width + this.setSelection = function (a, h, options) { + var sel = this.ace.selection; + sel.moveTo(a.line, a.ch); + sel.selectTo(h.line, h.ch); + if (options && options.origin == '*mouse') { + this.onBeforeEndOperation(); + } + }; + this.somethingSelected = function (p) { + return !this.ace.selection.isEmpty(); + }; + this.clipPos = function (p) { + var pos = this.ace.session.$clipPositionToDocument(p.line, p.ch); + return toCmPos(pos); + }; + this.foldCode = function (pos) { + this.ace.session.$toggleFoldWidget(pos.line, {}); + }; + this.markText = function (cursor) { + return { clear: function () { }, find: function () { } }; + }; + this.$updateMarkers = function (delta) { + var isInsert = delta.action == "insert"; + var start = delta.start; + var end = delta.end; + var rowShift = (end.row - start.row) * (isInsert ? 1 : -1); + var colShift = (end.column - start.column) * (isInsert ? 1 : -1); + if (isInsert) + end = start; + for (var i in this.marks) { + var point = this.marks[i]; + var cmp = Range.comparePoints(point, start); + if (cmp < 0) { + continue; // delta starts after the range + } + if (cmp === 0) { + if (isInsert) { + if (!point.$insertRight) { + cmp = 1; + } + else if (point.bias == 1) { + cmp = 1; + } + else { + point.bias = -1; + continue; + } + } + } + var cmp2 = isInsert ? cmp : Range.comparePoints(point, end); + if (cmp2 > 0) { + point.row += rowShift; + point.column += point.row == end.row ? colShift : 0; + continue; + } + if (!isInsert && cmp2 <= 0) { + point.row = start.row; + point.column = start.column; + if (cmp2 === 0) + point.bias = 1; + } + } + }; + var Marker = function (cm, id, row, column) { + this.cm = cm; + this.id = id; + this.row = row; + this.column = column; + cm.marks[this.id] = this; + }; + Marker.prototype.clear = function () { delete this.cm.marks[this.id]; }; + Marker.prototype.find = function () { return toCmPos(this); }; + this.setBookmark = function (cursor, options) { + var bm = new Marker(this, this.$uid++, cursor.line, cursor.ch); + if (!options || !options.insertLeft) + bm.$insertRight = true; + this.marks[bm.id] = bm; + return bm; + }; + this.moveH = function (increment, unit) { + if (unit == 'char') { + var sel = this.ace.selection; + sel.clearSelection(); + sel.moveCursorBy(0, increment); + } + }; + this.findPosV = function (start, amount, unit, goalColumn) { + if (unit == 'page') { + var renderer = this.ace.renderer; + var config = renderer.layerConfig; + amount = amount * Math.floor(config.height / config.lineHeight); + unit = 'line'; + } + if (unit == 'line') { + var screenPos = this.ace.session.documentToScreenPosition(start.line, start.ch); + if (goalColumn != null) + screenPos.column = goalColumn; + screenPos.row += amount; + screenPos.row = Math.min(Math.max(0, screenPos.row), this.ace.session.getScreenLength() - 1); + var pos = this.ace.session.screenToDocumentPosition(screenPos.row, screenPos.column); + return toCmPos(pos); + } + else { + debugger; + } + }; + this.charCoords = function (pos, mode) { + if (mode == 'div' || !mode) { + var sc = this.ace.session.documentToScreenPosition(pos.line, pos.ch); + return { left: sc.column, top: sc.row }; + } + if (mode == 'local') { + var renderer = this.ace.renderer; + var sc = this.ace.session.documentToScreenPosition(pos.line, pos.ch); + var lh = renderer.layerConfig.lineHeight; + var cw = renderer.layerConfig.characterWidth; + var top = lh * sc.row; + return { left: sc.column * cw, top: top, bottom: top + lh }; + } + }; + this.coordsChar = function (pos, mode) { + var renderer = this.ace.renderer; + if (mode == 'local') { + var row = Math.max(0, Math.floor(pos.top / renderer.lineHeight)); + var col = Math.max(0, Math.floor(pos.left / renderer.characterWidth)); + var ch = renderer.session.screenToDocumentPosition(row, col); + return toCmPos(ch); + } + else if (mode == 'div') { + throw "not implemented"; + } + }; + this.getSearchCursor = function (query, pos, caseFold) { + var caseSensitive = false; + var isRegexp = false; + if (query instanceof RegExp && !query.global) { + caseSensitive = !query.ignoreCase; + query = query.source; + isRegexp = true; + } + if (query == "\\n") { + query = "\n"; + isRegexp = false; + } + var search = new Search(); + if (pos.ch == undefined) + pos.ch = Number.MAX_VALUE; + var acePos = { row: pos.line, column: pos.ch }; + var cm = this; + var last = null; + return { + findNext: function () { return this.find(false); }, + findPrevious: function () { return this.find(true); }, + find: function (back) { + search.setOptions({ + needle: query, + caseSensitive: caseSensitive, + wrap: false, + backwards: back, + regExp: isRegexp, + start: last || acePos + }); + var range = search.find(cm.ace.session); + last = range; + return last && [!last.isEmpty()]; + }, + from: function () { return last && toCmPos(last.start); }, + to: function () { return last && toCmPos(last.end); }, + replace: function (text) { + if (last) { + last.end = cm.ace.session.doc.replace(last, text); + } + } + }; + }; + this.scrollTo = function (x, y) { + var renderer = this.ace.renderer; + var config = renderer.layerConfig; + var maxHeight = config.maxHeight; + maxHeight -= (renderer.$size.scrollerHeight - renderer.lineHeight) * renderer.$scrollPastEnd; + if (y != null) + this.ace.session.setScrollTop(Math.max(0, Math.min(y, maxHeight))); + if (x != null) + this.ace.session.setScrollLeft(Math.max(0, Math.min(x, config.width))); + }; + this.scrollInfo = function () { return 0; }; + this.scrollIntoView = function (pos, margin) { + if (pos) { + var renderer = this.ace.renderer; + var viewMargin = { "top": 0, "bottom": margin }; + renderer.scrollCursorIntoView(toAcePos(pos), (renderer.lineHeight * 2) / renderer.$size.scrollerHeight, viewMargin); + } + }; + this.getLine = function (row) { return this.ace.session.getLine(row); }; + this.getRange = function (s, e) { + return this.ace.session.getTextRange(new Range(s.line, s.ch, e.line, e.ch)); + }; + this.replaceRange = function (text, s, e) { + if (!e) + e = s; + var range = new Range(s.line, s.ch, e.line, e.ch); + this.ace.session.$clipRangeToDocument(range); + return this.ace.session.replace(range, text); + }; + this.replaceSelection = + this.replaceSelections = function (p) { + var strings = Array.isArray(p) && p; + var sel = this.ace.selection; + if (this.ace.inVirtualSelectionMode) { + this.ace.session.replace(sel.getRange(), strings ? p[0] || "" : p); + return; + } + sel.inVirtualSelectionMode = true; + var ranges = sel.rangeList.ranges; + if (!ranges.length) + ranges = [this.ace.multiSelect.getRange()]; + for (var i = ranges.length; i--;) + this.ace.session.replace(ranges[i], strings ? p[i] || "" : p); + sel.inVirtualSelectionMode = false; + }; + this.getSelection = function () { + return this.ace.getSelectedText(); + }; + this.getSelections = function () { + return this.listSelections().map(function (x) { + return this.getRange(x.anchor, x.head); + }, this); + }; + this.getInputField = function () { + return this.ace.textInput.getElement(); + }; + this.getWrapperElement = function () { + return this.ace.container; + }; + var optMap = { + indentWithTabs: "useSoftTabs", + indentUnit: "tabSize", + tabSize: "tabSize", + firstLineNumber: "firstLineNumber", + readOnly: "readOnly" + }; + this.setOption = function (name, val) { + this.state[name] = val; + switch (name) { + case 'indentWithTabs': + name = optMap[name]; + val = !val; + break; + case 'keyMap': + this.state.$keyMap = val; + return; + break; + default: + name = optMap[name]; + } + if (name) + this.ace.setOption(name, val); + }; + this.getOption = function (name) { + var val; + var aceOpt = optMap[name]; + if (aceOpt) + val = this.ace.getOption(aceOpt); + switch (name) { + case 'indentWithTabs': + name = optMap[name]; + return !val; + case 'keyMap': + return this.state.$keyMap || 'vim'; + } + return aceOpt ? val : this.state[name]; + }; + this.toggleOverwrite = function (on) { + this.state.overwrite = on; + return this.ace.setOverwrite(on); + }; + this.addOverlay = function (o) { + if (!this.$searchHighlight || !this.$searchHighlight.session) { + var highlight = new SearchHighlight(null, "ace_highlight-marker", "text"); + var marker = this.ace.session.addDynamicMarker(highlight); + highlight.id = marker.id; + highlight.session = this.ace.session; + highlight.destroy = function (o) { + highlight.session.off("change", highlight.updateOnChange); + highlight.session.off("changeEditor", highlight.destroy); + highlight.session.removeMarker(highlight.id); + highlight.session = null; + }; + highlight.updateOnChange = function (delta) { + var row = delta.start.row; + if (row == delta.end.row) + highlight.cache[row] = undefined; + else + highlight.cache.splice(row, highlight.cache.length); + }; + highlight.session.on("changeEditor", highlight.destroy); + highlight.session.on("change", highlight.updateOnChange); + } + var re = new RegExp(o.query.source, "gmi"); + this.$searchHighlight = o.highlight = highlight; + this.$searchHighlight.setRegexp(re); + this.ace.renderer.updateBackMarkers(); + }; + this.removeOverlay = function (o) { + if (this.$searchHighlight && this.$searchHighlight.session) { + this.$searchHighlight.destroy(); + } + }; + this.getScrollInfo = function () { + var renderer = this.ace.renderer; + var config = renderer.layerConfig; + return { + left: renderer.scrollLeft, + top: renderer.scrollTop, + height: config.maxHeight, + width: config.width, + clientHeight: config.height, + clientWidth: config.width + }; + }; + this.getValue = function () { + return this.ace.getValue(); + }; + this.setValue = function (v) { + return this.ace.setValue(v, -1); + }; + this.getTokenTypeAt = function (pos) { + var token = this.ace.session.getTokenAt(pos.line, pos.ch); + return token && /comment|string/.test(token.type) ? "string" : ""; + }; + this.findMatchingBracket = function (pos) { + var m = this.ace.session.findMatchingBracket(toAcePos(pos)); + return { to: m && toCmPos(m) }; + }; + this.findMatchingTag = function (pos) { + var m = this.ace.session.getMatchingTags(toAcePos(pos)); + if (!m) + return; + return { + open: { + from: toCmPos(m.openTag.start), + to: toCmPos(m.openTag.end) + }, + close: { + from: toCmPos(m.closeTag.start), + to: toCmPos(m.closeTag.end) + } + }; + }; + this.indentLine = function (line, method) { + if (method === true) + this.ace.session.indentRows(line, line, "\t"); + else if (method === false) + this.ace.session.outdentRows(new Range(line, 0, line, 0)); + }; + this.indexFromPos = function (pos) { + return this.ace.session.doc.positionToIndex(toAcePos(pos)); + }; + this.posFromIndex = function (index) { + return toCmPos(this.ace.session.doc.indexToPosition(index)); + }; + this.focus = function (index) { + return this.ace.textInput.focus(); + }; + this.blur = function (index) { + return this.ace.blur(); + }; + this.defaultTextHeight = function (index) { + return this.ace.renderer.layerConfig.lineHeight; + }; + this.scanForBracket = function (pos, dir, _, options) { + var re = options.bracketRegex.source; + var tokenRe = /paren|text|operator|tag/; + if (dir == 1) { + var m = this.ace.session.$findClosingBracket(re.slice(1, 2), toAcePos(pos), tokenRe); + } + else { + var m = this.ace.session.$findOpeningBracket(re.slice(-2, -1), { row: pos.line, column: pos.ch + 1 }, tokenRe); + if (!m && options.bracketRegex && options.bracketRegex.test(this.getLine(pos.line)[pos.ch - 1])) { + m = { row: pos.line, column: pos.ch - 1 }; + } + } + return m && { pos: toCmPos(m) }; + }; + this.refresh = function () { + return this.ace.resize(true); + }; + this.getMode = function () { + return { name: this.getOption("mode") }; + }; + this.execCommand = function (name) { + if (CodeMirror.commands.hasOwnProperty(name)) + return CodeMirror.commands[name](this); + if (name == "indentAuto") + return this.ace.execCommand("autoindent"); + console.log(name + " is not implemented"); + }; + this.getLineNumber = function (handle) { + var deltas = this.$lineHandleChanges; + if (!deltas) + return null; + var row = handle.row; + for (var i = 0; i < deltas.length; i++) { + var delta = deltas[i]; + if (delta.start.row != delta.end.row) { + if (delta.action[0] == "i") { + if (delta.start.row < row) + row += delta.end.row - delta.start.row; + } + else { + if (delta.start.row < row) { + if (row < delta.end.row || row == delta.end.row && delta.start.column > 0) { + return null; + } + row -= delta.end.row - delta.start.row; + } + } + } + } + return row; + }; + this.getLineHandle = function (row) { + if (!this.$lineHandleChanges) + this.$lineHandleChanges = []; + return { text: this.ace.session.getLine(row), row: row }; + }; + this.releaseLineHandles = function () { + this.$lineHandleChanges = undefined; + }; + this.getLastEditEnd = function () { + var undoManager = this.ace.session.$undoManager; + if (undoManager && undoManager.$lastDelta) + return toCmPos(undoManager.$lastDelta.end); }; - }; - this.getValue = function() { - return this.ace.getValue(); - }; - this.setValue = function(v) { - return this.ace.setValue(v); - }; - this.getTokenTypeAt = function(pos) { - var token = this.ace.session.getTokenAt(pos.line, pos.ch); - return token && /comment|string/.test(token.type) ? "string" : ""; - }; - this.findMatchingBracket = function(pos) { - var m = this.ace.session.findMatchingBracket(toAcePos(pos)); - return {to: m && toCmPos(m)}; - }; - this.indentLine = function(line, method) { - if (method === true) - this.ace.session.indentRows(line, line, "\t"); - else if (method === false) - this.ace.session.outdentRows(new Range(line, 0, line, 0)); - }; - this.indexFromPos = function(pos) { - return this.ace.session.doc.positionToIndex(toAcePos(pos)); - }; - this.posFromIndex = function(index) { - return toCmPos(this.ace.session.doc.indexToPosition(index)); - }; - this.focus = function(index) { - return this.ace.focus(); - }; - this.blur = function(index) { - return this.ace.blur(); - }; - this.defaultTextHeight = function(index) { - return this.ace.renderer.layerConfig.lineHeight; - }; - this.scanForBracket = function(pos, dir, _, options) { - var re = options.bracketRegex.source; - if (dir == 1) { - var m = this.ace.session.$findClosingBracket(re.slice(1, 2), toAcePos(pos), /paren|text/); - } else { - var m = this.ace.session.$findOpeningBracket(re.slice(-2, -1), {row: pos.line, column: pos.ch + 1}, /paren|text/); - } - return m && {pos: toCmPos(m)}; - }; - this.refresh = function() { - return this.ace.resize(true); - }; - this.getMode = function() { - return { name : this.getOption("mode") }; - } }).call(CodeMirror.prototype); - function toAcePos(cmPos) { - return {row: cmPos.line, column: cmPos.ch}; - } - function toCmPos(acePos) { +function toAcePos(cmPos) { + return { row: cmPos.line, column: cmPos.ch }; +} +function toCmPos(acePos) { return new Pos(acePos.row, acePos.column); - } - - var StringStream = CodeMirror.StringStream = function(string, tabSize) { +} +var StringStream = CodeMirror.StringStream = function (string, tabSize) { this.pos = this.start = 0; this.string = string; this.tabSize = tabSize || 8; this.lastColumnPos = this.lastColumnValue = 0; this.lineStart = 0; - }; - - StringStream.prototype = { - eol: function() {return this.pos >= this.string.length;}, - sol: function() {return this.pos == this.lineStart;}, - peek: function() {return this.string.charAt(this.pos) || undefined;}, - next: function() { - if (this.pos < this.string.length) - return this.string.charAt(this.pos++); - }, - eat: function(match) { - var ch = this.string.charAt(this.pos); - if (typeof match == "string") var ok = ch == match; - else var ok = ch && (match.test ? match.test(ch) : match(ch)); - if (ok) {++this.pos; return ch;} - }, - eatWhile: function(match) { - var start = this.pos; - while (this.eat(match)){} - return this.pos > start; - }, - eatSpace: function() { - var start = this.pos; - while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; - return this.pos > start; - }, - skipToEnd: function() {this.pos = this.string.length;}, - skipTo: function(ch) { - var found = this.string.indexOf(ch, this.pos); - if (found > -1) {this.pos = found; return true;} - }, - backUp: function(n) {this.pos -= n;}, - column: function() { - throw "not implemented"; - }, - indentation: function() { - throw "not implemented"; - }, - match: function(pattern, consume, caseInsensitive) { - if (typeof pattern == "string") { - var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; - var substr = this.string.substr(this.pos, pattern.length); - if (cased(substr) == cased(pattern)) { - if (consume !== false) this.pos += pattern.length; - return true; - } - } else { - var match = this.string.slice(this.pos).match(pattern); - if (match && match.index > 0) return null; - if (match && consume !== false) this.pos += match[0].length; - return match; - } - }, - current: function(){return this.string.slice(this.start, this.pos);}, - hideFirstChars: function(n, inner) { - this.lineStart += n; - try { return inner(); } - finally { this.lineStart -= n; } - } - }; -CodeMirror.defineExtension = function(name, fn) { - CodeMirror.prototype[name] = fn; }; -dom.importCssString(".normal-mode .ace_cursor{\ - border: 1px solid red;\ - background-color: red;\ - opacity: 0.5;\ -}\ -.normal-mode .ace_hidden-cursors .ace_cursor{\ - background-color: transparent;\ -}\ -.ace_dialog {\ - position: absolute;\ - left: 0; right: 0;\ - background: white;\ - z-index: 15;\ - padding: .1em .8em;\ - overflow: hidden;\ - color: #333;\ -}\ -.ace_dialog-top {\ - border-bottom: 1px solid #eee;\ - top: 0;\ -}\ -.ace_dialog-bottom {\ - border-top: 1px solid #eee;\ - bottom: 0;\ -}\ -.ace_dialog input {\ - border: none;\ - outline: none;\ - background: transparent;\ - width: 20em;\ - color: inherit;\ - font-family: monospace;\ -}", "vimMode"); -(function() { - function dialogDiv(cm, template, bottom) { - var wrap = cm.ace.container; - var dialog; - dialog = wrap.appendChild(document.createElement("div")); - if (bottom) - dialog.className = "ace_dialog ace_dialog-bottom"; - else - dialog.className = "ace_dialog ace_dialog-top"; - - if (typeof template == "string") { - dialog.innerHTML = template; - } else { // Assuming it's a detached DOM element. - dialog.appendChild(template); - } - return dialog; - } - - function closeNotification(cm, newVal) { - if (cm.state.currentNotificationClose) - cm.state.currentNotificationClose(); - cm.state.currentNotificationClose = newVal; - } - - CodeMirror.defineExtension("openDialog", function(template, callback, options) { - if (this.virtualSelectionMode()) return; - if (!options) options = {}; - - closeNotification(this, null); - - var dialog = dialogDiv(this, template, options.bottom); - var closed = false, me = this; - function close(newVal) { - if (typeof newVal == 'string') { - inp.value = newVal; - } else { - if (closed) return; - closed = true; - dialog.parentNode.removeChild(dialog); - me.focus(); - - if (options.onClose) options.onClose(dialog); - } - } - - var inp = dialog.getElementsByTagName("input")[0], button; - if (inp) { - if (options.value) { - inp.value = options.value; - if (options.select !== false) inp.select(); - } - - if (options.onInput) - CodeMirror.on(inp, "input", function(e) { options.onInput(e, inp.value, close);}); - if (options.onKeyUp) - CodeMirror.on(inp, "keyup", function(e) {options.onKeyUp(e, inp.value, close);}); - - CodeMirror.on(inp, "keydown", function(e) { - if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; } - if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) { - inp.blur(); - CodeMirror.e_stop(e); - close(); +StringStream.prototype = { + eol: function () { return this.pos >= this.string.length; }, + sol: function () { return this.pos == this.lineStart; }, + peek: function () { return this.string.charAt(this.pos) || undefined; }, + next: function () { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++); + }, + eat: function (match) { + var ch = this.string.charAt(this.pos); + if (typeof match == "string") + var ok = ch == match; + else + var ok = ch && (match.test ? match.test(ch) : match(ch)); + if (ok) { + ++this.pos; + return ch; + } + }, + eatWhile: function (match) { + var start = this.pos; + while (this.eat(match)) { } + return this.pos > start; + }, + eatSpace: function () { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) + ++this.pos; + return this.pos > start; + }, + skipToEnd: function () { this.pos = this.string.length; }, + skipTo: function (ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) { + this.pos = found; + return true; + } + }, + backUp: function (n) { this.pos -= n; }, + column: function () { + throw "not implemented"; + }, + indentation: function () { + throw "not implemented"; + }, + match: function (pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; }; + var substr = this.string.substr(this.pos, pattern.length); + if (cased(substr) == cased(pattern)) { + if (consume !== false) + this.pos += pattern.length; + return true; + } + } + else { + var match = this.string.slice(this.pos).match(pattern); + if (match && match.index > 0) + return null; + if (match && consume !== false) + this.pos += match[0].length; + return match; + } + }, + current: function () { return this.string.slice(this.start, this.pos); }, + hideFirstChars: function (n, inner) { + this.lineStart += n; + try { + return inner(); + } + finally { + this.lineStart -= n; } - if (e.keyCode == 13) callback(inp.value); - }); - - if (options.closeOnBlur !== false) CodeMirror.on(inp, "blur", close); - - inp.focus(); - } else if (button = dialog.getElementsByTagName("button")[0]) { - CodeMirror.on(button, "click", function() { - close(); - me.focus(); - }); - - if (options.closeOnBlur !== false) CodeMirror.on(button, "blur", close); - - button.focus(); } - return close; - }); - - CodeMirror.defineExtension("openNotification", function(template, options) { - if (this.virtualSelectionMode()) return; - closeNotification(this, close); - var dialog = dialogDiv(this, template, options && options.bottom); - var closed = false, doneTimer; - var duration = options && typeof options.duration !== "undefined" ? options.duration : 5000; - - function close() { - if (closed) return; - closed = true; - clearTimeout(doneTimer); - dialog.parentNode.removeChild(dialog); +}; +CodeMirror.defineExtension = function (name, fn) { + CodeMirror.prototype[name] = fn; +}; +domLib.importCssString(".normal-mode .ace_cursor{\n border: none;\n background-color: rgba(255,0,0,0.5);\n}\n.normal-mode .ace_hidden-cursors .ace_cursor{\n background-color: transparent;\n border: 1px solid red;\n opacity: 0.7\n}\n.ace_dialog {\n position: absolute;\n left: 0; right: 0;\n background: inherit;\n z-index: 15;\n padding: .1em .8em;\n overflow: hidden;\n color: inherit;\n}\n.ace_dialog-top {\n border-bottom: 1px solid #444;\n top: 0;\n}\n.ace_dialog-bottom {\n border-top: 1px solid #444;\n bottom: 0;\n}\n.ace_dialog input {\n border: none;\n outline: none;\n background: transparent;\n width: 20em;\n color: inherit;\n font-family: monospace;\n}", "vimMode", false); +(function () { + function dialogDiv(cm, template, bottom) { + var wrap = cm.ace.container; + var dialog; + dialog = wrap.appendChild(document.createElement("div")); + if (bottom) + dialog.className = "ace_dialog ace_dialog-bottom"; + else + dialog.className = "ace_dialog ace_dialog-top"; + if (typeof template == "string") { + dialog.innerHTML = template; + } + else { // Assuming it's a detached DOM element. + dialog.appendChild(template); + } + return dialog; } - - CodeMirror.on(dialog, 'click', function(e) { - CodeMirror.e_preventDefault(e); - close(); + function closeNotification(cm, newVal) { + if (cm.state.currentNotificationClose) + cm.state.currentNotificationClose(); + cm.state.currentNotificationClose = newVal; + } + CodeMirror.defineExtension("openDialog", function (template, callback, options) { + if (this.virtualSelectionMode()) + return; + if (!options) + options = {}; + closeNotification(this, null); + var dialog = dialogDiv(this, template, options.bottom); + var closed = false, me = this; + this.state.dialog = dialog; + function close(newVal) { + if (typeof newVal == 'string') { + inp.value = newVal; + } + else { + if (closed) + return; + if (newVal && newVal.type == "blur") { + if (document.activeElement === inp) + return; + } + if (me.state.dialog == dialog) { + me.state.dialog = null; + me.focus(); + } + closed = true; + dialog.remove(); + if (options.onClose) + options.onClose(dialog); + var cm = me; + if (cm.state.vim) { + cm.state.vim.status = null; + cm.ace._signal("changeStatus"); + cm.ace.renderer.$loop.schedule(cm.ace.renderer.CHANGE_CURSOR); + } + } + } + var inp = dialog.getElementsByTagName("input")[0], button; + if (inp) { + if (options.value) { + inp.value = options.value; + if (options.selectValueOnOpen !== false) + inp.select(); + } + if (options.onInput) + CodeMirror.on(inp, "input", function (e) { options.onInput(e, inp.value, close); }); + if (options.onKeyUp) + CodeMirror.on(inp, "keyup", function (e) { options.onKeyUp(e, inp.value, close); }); + CodeMirror.on(inp, "keydown", function (e) { + if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { + return; + } + if (e.keyCode == 13) + callback(inp.value); + if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) { + CodeMirror.e_stop(e); + close(); + } + }); + if (options.closeOnBlur !== false) + CodeMirror.on(inp, "blur", close); + inp.focus(); + } + else if (button = dialog.getElementsByTagName("button")[0]) { + CodeMirror.on(button, "click", function () { + close(); + me.focus(); + }); + if (options.closeOnBlur !== false) + CodeMirror.on(button, "blur", close); + button.focus(); + } + return close; + }); + CodeMirror.defineExtension("openNotification", function (template, options) { + if (this.virtualSelectionMode()) + return; + closeNotification(this, close); + var dialog = dialogDiv(this, template, options && options.bottom); + var closed = false, doneTimer; + var duration = options && typeof options.duration !== "undefined" ? options.duration : 5000; + function close() { + if (closed) + return; + closed = true; + clearTimeout(doneTimer); + dialog.remove(); + } + CodeMirror.on(dialog, 'click', function (e) { + CodeMirror.e_preventDefault(e); + close(); + }); + if (duration) + doneTimer = setTimeout(close, duration); + return close; }); - - if (duration) - doneTimer = setTimeout(close, duration); - - return close; - }); })(); - - - var defaultKeymap = [ +var Pos = CodeMirror.Pos; +function updateSelectionForSurrogateCharacters(cm, curStart, curEnd) { + if (curStart.line === curEnd.line && curStart.ch >= curEnd.ch - 1) { + var text = cm.getLine(curStart.line); + var charCode = text.charCodeAt(curStart.ch); + if (0xD800 <= charCode && charCode <= 0xD8FF) { + curEnd.ch += 1; + } + } + return { start: curStart, end: curEnd }; +} +var defaultKeymap = [ { keys: '', type: 'keyToKey', toKeys: 'h' }, { keys: '', type: 'keyToKey', toKeys: 'l' }, { keys: '', type: 'keyToKey', toKeys: 'k' }, { keys: '', type: 'keyToKey', toKeys: 'j' }, + { keys: 'g', type: 'keyToKey', toKeys: 'gk' }, + { keys: 'g', type: 'keyToKey', toKeys: 'gj' }, { keys: '', type: 'keyToKey', toKeys: 'l' }, - { keys: '', type: 'keyToKey', toKeys: 'h', context: 'normal'}, + { keys: '', type: 'keyToKey', toKeys: 'h' }, + { keys: '', type: 'keyToKey', toKeys: 'x' }, { keys: '', type: 'keyToKey', toKeys: 'W' }, - { keys: '', type: 'keyToKey', toKeys: 'B', context: 'normal' }, + { keys: '', type: 'keyToKey', toKeys: 'B' }, { keys: '', type: 'keyToKey', toKeys: 'w' }, - { keys: '', type: 'keyToKey', toKeys: 'b', context: 'normal' }, + { keys: '', type: 'keyToKey', toKeys: 'b' }, { keys: '', type: 'keyToKey', toKeys: 'j' }, { keys: '', type: 'keyToKey', toKeys: 'k' }, { keys: '', type: 'keyToKey', toKeys: '' }, { keys: '', type: 'keyToKey', toKeys: '' }, { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, + { keys: '', type: 'keyToKey', toKeys: '' }, // ipad keyboard sends C-Esc instead of C-[ + { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, { keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' }, - { keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'}, + { keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual' }, { keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' }, { keys: 'S', type: 'keyToKey', toKeys: 'VdO', context: 'visual' }, { keys: '', type: 'keyToKey', toKeys: '0' }, @@ -834,985 +1065,1285 @@ dom.importCssString(".normal-mode .ace_cursor{\ { keys: '', type: 'keyToKey', toKeys: '' }, { keys: '', type: 'keyToKey', toKeys: '' }, { keys: '', type: 'keyToKey', toKeys: 'j^', context: 'normal' }, - { keys: 'H', type: 'motion', motion: 'moveToTopLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'M', type: 'motion', motion: 'moveToMiddleLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'L', type: 'motion', motion: 'moveToBottomLine', motionArgs: { linewise: true, toJumplist: true }}, - { keys: 'h', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: false }}, - { keys: 'l', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: true }}, - { keys: 'j', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, linewise: true }}, - { keys: 'k', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, linewise: true }}, - { keys: 'gj', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: true }}, - { keys: 'gk', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: false }}, - { keys: 'w', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false }}, - { keys: 'W', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false, bigWord: true }}, - { keys: 'e', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, inclusive: true }}, - { keys: 'E', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, bigWord: true, inclusive: true }}, - { keys: 'b', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }}, - { keys: 'B', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false, bigWord: true }}, - { keys: 'ge', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, inclusive: true }}, - { keys: 'gE', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, bigWord: true, inclusive: true }}, - { keys: '{', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: false, toJumplist: true }}, - { keys: '}', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: true, toJumplist: true }}, - { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: true }}, - { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: false }}, - { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: true, explicitRepeat: true }}, - { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: false, explicitRepeat: true }}, - { keys: 'gg', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: false, explicitRepeat: true, linewise: true, toJumplist: true }}, - { keys: 'G', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: true, explicitRepeat: true, linewise: true, toJumplist: true }}, + { keys: '', type: 'keyToKey', toKeys: 'i', context: 'normal' }, + { keys: '', type: 'action', action: 'toggleOverwrite', context: 'insert' }, + { keys: 'H', type: 'motion', motion: 'moveToTopLine', motionArgs: { linewise: true, toJumplist: true } }, + { keys: 'M', type: 'motion', motion: 'moveToMiddleLine', motionArgs: { linewise: true, toJumplist: true } }, + { keys: 'L', type: 'motion', motion: 'moveToBottomLine', motionArgs: { linewise: true, toJumplist: true } }, + { keys: 'h', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: false } }, + { keys: 'l', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: true } }, + { keys: 'j', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, linewise: true } }, + { keys: 'k', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, linewise: true } }, + { keys: 'gj', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: true } }, + { keys: 'gk', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: false } }, + { keys: 'w', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false } }, + { keys: 'W', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false, bigWord: true } }, + { keys: 'e', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, inclusive: true } }, + { keys: 'E', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, bigWord: true, inclusive: true } }, + { keys: 'b', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false } }, + { keys: 'B', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false, bigWord: true } }, + { keys: 'ge', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, inclusive: true } }, + { keys: 'gE', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, bigWord: true, inclusive: true } }, + { keys: '{', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: false, toJumplist: true } }, + { keys: '}', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: true, toJumplist: true } }, + { keys: '(', type: 'motion', motion: 'moveBySentence', motionArgs: { forward: false } }, + { keys: ')', type: 'motion', motion: 'moveBySentence', motionArgs: { forward: true } }, + { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: true } }, + { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: false } }, + { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: true, explicitRepeat: true } }, + { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: false, explicitRepeat: true } }, + { keys: 'gg', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: false, explicitRepeat: true, linewise: true, toJumplist: true } }, + { keys: 'G', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: true, explicitRepeat: true, linewise: true, toJumplist: true } }, + { keys: "g$", type: "motion", motion: "moveToEndOfDisplayLine" }, + { keys: "g^", type: "motion", motion: "moveToStartOfDisplayLine" }, + { keys: "g0", type: "motion", motion: "moveToStartOfDisplayLine" }, { keys: '0', type: 'motion', motion: 'moveToStartOfLine' }, { keys: '^', type: 'motion', motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: '+', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true }}, - { keys: '-', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, toFirstChar:true }}, - { keys: '_', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true, repeatOffset:-1 }}, - { keys: '$', type: 'motion', motion: 'moveToEol', motionArgs: { inclusive: true }}, - { keys: '%', type: 'motion', motion: 'moveToMatchedSymbol', motionArgs: { inclusive: true, toJumplist: true }}, - { keys: 'f', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: true , inclusive: true }}, - { keys: 'F', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: false }}, - { keys: 't', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: true, inclusive: true }}, - { keys: 'T', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: false }}, - { keys: ';', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: true }}, - { keys: ',', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: false }}, - { keys: '\'', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true, linewise: true}}, - { keys: '`', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true}}, + { keys: '+', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar: true } }, + { keys: '-', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, toFirstChar: true } }, + { keys: '_', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar: true, repeatOffset: -1 } }, + { keys: '$', type: 'motion', motion: 'moveToEol', motionArgs: { inclusive: true } }, + { keys: '%', type: 'motion', motion: 'moveToMatchedSymbol', motionArgs: { inclusive: true, toJumplist: true } }, + { keys: 'f', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: true, inclusive: true } }, + { keys: 'F', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: false } }, + { keys: 't', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: true, inclusive: true } }, + { keys: 'T', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: false } }, + { keys: ';', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: true } }, + { keys: ',', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: false } }, + { keys: '\'', type: 'motion', motion: 'goToMark', motionArgs: { toJumplist: true, linewise: true } }, + { keys: '`', type: 'motion', motion: 'goToMark', motionArgs: { toJumplist: true } }, { keys: ']`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true } }, { keys: '[`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false } }, { keys: ']\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true, linewise: true } }, { keys: '[\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false, linewise: true } }, - { keys: ']p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true, matchIndent: true}}, - { keys: '[p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true, matchIndent: true}}, - { keys: ']', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: true, toJumplist: true}}, - { keys: '[', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: false, toJumplist: true}}, - { keys: '|', type: 'motion', motion: 'moveToColumn'}, - { keys: 'o', type: 'motion', motion: 'moveToOtherHighlightedEnd', context:'visual'}, - { keys: 'O', type: 'motion', motion: 'moveToOtherHighlightedEnd', motionArgs: {sameLine: true}, context:'visual'}, + { keys: ']p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true, matchIndent: true } }, + { keys: '[p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true, matchIndent: true } }, + { keys: ']', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: true, toJumplist: true } }, + { keys: '[', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: false, toJumplist: true } }, + { keys: '|', type: 'motion', motion: 'moveToColumn' }, + { keys: 'o', type: 'motion', motion: 'moveToOtherHighlightedEnd', context: 'visual' }, + { keys: 'O', type: 'motion', motion: 'moveToOtherHighlightedEnd', motionArgs: { sameLine: true }, context: 'visual' }, { keys: 'd', type: 'operator', operator: 'delete' }, { keys: 'y', type: 'operator', operator: 'yank' }, { keys: 'c', type: 'operator', operator: 'change' }, - { keys: '>', type: 'operator', operator: 'indent', operatorArgs: { indentRight: true }}, - { keys: '<', type: 'operator', operator: 'indent', operatorArgs: { indentRight: false }}, + { keys: '=', type: 'operator', operator: 'indentAuto' }, + { keys: '>', type: 'operator', operator: 'indent', operatorArgs: { indentRight: true } }, + { keys: '<', type: 'operator', operator: 'indent', operatorArgs: { indentRight: false } }, { keys: 'g~', type: 'operator', operator: 'changeCase' }, - { keys: 'gu', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, isEdit: true }, - { keys: 'gU', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, isEdit: true }, - { keys: 'n', type: 'motion', motion: 'findNext', motionArgs: { forward: true, toJumplist: true }}, - { keys: 'N', type: 'motion', motion: 'findNext', motionArgs: { forward: false, toJumplist: true }}, - { keys: 'x', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorMotionArgs: { visualLine: false }}, - { keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }}, - { keys: 'D', type: 'operatorMotion', operator: 'delete', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, - { keys: 'D', type: 'operator', operator: 'delete', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, - { keys: 'Y', type: 'operator', operator: 'yank', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: 'C', type: 'operatorMotion', operator: 'change', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, - { keys: 'C', type: 'operator', operator: 'change', operatorArgs: { linewise: true }, context: 'visual'}, - { keys: '~', type: 'operatorMotion', operator: 'changeCase', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorArgs: { shouldMoveCursor: true }, context: 'normal'}, - { keys: '~', type: 'operator', operator: 'changeCase', context: 'visual'}, + { keys: 'gu', type: 'operator', operator: 'changeCase', operatorArgs: { toLower: true }, isEdit: true }, + { keys: 'gU', type: 'operator', operator: 'changeCase', operatorArgs: { toLower: false }, isEdit: true }, + { keys: 'n', type: 'motion', motion: 'findNext', motionArgs: { forward: true, toJumplist: true } }, + { keys: 'N', type: 'motion', motion: 'findNext', motionArgs: { forward: false, toJumplist: true } }, + { keys: 'gn', type: 'motion', motion: 'findAndSelectNextInclusive', motionArgs: { forward: true } }, + { keys: 'gN', type: 'motion', motion: 'findAndSelectNextInclusive', motionArgs: { forward: false } }, + { keys: 'gq', type: 'operator', operator: 'hardWrap' }, + { keys: 'gw', type: 'operator', operator: 'hardWrap', operatorArgs: { keepCursor: true } }, + { keys: 'x', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorMotionArgs: { visualLine: false } }, + { keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true } }, + { keys: 'D', type: 'operatorMotion', operator: 'delete', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal' }, + { keys: 'D', type: 'operator', operator: 'delete', operatorArgs: { linewise: true }, context: 'visual' }, + { keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: 'expandToLine', motionArgs: { linewise: true }, context: 'normal' }, + { keys: 'Y', type: 'operator', operator: 'yank', operatorArgs: { linewise: true }, context: 'visual' }, + { keys: 'C', type: 'operatorMotion', operator: 'change', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal' }, + { keys: 'C', type: 'operator', operator: 'change', operatorArgs: { linewise: true }, context: 'visual' }, + { keys: '~', type: 'operatorMotion', operator: 'changeCase', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorArgs: { shouldMoveCursor: true }, context: 'normal' }, + { keys: '~', type: 'operator', operator: 'changeCase', context: 'visual' }, + { keys: '', type: 'operatorMotion', operator: 'delete', motion: 'moveToStartOfLine', context: 'insert' }, { keys: '', type: 'operatorMotion', operator: 'delete', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }, context: 'insert' }, - { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: true }}, - { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: false }}, - { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: true, linewise: true }}, - { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: false, linewise: true }}, + { keys: '', type: 'idle', context: 'normal' }, + { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: true } }, + { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: false } }, + { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: true, linewise: true } }, + { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: false, linewise: true } }, { keys: 'a', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'charAfter' }, context: 'normal' }, { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'eol' }, context: 'normal' }, { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'endOfSelectedArea' }, context: 'visual' }, { keys: 'i', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'inplace' }, context: 'normal' }, - { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'firstNonBlank'}, context: 'normal' }, + { keys: 'gi', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'lastEdit' }, context: 'normal' }, + { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'firstNonBlank' }, context: 'normal' }, + { keys: 'gI', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'bol' }, context: 'normal' }, { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'startOfSelectedArea' }, context: 'visual' }, { keys: 'o', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: true }, context: 'normal' }, { keys: 'O', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: false }, context: 'normal' }, { keys: 'v', type: 'action', action: 'toggleVisualMode' }, - { keys: 'V', type: 'action', action: 'toggleVisualMode', actionArgs: { linewise: true }}, - { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, - { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, + { keys: 'V', type: 'action', action: 'toggleVisualMode', actionArgs: { linewise: true } }, + { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true } }, + { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true } }, { keys: 'gv', type: 'action', action: 'reselectLastSelection' }, { keys: 'J', type: 'action', action: 'joinLines', isEdit: true }, - { keys: 'p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true }}, - { keys: 'P', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true }}, + { keys: 'gJ', type: 'action', action: 'joinLines', actionArgs: { keepSpaces: true }, isEdit: true }, + { keys: 'p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true } }, + { keys: 'P', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true } }, { keys: 'r', type: 'action', action: 'replace', isEdit: true }, - { keys: '@', type: 'action', action: 'replayMacro' }, - { keys: 'q', type: 'action', action: 'enterMacroRecordMode' }, - { keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }}, + { keys: '@', type: 'action', action: 'replayMacro' }, + { keys: 'q', type: 'action', action: 'enterMacroRecordMode' }, + { keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }, context: 'normal' }, + { keys: 'R', type: 'operator', operator: 'change', operatorArgs: { linewise: true, fullLine: true }, context: 'visual', exitVisualBlock: true }, { keys: 'u', type: 'action', action: 'undo', context: 'normal' }, - { keys: 'u', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, context: 'visual', isEdit: true }, - { keys: 'U', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, context: 'visual', isEdit: true }, + { keys: 'u', type: 'operator', operator: 'changeCase', operatorArgs: { toLower: true }, context: 'visual', isEdit: true }, + { keys: 'U', type: 'operator', operator: 'changeCase', operatorArgs: { toLower: false }, context: 'visual', isEdit: true }, { keys: '', type: 'action', action: 'redo' }, - { keys: 'm', type: 'action', action: 'setMark' }, - { keys: '"', type: 'action', action: 'setRegister' }, - { keys: 'zz', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }}, + { keys: 'm', type: 'action', action: 'setMark' }, + { keys: '"', type: 'action', action: 'setRegister' }, + { keys: '', type: 'action', action: 'insertRegister', context: 'insert', isEdit: true }, + { keys: '', type: 'action', action: 'oneNormalCommand', context: 'insert' }, + { keys: 'zz', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' } }, { keys: 'z.', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: 'zt', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }}, + { keys: 'zt', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' } }, { keys: 'z', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, - { keys: 'z-', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }}, - { keys: 'zb', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: 'zb', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' } }, + { keys: 'z-', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, { keys: '.', type: 'action', action: 'repeatLastEdit' }, - { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: true, backtrack: false}}, - { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: false, backtrack: false}}, - { keys: 'a', type: 'motion', motion: 'textObjectManipulation' }, - { keys: 'i', type: 'motion', motion: 'textObjectManipulation', motionArgs: { textObjectInner: true }}, - { keys: '/', type: 'search', searchArgs: { forward: true, querySrc: 'prompt', toJumplist: true }}, - { keys: '?', type: 'search', searchArgs: { forward: false, querySrc: 'prompt', toJumplist: true }}, - { keys: '*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, - { keys: '#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, - { keys: 'g*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', toJumplist: true }}, - { keys: 'g#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true }}, + { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: { increase: true, backtrack: false } }, + { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: { increase: false, backtrack: false } }, + { keys: '', type: 'action', action: 'indent', actionArgs: { indentRight: true }, context: 'insert' }, + { keys: '', type: 'action', action: 'indent', actionArgs: { indentRight: false }, context: 'insert' }, + { keys: 'a', type: 'motion', motion: 'textObjectManipulation' }, + { keys: 'i', type: 'motion', motion: 'textObjectManipulation', motionArgs: { textObjectInner: true } }, + { keys: '/', type: 'search', searchArgs: { forward: true, querySrc: 'prompt', toJumplist: true } }, + { keys: '?', type: 'search', searchArgs: { forward: false, querySrc: 'prompt', toJumplist: true } }, + { keys: '*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true } }, + { keys: '#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true } }, + { keys: 'g*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', toJumplist: true } }, + { keys: 'g#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true } }, { keys: ':', type: 'ex' } - ]; - var defaultExCommandMap = [ +]; +var defaultKeymapLength = defaultKeymap.length; +var defaultExCommandMap = [ { name: 'colorscheme', shortName: 'colo' }, { name: 'map' }, { name: 'imap', shortName: 'im' }, { name: 'nmap', shortName: 'nm' }, { name: 'vmap', shortName: 'vm' }, + { name: 'omap', shortName: 'om' }, + { name: 'noremap', shortName: 'no' }, + { name: 'nnoremap', shortName: 'nn' }, + { name: 'vnoremap', shortName: 'vn' }, + { name: 'inoremap', shortName: 'ino' }, + { name: 'onoremap', shortName: 'ono' }, { name: 'unmap' }, + { name: 'mapclear', shortName: 'mapc' }, + { name: 'nmapclear', shortName: 'nmapc' }, + { name: 'vmapclear', shortName: 'vmapc' }, + { name: 'imapclear', shortName: 'imapc' }, + { name: 'omapclear', shortName: 'omapc' }, { name: 'write', shortName: 'w' }, { name: 'undo', shortName: 'u' }, { name: 'redo', shortName: 'red' }, { name: 'set', shortName: 'se' }, - { name: 'set', shortName: 'se' }, { name: 'setlocal', shortName: 'setl' }, { name: 'setglobal', shortName: 'setg' }, { name: 'sort', shortName: 'sor' }, { name: 'substitute', shortName: 's', possiblyAsync: true }, + { name: 'startinsert', shortName: 'start' }, { name: 'nohlsearch', shortName: 'noh' }, + { name: 'yank', shortName: 'y' }, { name: 'delmarks', shortName: 'delm' }, { name: 'registers', shortName: 'reg', excludeFromCommandHistory: true }, + { name: 'vglobal', shortName: 'v' }, + { name: 'delete', shortName: 'd' }, + { name: 'join', shortName: 'j' }, + { name: 'normal', shortName: 'norm' }, { name: 'global', shortName: 'g' } - ]; - - var Pos = CodeMirror.Pos; - - var Vim = function() { return vimApi; } //{ - function enterVimMode(cm) { - cm.setOption('disableInput', true); - cm.setOption('showCursorWhenSelecting', false); - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - cm.on('cursorActivity', onCursorActivity); - maybeInitVimState(cm); - CodeMirror.on(cm.getInputField(), 'paste', getOnPasteFn(cm)); - } - - function leaveVimMode(cm) { - cm.setOption('disableInput', false); - cm.off('cursorActivity', onCursorActivity); - CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm)); - cm.state.vim = null; - } - - function detachVimMap(cm, next) { - if (this == CodeMirror.keyMap.vim) - CodeMirror.rmClass(cm.getWrapperElement(), "cm-fat-cursor"); - - if (!next || next.attach != attachVimMap) - leaveVimMode(cm, false); - } - function attachVimMap(cm, prev) { - if (this == CodeMirror.keyMap.vim) - CodeMirror.addClass(cm.getWrapperElement(), "cm-fat-cursor"); - - if (!prev || prev.attach != attachVimMap) - enterVimMode(cm); - } - CodeMirror.defineOption('vimMode', false, function(cm, val, prev) { - if (val && cm.getOption("keyMap") != "vim") - cm.setOption("keyMap", "vim"); - else if (!val && prev != CodeMirror.Init && /^vim/.test(cm.getOption("keyMap"))) - cm.setOption("keyMap", "default"); - }); - - function cmKey(key, cm) { - if (!cm) { return undefined; } - var vimKey = cmKeyToVimKey(key); - if (!vimKey) { - return false; - } - var cmd = CodeMirror.Vim.findKey(cm, vimKey); - if (typeof cmd == 'function') { - CodeMirror.signal(cm, 'vim-keypress', vimKey); - } - return cmd; - } - - var modifiers = {'Shift': 'S', 'Ctrl': 'C', 'Alt': 'A', 'Cmd': 'D', 'Mod': 'A'}; - var specialKeys = {Enter:'CR',Backspace:'BS',Delete:'Del'}; - function cmKeyToVimKey(key) { - if (key.charAt(0) == '\'') { - return key.charAt(1); - } - var pieces = key.split(/-(?!$)/); - var lastPiece = pieces[pieces.length - 1]; - if (pieces.length == 1 && pieces[0].length == 1) { - return false; - } else if (pieces.length == 2 && pieces[0] == 'Shift' && lastPiece.length == 1) { - return false; - } - var hasCharacter = false; - for (var i = 0; i < pieces.length; i++) { - var piece = pieces[i]; - if (piece in modifiers) { pieces[i] = modifiers[piece]; } - else { hasCharacter = true; } - if (piece in specialKeys) { pieces[i] = specialKeys[piece]; } - } - if (!hasCharacter) { - return false; - } - if (isUpperCase(lastPiece)) { - pieces[pieces.length - 1] = lastPiece.toLowerCase(); - } - return '<' + pieces.join('-') + '>'; - } - - function getOnPasteFn(cm) { - var vim = cm.state.vim; - if (!vim.onPasteFn) { - vim.onPasteFn = function() { - if (!vim.insertMode) { - cm.setCursor(offsetCursor(cm.getCursor(), 0, 1)); - actions.enterInsertMode(cm, {}, vim); - } +]; +var langmap = parseLangmap(''); +function enterVimMode(cm) { + cm.setOption('disableInput', true); + cm.setOption('showCursorWhenSelecting', false); + CodeMirror.signal(cm, "vim-mode-change", { mode: "normal" }); + cm.on('cursorActivity', onCursorActivity); + maybeInitVimState(cm); + CodeMirror.on(cm.getInputField(), 'paste', getOnPasteFn(cm)); +} +function leaveVimMode(cm) { + cm.setOption('disableInput', false); + cm.off('cursorActivity', onCursorActivity); + CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm)); + cm.state.vim = null; + if (highlightTimeout) + clearTimeout(highlightTimeout); +} +function getOnPasteFn(cm) { + var vim = cm.state.vim; + if (!vim.onPasteFn) { + vim.onPasteFn = function () { + if (!vim.insertMode) { + cm.setCursor(offsetCursor(cm.getCursor(), 0, 1)); + actions.enterInsertMode(cm, {}, vim); + } }; - } - return vim.onPasteFn; } - - var numberRegex = /[\d]/; - var wordCharTest = [CodeMirror.isWordChar, function(ch) { - return ch && !CodeMirror.isWordChar(ch) && !/\s/.test(ch); - }], bigWordCharTest = [function(ch) { - return /\S/.test(ch); + return vim.onPasteFn; +} +var numberRegex = /[\d]/; +var wordCharTest = [CodeMirror.isWordChar, function (ch) { + return ch && !CodeMirror.isWordChar(ch) && !/\s/.test(ch); + }], bigWordCharTest = [function (ch) { + return /\S/.test(ch); }]; - function makeKeyRange(start, size) { - var keys = []; - for (var i = start; i < start + size; i++) { - keys.push(String.fromCharCode(i)); - } - return keys; - } - var upperCaseAlphabet = makeKeyRange(65, 26); - var lowerCaseAlphabet = makeKeyRange(97, 26); - var numbers = makeKeyRange(48, 10); - var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']); - var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '"', '.', ':', '/']); - - function isLine(cm, line) { - return line >= cm.firstLine() && line <= cm.lastLine(); - } - function isLowerCase(k) { - return (/^[a-z]$/).test(k); - } - function isMatchableSymbol(k) { - return '()[]{}'.indexOf(k) != -1; - } - function isNumber(k) { - return numberRegex.test(k); - } - function isUpperCase(k) { - return (/^[A-Z]$/).test(k); - } - function isWhiteSpaceString(k) { - return (/^\s*$/).test(k); - } - function inArray(val, arr) { - for (var i = 0; i < arr.length; i++) { +var validMarks = ['<', '>']; +var validRegisters = ['-', '"', '.', ':', '_', '/', '+']; +var latinCharRegex = /^\w$/; +var upperCaseChars; +try { + upperCaseChars = new RegExp("^[\\p{Lu}]$", "u"); +} +catch (_) { + upperCaseChars = /^[A-Z]$/; +} +function isLine(cm, line) { + return line >= cm.firstLine() && line <= cm.lastLine(); +} +function isLowerCase(k) { + return (/^[a-z]$/).test(k); +} +function isMatchableSymbol(k) { + return '()[]{}'.indexOf(k) != -1; +} +function isNumber(k) { + return numberRegex.test(k); +} +function isUpperCase(k) { + return upperCaseChars.test(k); +} +function isWhiteSpaceString(k) { + return (/^\s*$/).test(k); +} +function isEndOfSentenceSymbol(k) { + return '.?!'.indexOf(k) != -1; +} +function inArray(val, arr) { + for (var i = 0; i < arr.length; i++) { if (arr[i] == val) { - return true; + return true; } - } - return false; } - - var options = {}; - function defineOption(name, defaultValue, type, aliases, callback) { - if (defaultValue === undefined && !callback) { + return false; +} +var options = {}; +function defineOption(name, defaultValue, type, aliases, callback) { + if (defaultValue === undefined && !callback) { throw Error('defaultValue is required unless callback is provided'); - } - if (!type) { type = 'string'; } - options[name] = { + } + if (!type) { + type = 'string'; + } + options[name] = { type: type, defaultValue: defaultValue, callback: callback - }; - if (aliases) { + }; + if (aliases) { for (var i = 0; i < aliases.length; i++) { - options[aliases[i]] = options[name]; + options[aliases[i]] = options[name]; } - } - if (defaultValue) { + } + if (defaultValue) { setOption(name, defaultValue); - } } - - function setOption(name, value, cm, cfg) { - var option = options[name]; - cfg = cfg || {}; - var scope = cfg.scope; - if (!option) { - throw Error('Unknown option: ' + name); - } - if (option.type == 'boolean') { +} +function setOption(name, value, cm, cfg) { + var option = options[name]; + cfg = cfg || {}; + var scope = cfg.scope; + if (!option) { + return new Error('Unknown option: ' + name); + } + if (option.type == 'boolean') { if (value && value !== true) { - throw Error('Invalid argument: ' + name + '=' + value); - } else if (value !== false) { - value = true; + return new Error('Invalid argument: ' + name + '=' + value); } - } - if (option.callback) { - if (scope !== 'local') { - option.callback(value, undefined); + else if (value !== false) { + value = true; } - if (scope !== 'global' && cm) { - option.callback(value, cm); - } - } else { - if (scope !== 'local') { - option.value = option.type == 'boolean' ? !!value : value; - } - if (scope !== 'global' && cm) { - cm.state.vim.options[name] = {value: value}; - } - } } - - function getOption(name, cm, cfg) { - var option = options[name]; - cfg = cfg || {}; - var scope = cfg.scope; - if (!option) { - throw Error('Unknown option: ' + name); - } - if (option.callback) { + if (option.callback) { + if (scope !== 'local') { + option.callback(value, undefined); + } + if (scope !== 'global' && cm) { + option.callback(value, cm); + } + } + else { + if (scope !== 'local') { + option.value = option.type == 'boolean' ? !!value : value; + } + if (scope !== 'global' && cm) { + cm.state.vim.options[name] = { value: value }; + } + } +} +function getOption(name, cm, cfg) { + var option = options[name]; + cfg = cfg || {}; + var scope = cfg.scope; + if (!option) { + return new Error('Unknown option: ' + name); + } + if (option.callback) { var local = cm && option.callback(undefined, cm); if (scope !== 'global' && local !== undefined) { - return local; + return local; } if (scope !== 'local') { - return option.callback(); + return option.callback(); } return; - } else { + } + else { var local = (scope !== 'global') && (cm && cm.state.vim.options[name]); return (local || (scope !== 'local') && option || {}).value; - } } - - defineOption('filetype', undefined, 'string', ['ft'], function(name, cm) { - if (cm === undefined) { +} +defineOption('filetype', undefined, 'string', ['ft'], function (name, cm) { + if (cm === undefined) { return; - } - if (name === undefined) { + } + if (name === undefined) { var mode = cm.getOption('mode'); return mode == 'null' ? '' : mode; - } else { + } + else { var mode = name == '' ? 'null' : name; cm.setOption('mode', mode); - } - }); - - var createCircularJumpList = function() { - var size = 100; - var pointer = -1; - var head = 0; - var tail = 0; - var buffer = new Array(size); - function add(cm, oldCur, newCur) { + } +}); +defineOption('textwidth', 80, 'number', ['tw'], function (width, cm) { + if (cm === undefined) { + return; + } + if (width === undefined) { + var value = cm.getOption('textwidth'); + return value; + } + else { + var column = Math.round(width); + if (column > 1) { + cm.setOption('textwidth', column); + } + } +}); +var createCircularJumpList = function () { + var size = 100; + var pointer = -1; + var head = 0; + var tail = 0; + var buffer = new Array(size); + function add(cm, oldCur, newCur) { var current = pointer % size; var curMark = buffer[current]; function useNextSlot(cursor) { - var next = ++pointer % size; - var trashMark = buffer[next]; - if (trashMark) { - trashMark.clear(); - } - buffer[next] = cm.setBookmark(cursor); + var next = ++pointer % size; + var trashMark = buffer[next]; + if (trashMark) { + trashMark.clear(); + } + buffer[next] = cm.setBookmark(cursor); } if (curMark) { - var markPos = curMark.find(); - if (markPos && !cursorEqual(markPos, oldCur)) { + var markPos = curMark.find(); + if (markPos && !cursorEqual(markPos, oldCur)) { + useNextSlot(oldCur); + } + } + else { useNextSlot(oldCur); - } - } else { - useNextSlot(oldCur); } useNextSlot(newCur); head = pointer; tail = pointer - size + 1; if (tail < 0) { - tail = 0; + tail = 0; } - } - function move(cm, offset) { + } + function move(cm, offset) { pointer += offset; if (pointer > head) { - pointer = head; - } else if (pointer < tail) { - pointer = tail; + pointer = head; + } + else if (pointer < tail) { + pointer = tail; } var mark = buffer[(size + pointer) % size]; if (mark && !mark.find()) { - var inc = offset > 0 ? 1 : -1; - var newCur; - var oldCur = cm.getCursor(); - do { - pointer += inc; - mark = buffer[(size + pointer) % size]; - if (mark && - (newCur = mark.find()) && - !cursorEqual(oldCur, newCur)) { - break; - } - } while (pointer < head && pointer > tail); + var inc = offset > 0 ? 1 : -1; + var newCur; + var oldCur = cm.getCursor(); + do { + pointer += inc; + mark = buffer[(size + pointer) % size]; + if (mark && + (newCur = mark.find()) && + !cursorEqual(oldCur, newCur)) { + break; + } + } while (pointer < head && pointer > tail); } return mark; - } - return { + } + function find(cm, offset) { + var oldPointer = pointer; + var mark = move(cm, offset); + pointer = oldPointer; + return mark && mark.find(); + } + return { cachedCursor: undefined, //used for # and * jumps add: add, + find: find, move: move - }; }; - var createInsertModeChanges = function(c) { - if (c) { +}; +var createInsertModeChanges = function (c) { + if (c) { return { - changes: c.changes, - expectCursorActivityForChange: c.expectCursorActivityForChange + changes: c.changes, + expectCursorActivityForChange: c.expectCursorActivityForChange }; - } - return { + } + return { changes: [], expectCursorActivityForChange: false - }; }; - - function MacroModeState() { - this.latestRegister = undefined; - this.isPlaying = false; - this.isRecording = false; - this.replaySearchQueries = []; - this.onRecordingDone = undefined; - this.lastInsertModeChanges = createInsertModeChanges(); - } - MacroModeState.prototype = { - exitMacroRecordMode: function() { +}; +function MacroModeState() { + this.latestRegister = undefined; + this.isPlaying = false; + this.isRecording = false; + this.replaySearchQueries = []; + this.onRecordingDone = undefined; + this.lastInsertModeChanges = createInsertModeChanges(); +} +MacroModeState.prototype = { + exitMacroRecordMode: function () { var macroModeState = vimGlobalState.macroModeState; if (macroModeState.onRecordingDone) { - macroModeState.onRecordingDone(); // close dialog + macroModeState.onRecordingDone(); // close dialog } macroModeState.onRecordingDone = undefined; macroModeState.isRecording = false; - }, - enterMacroRecordMode: function(cm, registerName) { - var register = - vimGlobalState.registerController.getRegister(registerName); + }, + enterMacroRecordMode: function (cm, registerName) { + var register = vimGlobalState.registerController.getRegister(registerName); if (register) { - register.clear(); - this.latestRegister = registerName; - if (cm.openDialog) { - this.onRecordingDone = cm.openDialog( - '(recording)['+registerName+']', null, {bottom:true}); - } - this.isRecording = true; + register.clear(); + this.latestRegister = registerName; + if (cm.openDialog) { + var template = dom('span', { class: 'cm-vim-message' }, 'recording @' + registerName); + this.onRecordingDone = cm.openDialog(template, null, { bottom: true }); + } + this.isRecording = true; } - } - }; - - function maybeInitVimState(cm) { - if (!cm.state.vim) { - cm.state.vim = { - inputState: new InputState(), - lastEditInputState: undefined, - lastEditActionCommand: undefined, - lastHPos: -1, - lastHSPos: -1, - lastMotion: null, - marks: {}, - fakeCursor: null, - insertMode: false, - insertModeRepeat: undefined, - visualMode: false, - visualLine: false, - visualBlock: false, - lastSelection: null, - lastPastedText: null, - sel: {}, - options: {} - }; - } - return cm.state.vim; } - var vimGlobalState; - function resetVimGlobalState() { - vimGlobalState = { +}; +function maybeInitVimState(cm) { + if (!cm.state.vim) { + cm.state.vim = { + inputState: new InputState(), + lastEditInputState: undefined, + lastEditActionCommand: undefined, + lastHPos: -1, + lastHSPos: -1, + lastMotion: null, + marks: {}, + insertMode: false, + insertModeReturn: false, + insertModeRepeat: undefined, + visualMode: false, + visualLine: false, + visualBlock: false, + lastSelection: null, + lastPastedText: null, + sel: {}, + options: {}, + expectLiteralNext: false + }; + } + return cm.state.vim; +} +var vimGlobalState; +function resetVimGlobalState() { + vimGlobalState = { searchQuery: null, searchIsReversed: false, lastSubstituteReplacePart: undefined, jumpList: createCircularJumpList(), macroModeState: new MacroModeState, - lastChararacterSearch: {increment:0, forward:true, selectedCharacter:''}, + lastCharacterSearch: { increment: 0, forward: true, selectedCharacter: '' }, registerController: new RegisterController({}), - searchHistoryController: new HistoryController({}), - exCommandHistoryController : new HistoryController({}) - }; - for (var optionName in options) { + searchHistoryController: new HistoryController(), + exCommandHistoryController: new HistoryController() + }; + for (var optionName in options) { var option = options[optionName]; option.value = option.defaultValue; - } } - - var lastInsertModeKeyTimer; - var vimApi= { - buildKeyMap: function() { - }, - getRegisterController: function() { +} +var lastInsertModeKeyTimer; +var vimApi = { + enterVimMode: enterVimMode, + leaveVimMode: leaveVimMode, + buildKeyMap: function () { + }, + getRegisterController: function () { return vimGlobalState.registerController; - }, - resetVimGlobalState_: resetVimGlobalState, - getVimGlobalState_: function() { + }, + resetVimGlobalState_: resetVimGlobalState, + getVimGlobalState_: function () { return vimGlobalState; - }, - maybeInitVimState_: maybeInitVimState, - - suppressErrorLogging: false, - - InsertModeKey: InsertModeKey, - map: function(lhs, rhs, ctx) { + }, + maybeInitVimState_: maybeInitVimState, + suppressErrorLogging: false, + InsertModeKey: InsertModeKey, + map: function (lhs, rhs, ctx) { exCommandDispatcher.map(lhs, rhs, ctx); - }, - unmap: function(lhs, ctx) { - exCommandDispatcher.unmap(lhs, ctx); - }, - setOption: setOption, - getOption: getOption, - defineOption: defineOption, - defineEx: function(name, prefix, func){ - if (!prefix) { - prefix = name; - } else if (name.indexOf(prefix) !== 0) { - throw new Error('(Vim.defineEx) "'+prefix+'" is not a prefix of "'+name+'", command not registered'); + }, + unmap: function (lhs, ctx) { + return exCommandDispatcher.unmap(lhs, ctx); + }, + noremap: function (lhs, rhs, ctx) { + exCommandDispatcher.map(lhs, rhs, ctx, true); + }, + mapclear: function (ctx) { + var actualLength = defaultKeymap.length, origLength = defaultKeymapLength; + var userKeymap = defaultKeymap.slice(0, actualLength - origLength); + defaultKeymap = defaultKeymap.slice(actualLength - origLength); + if (ctx) { + for (var i = userKeymap.length - 1; i >= 0; i--) { + var mapping = userKeymap[i]; + if (ctx !== mapping.context) { + if (mapping.context) { + this._mapCommand(mapping); + } + else { + var contexts = ['normal', 'insert', 'visual']; + for (var j in contexts) { + if (contexts[j] !== ctx) { + var newMapping = {}; + for (var key in mapping) { + newMapping[key] = mapping[key]; + } + newMapping.context = contexts[j]; + this._mapCommand(newMapping); + } + } + } + } + } } - exCommands[name]=func; - exCommandDispatcher.commandMap_[prefix]={name:name, shortName:prefix, type:'api'}; - }, - handleKey: function (cm, key, origin) { + }, + langmap: updateLangmap, + vimKeyFromEvent: vimKeyFromEvent, + setOption: setOption, + getOption: getOption, + defineOption: defineOption, + defineEx: function (name, prefix, func) { + if (!prefix) { + prefix = name; + } + else if (name.indexOf(prefix) !== 0) { + throw new Error('(Vim.defineEx) "' + prefix + '" is not a prefix of "' + name + '", command not registered'); + } + exCommands[name] = func; + exCommandDispatcher.commandMap_[prefix] = { name: name, shortName: prefix, type: 'api' }; + }, + handleKey: function (cm, key, origin) { var command = this.findKey(cm, key, origin); if (typeof command === 'function') { - return command(); + return command(); } - }, - findKey: function(cm, key, origin) { + }, + multiSelectHandleKey: multiSelectHandleKey, + findKey: function (cm, key, origin) { var vim = maybeInitVimState(cm); function handleMacroRecording() { - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isRecording) { - if (key == 'q') { - macroModeState.exitMacroRecordMode(); - clearInputState(cm); - return true; + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isRecording) { + if (key == 'q') { + macroModeState.exitMacroRecordMode(); + clearInputState(cm); + return true; + } + if (origin != 'mapping') { + logKey(macroModeState, key); + } } - if (origin != 'mapping') { - logKey(macroModeState, key); - } - } } function handleEsc() { - if (key == '') { - clearInputState(cm); - if (vim.visualMode) { - exitVisualMode(cm); - } else if (vim.insertMode) { - exitInsertMode(cm); + if (key == '') { + if (vim.visualMode) { + exitVisualMode(cm); + } + else if (vim.insertMode) { + exitInsertMode(cm); + } + else { + return; + } + clearInputState(cm); + return true; } - return true; - } } - function doKeyToKey(keys) { - var match; - while (keys) { - match = (/<\w+-.+?>|<\w+>|./).exec(keys); - key = match[0]; - keys = keys.substring(match.index + key.length); - CodeMirror.Vim.handleKey(cm, key, 'mapping'); - } - } - function handleKeyInsertMode() { - if (handleEsc()) { return true; } - var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; - var keysAreChars = key.length == 1; - var match = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); - while (keys.length > 1 && match.type != 'full') { - var keys = vim.inputState.keyBuffer = keys.slice(1); - var thisMatch = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); - if (thisMatch.type != 'none') { match = thisMatch; } - } - if (match.type == 'none') { clearInputState(cm); return false; } - else if (match.type == 'partial') { - if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } - lastInsertModeKeyTimer = window.setTimeout( - function() { if (vim.insertMode && vim.inputState.keyBuffer) { clearInputState(cm); } }, - getOption('insertModeEscKeysTimeout')); - return !keysAreChars; - } - - if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } - if (keysAreChars) { - var selections = cm.listSelections(); - for (var i = 0; i < selections.length; i++) { - var here = selections[i].head; - cm.replaceRange('', offsetCursor(here, 0, -(keys.length - 1)), here, '+input'); + if (handleEsc()) { + return true; } - vimGlobalState.macroModeState.lastInsertModeChanges.changes.pop(); - } - clearInputState(cm); - return match.command; + vim.inputState.keyBuffer.push(key); + var keys = vim.inputState.keyBuffer.join(""); + var keysAreChars = key.length == 1; + var match = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); + var changeQueue = vim.inputState.changeQueue; + if (match.type == 'none') { + clearInputState(cm); + return false; + } + else if (match.type == 'partial') { + if (match.expectLiteralNext) + vim.expectLiteralNext = true; + if (lastInsertModeKeyTimer) { + window.clearTimeout(lastInsertModeKeyTimer); + } + lastInsertModeKeyTimer = keysAreChars && window.setTimeout(function () { if (vim.insertMode && vim.inputState.keyBuffer.length) { + clearInputState(cm); + } }, getOption('insertModeEscKeysTimeout')); + if (keysAreChars) { + var selections = cm.listSelections(); + if (!changeQueue || changeQueue.removed.length != selections.length) + changeQueue = vim.inputState.changeQueue = new ChangeQueue; + changeQueue.inserted += key; + for (var i = 0; i < selections.length; i++) { + var from = cursorMin(selections[i].anchor, selections[i].head); + var to = cursorMax(selections[i].anchor, selections[i].head); + var text = cm.getRange(from, cm.state.overwrite ? offsetCursor(to, 0, 1) : to); + changeQueue.removed[i] = (changeQueue.removed[i] || "") + text; + } + } + return !keysAreChars; + } + vim.expectLiteralNext = false; + if (lastInsertModeKeyTimer) { + window.clearTimeout(lastInsertModeKeyTimer); + } + if (match.command && changeQueue) { + var selections = cm.listSelections(); + for (var i = 0; i < selections.length; i++) { + var here = selections[i].head; + cm.replaceRange(changeQueue.removed[i] || "", offsetCursor(here, 0, -changeQueue.inserted.length), here, '+input'); + } + vimGlobalState.macroModeState.lastInsertModeChanges.changes.pop(); + } + if (!match.command) + clearInputState(cm); + return match.command; } - function handleKeyNonInsertMode() { - if (handleMacroRecording() || handleEsc()) { return true; } - - var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; - if (/^[1-9]\d*$/.test(keys)) { return true; } - - var keysMatcher = /^(\d*)(.*)$/.exec(keys); - if (!keysMatcher) { clearInputState(cm); return false; } - var context = vim.visualMode ? 'visual' : - 'normal'; - var match = commandDispatcher.matchCommand(keysMatcher[2] || keysMatcher[1], defaultKeymap, vim.inputState, context); - if (match.type == 'none') { clearInputState(cm); return false; } - else if (match.type == 'partial') { return true; } - - vim.inputState.keyBuffer = ''; - var keysMatcher = /^(\d*)(.*)$/.exec(keys); - if (keysMatcher[1] && keysMatcher[1] != '0') { - vim.inputState.pushRepeatDigit(keysMatcher[1]); - } - return match.command; + if (handleMacroRecording() || handleEsc()) { + return true; + } + vim.inputState.keyBuffer.push(key); + var keys = vim.inputState.keyBuffer.join(""); + if (/^[1-9]\d*$/.test(keys)) { + return true; + } + var keysMatcher = /^(\d*)(.*)$/.exec(keys); + if (!keysMatcher) { + clearInputState(cm); + return false; + } + var context = vim.visualMode ? 'visual' : + 'normal'; + var mainKey = keysMatcher[2] || keysMatcher[1]; + if (vim.inputState.operatorShortcut && vim.inputState.operatorShortcut.slice(-1) == mainKey) { + mainKey = vim.inputState.operatorShortcut; + } + var match = commandDispatcher.matchCommand(mainKey, defaultKeymap, vim.inputState, context); + if (match.type == 'none') { + clearInputState(cm); + return false; + } + else if (match.type == 'partial') { + if (match.expectLiteralNext) + vim.expectLiteralNext = true; + return true; + } + else if (match.type == 'clear') { + clearInputState(cm); + return true; + } + vim.expectLiteralNext = false; + vim.inputState.keyBuffer.length = 0; + keysMatcher = /^(\d*)(.*)$/.exec(keys); + if (keysMatcher[1] && keysMatcher[1] != '0') { + vim.inputState.pushRepeatDigit(keysMatcher[1]); + } + return match.command; } - var command; - if (vim.insertMode) { command = handleKeyInsertMode(); } - else { command = handleKeyNonInsertMode(); } - if (command === false) { - return undefined; - } else if (command === true) { - return function() { return true; }; - } else { - return function() { - if ((command.operator || command.isEdit) && cm.getOption('readOnly')) - return; // ace_patch - return cm.operation(function() { - cm.curOp.isVimOp = true; - try { - if (command.type == 'keyToKey') { - doKeyToKey(command.toKeys); - } else { - commandDispatcher.processCommand(cm, vim, command); - } - } catch (e) { - cm.state.vim = undefined; - maybeInitVimState(cm); - if (!CodeMirror.Vim.suppressErrorLogging) { - console['log'](e); - } - throw e; - } - return true; - }); - }; + if (vim.insertMode) { + command = handleKeyInsertMode(); } - }, - handleEx: function(cm, input) { + else { + command = handleKeyNonInsertMode(); + } + if (command === false) { + return !vim.insertMode && key.length === 1 ? function () { return true; } : undefined; + } + else if (command === true) { + return function () { return true; }; + } + else { + return function () { + if ((command.operator || command.isEdit) && cm.getOption('readOnly')) + return; // ace_patch + return cm.operation(function () { + cm.curOp.isVimOp = true; + try { + if (command.type == 'keyToKey') { + doKeyToKey(cm, command.toKeys, command); + } + else { + commandDispatcher.processCommand(cm, vim, command); + } + } + catch (e) { + cm.state.vim = undefined; + maybeInitVimState(cm); + if (!vimApi.suppressErrorLogging) { + console['log'](e); + } + throw e; + } + return true; + }); + }; + } + }, + handleEx: function (cm, input) { exCommandDispatcher.processCommand(cm, input); - }, - - defineMotion: defineMotion, - defineAction: defineAction, - defineOperator: defineOperator, - mapCommand: mapCommand, - _mapCommand: _mapCommand, - - defineRegister: defineRegister, - - exitVisualMode: exitVisualMode, - exitInsertMode: exitInsertMode - }; - function InputState() { - this.prefixRepeat = []; - this.motionRepeat = []; - - this.operator = null; - this.operatorArgs = null; - this.motion = null; - this.motionArgs = null; - this.keyBuffer = []; // For matching multi-key commands. - this.registerName = null; // Defaults to the unnamed register. + }, + defineMotion: defineMotion, + defineAction: defineAction, + defineOperator: defineOperator, + mapCommand: mapCommand, + _mapCommand: _mapCommand, + defineRegister: defineRegister, + exitVisualMode: exitVisualMode, + exitInsertMode: exitInsertMode +}; +var keyToKeyStack = []; +var noremap = false; +var virtualPrompt; +function sendKeyToPrompt(key) { + if (key[0] == "<") { + var lowerKey = key.toLowerCase().slice(1, -1); + var parts = lowerKey.split('-'); + lowerKey = parts.pop() || ''; + if (lowerKey == 'lt') + key = '<'; + else if (lowerKey == 'space') + key = ' '; + else if (lowerKey == 'cr') + key = '\n'; + else if (vimToCmKeyMap[lowerKey]) { + var value = virtualPrompt.value; + var event = { + key: vimToCmKeyMap[lowerKey], + target: { + value: value, + selectionEnd: value.length, + selectionStart: value.length + } + }; + if (virtualPrompt.onKeyDown) { + virtualPrompt.onKeyDown(event, virtualPrompt.value, close); + } + if (virtualPrompt && virtualPrompt.onKeyUp) { + virtualPrompt.onKeyUp(event, virtualPrompt.value, close); + } + return; + } } - InputState.prototype.pushRepeatDigit = function(n) { - if (!this.operator) { + if (key == '\n') { + var prompt = virtualPrompt; + virtualPrompt = null; + prompt.onClose && prompt.onClose(prompt.value); + } + else { + virtualPrompt.value = (virtualPrompt.value || '') + key; + } + function close(value) { + if (typeof value == 'string') { + virtualPrompt.value = value; + } + else { + virtualPrompt = null; + } + } +} +function doKeyToKey(cm, keys, fromKey) { + var noremapBefore = noremap; + if (fromKey) { + if (keyToKeyStack.indexOf(fromKey) != -1) + return; + keyToKeyStack.push(fromKey); + noremap = fromKey.noremap != false; + } + try { + var vim = maybeInitVimState(cm); + var keyRe = /<(?:[CSMA]-)*\w+>|./gi; + var match; + while ((match = keyRe.exec(keys))) { + var key = match[0]; + var wasInsert = vim.insertMode; + if (virtualPrompt) { + sendKeyToPrompt(key); + continue; + } + var result = vimApi.handleKey(cm, key, 'mapping'); + if (!result && wasInsert && vim.insertMode) { + if (key[0] == "<") { + var lowerKey = key.toLowerCase().slice(1, -1); + var parts = lowerKey.split('-'); + lowerKey = parts.pop() || ''; + if (lowerKey == 'lt') + key = '<'; + else if (lowerKey == 'space') + key = ' '; + else if (lowerKey == 'cr') + key = '\n'; + else if (vimToCmKeyMap.hasOwnProperty(lowerKey)) { + key = vimToCmKeyMap[lowerKey]; + sendCmKey(cm, key); + continue; + } + else { + key = key[0]; + keyRe.lastIndex = match.index + 1; + } + } + cm.replaceSelection(key); + } + } + } + finally { + keyToKeyStack.pop(); + noremap = keyToKeyStack.length ? noremapBefore : false; + if (!keyToKeyStack.length && virtualPrompt) { + var promptOptions = virtualPrompt; + virtualPrompt = null; + showPrompt(cm, promptOptions); + } + } +} +var specialKey = { + Return: 'CR', Backspace: 'BS', 'Delete': 'Del', Escape: 'Esc', Insert: 'Ins', + ArrowLeft: 'Left', ArrowRight: 'Right', ArrowUp: 'Up', ArrowDown: 'Down', + Enter: 'CR', ' ': 'Space' +}; +var ignoredKeys = { Shift: 1, Alt: 1, Command: 1, Control: 1, + CapsLock: 1, AltGraph: 1, Dead: 1, Unidentified: 1 }; +var vimToCmKeyMap = {}; +'Left|Right|Up|Down|End|Home'.split('|').concat(Object.keys(specialKey)).forEach(function (x) { + vimToCmKeyMap[(specialKey[x] || '').toLowerCase()] + = vimToCmKeyMap[x.toLowerCase()] = x; +}); +function vimKeyFromEvent(e, vim) { + var key = e.key; + if (ignoredKeys[key]) + return; + if (key.length > 1 && key[0] == "n") { + key = key.replace("Numpad", ""); + } + key = specialKey[key] || key; + var name = ''; + if (e.ctrlKey) { + name += 'C-'; + } + if (e.altKey) { + name += 'A-'; + } + if (e.metaKey) { + name += 'M-'; + } + if (CodeMirror.isMac && e.altKey && !e.metaKey && !e.ctrlKey) { + name = name.slice(2); + } + if ((name || key.length > 1) && e.shiftKey) { + name += 'S-'; + } + if (vim && !vim.expectLiteralNext && key.length == 1) { + if (langmap.keymap && key in langmap.keymap) { + if (langmap.remapCtrl != false || !name) + key = langmap.keymap[key]; + } + else if (key.charCodeAt(0) > 255) { + var code = e.code && e.code.slice(-1) || ""; + if (!e.shiftKey) + code = code.toLowerCase(); + if (code) + key = code; + } + } + name += key; + if (name.length > 1) { + name = '<' + name + '>'; + } + return name; +} +; +function updateLangmap(langmapString, remapCtrl) { + if (langmap.string !== langmapString) { + langmap = parseLangmap(langmapString); + } + langmap.remapCtrl = remapCtrl; +} +function parseLangmap(langmapString) { + var keymap = {}; + if (!langmapString) + return { keymap: keymap, string: '' }; + function getEscaped(list) { + return list.split(/\\?(.)/).filter(Boolean); + } + langmapString.split(/((?:[^\\,]|\\.)+),/).map(function (part) { + if (!part) + return; + var semicolon = part.split(/((?:[^\\;]|\\.)+);/); + if (semicolon.length == 3) { + var from = getEscaped(semicolon[1]); + var to = getEscaped(semicolon[2]); + if (from.length !== to.length) + return; // skip over malformed part + for (var i = 0; i < from.length; ++i) + keymap[from[i]] = to[i]; + } + else if (semicolon.length == 1) { + var pairs = getEscaped(part); + if (pairs.length % 2 !== 0) + return; // skip over malformed part + for (var i = 0; i < pairs.length; i += 2) + keymap[pairs[i]] = pairs[i + 1]; + } + }); + return { keymap: keymap, string: langmapString }; +} +defineOption('langmap', undefined, 'string', ['lmap'], function (name, cm) { + if (name === undefined) { + return langmap.string; + } + else { + updateLangmap(name); + } +}); +function InputState() { + this.prefixRepeat = []; + this.motionRepeat = []; + this.operator = null; + this.operatorArgs = null; + this.motion = null; + this.motionArgs = null; + this.keyBuffer = []; // For matching multi-key commands. + this.registerName = null; // Defaults to the unnamed register. + this.changeQueue = null; // For restoring text used by insert mode keybindings +} +InputState.prototype.pushRepeatDigit = function (n) { + if (!this.operator) { this.prefixRepeat = this.prefixRepeat.concat(n); - } else { + } + else { this.motionRepeat = this.motionRepeat.concat(n); - } - }; - InputState.prototype.getRepeat = function() { - var repeat = 0; - if (this.prefixRepeat.length > 0 || this.motionRepeat.length > 0) { + } +}; +InputState.prototype.getRepeat = function () { + var repeat = 0; + if (this.prefixRepeat.length > 0 || this.motionRepeat.length > 0) { repeat = 1; if (this.prefixRepeat.length > 0) { - repeat *= parseInt(this.prefixRepeat.join(''), 10); + repeat *= parseInt(this.prefixRepeat.join(''), 10); } if (this.motionRepeat.length > 0) { - repeat *= parseInt(this.motionRepeat.join(''), 10); + repeat *= parseInt(this.motionRepeat.join(''), 10); } - } - return repeat; - }; - - function clearInputState(cm, reason) { - cm.state.vim.inputState = new InputState(); - CodeMirror.signal(cm, 'vim-command-done', reason); } - function Register(text, linewise, blockwise) { - this.clear(); - this.keyBuffer = [text || '']; - this.insertModeChanges = []; - this.searchQueries = []; - this.linewise = !!linewise; - this.blockwise = !!blockwise; - } - Register.prototype = { - setText: function(text, linewise, blockwise) { + return repeat; +}; +function clearInputState(cm, reason) { + cm.state.vim.inputState = new InputState(); + cm.state.vim.expectLiteralNext = false; + CodeMirror.signal(cm, 'vim-command-done', reason); +} +function ChangeQueue() { + this.removed = []; + this.inserted = ""; +} +function Register(text, linewise, blockwise) { + this.clear(); + this.keyBuffer = [text || '']; + this.insertModeChanges = []; + this.searchQueries = []; + this.linewise = !!linewise; + this.blockwise = !!blockwise; +} +Register.prototype = { + setText: function (text, linewise, blockwise) { this.keyBuffer = [text || '']; this.linewise = !!linewise; this.blockwise = !!blockwise; - }, - pushText: function(text, linewise) { + }, + pushText: function (text, linewise) { if (linewise) { - if (!this.linewise) { - this.keyBuffer.push('\n'); - } - this.linewise = true; + if (!this.linewise) { + this.keyBuffer.push('\n'); + } + this.linewise = true; } this.keyBuffer.push(text); - }, - pushInsertModeChanges: function(changes) { + }, + pushInsertModeChanges: function (changes) { this.insertModeChanges.push(createInsertModeChanges(changes)); - }, - pushSearchQuery: function(query) { + }, + pushSearchQuery: function (query) { this.searchQueries.push(query); - }, - clear: function() { + }, + clear: function () { this.keyBuffer = []; this.insertModeChanges = []; this.searchQueries = []; this.linewise = false; - }, - toString: function() { + }, + toString: function () { return this.keyBuffer.join(''); - } - }; - function defineRegister(name, register) { - var registers = vimGlobalState.registerController.registers[name]; - if (!name || name.length != 1) { + } +}; +function defineRegister(name, register) { + var registers = vimGlobalState.registerController.registers; + if (!name || name.length != 1) { throw Error('Register name must be 1 character'); - } - registers[name] = register; - validRegisters.push(name); } - function RegisterController(registers) { - this.registers = registers; - this.unnamedRegister = registers['"'] = new Register(); - registers['.'] = new Register(); - registers[':'] = new Register(); - registers['/'] = new Register(); - } - RegisterController.prototype = { - pushText: function(registerName, operator, text, linewise, blockwise) { - if (linewise && text.charAt(0) == '\n') { - text = text.slice(1) + '\n'; - } - if (linewise && text.charAt(text.length - 1) !== '\n'){ - text += '\n'; + registers[name] = register; + validRegisters.push(name); +} +function RegisterController(registers) { + this.registers = registers; + this.unnamedRegister = registers['"'] = new Register(); + registers['.'] = new Register(); + registers[':'] = new Register(); + registers['/'] = new Register(); + registers['+'] = new Register(); +} +RegisterController.prototype = { + pushText: function (registerName, operator, text, linewise, blockwise) { + if (registerName === '_') + return; + if (linewise && text.charAt(text.length - 1) !== '\n') { + text += '\n'; } var register = this.isValidRegister(registerName) ? this.getRegister(registerName) : null; if (!register) { - switch (operator) { - case 'yank': - this.registers['0'] = new Register(text, linewise, blockwise); - break; - case 'delete': - case 'change': - if (text.indexOf('\n') == -1) { - this.registers['-'] = new Register(text, linewise); - } else { - this.shiftNumericRegisters_(); - this.registers['1'] = new Register(text, linewise); - } - break; - } - this.unnamedRegister.setText(text, linewise, blockwise); - return; + switch (operator) { + case 'yank': + this.registers['0'] = new Register(text, linewise, blockwise); + break; + case 'delete': + case 'change': + if (text.indexOf('\n') == -1) { + this.registers['-'] = new Register(text, linewise); + } + else { + this.shiftNumericRegisters_(); + this.registers['1'] = new Register(text, linewise); + } + break; + } + this.unnamedRegister.setText(text, linewise, blockwise); + return; } var append = isUpperCase(registerName); if (append) { - register.pushText(text, linewise); - } else { - register.setText(text, linewise, blockwise); + register.pushText(text, linewise); + } + else { + register.setText(text, linewise, blockwise); + } + if (registerName === '+' && typeof navigator !== 'undefined' && + typeof navigator.clipboard !== 'undefined' && + typeof navigator.clipboard.readText === 'function') { + navigator.clipboard.writeText(text); } this.unnamedRegister.setText(register.toString(), linewise); - }, - getRegister: function(name) { + }, + getRegister: function (name) { if (!this.isValidRegister(name)) { - return this.unnamedRegister; + return this.unnamedRegister; } name = name.toLowerCase(); if (!this.registers[name]) { - this.registers[name] = new Register(); + this.registers[name] = new Register(); } return this.registers[name]; - }, - isValidRegister: function(name) { - return name && inArray(name, validRegisters); - }, - shiftNumericRegisters_: function() { + }, + isValidRegister: function (name) { + return name && (inArray(name, validRegisters) || latinCharRegex.test(name)); + }, + shiftNumericRegisters_: function () { for (var i = 9; i >= 2; i--) { - this.registers[i] = this.getRegister('' + (i - 1)); + this.registers[i] = this.getRegister('' + (i - 1)); } - } - }; - function HistoryController() { - this.historyBuffer = []; - this.iterator; - this.initialPrefix = null; } - HistoryController.prototype = { - nextMatch: function (input, up) { +}; +function HistoryController() { + this.historyBuffer = []; + this.iterator = 0; + this.initialPrefix = null; +} +HistoryController.prototype = { + nextMatch: function (input, up) { var historyBuffer = this.historyBuffer; var dir = up ? -1 : 1; - if (this.initialPrefix === null) this.initialPrefix = input; - for (var i = this.iterator + dir; up ? i >= 0 : i < historyBuffer.length; i+= dir) { - var element = historyBuffer[i]; - for (var j = 0; j <= element.length; j++) { - if (this.initialPrefix == element.substring(0, j)) { - this.iterator = i; - return element; + if (this.initialPrefix === null) + this.initialPrefix = input; + for (var i = this.iterator + dir; up ? i >= 0 : i < historyBuffer.length; i += dir) { + var element = historyBuffer[i]; + for (var j = 0; j <= element.length; j++) { + if (this.initialPrefix == element.substring(0, j)) { + this.iterator = i; + return element; + } } - } } if (i >= historyBuffer.length) { - this.iterator = historyBuffer.length; - return this.initialPrefix; + this.iterator = historyBuffer.length; + return this.initialPrefix; } - if (i < 0 ) return input; - }, - pushInput: function(input) { + if (i < 0) + return input; + }, + pushInput: function (input) { var index = this.historyBuffer.indexOf(input); - if (index > -1) this.historyBuffer.splice(index, 1); - if (input.length) this.historyBuffer.push(input); - }, - reset: function() { + if (index > -1) + this.historyBuffer.splice(index, 1); + if (input.length) + this.historyBuffer.push(input); + }, + reset: function () { this.initialPrefix = null; this.iterator = this.historyBuffer.length; - } - }; - var commandDispatcher = { - matchCommand: function(keys, keyMap, inputState, context) { + } +}; +var commandDispatcher = { + matchCommand: function (keys, keyMap, inputState, context) { var matches = commandMatches(keys, keyMap, context, inputState); if (!matches.full && !matches.partial) { - return {type: 'none'}; - } else if (!matches.full && matches.partial) { - return {type: 'partial'}; + return { type: 'none' }; + } + else if (!matches.full && matches.partial) { + return { + type: 'partial', + expectLiteralNext: matches.partial.length == 1 && matches.partial[0].keys.slice(-11) == '' // langmap literal logic + }; } - var bestMatch; for (var i = 0; i < matches.full.length; i++) { - var match = matches.full[i]; - if (!bestMatch) { - bestMatch = match; - } + var match = matches.full[i]; + if (!bestMatch) { + bestMatch = match; + } } - if (bestMatch.keys.slice(-11) == '') { - var character = lastChar(keys); - if (//.test(character)) return {type: 'none'}; - inputState.selectedCharacter = character; + if (bestMatch.keys.slice(-11) == '' || bestMatch.keys.slice(-10) == '') { + var character = lastChar(keys); + if (!character || character.length > 1) + return { type: 'clear' }; + inputState.selectedCharacter = character; } - return {type: 'full', command: bestMatch}; - }, - processCommand: function(cm, vim, command) { + return { type: 'full', command: bestMatch }; + }, + processCommand: function (cm, vim, command) { vim.inputState.repeatOverride = command.repeatOverride; switch (command.type) { - case 'motion': - this.processMotion(cm, vim, command); - break; - case 'operator': - this.processOperator(cm, vim, command); - break; - case 'operatorMotion': - this.processOperatorMotion(cm, vim, command); - break; - case 'action': - this.processAction(cm, vim, command); - break; - case 'search': - this.processSearch(cm, vim, command); - break; - case 'ex': - case 'keyToEx': - this.processEx(cm, vim, command); - break; - default: - break; + case 'motion': + this.processMotion(cm, vim, command); + break; + case 'operator': + this.processOperator(cm, vim, command); + break; + case 'operatorMotion': + this.processOperatorMotion(cm, vim, command); + break; + case 'action': + this.processAction(cm, vim, command); + break; + case 'search': + this.processSearch(cm, vim, command); + break; + case 'ex': + case 'keyToEx': + this.processEx(cm, vim, command); + break; + default: + break; } - }, - processMotion: function(cm, vim, command) { + }, + processMotion: function (cm, vim, command) { vim.inputState.motion = command.motion; vim.inputState.motionArgs = copyArgs(command.motionArgs); this.evalInput(cm, vim); - }, - processOperator: function(cm, vim, command) { + }, + processOperator: function (cm, vim, command) { var inputState = vim.inputState; if (inputState.operator) { - if (inputState.operator == command.operator) { - inputState.motion = 'expandToLine'; - inputState.motionArgs = { linewise: true }; - this.evalInput(cm, vim); - return; - } else { - clearInputState(cm); - } + if (inputState.operator == command.operator) { + inputState.motion = 'expandToLine'; + inputState.motionArgs = { linewise: true }; + this.evalInput(cm, vim); + return; + } + else { + clearInputState(cm); + } } inputState.operator = command.operator; inputState.operatorArgs = copyArgs(command.operatorArgs); - if (vim.visualMode) { - this.evalInput(cm, vim); + if (command.keys.length > 1) { + inputState.operatorShortcut = command.keys; } - }, - processOperatorMotion: function(cm, vim, command) { + if (command.exitVisualBlock) { + vim.visualBlock = false; + updateCmSelection(cm); + } + if (vim.visualMode) { + this.evalInput(cm, vim); + } + }, + processOperatorMotion: function (cm, vim, command) { var visualMode = vim.visualMode; var operatorMotionArgs = copyArgs(command.operatorMotionArgs); if (operatorMotionArgs) { - if (visualMode && operatorMotionArgs.visualLine) { - vim.visualLine = true; - } + if (visualMode && operatorMotionArgs.visualLine) { + vim.visualLine = true; + } } this.processOperator(cm, vim, command); if (!visualMode) { - this.processMotion(cm, vim, command); + this.processMotion(cm, vim, command); } - }, - processAction: function(cm, vim, command) { + }, + processAction: function (cm, vim, command) { var inputState = vim.inputState; var repeat = inputState.getRepeat(); var repeatIsExplicit = !!repeat; var actionArgs = copyArgs(command.actionArgs) || {}; if (inputState.selectedCharacter) { - actionArgs.selectedCharacter = inputState.selectedCharacter; + actionArgs.selectedCharacter = inputState.selectedCharacter; } if (command.operator) { - this.processOperator(cm, vim, command); + this.processOperator(cm, vim, command); } if (command.motion) { - this.processMotion(cm, vim, command); + this.processMotion(cm, vim, command); } if (command.motion || command.operator) { - this.evalInput(cm, vim); + this.evalInput(cm, vim); } actionArgs.repeat = repeat || 1; actionArgs.repeatIsExplicit = repeatIsExplicit; @@ -1820,13 +2351,13 @@ dom.importCssString(".normal-mode .ace_cursor{\ clearInputState(cm); vim.lastMotion = null; if (command.isEdit) { - this.recordLastEdit(vim, inputState, command); + this.recordLastEdit(vim, inputState, command); } actions[command.action](cm, actionArgs, vim); - }, - processSearch: function(cm, vim, command) { + }, + processSearch: function (cm, vim, command) { if (!cm.getSearchCursor) { - return; + return; } var forward = command.searchArgs.forward; var wholeWordOnly = command.searchArgs.wholeWordOnly; @@ -1835,156 +2366,171 @@ dom.importCssString(".normal-mode .ace_cursor{\ var originalQuery = getSearchState(cm).getQuery(); var originalScrollPos = cm.getScrollInfo(); function handleQuery(query, ignoreCase, smartCase) { - vimGlobalState.searchHistoryController.pushInput(query); - vimGlobalState.searchHistoryController.reset(); - try { - updateSearchQuery(cm, query, ignoreCase, smartCase); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + query); - clearInputState(cm); - return; - } - commandDispatcher.processMotion(cm, vim, { - type: 'motion', - motion: 'findNext', - motionArgs: { forward: true, toJumplist: command.searchArgs.toJumplist } - }); - } - function onPromptClose(query) { - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - handleQuery(query, true /** ignoreCase */, true /** smartCase */); - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isRecording) { - logSearchQuery(macroModeState, query); - } - } - function onPromptKeyUp(e, query, close) { - var keyName = CodeMirror.keyName(e), up; - if (keyName == 'Up' || keyName == 'Down') { - up = keyName == 'Up' ? true : false; - query = vimGlobalState.searchHistoryController.nextMatch(query, up) || ''; - close(query); - } else { - if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') - vimGlobalState.searchHistoryController.reset(); - } - var parsedQuery; - try { - parsedQuery = updateSearchQuery(cm, query, - true /** ignoreCase */, true /** smartCase */); - } catch (e) { - } - if (parsedQuery) { - cm.scrollIntoView(findNext(cm, !forward, parsedQuery), 30); - } else { - clearSearchHighlight(cm); - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - } - } - function onPromptKeyDown(e, query, close) { - var keyName = CodeMirror.keyName(e); - if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || - (keyName == 'Backspace' && query == '')) { vimGlobalState.searchHistoryController.pushInput(query); vimGlobalState.searchHistoryController.reset(); - updateSearchQuery(cm, originalQuery); - clearSearchHighlight(cm); - cm.scrollTo(originalScrollPos.left, originalScrollPos.top); - CodeMirror.e_stop(e); - clearInputState(cm); - close(); - cm.focus(); - } else if (keyName == 'Ctrl-U') { - CodeMirror.e_stop(e); - close(''); - } + try { + updateSearchQuery(cm, query, ignoreCase, smartCase); + } + catch (e) { + showConfirm(cm, 'Invalid regex: ' + query); + clearInputState(cm); + return; + } + commandDispatcher.processMotion(cm, vim, { + type: 'motion', + motion: 'findNext', + motionArgs: { forward: true, toJumplist: command.searchArgs.toJumplist } + }); + } + function onPromptClose(query) { + handleQuery(query, true /** ignoreCase */, true /** smartCase */); + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isRecording) { + logSearchQuery(macroModeState, query); + } + } + function onPromptKeyUp(e, query, close) { + var keyName = vimKeyFromEvent(e), up, offset; + if (keyName == '' || keyName == '') { + up = keyName == '' ? true : false; + offset = e.target ? e.target.selectionEnd : 0; + query = vimGlobalState.searchHistoryController.nextMatch(query, up) || ''; + close(query); + if (offset && e.target) + e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length); + } + else if (keyName && keyName != '' && keyName != '') { + vimGlobalState.searchHistoryController.reset(); + } + var parsedQuery; + try { + parsedQuery = updateSearchQuery(cm, query, true /** ignoreCase */, true /** smartCase */); + } + catch (e) { + } + if (parsedQuery) { + cm.scrollIntoView(findNext(cm, !forward, parsedQuery), 30); + } + else { + clearSearchHighlight(cm); + cm.scrollTo(originalScrollPos.left, originalScrollPos.top); + } + } + function onPromptKeyDown(e, query, close) { + var keyName = vimKeyFromEvent(e); + if (keyName == '' || keyName == '' || keyName == '' || + (keyName == '' && query == '')) { + vimGlobalState.searchHistoryController.pushInput(query); + vimGlobalState.searchHistoryController.reset(); + updateSearchQuery(cm, originalQuery); + clearSearchHighlight(cm); + cm.scrollTo(originalScrollPos.left, originalScrollPos.top); + CodeMirror.e_stop(e); + clearInputState(cm); + close(); + cm.focus(); + } + else if (keyName == '' || keyName == '') { + CodeMirror.e_stop(e); + } + else if (keyName == '') { + CodeMirror.e_stop(e); + close(''); + } } switch (command.searchArgs.querySrc) { - case 'prompt': - var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { - var query = macroModeState.replaySearchQueries.shift(); - handleQuery(query, true /** ignoreCase */, false /** smartCase */); - } else { - showPrompt(cm, { - onClose: onPromptClose, - prefix: promptPrefix, - desc: searchPromptDesc, - onKeyUp: onPromptKeyUp, - onKeyDown: onPromptKeyDown - }); - } - break; - case 'wordUnderCursor': - var word = expandWordUnderCursor(cm, false /** inclusive */, - true /** forward */, false /** bigWord */, - true /** noSymbol */); - var isKeyword = true; - if (!word) { - word = expandWordUnderCursor(cm, false /** inclusive */, - true /** forward */, false /** bigWord */, - false /** noSymbol */); - isKeyword = false; - } - if (!word) { - return; - } - var query = cm.getLine(word.start.line).substring(word.start.ch, - word.end.ch); - if (isKeyword && wholeWordOnly) { - query = '\\b' + query + '\\b'; - } else { - query = escapeRegex(query); - } - vimGlobalState.jumpList.cachedCursor = cm.getCursor(); - cm.setCursor(word.start); - - handleQuery(query, true /** ignoreCase */, false /** smartCase */); - break; + case 'prompt': + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isPlaying) { + var query = macroModeState.replaySearchQueries.shift(); + handleQuery(query, true /** ignoreCase */, false /** smartCase */); + } + else { + showPrompt(cm, { + onClose: onPromptClose, + prefix: promptPrefix, + desc: '(JavaScript regexp)', + onKeyUp: onPromptKeyUp, + onKeyDown: onPromptKeyDown + }); + } + break; + case 'wordUnderCursor': + var word = expandWordUnderCursor(cm, { noSymbol: true }); + var isKeyword = true; + if (!word) { + word = expandWordUnderCursor(cm, { noSymbol: false }); + isKeyword = false; + } + if (!word) { + showConfirm(cm, 'No word under cursor'); + clearInputState(cm); + return; + } + var query = cm.getLine(word.start.line).substring(word.start.ch, word.end.ch); + if (isKeyword && wholeWordOnly) { + query = '\\b' + query + '\\b'; + } + else { + query = escapeRegex(query); + } + vimGlobalState.jumpList.cachedCursor = cm.getCursor(); + cm.setCursor(word.start); + handleQuery(query, true /** ignoreCase */, false /** smartCase */); + break; } - }, - processEx: function(cm, vim, command) { + }, + processEx: function (cm, vim, command) { function onPromptClose(input) { - vimGlobalState.exCommandHistoryController.pushInput(input); - vimGlobalState.exCommandHistoryController.reset(); - exCommandDispatcher.processCommand(cm, input); - } - function onPromptKeyDown(e, input, close) { - var keyName = CodeMirror.keyName(e), up; - if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || - (keyName == 'Backspace' && input == '')) { vimGlobalState.exCommandHistoryController.pushInput(input); vimGlobalState.exCommandHistoryController.reset(); - CodeMirror.e_stop(e); - clearInputState(cm); - close(); - cm.focus(); - } - if (keyName == 'Up' || keyName == 'Down') { - up = keyName == 'Up' ? true : false; - input = vimGlobalState.exCommandHistoryController.nextMatch(input, up) || ''; - close(input); - } else if (keyName == 'Ctrl-U') { - CodeMirror.e_stop(e); - close(''); - } else { - if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') - vimGlobalState.exCommandHistoryController.reset(); - } + exCommandDispatcher.processCommand(cm, input); + if (cm.state.vim) + clearInputState(cm); + } + function onPromptKeyDown(e, input, close) { + var keyName = vimKeyFromEvent(e), up, offset; + if (keyName == '' || keyName == '' || keyName == '' || + (keyName == '' && input == '')) { + vimGlobalState.exCommandHistoryController.pushInput(input); + vimGlobalState.exCommandHistoryController.reset(); + CodeMirror.e_stop(e); + clearInputState(cm); + close(); + cm.focus(); + } + if (keyName == '' || keyName == '') { + CodeMirror.e_stop(e); + up = keyName == '' ? true : false; + offset = e.target ? e.target.selectionEnd : 0; + input = vimGlobalState.exCommandHistoryController.nextMatch(input, up) || ''; + close(input); + if (offset && e.target) + e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length); + } + else if (keyName == '') { + CodeMirror.e_stop(e); + close(''); + } + else if (keyName && keyName != '' && keyName != '') { + vimGlobalState.exCommandHistoryController.reset(); + } } if (command.type == 'keyToEx') { - exCommandDispatcher.processCommand(cm, command.exArgs.input); - } else { - if (vim.visualMode) { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>', - onKeyDown: onPromptKeyDown}); - } else { - showPrompt(cm, { onClose: onPromptClose, prefix: ':', - onKeyDown: onPromptKeyDown}); - } + exCommandDispatcher.processCommand(cm, command.exArgs.input); } - }, - evalInput: function(cm, vim) { + else { + if (vim.visualMode) { + showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>', + onKeyDown: onPromptKeyDown, selectValueOnOpen: false }); + } + else { + showPrompt(cm, { onClose: onPromptClose, prefix: ':', + onKeyDown: onPromptKeyDown }); + } + } + }, + evalInput: function (cm, vim) { var inputState = vim.inputState; var motion = inputState.motion; var motionArgs = inputState.motionArgs || {}; @@ -1992,488 +2538,599 @@ dom.importCssString(".normal-mode .ace_cursor{\ var operatorArgs = inputState.operatorArgs || {}; var registerName = inputState.registerName; var sel = vim.sel; - var origHead = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.head): cm.getCursor('head')); + var origHead = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.head) : cm.getCursor('head')); var origAnchor = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.anchor) : cm.getCursor('anchor')); var oldHead = copyCursor(origHead); var oldAnchor = copyCursor(origAnchor); var newHead, newAnchor; var repeat; if (operator) { - this.recordLastEdit(vim, inputState); + this.recordLastEdit(vim, inputState); } if (inputState.repeatOverride !== undefined) { - repeat = inputState.repeatOverride; - } else { - repeat = inputState.getRepeat(); + repeat = inputState.repeatOverride; + } + else { + repeat = inputState.getRepeat(); } if (repeat > 0 && motionArgs.explicitRepeat) { - motionArgs.repeatIsExplicit = true; - } else if (motionArgs.noRepeat || + motionArgs.repeatIsExplicit = true; + } + else if (motionArgs.noRepeat || (!motionArgs.explicitRepeat && repeat === 0)) { - repeat = 1; - motionArgs.repeatIsExplicit = false; + repeat = 1; + motionArgs.repeatIsExplicit = false; } if (inputState.selectedCharacter) { - motionArgs.selectedCharacter = operatorArgs.selectedCharacter = - inputState.selectedCharacter; + motionArgs.selectedCharacter = operatorArgs.selectedCharacter = + inputState.selectedCharacter; } motionArgs.repeat = repeat; clearInputState(cm); if (motion) { - var motionResult = motions[motion](cm, origHead, motionArgs, vim); - vim.lastMotion = motions[motion]; - if (!motionResult) { - return; - } - if (motionArgs.toJumplist) { - if (!operator && cm.ace.curOp != null) - cm.ace.curOp.command.scrollIntoView = "center-animate"; // ace_patch - var jumpList = vimGlobalState.jumpList; - var cachedCursor = jumpList.cachedCursor; - if (cachedCursor) { - recordJumpPosition(cm, cachedCursor, motionResult); - delete jumpList.cachedCursor; - } else { - recordJumpPosition(cm, origHead, motionResult); + var motionResult = motions[motion](cm, origHead, motionArgs, vim, inputState); + vim.lastMotion = motions[motion]; + if (!motionResult) { + return; } - } - if (motionResult instanceof Array) { - newAnchor = motionResult[0]; - newHead = motionResult[1]; - } else { - newHead = motionResult; - } - if (!newHead) { - newHead = copyCursor(origHead); - } - if (vim.visualMode) { - if (!(vim.visualBlock && newHead.ch === Infinity)) { - newHead = clipCursorToContent(cm, newHead, vim.visualBlock); + if (motionArgs.toJumplist) { + if (!operator && cm.ace.curOp != null) + cm.ace.curOp.command.scrollIntoView = "center-animate"; // ace_patch + var jumpList = vimGlobalState.jumpList; + var cachedCursor = jumpList.cachedCursor; + if (cachedCursor) { + recordJumpPosition(cm, cachedCursor, motionResult); + delete jumpList.cachedCursor; + } + else { + recordJumpPosition(cm, origHead, motionResult); + } } - if (newAnchor) { - newAnchor = clipCursorToContent(cm, newAnchor, true); + if (motionResult instanceof Array) { + newAnchor = motionResult[0]; + newHead = motionResult[1]; } - newAnchor = newAnchor || oldAnchor; - sel.anchor = newAnchor; - sel.head = newHead; - updateCmSelection(cm); - updateMark(cm, vim, '<', - cursorIsBefore(newAnchor, newHead) ? newAnchor + else { + newHead = motionResult; + } + if (!newHead) { + newHead = copyCursor(origHead); + } + if (vim.visualMode) { + if (!(vim.visualBlock && newHead.ch === Infinity)) { + newHead = clipCursorToContent(cm, newHead, oldHead); + } + if (newAnchor) { + newAnchor = clipCursorToContent(cm, newAnchor); + } + newAnchor = newAnchor || oldAnchor; + sel.anchor = newAnchor; + sel.head = newHead; + updateCmSelection(cm); + updateMark(cm, vim, '<', cursorIsBefore(newAnchor, newHead) ? newAnchor : newHead); - updateMark(cm, vim, '>', - cursorIsBefore(newAnchor, newHead) ? newHead + updateMark(cm, vim, '>', cursorIsBefore(newAnchor, newHead) ? newHead : newAnchor); - } else if (!operator) { - newHead = clipCursorToContent(cm, newHead); - cm.setCursor(newHead.line, newHead.ch); - } + } + else if (!operator) { + if (cm.ace.curOp) + cm.ace.curOp.vimDialogScroll = "center-animate"; // ace_patch + newHead = clipCursorToContent(cm, newHead, oldHead); + cm.setCursor(newHead.line, newHead.ch); + } } if (operator) { - if (operatorArgs.lastSel) { - newAnchor = oldAnchor; - var lastSel = operatorArgs.lastSel; - var lineOffset = Math.abs(lastSel.head.line - lastSel.anchor.line); - var chOffset = Math.abs(lastSel.head.ch - lastSel.anchor.ch); - if (lastSel.visualLine) { - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); - } else if (lastSel.visualBlock) { - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch + chOffset); - } else if (lastSel.head.line == lastSel.anchor.line) { - newHead = Pos(oldAnchor.line, oldAnchor.ch + chOffset); - } else { - newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); - } - vim.visualMode = true; - vim.visualLine = lastSel.visualLine; - vim.visualBlock = lastSel.visualBlock; - sel = vim.sel = { - anchor: newAnchor, - head: newHead - }; - updateCmSelection(cm); - } else if (vim.visualMode) { - operatorArgs.lastSel = { - anchor: copyCursor(sel.anchor), - head: copyCursor(sel.head), - visualBlock: vim.visualBlock, - visualLine: vim.visualLine - }; - } - var curStart, curEnd, linewise, mode; - var cmSel; - if (vim.visualMode) { - curStart = cursorMin(sel.head, sel.anchor); - curEnd = cursorMax(sel.head, sel.anchor); - linewise = vim.visualLine || operatorArgs.linewise; - mode = vim.visualBlock ? 'block' : - linewise ? 'line' : - 'char'; - cmSel = makeCmSelection(cm, { - anchor: curStart, - head: curEnd - }, mode); - if (linewise) { - var ranges = cmSel.ranges; - if (mode == 'block') { - for (var i = 0; i < ranges.length; i++) { - ranges[i].head.ch = lineLength(cm, ranges[i].head.line); + if (operatorArgs.lastSel) { + newAnchor = oldAnchor; + var lastSel = operatorArgs.lastSel; + var lineOffset = Math.abs(lastSel.head.line - lastSel.anchor.line); + var chOffset = Math.abs(lastSel.head.ch - lastSel.anchor.ch); + if (lastSel.visualLine) { + newHead = new Pos(oldAnchor.line + lineOffset, oldAnchor.ch); } - } else if (mode == 'line') { - ranges[0].head = Pos(ranges[0].head.line + 1, 0); - } + else if (lastSel.visualBlock) { + newHead = new Pos(oldAnchor.line + lineOffset, oldAnchor.ch + chOffset); + } + else if (lastSel.head.line == lastSel.anchor.line) { + newHead = new Pos(oldAnchor.line, oldAnchor.ch + chOffset); + } + else { + newHead = new Pos(oldAnchor.line + lineOffset, oldAnchor.ch); + } + vim.visualMode = true; + vim.visualLine = lastSel.visualLine; + vim.visualBlock = lastSel.visualBlock; + sel = vim.sel = { + anchor: newAnchor, + head: newHead + }; + updateCmSelection(cm); } - } else { - curStart = copyCursor(newAnchor || oldAnchor); - curEnd = copyCursor(newHead || oldHead); - if (cursorIsBefore(curEnd, curStart)) { - var tmp = curStart; - curStart = curEnd; - curEnd = tmp; + else if (vim.visualMode) { + operatorArgs.lastSel = { + anchor: copyCursor(sel.anchor), + head: copyCursor(sel.head), + visualBlock: vim.visualBlock, + visualLine: vim.visualLine + }; } - linewise = motionArgs.linewise || operatorArgs.linewise; - if (linewise) { - expandSelectionToLine(cm, curStart, curEnd); - } else if (motionArgs.forward) { - clipToLine(cm, curStart, curEnd); + var curStart, curEnd, linewise, mode; + var cmSel; + if (vim.visualMode) { + curStart = cursorMin(sel.head, sel.anchor); + curEnd = cursorMax(sel.head, sel.anchor); + linewise = vim.visualLine || operatorArgs.linewise; + mode = vim.visualBlock ? 'block' : + linewise ? 'line' : + 'char'; + var newPositions = updateSelectionForSurrogateCharacters(cm, curStart, curEnd); + cmSel = makeCmSelection(cm, { + anchor: newPositions.start, + head: newPositions.end + }, mode); + if (linewise) { + var ranges = cmSel.ranges; + if (mode == 'block') { + for (var i = 0; i < ranges.length; i++) { + ranges[i].head.ch = lineLength(cm, ranges[i].head.line); + } + } + else if (mode == 'line') { + ranges[0].head = new Pos(ranges[0].head.line + 1, 0); + } + } + } + else { + curStart = copyCursor(newAnchor || oldAnchor); + curEnd = copyCursor(newHead || oldHead); + if (cursorIsBefore(curEnd, curStart)) { + var tmp = curStart; + curStart = curEnd; + curEnd = tmp; + } + linewise = motionArgs.linewise || operatorArgs.linewise; + if (linewise) { + expandSelectionToLine(cm, curStart, curEnd); + } + else if (motionArgs.forward) { + clipToLine(cm, curStart, curEnd); + } + mode = 'char'; + var exclusive = !motionArgs.inclusive || linewise; + var newPositions = updateSelectionForSurrogateCharacters(cm, curStart, curEnd); + cmSel = makeCmSelection(cm, { + anchor: newPositions.start, + head: newPositions.end + }, mode, exclusive); + } + cm.setSelections(cmSel.ranges, cmSel.primary); + vim.lastMotion = null; + operatorArgs.repeat = repeat; // For indent in visual mode. + operatorArgs.registerName = registerName; + operatorArgs.linewise = linewise; + var operatorMoveTo = operators[operator](cm, operatorArgs, cmSel.ranges, oldAnchor, newHead); + if (vim.visualMode) { + exitVisualMode(cm, operatorMoveTo != null); + } + if (operatorMoveTo) { + cm.setCursor(operatorMoveTo); } - mode = 'char'; - var exclusive = !motionArgs.inclusive || linewise; - cmSel = makeCmSelection(cm, { - anchor: curStart, - head: curEnd - }, mode, exclusive); - } - cm.setSelections(cmSel.ranges, cmSel.primary); - vim.lastMotion = null; - operatorArgs.repeat = repeat; // For indent in visual mode. - operatorArgs.registerName = registerName; - operatorArgs.linewise = linewise; - var operatorMoveTo = operators[operator]( - cm, operatorArgs, cmSel.ranges, oldAnchor, newHead); - if (vim.visualMode) { - exitVisualMode(cm, operatorMoveTo != null); - } - if (operatorMoveTo) { - cm.setCursor(operatorMoveTo); - } } - }, - recordLastEdit: function(vim, inputState, actionCommand) { + }, + recordLastEdit: function (vim, inputState, actionCommand) { var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { return; } + if (macroModeState.isPlaying) { + return; + } vim.lastEditInputState = inputState; vim.lastEditActionCommand = actionCommand; macroModeState.lastInsertModeChanges.changes = []; macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false; - } - }; - var motions = { - moveToTopLine: function(cm, _head, motionArgs) { - var line = getUserVisibleLines(cm).top + motionArgs.repeat -1; - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - moveToMiddleLine: function(cm) { + macroModeState.lastInsertModeChanges.visualBlock = vim.visualBlock ? vim.sel.head.line - vim.sel.anchor.line : 0; + } +}; +var motions = { + moveToTopLine: function (cm, _head, motionArgs) { + var line = getUserVisibleLines(cm).top + motionArgs.repeat - 1; + return new Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + moveToMiddleLine: function (cm) { var range = getUserVisibleLines(cm); var line = Math.floor((range.top + range.bottom) * 0.5); - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - moveToBottomLine: function(cm, _head, motionArgs) { - var line = getUserVisibleLines(cm).bottom - motionArgs.repeat +1; - return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); - }, - expandToLine: function(_cm, head, motionArgs) { + return new Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + moveToBottomLine: function (cm, _head, motionArgs) { + var line = getUserVisibleLines(cm).bottom - motionArgs.repeat + 1; + return new Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + expandToLine: function (_cm, head, motionArgs) { var cur = head; - return Pos(cur.line + motionArgs.repeat - 1, Infinity); - }, - findNext: function(cm, _head, motionArgs) { + return new Pos(cur.line + motionArgs.repeat - 1, Infinity); + }, + findNext: function (cm, _head, motionArgs) { var state = getSearchState(cm); var query = state.getQuery(); if (!query) { - return; + return; } var prev = !motionArgs.forward; prev = (state.isReversed()) ? !prev : prev; highlightSearchMatches(cm, query); - return findNext(cm, prev/** prev */, query, motionArgs.repeat); - }, - goToMark: function(cm, _head, motionArgs, vim) { - var mark = vim.marks[motionArgs.selectedCharacter]; - if (mark) { - var pos = mark.find(); - return motionArgs.linewise ? { line: pos.line, ch: findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line)) } : pos; + return findNext(cm, prev /** prev */, query, motionArgs.repeat); + }, + findAndSelectNextInclusive: function (cm, _head, motionArgs, vim, prevInputState) { + var state = getSearchState(cm); + var query = state.getQuery(); + if (!query) { + return; + } + var prev = !motionArgs.forward; + prev = (state.isReversed()) ? !prev : prev; + var next = findNextFromAndToInclusive(cm, prev, query, motionArgs.repeat, vim); + if (!next) { + return; + } + if (prevInputState.operator) { + return next; + } + var from = next[0]; + var to = new Pos(next[1].line, next[1].ch - 1); + if (vim.visualMode) { + if (vim.visualLine || vim.visualBlock) { + vim.visualLine = false; + vim.visualBlock = false; + CodeMirror.signal(cm, "vim-mode-change", { mode: "visual", subMode: "" }); + } + var anchor = vim.sel.anchor; + if (anchor) { + if (state.isReversed()) { + if (motionArgs.forward) { + return [anchor, from]; + } + return [anchor, to]; + } + else { + if (motionArgs.forward) { + return [anchor, to]; + } + return [anchor, from]; + } + } + } + else { + vim.visualMode = true; + vim.visualLine = false; + vim.visualBlock = false; + CodeMirror.signal(cm, "vim-mode-change", { mode: "visual", subMode: "" }); + } + return prev ? [to, from] : [from, to]; + }, + goToMark: function (cm, _head, motionArgs, vim) { + var pos = getMarkPos(cm, vim, motionArgs.selectedCharacter); + if (pos) { + return motionArgs.linewise ? { line: pos.line, ch: findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line)) } : pos; } return null; - }, - moveToOtherHighlightedEnd: function(cm, _head, motionArgs, vim) { + }, + moveToOtherHighlightedEnd: function (cm, _head, motionArgs, vim) { if (vim.visualBlock && motionArgs.sameLine) { - var sel = vim.sel; - return [ - clipCursorToContent(cm, Pos(sel.anchor.line, sel.head.ch)), - clipCursorToContent(cm, Pos(sel.head.line, sel.anchor.ch)) - ]; - } else { - return ([vim.sel.head, vim.sel.anchor]); + var sel = vim.sel; + return [ + clipCursorToContent(cm, new Pos(sel.anchor.line, sel.head.ch)), + clipCursorToContent(cm, new Pos(sel.head.line, sel.anchor.ch)) + ]; } - }, - jumpToMark: function(cm, head, motionArgs, vim) { + else { + return ([vim.sel.head, vim.sel.anchor]); + } + }, + jumpToMark: function (cm, head, motionArgs, vim) { var best = head; for (var i = 0; i < motionArgs.repeat; i++) { - var cursor = best; - for (var key in vim.marks) { - if (!isLowerCase(key)) { - continue; + var cursor = best; + for (var key in vim.marks) { + if (!isLowerCase(key)) { + continue; + } + var mark = vim.marks[key].find(); + var isWrongDirection = (motionArgs.forward) ? + cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark); + if (isWrongDirection) { + continue; + } + if (motionArgs.linewise && (mark.line == cursor.line)) { + continue; + } + var equal = cursorEqual(cursor, best); + var between = (motionArgs.forward) ? + cursorIsBetween(cursor, mark, best) : + cursorIsBetween(best, mark, cursor); + if (equal || between) { + best = mark; + } } - var mark = vim.marks[key].find(); - var isWrongDirection = (motionArgs.forward) ? - cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark); - - if (isWrongDirection) { - continue; - } - if (motionArgs.linewise && (mark.line == cursor.line)) { - continue; - } - - var equal = cursorEqual(cursor, best); - var between = (motionArgs.forward) ? - cursorIsBetween(cursor, mark, best) : - cursorIsBetween(best, mark, cursor); - - if (equal || between) { - best = mark; - } - } } - if (motionArgs.linewise) { - best = Pos(best.line, findFirstNonWhiteSpaceCharacter(cm.getLine(best.line))); + best = new Pos(best.line, findFirstNonWhiteSpaceCharacter(cm.getLine(best.line))); } return best; - }, - moveByCharacters: function(_cm, head, motionArgs) { + }, + moveByCharacters: function (_cm, head, motionArgs) { var cur = head; var repeat = motionArgs.repeat; var ch = motionArgs.forward ? cur.ch + repeat : cur.ch - repeat; - return Pos(cur.line, ch); - }, - moveByLines: function(cm, head, motionArgs, vim) { + return new Pos(cur.line, ch); + }, + moveByLines: function (cm, head, motionArgs, vim) { var cur = head; var endCh = cur.ch; switch (vim.lastMotion) { - case this.moveByLines: - case this.moveByDisplayLines: - case this.moveByScroll: - case this.moveToColumn: - case this.moveToEol: - endCh = vim.lastHPos; - break; - default: - vim.lastHPos = endCh; + case this.moveByLines: + case this.moveByDisplayLines: + case this.moveByScroll: + case this.moveToColumn: + case this.moveToEol: + endCh = vim.lastHPos; + break; + default: + vim.lastHPos = endCh; } - var repeat = motionArgs.repeat+(motionArgs.repeatOffset||0); + var repeat = motionArgs.repeat + (motionArgs.repeatOffset || 0); var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat; var first = cm.firstLine(); var last = cm.lastLine(); - if ((line < first && cur.line == first) || - (line > last && cur.line == last)) { - return; + if (line < first && cur.line == first) { + return this.moveToStartOfLine(cm, head, motionArgs, vim); + } + else if (line > last && cur.line == last) { + return moveToEol(cm, head, motionArgs, vim, true); } var fold = cm.ace.session.getFoldLine(line); if (fold) { - if (motionArgs.forward) { - if (line > fold.start.row) - line = fold.end.row + 1; - } else { - line = fold.start.row; - } + if (motionArgs.forward) { + if (line > fold.start.row) + line = fold.end.row + 1; + } + else { + line = fold.start.row; + } } - if (motionArgs.toFirstChar){ - endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line)); - vim.lastHPos = endCh; + if (motionArgs.toFirstChar) { + endCh = findFirstNonWhiteSpaceCharacter(cm.getLine(line)); + vim.lastHPos = endCh; } - vim.lastHSPos = cm.charCoords(Pos(line, endCh),'div').left; - return Pos(line, endCh); - }, - moveByDisplayLines: function(cm, head, motionArgs, vim) { + vim.lastHSPos = cm.charCoords(new Pos(line, endCh), 'div').left; + return new Pos(line, endCh); + }, + moveByDisplayLines: function (cm, head, motionArgs, vim) { var cur = head; switch (vim.lastMotion) { - case this.moveByDisplayLines: - case this.moveByScroll: - case this.moveByLines: - case this.moveToColumn: - case this.moveToEol: - break; - default: - vim.lastHSPos = cm.charCoords(cur,'div').left; + case this.moveByDisplayLines: + case this.moveByScroll: + case this.moveByLines: + case this.moveToColumn: + case this.moveToEol: + break; + default: + vim.lastHSPos = cm.charCoords(cur, 'div').left; } var repeat = motionArgs.repeat; - var res=cm.findPosV(cur,(motionArgs.forward ? repeat : -repeat),'line',vim.lastHSPos); + var res = cm.findPosV(cur, (motionArgs.forward ? repeat : -repeat), 'line', vim.lastHSPos); if (res.hitSide) { - if (motionArgs.forward) { - var lastCharCoords = cm.charCoords(res, 'div'); - var goalCoords = { top: lastCharCoords.top + 8, left: vim.lastHSPos }; - var res = cm.coordsChar(goalCoords, 'div'); - } else { - var resCoords = cm.charCoords(Pos(cm.firstLine(), 0), 'div'); - resCoords.left = vim.lastHSPos; - res = cm.coordsChar(resCoords, 'div'); - } + if (motionArgs.forward) { + var lastCharCoords = cm.charCoords(res, 'div'); + var goalCoords = { top: lastCharCoords.top + 8, left: vim.lastHSPos }; + var res = cm.coordsChar(goalCoords, 'div'); + } + else { + var resCoords = cm.charCoords(new Pos(cm.firstLine(), 0), 'div'); + resCoords.left = vim.lastHSPos; + res = cm.coordsChar(resCoords, 'div'); + } } vim.lastHPos = res.ch; return res; - }, - moveByPage: function(cm, head, motionArgs) { + }, + moveByPage: function (cm, head, motionArgs) { var curStart = head; var repeat = motionArgs.repeat; return cm.findPosV(curStart, (motionArgs.forward ? repeat : -repeat), 'page'); - }, - moveByParagraph: function(cm, head, motionArgs) { + }, + moveByParagraph: function (cm, head, motionArgs) { var dir = motionArgs.forward ? 1 : -1; return findParagraph(cm, head, motionArgs.repeat, dir); - }, - moveByScroll: function(cm, head, motionArgs, vim) { + }, + moveBySentence: function (cm, head, motionArgs) { + var dir = motionArgs.forward ? 1 : -1; + return findSentence(cm, head, motionArgs.repeat, dir); + }, + moveByScroll: function (cm, head, motionArgs, vim) { var scrollbox = cm.getScrollInfo(); var curEnd = null; var repeat = motionArgs.repeat; if (!repeat) { - repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight()); + repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight()); } var orig = cm.charCoords(head, 'local'); motionArgs.repeat = repeat; - var curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim); + curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim); if (!curEnd) { - return null; + return null; } var dest = cm.charCoords(curEnd, 'local'); cm.scrollTo(null, scrollbox.top + dest.top - orig.top); return curEnd; - }, - moveByWords: function(cm, head, motionArgs) { - return moveToWord(cm, head, motionArgs.repeat, !!motionArgs.forward, - !!motionArgs.wordEnd, !!motionArgs.bigWord); - }, - moveTillCharacter: function(cm, _head, motionArgs) { + }, + moveByWords: function (cm, head, motionArgs) { + return moveToWord(cm, head, motionArgs.repeat, !!motionArgs.forward, !!motionArgs.wordEnd, !!motionArgs.bigWord); + }, + moveTillCharacter: function (cm, head, motionArgs) { var repeat = motionArgs.repeat; - var curEnd = moveToCharacter(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter); + var curEnd = moveToCharacter(cm, repeat, motionArgs.forward, motionArgs.selectedCharacter, head); var increment = motionArgs.forward ? -1 : 1; recordLastCharacterSearch(increment, motionArgs); - if (!curEnd) return null; + if (!curEnd) + return null; curEnd.ch += increment; return curEnd; - }, - moveToCharacter: function(cm, head, motionArgs) { + }, + moveToCharacter: function (cm, head, motionArgs) { var repeat = motionArgs.repeat; recordLastCharacterSearch(0, motionArgs); - return moveToCharacter(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter) || head; - }, - moveToSymbol: function(cm, head, motionArgs) { + return moveToCharacter(cm, repeat, motionArgs.forward, motionArgs.selectedCharacter, head) || head; + }, + moveToSymbol: function (cm, head, motionArgs) { var repeat = motionArgs.repeat; - return findSymbol(cm, repeat, motionArgs.forward, - motionArgs.selectedCharacter) || head; - }, - moveToColumn: function(cm, head, motionArgs, vim) { + return findSymbol(cm, repeat, motionArgs.forward, motionArgs.selectedCharacter) || head; + }, + moveToColumn: function (cm, head, motionArgs, vim) { var repeat = motionArgs.repeat; vim.lastHPos = repeat - 1; - vim.lastHSPos = cm.charCoords(head,'div').left; + vim.lastHSPos = cm.charCoords(head, 'div').left; return moveToColumn(cm, repeat); - }, - moveToEol: function(cm, head, motionArgs, vim) { - var cur = head; - vim.lastHPos = Infinity; - var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity); - var end=cm.clipPos(retval); - end.ch--; - vim.lastHSPos = cm.charCoords(end,'div').left; - return retval; - }, - moveToFirstNonWhiteSpaceCharacter: function(cm, head) { + }, + moveToEol: function (cm, head, motionArgs, vim) { + return moveToEol(cm, head, motionArgs, vim, false); + }, + moveToFirstNonWhiteSpaceCharacter: function (cm, head) { var cursor = head; - return Pos(cursor.line, - findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line))); - }, - moveToMatchedSymbol: function(cm, head) { + return new Pos(cursor.line, findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line))); + }, + moveToMatchedSymbol: function (cm, head) { var cursor = head; var line = cursor.line; var ch = cursor.ch; var lineText = cm.getLine(line); var symbol; - do { - symbol = lineText.charAt(ch++); - if (symbol && isMatchableSymbol(symbol)) { - var style = cm.getTokenTypeAt(Pos(line, ch)); - if (style !== "string" && style !== "comment") { - break; + for (; ch < lineText.length; ch++) { + symbol = lineText.charAt(ch); + if (symbol && isMatchableSymbol(symbol)) { + var style = cm.getTokenTypeAt(new Pos(line, ch + 1)); + if (style !== "string" && style !== "comment") { + break; + } } - } - } while (symbol); - if (symbol) { - var matched = cm.findMatchingBracket(Pos(line, ch)); - return matched.to; - } else { - return cursor; } - }, - moveToStartOfLine: function(_cm, head) { - return Pos(head.line, 0); - }, - moveToLineOrEdgeOfDocument: function(cm, _head, motionArgs) { + if (ch < lineText.length) { + var re = /[<>]/.test(lineText[ch]) ? /[(){}[\]<>]/ : /[(){}[\]]/; //ace_patch? + var matched = cm.findMatchingBracket(new Pos(line, ch + 1), { bracketRegex: re }); + return matched.to; + } + else { + return cursor; + } + }, + moveToStartOfLine: function (_cm, head) { + return new Pos(head.line, 0); + }, + moveToLineOrEdgeOfDocument: function (cm, _head, motionArgs) { var lineNum = motionArgs.forward ? cm.lastLine() : cm.firstLine(); if (motionArgs.repeatIsExplicit) { - lineNum = motionArgs.repeat - cm.getOption('firstLineNumber'); + lineNum = motionArgs.repeat - cm.getOption('firstLineNumber'); } - return Pos(lineNum, - findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum))); - }, - textObjectManipulation: function(cm, head, motionArgs, vim) { - var mirroredPairs = {'(': ')', ')': '(', - '{': '}', '}': '{', - '[': ']', ']': '['}; - var selfPaired = {'\'': true, '"': true}; - + return new Pos(lineNum, findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum))); + }, + moveToStartOfDisplayLine: function (cm) { + cm.execCommand("goLineLeft"); + return cm.getCursor(); + }, + moveToEndOfDisplayLine: function (cm) { + cm.execCommand("goLineRight"); + var head = cm.getCursor(); + if (head.sticky == "before") + head.ch--; + return head; + }, + textObjectManipulation: function (cm, head, motionArgs, vim) { + var mirroredPairs = { '(': ')', ')': '(', + '{': '}', '}': '{', + '[': ']', ']': '[', + '<': '>', '>': '<' }; + var selfPaired = { '\'': true, '"': true, '`': true }; var character = motionArgs.selectedCharacter; if (character == 'b') { - character = '('; - } else if (character == 'B') { - character = '{'; + character = '('; + } + else if (character == 'B') { + character = '{'; } var inclusive = !motionArgs.textObjectInner; - - var tmp; + var tmp, move; if (mirroredPairs[character]) { - tmp = selectCompanionObject(cm, head, character, inclusive); - } else if (selfPaired[character]) { - tmp = findBeginningAndEnd(cm, head, character, inclusive); - } else if (character === 'W') { - tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, - true /** bigWord */); - } else if (character === 'w') { - tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, - false /** bigWord */); - } else if (character === 'p') { - tmp = findParagraph(cm, head, motionArgs.repeat, 0, inclusive); - motionArgs.linewise = true; - if (vim.visualMode) { - if (!vim.visualLine) { vim.visualLine = true; } - } else { - var operatorArgs = vim.inputState.operatorArgs; - if (operatorArgs) { operatorArgs.linewise = true; } - tmp.end.line--; - } - } else { - return null; + move = true; + tmp = selectCompanionObject(cm, head, character, inclusive); + if (!tmp) { + var sc = cm.getSearchCursor(new RegExp("\\" + character, "g"), head); + if (sc.find()) { + tmp = selectCompanionObject(cm, sc.from(), character, inclusive); + } + } + } + else if (selfPaired[character]) { + move = true; + tmp = findBeginningAndEnd(cm, head, character, inclusive); + } + else if (character === 'W' || character === 'w') { + var repeat = motionArgs.repeat || 1; + while (repeat-- > 0) { + var repeated = expandWordUnderCursor(cm, { + inclusive: inclusive, + innerWord: !inclusive, + bigWord: character === 'W', + noSymbol: character === 'W', + multiline: true + }, tmp && tmp.end); + if (repeated) { + if (!tmp) + tmp = repeated; + tmp.end = repeated.end; + } + } + } + else if (character === 'p') { + tmp = findParagraph(cm, head, motionArgs.repeat, 0, inclusive); + motionArgs.linewise = true; + if (vim.visualMode) { + if (!vim.visualLine) { + vim.visualLine = true; + } + } + else { + var operatorArgs = vim.inputState.operatorArgs; + if (operatorArgs) { + operatorArgs.linewise = true; + } + tmp.end.line--; + } + } + else if (character === 't') { + tmp = expandTagUnderCursor(cm, head, inclusive); + } + else if (character === 's') { + var content = cm.getLine(head.line); + if (head.ch > 0 && isEndOfSentenceSymbol(content[head.ch])) { + head.ch -= 1; + } + var end = getSentence(cm, head, motionArgs.repeat, 1, inclusive); + var start = getSentence(cm, head, motionArgs.repeat, -1, inclusive); + if (isWhiteSpaceString(cm.getLine(start.line)[start.ch]) + && isWhiteSpaceString(cm.getLine(end.line)[end.ch - 1])) { + start = { line: start.line, ch: start.ch + 1 }; + } + tmp = { start: start, end: end }; + } + if (!tmp) { + return null; } - if (!cm.state.vim.visualMode) { - return [tmp.start, tmp.end]; - } else { - return expandSelection(cm, tmp.start, tmp.end); + return [tmp.start, tmp.end]; } - }, - - repeatLastCharacterSearch: function(cm, head, motionArgs) { - var lastSearch = vimGlobalState.lastChararacterSearch; + else { + return expandSelection(cm, tmp.start, tmp.end, move); + } + }, + repeatLastCharacterSearch: function (cm, head, motionArgs) { + var lastSearch = vimGlobalState.lastCharacterSearch; var repeat = motionArgs.repeat; var forward = motionArgs.forward === lastSearch.forward; var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1); @@ -2481,184 +3138,206 @@ dom.importCssString(".normal-mode .ace_cursor{\ motionArgs.inclusive = forward ? true : false; var curEnd = moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter); if (!curEnd) { - cm.moveH(increment, 'char'); - return head; + cm.moveH(increment, 'char'); + return head; } curEnd.ch += increment; return curEnd; - } - }; - - function defineMotion(name, fn) { - motions[name] = fn; } - - function fillArray(val, times) { - var arr = []; - for (var i = 0; i < times; i++) { +}; +function defineMotion(name, fn) { + motions[name] = fn; +} +function fillArray(val, times) { + var arr = []; + for (var i = 0; i < times; i++) { arr.push(val); - } - return arr; } - var operators = { - change: function(cm, args, ranges) { + return arr; +} +var operators = { + change: function (cm, args, ranges) { var finalHead, text; var vim = cm.state.vim; - vimGlobalState.macroModeState.lastInsertModeChanges.inVisualBlock = vim.visualBlock; + var anchor = ranges[0].anchor, head = ranges[0].head; if (!vim.visualMode) { - var anchor = ranges[0].anchor, - head = ranges[0].head; - text = cm.getRange(anchor, head); - var lastState = vim.lastEditInputState || {}; - if (lastState.motion == "moveByWords" && !isWhiteSpaceString(text)) { - var match = (/\s+$/).exec(text); - if (match && lastState.motionArgs && lastState.motionArgs.forward) { - head = offsetCursor(head, 0, - match[0].length); - text = text.slice(0, - match[0].length); + text = cm.getRange(anchor, head); + var lastState = vim.lastEditInputState || {}; + if (lastState.motion == "moveByWords" && !isWhiteSpaceString(text)) { + var match = (/\s+$/).exec(text); + if (match && lastState.motionArgs && lastState.motionArgs.forward) { + head = offsetCursor(head, 0, -match[0].length); + text = text.slice(0, -match[0].length); + } + } + if (args.linewise) { + anchor = new Pos(anchor.line, findFirstNonWhiteSpaceCharacter(cm.getLine(anchor.line))); + if (head.line > anchor.line) { + head = new Pos(head.line - 1, Number.MAX_VALUE); + } } - } - var prevLineEnd = new Pos(anchor.line - 1, Number.MAX_VALUE); - var wasLastLine = cm.firstLine() == cm.lastLine(); - if (head.line > cm.lastLine() && args.linewise && !wasLastLine) { - cm.replaceRange('', prevLineEnd, head); - } else { cm.replaceRange('', anchor, head); - } - if (args.linewise) { - if (!wasLastLine) { - cm.setCursor(prevLineEnd); - CodeMirror.commands.newlineAndIndent(cm); - } - anchor.ch = Number.MAX_VALUE; - } - finalHead = anchor; - } else { - text = cm.getSelection(); - var replacement = fillArray('', ranges.length); - cm.replaceSelections(replacement); - finalHead = cursorMin(ranges[0].head, ranges[0].anchor); + finalHead = anchor; } - vimGlobalState.registerController.pushText( - args.registerName, 'change', text, - args.linewise, ranges.length > 1); - actions.enterInsertMode(cm, {head: finalHead}, cm.state.vim); - }, - 'delete': function(cm, args, ranges) { + else if (args.fullLine) { + head.ch = Number.MAX_VALUE; + head.line--; + cm.setSelection(anchor, head); + text = cm.getSelection(); + cm.replaceSelection(""); + finalHead = anchor; + } + else { + text = cm.getSelection(); + var replacement = fillArray('', ranges.length); + cm.replaceSelections(replacement); + finalHead = cursorMin(ranges[0].head, ranges[0].anchor); + } + vimGlobalState.registerController.pushText(args.registerName, 'change', text, args.linewise, ranges.length > 1); + actions.enterInsertMode(cm, { head: finalHead }, cm.state.vim); + }, + 'delete': function (cm, args, ranges) { var finalHead, text; var vim = cm.state.vim; if (!vim.visualBlock) { - var anchor = ranges[0].anchor, - head = ranges[0].head; - if (args.linewise && - head.line != cm.firstLine() && - anchor.line == cm.lastLine() && - anchor.line == head.line - 1) { - if (anchor.line == cm.firstLine()) { - anchor.ch = 0; - } else { - anchor = Pos(anchor.line - 1, lineLength(cm, anchor.line - 1)); + var anchor = ranges[0].anchor, head = ranges[0].head; + if (args.linewise && + head.line != cm.firstLine() && + anchor.line == cm.lastLine() && + anchor.line == head.line - 1) { + if (anchor.line == cm.firstLine()) { + anchor.ch = 0; + } + else { + anchor = new Pos(anchor.line - 1, lineLength(cm, anchor.line - 1)); + } + } + text = cm.getRange(anchor, head); + cm.replaceRange('', anchor, head); + finalHead = anchor; + if (args.linewise) { + finalHead = motions.moveToFirstNonWhiteSpaceCharacter(cm, anchor); } - } - text = cm.getRange(anchor, head); - cm.replaceRange('', anchor, head); - finalHead = anchor; - if (args.linewise) { - finalHead = motions.moveToFirstNonWhiteSpaceCharacter(cm, anchor); - } - } else { - text = cm.getSelection(); - var replacement = fillArray('', ranges.length); - cm.replaceSelections(replacement); - finalHead = ranges[0].anchor; } - vimGlobalState.registerController.pushText( - args.registerName, 'delete', text, - args.linewise, vim.visualBlock); + else { + text = cm.getSelection(); + var replacement = fillArray('', ranges.length); + cm.replaceSelections(replacement); + finalHead = cursorMin(ranges[0].head, ranges[0].anchor); + } + vimGlobalState.registerController.pushText(args.registerName, 'delete', text, args.linewise, vim.visualBlock); return clipCursorToContent(cm, finalHead); - }, - indent: function(cm, args, ranges) { + }, + indent: function (cm, args, ranges) { var vim = cm.state.vim; - var startLine = ranges[0].anchor.line; - var endLine = vim.visualBlock ? - ranges[ranges.length - 1].anchor.line : - ranges[0].head.line; - var repeat = (vim.visualMode) ? args.repeat : 1; - if (args.linewise) { - endLine--; + if (cm.indentMore) { + var repeat = (vim.visualMode) ? args.repeat : 1; + for (var j = 0; j < repeat; j++) { + if (args.indentRight) + cm.indentMore(); + else + cm.indentLess(); + } } - for (var i = startLine; i <= endLine; i++) { - for (var j = 0; j < repeat; j++) { - cm.indentLine(i, args.indentRight); - } + else { + var startLine = ranges[0].anchor.line; + var endLine = vim.visualBlock ? + ranges[ranges.length - 1].anchor.line : + ranges[0].head.line; + var repeat = (vim.visualMode) ? args.repeat : 1; + if (args.linewise) { + endLine--; + } + for (var i = startLine; i <= endLine; i++) { + for (var j = 0; j < repeat; j++) { + cm.indentLine(i, args.indentRight); + } + } } return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor); - }, - changeCase: function(cm, args, ranges, oldAnchor, newHead) { + }, + indentAuto: function (cm, _args, ranges) { + cm.execCommand("indentAuto"); + return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor); + }, + hardWrap: function (cm, operatorArgs, ranges, oldAnchor, newHead) { + if (!cm.hardWrap) + return; + var from = ranges[0].anchor.line; + var to = ranges[0].head.line; + if (operatorArgs.linewise) + to--; + var endRow = cm.hardWrap({ from: from, to: to }); + if (endRow > from && operatorArgs.linewise) + endRow--; + return operatorArgs.keepCursor ? oldAnchor : new Pos(endRow, 0); + }, + changeCase: function (cm, args, ranges, oldAnchor, newHead) { var selections = cm.getSelections(); var swapped = []; var toLower = args.toLower; for (var j = 0; j < selections.length; j++) { - var toSwap = selections[j]; - var text = ''; - if (toLower === true) { - text = toSwap.toLowerCase(); - } else if (toLower === false) { - text = toSwap.toUpperCase(); - } else { - for (var i = 0; i < toSwap.length; i++) { - var character = toSwap.charAt(i); - text += isUpperCase(character) ? character.toLowerCase() : - character.toUpperCase(); + var toSwap = selections[j]; + var text = ''; + if (toLower === true) { + text = toSwap.toLowerCase(); } - } - swapped.push(text); + else if (toLower === false) { + text = toSwap.toUpperCase(); + } + else { + for (var i = 0; i < toSwap.length; i++) { + var character = toSwap.charAt(i); + text += isUpperCase(character) ? character.toLowerCase() : + character.toUpperCase(); + } + } + swapped.push(text); } cm.replaceSelections(swapped); - if (args.shouldMoveCursor){ - return newHead; - } else if (!cm.state.vim.visualMode && args.linewise && ranges[0].anchor.line + 1 == ranges[0].head.line) { - return motions.moveToFirstNonWhiteSpaceCharacter(cm, oldAnchor); - } else if (args.linewise){ - return oldAnchor; - } else { - return cursorMin(ranges[0].anchor, ranges[0].head); + if (args.shouldMoveCursor) { + return newHead; } - }, - yank: function(cm, args, ranges, oldAnchor) { + else if (!cm.state.vim.visualMode && args.linewise && ranges[0].anchor.line + 1 == ranges[0].head.line) { + return motions.moveToFirstNonWhiteSpaceCharacter(cm, oldAnchor); + } + else if (args.linewise) { + return oldAnchor; + } + else { + return cursorMin(ranges[0].anchor, ranges[0].head); + } + }, + yank: function (cm, args, ranges, oldAnchor) { var vim = cm.state.vim; var text = cm.getSelection(); var endPos = vim.visualMode - ? cursorMin(vim.sel.anchor, vim.sel.head, ranges[0].head, ranges[0].anchor) - : oldAnchor; - vimGlobalState.registerController.pushText( - args.registerName, 'yank', - text, args.linewise, vim.visualBlock); + ? cursorMin(vim.sel.anchor, vim.sel.head, ranges[0].head, ranges[0].anchor) + : oldAnchor; + vimGlobalState.registerController.pushText(args.registerName, 'yank', text, args.linewise, vim.visualBlock); return endPos; - } - }; - - function defineOperator(name, fn) { - operators[name] = fn; } - - var actions = { - jumpListWalk: function(cm, actionArgs, vim) { +}; +function defineOperator(name, fn) { + operators[name] = fn; +} +var actions = { + jumpListWalk: function (cm, actionArgs, vim) { if (vim.visualMode) { - return; + return; } var repeat = actionArgs.repeat; var forward = actionArgs.forward; var jumpList = vimGlobalState.jumpList; - var mark = jumpList.move(cm, forward ? repeat : -repeat); var markPos = mark ? mark.find() : undefined; markPos = markPos ? markPos : cm.getCursor(); cm.setCursor(markPos); cm.ace.curOp.command.scrollIntoView = "center-animate"; // ace_patch - }, - scroll: function(cm, actionArgs, vim) { + }, + scroll: function (cm, actionArgs, vim) { if (vim.visualMode) { - return; + return; } var repeat = actionArgs.repeat || 1; var lineHeight = cm.defaultTextHeight(); @@ -2668,63 +3347,86 @@ dom.importCssString(".normal-mode .ace_cursor{\ var cursor = copyCursor(cm.getCursor()); var cursorCoords = cm.charCoords(cursor, 'local'); if (actionArgs.forward) { - if (newPos > cursorCoords.top) { - cursor.line += (newPos - cursorCoords.top) / lineHeight; - cursor.line = Math.ceil(cursor.line); - cm.setCursor(cursor); - cursorCoords = cm.charCoords(cursor, 'local'); - cm.scrollTo(null, cursorCoords.top); - } else { - cm.scrollTo(null, newPos); - } - } else { - var newBottom = newPos + cm.getScrollInfo().clientHeight; - if (newBottom < cursorCoords.bottom) { - cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight; - cursor.line = Math.floor(cursor.line); - cm.setCursor(cursor); - cursorCoords = cm.charCoords(cursor, 'local'); - cm.scrollTo( - null, cursorCoords.bottom - cm.getScrollInfo().clientHeight); - } else { - cm.scrollTo(null, newPos); - } + if (newPos > cursorCoords.top) { + cursor.line += (newPos - cursorCoords.top) / lineHeight; + cursor.line = Math.ceil(cursor.line); + cm.setCursor(cursor); + cursorCoords = cm.charCoords(cursor, 'local'); + cm.scrollTo(null, cursorCoords.top); + } + else { + cm.scrollTo(null, newPos); + } } - }, - scrollToCursor: function(cm, actionArgs) { + else { + var newBottom = newPos + cm.getScrollInfo().clientHeight; + if (newBottom < cursorCoords.bottom) { + cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight; + cursor.line = Math.floor(cursor.line); + cm.setCursor(cursor); + cursorCoords = cm.charCoords(cursor, 'local'); + cm.scrollTo(null, cursorCoords.bottom - cm.getScrollInfo().clientHeight); + } + else { + cm.scrollTo(null, newPos); + } + } + }, + scrollToCursor: function (cm, actionArgs) { var lineNum = cm.getCursor().line; - var charCoords = cm.charCoords(Pos(lineNum, 0), 'local'); + var charCoords = cm.charCoords(new Pos(lineNum, 0), 'local'); var height = cm.getScrollInfo().clientHeight; var y = charCoords.top; - var lineHeight = charCoords.bottom - y; switch (actionArgs.position) { - case 'center': y = y - (height / 2) + lineHeight; - break; - case 'bottom': y = y - height + lineHeight*1.4; - break; - case 'top': y = y + lineHeight*0.4; - break; + case 'center': + y = charCoords.bottom - height / 2; + break; + case 'bottom': + var lineLastCharPos = new Pos(lineNum, cm.getLine(lineNum).length - 1); + var lineLastCharCoords = cm.charCoords(lineLastCharPos, 'local'); + var lineHeight = lineLastCharCoords.bottom - y; + y = y - height + lineHeight; + break; } cm.scrollTo(null, y); - }, - replayMacro: function(cm, actionArgs, vim) { + }, + replayMacro: function (cm, actionArgs, vim) { var registerName = actionArgs.selectedCharacter; var repeat = actionArgs.repeat; var macroModeState = vimGlobalState.macroModeState; if (registerName == '@') { - registerName = macroModeState.latestRegister; + registerName = macroModeState.latestRegister; } - while(repeat--){ - executeMacroRegister(cm, vim, macroModeState, registerName); + else { + macroModeState.latestRegister = registerName; } - }, - enterMacroRecordMode: function(cm, actionArgs) { + while (repeat--) { + executeMacroRegister(cm, vim, macroModeState, registerName); + } + }, + enterMacroRecordMode: function (cm, actionArgs) { var macroModeState = vimGlobalState.macroModeState; var registerName = actionArgs.selectedCharacter; - macroModeState.enterMacroRecordMode(cm, registerName); - }, - enterInsertMode: function(cm, actionArgs, vim) { - if (cm.getOption('readOnly')) { return; } + if (vimGlobalState.registerController.isValidRegister(registerName)) { + macroModeState.enterMacroRecordMode(cm, registerName); + } + }, + toggleOverwrite: function (cm) { + if (!cm.state.overwrite) { + cm.toggleOverwrite(true); + cm.setOption('keyMap', 'vim-replace'); + CodeMirror.signal(cm, "vim-mode-change", { mode: "replace" }); + } + else { + cm.toggleOverwrite(false); + cm.setOption('keyMap', 'vim-insert'); + CodeMirror.signal(cm, "vim-mode-change", { mode: "insert" }); + } + }, + enterInsertMode: function (cm, actionArgs, vim) { + if (cm.getOption('readOnly')) { + return; + } vim.insertMode = true; vim.insertModeRepeat = actionArgs && actionArgs.repeat || 1; var insertAt = (actionArgs) ? actionArgs.insertAt : null; @@ -2732,2867 +3434,3623 @@ dom.importCssString(".normal-mode .ace_cursor{\ var head = actionArgs.head || cm.getCursor('head'); var height = cm.listSelections().length; if (insertAt == 'eol') { - head = Pos(head.line, lineLength(cm, head.line)); - } else if (insertAt == 'charAfter') { - head = offsetCursor(head, 0, 1); - } else if (insertAt == 'firstNonBlank') { - head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head); - } else if (insertAt == 'startOfSelectedArea') { - if (!vim.visualBlock) { - if (sel.head.line < sel.anchor.line) { - head = sel.head; - } else { - head = Pos(sel.anchor.line, 0); - } - } else { - head = Pos( - Math.min(sel.head.line, sel.anchor.line), - Math.min(sel.head.ch, sel.anchor.ch)); - height = Math.abs(sel.head.line - sel.anchor.line) + 1; - } - } else if (insertAt == 'endOfSelectedArea') { - if (!vim.visualBlock) { - if (sel.head.line >= sel.anchor.line) { - head = offsetCursor(sel.head, 0, 1); - } else { - head = Pos(sel.anchor.line, 0); - } - } else { - head = Pos( - Math.min(sel.head.line, sel.anchor.line), - Math.max(sel.head.ch + 1, sel.anchor.ch)); - height = Math.abs(sel.head.line - sel.anchor.line) + 1; - } - } else if (insertAt == 'inplace') { - if (vim.visualMode){ - return; - } + head = new Pos(head.line, lineLength(cm, head.line)); + } + else if (insertAt == 'bol') { + head = new Pos(head.line, 0); + } + else if (insertAt == 'charAfter') { + var newPosition = updateSelectionForSurrogateCharacters(cm, head, offsetCursor(head, 0, 1)); + head = newPosition.end; + } + else if (insertAt == 'firstNonBlank') { + var newPosition = updateSelectionForSurrogateCharacters(cm, head, motions.moveToFirstNonWhiteSpaceCharacter(cm, head)); + head = newPosition.end; + } + else if (insertAt == 'startOfSelectedArea') { + if (!vim.visualMode) + return; + if (!vim.visualBlock) { + if (sel.head.line < sel.anchor.line) { + head = sel.head; + } + else { + head = new Pos(sel.anchor.line, 0); + } + } + else { + head = new Pos(Math.min(sel.head.line, sel.anchor.line), Math.min(sel.head.ch, sel.anchor.ch)); + height = Math.abs(sel.head.line - sel.anchor.line) + 1; + } + } + else if (insertAt == 'endOfSelectedArea') { + if (!vim.visualMode) + return; + if (!vim.visualBlock) { + if (sel.head.line >= sel.anchor.line) { + head = offsetCursor(sel.head, 0, 1); + } + else { + head = new Pos(sel.anchor.line, 0); + } + } + else { + head = new Pos(Math.min(sel.head.line, sel.anchor.line), Math.max(sel.head.ch, sel.anchor.ch) + 1); + height = Math.abs(sel.head.line - sel.anchor.line) + 1; + } + } + else if (insertAt == 'inplace') { + if (vim.visualMode) { + return; + } + } + else if (insertAt == 'lastEdit') { + head = getLastEditPos(cm) || head; } - cm.setOption('keyMap', 'vim-insert'); cm.setOption('disableInput', false); if (actionArgs && actionArgs.replace) { - cm.toggleOverwrite(true); - cm.setOption('keyMap', 'vim-replace'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"}); - } else { - cm.setOption('keyMap', 'vim-insert'); - CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"}); + cm.toggleOverwrite(true); + cm.setOption('keyMap', 'vim-replace'); + CodeMirror.signal(cm, "vim-mode-change", { mode: "replace" }); + } + else { + cm.toggleOverwrite(false); + cm.setOption('keyMap', 'vim-insert'); + CodeMirror.signal(cm, "vim-mode-change", { mode: "insert" }); } if (!vimGlobalState.macroModeState.isPlaying) { - cm.on('change', onChange); - CodeMirror.on(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); + cm.on('change', onChange); + if (vim.insertEnd) + vim.insertEnd.clear(); + vim.insertEnd = cm.setBookmark(head, { insertLeft: true }); + CodeMirror.on(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); } if (vim.visualMode) { - exitVisualMode(cm); + exitVisualMode(cm); } selectForInsert(cm, head, height); - }, - toggleVisualMode: function(cm, actionArgs, vim) { + }, + toggleVisualMode: function (cm, actionArgs, vim) { var repeat = actionArgs.repeat; var anchor = cm.getCursor(); var head; if (!vim.visualMode) { - vim.visualMode = true; - vim.visualLine = !!actionArgs.linewise; - vim.visualBlock = !!actionArgs.blockwise; - head = clipCursorToContent( - cm, Pos(anchor.line, anchor.ch + repeat - 1), - true /** includeLineBreak */); - vim.sel = { - anchor: anchor, - head: head - }; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); - updateCmSelection(cm); - updateMark(cm, vim, '<', cursorMin(anchor, head)); - updateMark(cm, vim, '>', cursorMax(anchor, head)); - } else if (vim.visualLine ^ actionArgs.linewise || - vim.visualBlock ^ actionArgs.blockwise) { - vim.visualLine = !!actionArgs.linewise; - vim.visualBlock = !!actionArgs.blockwise; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); - updateCmSelection(cm); - } else { - exitVisualMode(cm); + vim.visualMode = true; + vim.visualLine = !!actionArgs.linewise; + vim.visualBlock = !!actionArgs.blockwise; + head = clipCursorToContent(cm, new Pos(anchor.line, anchor.ch + repeat - 1)); + var newPosition = updateSelectionForSurrogateCharacters(cm, anchor, head); + vim.sel = { + anchor: newPosition.start, + head: newPosition.end + }; + CodeMirror.signal(cm, "vim-mode-change", { mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : "" }); + updateCmSelection(cm); + updateMark(cm, vim, '<', cursorMin(anchor, head)); + updateMark(cm, vim, '>', cursorMax(anchor, head)); } - }, - reselectLastSelection: function(cm, _actionArgs, vim) { + else if (vim.visualLine ^ actionArgs.linewise || + vim.visualBlock ^ actionArgs.blockwise) { + vim.visualLine = !!actionArgs.linewise; + vim.visualBlock = !!actionArgs.blockwise; + CodeMirror.signal(cm, "vim-mode-change", { mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : "" }); + updateCmSelection(cm); + } + else { + exitVisualMode(cm); + } + }, + reselectLastSelection: function (cm, _actionArgs, vim) { var lastSelection = vim.lastSelection; if (vim.visualMode) { - updateLastSelection(cm, vim); + updateLastSelection(cm, vim); } if (lastSelection) { - var anchor = lastSelection.anchorMark.find(); - var head = lastSelection.headMark.find(); - if (!anchor || !head) { - return; - } - vim.sel = { - anchor: anchor, - head: head - }; - vim.visualMode = true; - vim.visualLine = lastSelection.visualLine; - vim.visualBlock = lastSelection.visualBlock; - updateCmSelection(cm); - updateMark(cm, vim, '<', cursorMin(anchor, head)); - updateMark(cm, vim, '>', cursorMax(anchor, head)); - CodeMirror.signal(cm, 'vim-mode-change', { - mode: 'visual', - subMode: vim.visualLine ? 'linewise' : - vim.visualBlock ? 'blockwise' : ''}); + var anchor = lastSelection.anchorMark.find(); + var head = lastSelection.headMark.find(); + if (!anchor || !head) { + return; + } + vim.sel = { + anchor: anchor, + head: head + }; + vim.visualMode = true; + vim.visualLine = lastSelection.visualLine; + vim.visualBlock = lastSelection.visualBlock; + updateCmSelection(cm); + updateMark(cm, vim, '<', cursorMin(anchor, head)); + updateMark(cm, vim, '>', cursorMax(anchor, head)); + CodeMirror.signal(cm, 'vim-mode-change', { + mode: 'visual', + subMode: vim.visualLine ? 'linewise' : + vim.visualBlock ? 'blockwise' : '' + }); } - }, - joinLines: function(cm, actionArgs, vim) { + }, + joinLines: function (cm, actionArgs, vim) { var curStart, curEnd; if (vim.visualMode) { - curStart = cm.getCursor('anchor'); - curEnd = cm.getCursor('head'); - if (cursorIsBefore(curEnd, curStart)) { - var tmp = curEnd; - curEnd = curStart; - curStart = tmp; - } - curEnd.ch = lineLength(cm, curEnd.line) - 1; - } else { - var repeat = Math.max(actionArgs.repeat, 2); - curStart = cm.getCursor(); - curEnd = clipCursorToContent(cm, Pos(curStart.line + repeat - 1, - Infinity)); + curStart = cm.getCursor('anchor'); + curEnd = cm.getCursor('head'); + if (cursorIsBefore(curEnd, curStart)) { + var tmp = curEnd; + curEnd = curStart; + curStart = tmp; + } + curEnd.ch = lineLength(cm, curEnd.line) - 1; + } + else { + var repeat = Math.max(actionArgs.repeat, 2); + curStart = cm.getCursor(); + curEnd = clipCursorToContent(cm, new Pos(curStart.line + repeat - 1, Infinity)); } var finalCh = 0; for (var i = curStart.line; i < curEnd.line; i++) { - finalCh = lineLength(cm, curStart.line); - var tmp = Pos(curStart.line + 1, - lineLength(cm, curStart.line + 1)); - var text = cm.getRange(curStart, tmp); - text = text.replace(/\n\s*/g, ' '); - cm.replaceRange(text, curStart, tmp); + finalCh = lineLength(cm, curStart.line); + var text = ''; + var nextStartCh = 0; + if (!actionArgs.keepSpaces) { + var nextLine = cm.getLine(curStart.line + 1); + nextStartCh = nextLine.search(/\S/); + if (nextStartCh == -1) { + nextStartCh = nextLine.length; + } + else { + text = " "; + } + } + cm.replaceRange(text, new Pos(curStart.line, finalCh), new Pos(curStart.line + 1, nextStartCh)); } - var curFinalPos = Pos(curStart.line, finalCh); + var curFinalPos = clipCursorToContent(cm, new Pos(curStart.line, finalCh)); if (vim.visualMode) { - exitVisualMode(cm, false); + exitVisualMode(cm, false); } cm.setCursor(curFinalPos); - }, - newLineAndEnterInsertMode: function(cm, actionArgs, vim) { + }, + newLineAndEnterInsertMode: function (cm, actionArgs, vim) { vim.insertMode = true; var insertAt = copyCursor(cm.getCursor()); if (insertAt.line === cm.firstLine() && !actionArgs.after) { - cm.replaceRange('\n', Pos(cm.firstLine(), 0)); - cm.setCursor(cm.firstLine(), 0); - } else { - insertAt.line = (actionArgs.after) ? insertAt.line : - insertAt.line - 1; - insertAt.ch = lineLength(cm, insertAt.line); - cm.setCursor(insertAt); - var newlineFn = CodeMirror.commands.newlineAndIndentContinueComment || - CodeMirror.commands.newlineAndIndent; - newlineFn(cm); + cm.replaceRange('\n', new Pos(cm.firstLine(), 0)); + cm.setCursor(cm.firstLine(), 0); + } + else { + insertAt.line = (actionArgs.after) ? insertAt.line : + insertAt.line - 1; + insertAt.ch = lineLength(cm, insertAt.line); + cm.setCursor(insertAt); + var newlineFn = CodeMirror.commands.newlineAndIndentContinueComment || + CodeMirror.commands.newlineAndIndent; + newlineFn(cm); } this.enterInsertMode(cm, { repeat: actionArgs.repeat }, vim); - }, - paste: function(cm, actionArgs, vim) { + }, + paste: function (cm, actionArgs, vim) { + var _this = this; + var register = vimGlobalState.registerController.getRegister(actionArgs.registerName); + var fallback = function () { + var text = register.toString(); + _this.continuePaste(cm, actionArgs, vim, text, register); + }; + if (actionArgs.registerName === '+' && + typeof navigator !== 'undefined' && + typeof navigator.clipboard !== 'undefined' && + typeof navigator.clipboard.readText === 'function') { + navigator.clipboard.readText().then(function (value) { + _this.continuePaste(cm, actionArgs, vim, value, register); + }, function () { fallback(); }); + } + else { + fallback(); + } + }, + continuePaste: function (cm, actionArgs, vim, text, register) { var cur = copyCursor(cm.getCursor()); - var register = vimGlobalState.registerController.getRegister( - actionArgs.registerName); - var text = register.toString(); if (!text) { - return; + return; } if (actionArgs.matchIndent) { - var tabSize = cm.getOption("tabSize"); - var whitespaceLength = function(str) { - var tabs = (str.split("\t").length - 1); - var spaces = (str.split(" ").length - 1); - return tabs * tabSize + spaces * 1; - }; - var currentLine = cm.getLine(cm.getCursor().line); - var indent = whitespaceLength(currentLine.match(/^\s*/)[0]); - var chompedText = text.replace(/\n$/, ''); - var wasChomped = text !== chompedText; - var firstIndent = whitespaceLength(text.match(/^\s*/)[0]); - var text = chompedText.replace(/^\s*/gm, function(wspace) { - var newIndent = indent + (whitespaceLength(wspace) - firstIndent); - if (newIndent < 0) { - return ""; - } - else if (cm.getOption("indentWithTabs")) { - var quotient = Math.floor(newIndent / tabSize); - return Array(quotient + 1).join('\t'); - } - else { - return Array(newIndent + 1).join(' '); - } - }); - text += wasChomped ? "\n" : ""; + var tabSize = cm.getOption("tabSize"); + var whitespaceLength = function (str) { + var tabs = (str.split("\t").length - 1); + var spaces = (str.split(" ").length - 1); + return tabs * tabSize + spaces * 1; + }; + var currentLine = cm.getLine(cm.getCursor().line); + var indent = whitespaceLength(currentLine.match(/^\s*/)[0]); + var chompedText = text.replace(/\n$/, ''); + var wasChomped = text !== chompedText; + var firstIndent = whitespaceLength(text.match(/^\s*/)[0]); + var text = chompedText.replace(/^\s*/gm, function (wspace) { + var newIndent = indent + (whitespaceLength(wspace) - firstIndent); + if (newIndent < 0) { + return ""; + } + else if (cm.getOption("indentWithTabs")) { + var quotient = Math.floor(newIndent / tabSize); + return Array(quotient + 1).join('\t'); + } + else { + return Array(newIndent + 1).join(' '); + } + }); + text += wasChomped ? "\n" : ""; } if (actionArgs.repeat > 1) { - var text = Array(actionArgs.repeat + 1).join(text); + var text = Array(actionArgs.repeat + 1).join(text); } var linewise = register.linewise; var blockwise = register.blockwise; - if (linewise && !blockwise) { - if(vim.visualMode) { - text = vim.visualLine ? text.slice(0, -1) : '\n' + text.slice(0, text.length - 1) + '\n'; - } else if (actionArgs.after) { - text = '\n' + text.slice(0, text.length - 1); - cur.ch = lineLength(cm, cur.line); - } else { - cur.ch = 0; - } - } else { - if (blockwise) { + if (blockwise) { text = text.split('\n'); - for (var i = 0; i < text.length; i++) { - text[i] = (text[i] == '') ? ' ' : text[i]; + if (linewise) { + text.pop(); } - } - cur.ch += actionArgs.after ? 1 : 0; + for (var i = 0; i < text.length; i++) { + text[i] = (text[i] == '') ? ' ' : text[i]; + } + cur.ch += actionArgs.after ? 1 : 0; + cur.ch = Math.min(lineLength(cm, cur.line), cur.ch); + } + else if (linewise) { + if (vim.visualMode) { + text = vim.visualLine ? text.slice(0, -1) : '\n' + text.slice(0, text.length - 1) + '\n'; + } + else if (actionArgs.after) { + text = '\n' + text.slice(0, text.length - 1); + cur.ch = lineLength(cm, cur.line); + } + else { + cur.ch = 0; + } + } + else { + cur.ch += actionArgs.after ? 1 : 0; } var curPosFinal; - var idx; if (vim.visualMode) { - vim.lastPastedText = text; - var lastSelectionCurEnd; - var selectedArea = getSelectedAreaRange(cm, vim); - var selectionStart = selectedArea[0]; - var selectionEnd = selectedArea[1]; - var selectedText = cm.getSelection(); - var selections = cm.listSelections(); - var emptyStrings = new Array(selections.length).join('1').split('1'); - if (vim.lastSelection) { - lastSelectionCurEnd = vim.lastSelection.headMark.find(); - } - vimGlobalState.registerController.unnamedRegister.setText(selectedText); - if (blockwise) { - cm.replaceSelections(emptyStrings); - selectionEnd = Pos(selectionStart.line + text.length-1, selectionStart.ch); - cm.setCursor(selectionStart); - selectBlock(cm, selectionEnd); - cm.replaceSelections(text); - curPosFinal = selectionStart; - } else if (vim.visualBlock) { - cm.replaceSelections(emptyStrings); - cm.setCursor(selectionStart); - cm.replaceRange(text, selectionStart, selectionStart); - curPosFinal = selectionStart; - } else { - cm.replaceRange(text, selectionStart, selectionEnd); - curPosFinal = cm.posFromIndex(cm.indexFromPos(selectionStart) + text.length - 1); - } - if(lastSelectionCurEnd) { - vim.lastSelection.headMark = cm.setBookmark(lastSelectionCurEnd); - } - if (linewise) { - curPosFinal.ch=0; - } - } else { - if (blockwise) { - cm.setCursor(cur); - for (var i = 0; i < text.length; i++) { - var line = cur.line+i; - if (line > cm.lastLine()) { - cm.replaceRange('\n', Pos(line, 0)); - } - var lastCh = lineLength(cm, line); - if (lastCh < cur.ch) { - extendLineToColumn(cm, line, cur.ch); - } + vim.lastPastedText = text; + var lastSelectionCurEnd; + var selectedArea = getSelectedAreaRange(cm, vim); + var selectionStart = selectedArea[0]; + var selectionEnd = selectedArea[1]; + var selectedText = cm.getSelection(); + var selections = cm.listSelections(); + var emptyStrings = new Array(selections.length).join('1').split('1'); + if (vim.lastSelection) { + lastSelectionCurEnd = vim.lastSelection.headMark.find(); } - cm.setCursor(cur); - selectBlock(cm, Pos(cur.line + text.length-1, cur.ch)); - cm.replaceSelections(text); - curPosFinal = cur; - } else { - cm.replaceRange(text, cur); - if (linewise && actionArgs.after) { - curPosFinal = Pos( - cur.line + 1, - findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line + 1))); - } else if (linewise && !actionArgs.after) { - curPosFinal = Pos( - cur.line, - findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line))); - } else if (!linewise && actionArgs.after) { - idx = cm.indexFromPos(cur); - curPosFinal = cm.posFromIndex(idx + text.length - 1); - } else { - idx = cm.indexFromPos(cur); - curPosFinal = cm.posFromIndex(idx + text.length); + vimGlobalState.registerController.unnamedRegister.setText(selectedText); + if (blockwise) { + cm.replaceSelections(emptyStrings); + selectionEnd = new Pos(selectionStart.line + text.length - 1, selectionStart.ch); + cm.setCursor(selectionStart); + selectBlock(cm, selectionEnd); + cm.replaceSelections(text); + curPosFinal = selectionStart; + } + else if (vim.visualBlock) { + cm.replaceSelections(emptyStrings); + cm.setCursor(selectionStart); + cm.replaceRange(text, selectionStart, selectionStart); + curPosFinal = selectionStart; + } + else { + cm.replaceRange(text, selectionStart, selectionEnd); + curPosFinal = cm.posFromIndex(cm.indexFromPos(selectionStart) + text.length - 1); + } + if (lastSelectionCurEnd) { + vim.lastSelection.headMark = cm.setBookmark(lastSelectionCurEnd); + } + if (linewise) { + curPosFinal.ch = 0; + } + } + else { + if (blockwise) { + cm.setCursor(cur); + for (var i = 0; i < text.length; i++) { + var line = cur.line + i; + if (line > cm.lastLine()) { + cm.replaceRange('\n', new Pos(line, 0)); + } + var lastCh = lineLength(cm, line); + if (lastCh < cur.ch) { + extendLineToColumn(cm, line, cur.ch); + } + } + cm.setCursor(cur); + selectBlock(cm, new Pos(cur.line + text.length - 1, cur.ch)); + cm.replaceSelections(text); + curPosFinal = cur; + } + else { + cm.replaceRange(text, cur); + if (linewise) { + var line = actionArgs.after ? cur.line + 1 : cur.line; + curPosFinal = new Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + } + else { + curPosFinal = copyCursor(cur); + if (!/\n/.test(text)) { + curPosFinal.ch += text.length - (actionArgs.after ? 1 : 0); + } + } } - } } if (vim.visualMode) { - exitVisualMode(cm, false); + exitVisualMode(cm, false); } cm.setCursor(curPosFinal); - }, - undo: function(cm, actionArgs) { - cm.operation(function() { - repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)(); - cm.setCursor(cm.getCursor('anchor')); + }, + undo: function (cm, actionArgs) { + cm.operation(function () { + repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)(); + cm.setCursor(clipCursorToContent(cm, cm.getCursor('start'))); }); - }, - redo: function(cm, actionArgs) { + }, + redo: function (cm, actionArgs) { repeatFn(cm, CodeMirror.commands.redo, actionArgs.repeat)(); - }, - setRegister: function(_cm, actionArgs, vim) { + }, + setRegister: function (_cm, actionArgs, vim) { vim.inputState.registerName = actionArgs.selectedCharacter; - }, - setMark: function(cm, actionArgs, vim) { + }, + insertRegister: function (cm, actionArgs, vim) { + var registerName = actionArgs.selectedCharacter; + var register = vimGlobalState.registerController.getRegister(registerName); + var text = register && register.toString(); + if (text) { + cm.replaceSelection(text); + } + }, + oneNormalCommand: function (cm, actionArgs, vim) { + exitInsertMode(cm, true); + vim.insertModeReturn = true; + CodeMirror.on(cm, 'vim-command-done', function handler() { + if (vim.visualMode) + return; + if (vim.insertModeReturn) { + vim.insertModeReturn = false; + if (!vim.insertMode) { + actions.enterInsertMode(cm, {}, vim); + } + } + CodeMirror.off(cm, 'vim-command-done', handler); + }); + }, + setMark: function (cm, actionArgs, vim) { var markName = actionArgs.selectedCharacter; updateMark(cm, vim, markName, cm.getCursor()); - }, - replace: function(cm, actionArgs, vim) { + }, + replace: function (cm, actionArgs, vim) { var replaceWith = actionArgs.selectedCharacter; var curStart = cm.getCursor(); var replaceTo; var curEnd; var selections = cm.listSelections(); if (vim.visualMode) { - curStart = cm.getCursor('start'); - curEnd = cm.getCursor('end'); - } else { - var line = cm.getLine(curStart.line); - replaceTo = curStart.ch + actionArgs.repeat; - if (replaceTo > line.length) { - replaceTo=line.length; - } - curEnd = Pos(curStart.line, replaceTo); + curStart = cm.getCursor('start'); + curEnd = cm.getCursor('end'); } - if (replaceWith=='\n') { - if (!vim.visualMode) cm.replaceRange('', curStart, curEnd); - (CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent)(cm); - } else { - var replaceWithStr = cm.getRange(curStart, curEnd); - replaceWithStr = replaceWithStr.replace(/[^\n]/g, replaceWith); - if (vim.visualBlock) { - var spaces = new Array(cm.getOption("tabSize")+1).join(' '); - replaceWithStr = cm.getSelection(); - replaceWithStr = replaceWithStr.replace(/\t/g, spaces).replace(/[^\n]/g, replaceWith).split('\n'); - cm.replaceSelections(replaceWithStr); - } else { - cm.replaceRange(replaceWithStr, curStart, curEnd); - } - if (vim.visualMode) { - curStart = cursorIsBefore(selections[0].anchor, selections[0].head) ? - selections[0].anchor : selections[0].head; - cm.setCursor(curStart); - exitVisualMode(cm, false); - } else { - cm.setCursor(offsetCursor(curEnd, 0, -1)); - } + else { + var line = cm.getLine(curStart.line); + replaceTo = curStart.ch + actionArgs.repeat; + if (replaceTo > line.length) { + replaceTo = line.length; + } + curEnd = new Pos(curStart.line, replaceTo); } - }, - incrementNumberToken: function(cm, actionArgs) { + var newPositions = updateSelectionForSurrogateCharacters(cm, curStart, curEnd); + curStart = newPositions.start; + curEnd = newPositions.end; + if (replaceWith == '\n') { + if (!vim.visualMode) + cm.replaceRange('', curStart, curEnd); + (CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent)(cm); + } + else { + var replaceWithStr = cm.getRange(curStart, curEnd); + replaceWithStr = replaceWithStr.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, replaceWith); + replaceWithStr = replaceWithStr.replace(/[^\n]/g, replaceWith); + if (vim.visualBlock) { + var spaces = new Array(cm.getOption("tabSize") + 1).join(' '); + replaceWithStr = cm.getSelection(); + replaceWithStr = replaceWithStr.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, replaceWith); + replaceWithStr = replaceWithStr.replace(/\t/g, spaces).replace(/[^\n]/g, replaceWith).split('\n'); + cm.replaceSelections(replaceWithStr); + } + else { + cm.replaceRange(replaceWithStr, curStart, curEnd); + } + if (vim.visualMode) { + curStart = cursorIsBefore(selections[0].anchor, selections[0].head) ? + selections[0].anchor : selections[0].head; + cm.setCursor(curStart); + exitVisualMode(cm, false); + } + else { + cm.setCursor(offsetCursor(curEnd, 0, -1)); + } + } + }, + incrementNumberToken: function (cm, actionArgs) { var cur = cm.getCursor(); var lineStr = cm.getLine(cur.line); - var re = /-?\d+/g; + var re = /(-?)(?:(0x)([\da-f]+)|(0b|0|)(\d+))/gi; var match; var start; var end; var numberStr; - var token; while ((match = re.exec(lineStr)) !== null) { - token = match[0]; - start = match.index; - end = start + token.length; - if (cur.ch < end)break; + start = match.index; + end = start + match[0].length; + if (cur.ch < end) + break; } - if (!actionArgs.backtrack && (end <= cur.ch))return; - if (token) { - var increment = actionArgs.increase ? 1 : -1; - var number = parseInt(token) + (increment * actionArgs.repeat); - var from = Pos(cur.line, start); - var to = Pos(cur.line, end); - numberStr = number.toString(); - cm.replaceRange(numberStr, from, to); - } else { - return; + if (!actionArgs.backtrack && (end <= cur.ch)) + return; + if (match) { + var baseStr = match[2] || match[4]; + var digits = match[3] || match[5]; + var increment = actionArgs.increase ? 1 : -1; + var base = { '0b': 2, '0': 8, '': 10, '0x': 16 }[baseStr.toLowerCase()]; + var number = parseInt(match[1] + digits, base) + (increment * actionArgs.repeat); + numberStr = number.toString(base); + var zeroPadding = baseStr ? new Array(digits.length - numberStr.length + 1 + match[1].length).join('0') : ''; + if (numberStr.charAt(0) === '-') { + numberStr = '-' + baseStr + zeroPadding + numberStr.substr(1); + } + else { + numberStr = baseStr + zeroPadding + numberStr; + } + var from = new Pos(cur.line, start); + var to = new Pos(cur.line, end); + cm.replaceRange(numberStr, from, to); } - cm.setCursor(Pos(cur.line, start + numberStr.length - 1)); - }, - repeatLastEdit: function(cm, actionArgs, vim) { + else { + return; + } + cm.setCursor(new Pos(cur.line, start + numberStr.length - 1)); + }, + repeatLastEdit: function (cm, actionArgs, vim) { var lastEditInputState = vim.lastEditInputState; - if (!lastEditInputState) { return; } + if (!lastEditInputState) { + return; + } var repeat = actionArgs.repeat; if (repeat && actionArgs.repeatIsExplicit) { - vim.lastEditInputState.repeatOverride = repeat; - } else { - repeat = vim.lastEditInputState.repeatOverride || repeat; + vim.lastEditInputState.repeatOverride = repeat; + } + else { + repeat = vim.lastEditInputState.repeatOverride || repeat; } repeatLastEdit(cm, vim, repeat, false /** repeatForInsert */); - }, - exitInsertMode: exitInsertMode - }; - - function defineAction(name, fn) { - actions[name] = fn; - } - function clipCursorToContent(cm, cur, includeLineBreak) { - var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine() ); - var maxCh = lineLength(cm, line) - 1; - maxCh = (includeLineBreak) ? maxCh + 1 : maxCh; - var ch = Math.min(Math.max(0, cur.ch), maxCh); - return Pos(line, ch); - } - function copyArgs(args) { - var ret = {}; - for (var prop in args) { - if (args.hasOwnProperty(prop)) { - ret[prop] = args[prop]; + }, + indent: function (cm, actionArgs) { + cm.indentLine(cm.getCursor().line, actionArgs.indentRight); + }, + exitInsertMode: exitInsertMode +}; +function defineAction(name, fn) { + actions[name] = fn; +} +function clipCursorToContent(cm, cur, oldCur) { + var vim = cm.state.vim; + var includeLineBreak = vim.insertMode || vim.visualMode; + var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine()); + var text = cm.getLine(line); + var maxCh = text.length - 1 + Number(!!includeLineBreak); + var ch = Math.min(Math.max(0, cur.ch), maxCh); + var charCode = text.charCodeAt(ch); + if (0xDC00 <= charCode && charCode <= 0xDFFF) { + var direction = 1; + if (oldCur && oldCur.line == line && oldCur.ch > ch) { + direction = -1; } - } - return ret; + ch += direction; + if (ch > maxCh) + ch -= 2; } - function offsetCursor(cur, offsetLine, offsetCh) { - if (typeof offsetLine === 'object') { + return new Pos(line, ch); +} +function copyArgs(args) { + var ret = {}; + for (var prop in args) { + if (args.hasOwnProperty(prop)) { + ret[prop] = args[prop]; + } + } + return ret; +} +function offsetCursor(cur, offsetLine, offsetCh) { + if (typeof offsetLine === 'object') { offsetCh = offsetLine.ch; offsetLine = offsetLine.line; - } - return Pos(cur.line + offsetLine, cur.ch + offsetCh); } - function getOffset(anchor, head) { - return { - line: head.line - anchor.line, - ch: head.line - anchor.line - }; - } - function commandMatches(keys, keyMap, context, inputState) { - var match, partial = [], full = []; - for (var i = 0; i < keyMap.length; i++) { + return new Pos(cur.line + offsetLine, cur.ch + offsetCh); +} +function commandMatches(keys, keyMap, context, inputState) { + if (inputState.operator) + context = "operatorPending"; + var match, partial = [], full = []; + var startIndex = noremap ? keyMap.length - defaultKeymapLength : 0; + for (var i = startIndex; i < keyMap.length; i++) { var command = keyMap[i]; if (context == 'insert' && command.context != 'insert' || - command.context && command.context != context || + (command.context && command.context != context) || inputState.operator && command.type == 'action' || - !(match = commandMatch(keys, command.keys))) { continue; } - if (match == 'partial') { partial.push(command); } - if (match == 'full') { full.push(command); } - } - return { + !(match = commandMatch(keys, command.keys))) { + continue; + } + if (match == 'partial') { + partial.push(command); + } + if (match == 'full') { + full.push(command); + } + } + return { partial: partial.length && partial, full: full.length && full - }; - } - function commandMatch(pressed, mapped) { - if (mapped.slice(-11) == '') { - var prefixLen = mapped.length - 11; + }; +} +function commandMatch(pressed, mapped) { + var isLastCharacter = mapped.slice(-11) == ''; + var isLastRegister = mapped.slice(-10) == ''; + if (isLastCharacter || isLastRegister) { + var prefixLen = mapped.length - (isLastCharacter ? 11 : 10); var pressedPrefix = pressed.slice(0, prefixLen); var mappedPrefix = mapped.slice(0, prefixLen); return pressedPrefix == mappedPrefix && pressed.length > prefixLen ? 'full' : - mappedPrefix.indexOf(pressedPrefix) == 0 ? 'partial' : false; - } else { + mappedPrefix.indexOf(pressedPrefix) == 0 ? 'partial' : false; + } + else { return pressed == mapped ? 'full' : - mapped.indexOf(pressed) == 0 ? 'partial' : false; - } + mapped.indexOf(pressed) == 0 ? 'partial' : false; } - function lastChar(keys) { - var match = /^.*(<[\w\-]+>)$/.exec(keys); - var selectedCharacter = match ? match[1] : keys.slice(-1); - if (selectedCharacter.length > 1){ - switch(selectedCharacter){ - case '': - selectedCharacter='\n'; - break; - case '': - selectedCharacter=' '; - break; - default: - break; +} +function lastChar(keys) { + var match = /^.*(<[^>]+>)$/.exec(keys); + var selectedCharacter = match ? match[1] : keys.slice(-1); + if (selectedCharacter.length > 1) { + switch (selectedCharacter) { + case '': + selectedCharacter = '\n'; + break; + case '': + selectedCharacter = ' '; + break; + default: + selectedCharacter = ''; + break; } - } - return selectedCharacter; } - function repeatFn(cm, fn, repeat) { - return function() { + return selectedCharacter; +} +function repeatFn(cm, fn, repeat) { + return function () { for (var i = 0; i < repeat; i++) { - fn(cm); + fn(cm); } - }; - } - function copyCursor(cur) { - return Pos(cur.line, cur.ch); - } - function cursorEqual(cur1, cur2) { - return cur1.ch == cur2.ch && cur1.line == cur2.line; - } - function cursorIsBefore(cur1, cur2) { - if (cur1.line < cur2.line) { + }; +} +function copyCursor(cur) { + return new Pos(cur.line, cur.ch); +} +function cursorEqual(cur1, cur2) { + return cur1.ch == cur2.ch && cur1.line == cur2.line; +} +function cursorIsBefore(cur1, cur2) { + if (cur1.line < cur2.line) { return true; - } - if (cur1.line == cur2.line && cur1.ch < cur2.ch) { - return true; - } - return false; } - function cursorMin(cur1, cur2) { - if (arguments.length > 2) { + if (cur1.line == cur2.line && cur1.ch < cur2.ch) { + return true; + } + return false; +} +function cursorMin(cur1, cur2) { + if (arguments.length > 2) { cur2 = cursorMin.apply(undefined, Array.prototype.slice.call(arguments, 1)); - } - return cursorIsBefore(cur1, cur2) ? cur1 : cur2; } - function cursorMax(cur1, cur2) { - if (arguments.length > 2) { + return cursorIsBefore(cur1, cur2) ? cur1 : cur2; +} +function cursorMax(cur1, cur2) { + if (arguments.length > 2) { cur2 = cursorMax.apply(undefined, Array.prototype.slice.call(arguments, 1)); - } - return cursorIsBefore(cur1, cur2) ? cur2 : cur1; } - function cursorIsBetween(cur1, cur2, cur3) { - var cur1before2 = cursorIsBefore(cur1, cur2); - var cur2before3 = cursorIsBefore(cur2, cur3); - return cur1before2 && cur2before3; - } - function lineLength(cm, lineNum) { - return cm.getLine(lineNum).length; - } - function trim(s) { - if (s.trim) { + return cursorIsBefore(cur1, cur2) ? cur2 : cur1; +} +function cursorIsBetween(cur1, cur2, cur3) { + var cur1before2 = cursorIsBefore(cur1, cur2); + var cur2before3 = cursorIsBefore(cur2, cur3); + return cur1before2 && cur2before3; +} +function lineLength(cm, lineNum) { + return cm.getLine(lineNum).length; +} +function trim(s) { + if (s.trim) { return s.trim(); - } - return s.replace(/^\s+|\s+$/g, ''); } - function escapeRegex(s) { - return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g, '\\$1'); - } - function extendLineToColumn(cm, lineNum, column) { - var endCh = lineLength(cm, lineNum); - var spaces = new Array(column-endCh+1).join(' '); - cm.setCursor(Pos(lineNum, endCh)); - cm.replaceRange(spaces, cm.getCursor()); - } - function selectBlock(cm, selectionEnd) { - var selections = [], ranges = cm.listSelections(); - var head = copyCursor(cm.clipPos(selectionEnd)); - var isClipped = !cursorEqual(selectionEnd, head); - var curHead = cm.getCursor('head'); - var primIndex = getIndex(ranges, curHead); - var wasClipped = cursorEqual(ranges[primIndex].head, ranges[primIndex].anchor); - var max = ranges.length - 1; - var index = max - primIndex > primIndex ? max : 0; - var base = ranges[index].anchor; - - var firstLine = Math.min(base.line, head.line); - var lastLine = Math.max(base.line, head.line); - var baseCh = base.ch, headCh = head.ch; - - var dir = ranges[index].head.ch - baseCh; - var newDir = headCh - baseCh; - if (dir > 0 && newDir <= 0) { + return s.replace(/^\s+|\s+$/g, ''); +} +function escapeRegex(s) { + return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g, '\\$1'); +} +function extendLineToColumn(cm, lineNum, column) { + var endCh = lineLength(cm, lineNum); + var spaces = new Array(column - endCh + 1).join(' '); + cm.setCursor(new Pos(lineNum, endCh)); + cm.replaceRange(spaces, cm.getCursor()); +} +function selectBlock(cm, selectionEnd) { + var selections = [], ranges = cm.listSelections(); + var head = copyCursor(cm.clipPos(selectionEnd)); + var isClipped = !cursorEqual(selectionEnd, head); + var curHead = cm.getCursor('head'); + var primIndex = getIndex(ranges, curHead); + var wasClipped = cursorEqual(ranges[primIndex].head, ranges[primIndex].anchor); + var max = ranges.length - 1; + var index = max - primIndex > primIndex ? max : 0; + var base = ranges[index].anchor; + var firstLine = Math.min(base.line, head.line); + var lastLine = Math.max(base.line, head.line); + var baseCh = base.ch, headCh = head.ch; + var dir = ranges[index].head.ch - baseCh; + var newDir = headCh - baseCh; + if (dir > 0 && newDir <= 0) { baseCh++; - if (!isClipped) { headCh--; } - } else if (dir < 0 && newDir >= 0) { + if (!isClipped) { + headCh--; + } + } + else if (dir < 0 && newDir >= 0) { baseCh--; - if (!wasClipped) { headCh++; } - } else if (dir < 0 && newDir == -1) { + if (!wasClipped) { + headCh++; + } + } + else if (dir < 0 && newDir == -1) { baseCh--; headCh++; - } - for (var line = firstLine; line <= lastLine; line++) { - var range = {anchor: new Pos(line, baseCh), head: new Pos(line, headCh)}; + } + for (var line = firstLine; line <= lastLine; line++) { + var range = { anchor: new Pos(line, baseCh), head: new Pos(line, headCh) }; selections.push(range); - } - primIndex = head.line == lastLine ? selections.length - 1 : 0; - cm.setSelections(selections); - selectionEnd.ch = headCh; - base.ch = baseCh; - return base; } - function selectForInsert(cm, head, height) { - var sel = []; - for (var i = 0; i < height; i++) { + cm.setSelections(selections); + selectionEnd.ch = headCh; + base.ch = baseCh; + return base; +} +function selectForInsert(cm, head, height) { + var sel = []; + for (var i = 0; i < height; i++) { var lineHead = offsetCursor(head, i, 0); - sel.push({anchor: lineHead, head: lineHead}); - } - cm.setSelections(sel, 0); + sel.push({ anchor: lineHead, head: lineHead }); } - function getIndex(ranges, cursor, end) { - for (var i = 0; i < ranges.length; i++) { + cm.setSelections(sel, 0); +} +function getIndex(ranges, cursor, end) { + for (var i = 0; i < ranges.length; i++) { var atAnchor = end != 'head' && cursorEqual(ranges[i].anchor, cursor); var atHead = end != 'anchor' && cursorEqual(ranges[i].head, cursor); if (atAnchor || atHead) { - return i; + return i; } - } - return -1; } - function getSelectedAreaRange(cm, vim) { - var lastSelection = vim.lastSelection; - var getCurrentSelectedAreaRange = function() { + return -1; +} +function getSelectedAreaRange(cm, vim) { + var lastSelection = vim.lastSelection; + var getCurrentSelectedAreaRange = function () { var selections = cm.listSelections(); - var start = selections[0]; - var end = selections[selections.length-1]; + var start = selections[0]; + var end = selections[selections.length - 1]; var selectionStart = cursorIsBefore(start.anchor, start.head) ? start.anchor : start.head; var selectionEnd = cursorIsBefore(end.anchor, end.head) ? end.head : end.anchor; return [selectionStart, selectionEnd]; - }; - var getLastSelectedAreaRange = function() { + }; + var getLastSelectedAreaRange = function () { var selectionStart = cm.getCursor(); var selectionEnd = cm.getCursor(); var block = lastSelection.visualBlock; if (block) { - var width = block.width; - var height = block.height; - selectionEnd = Pos(selectionStart.line + height, selectionStart.ch + width); - var selections = []; - for (var i = selectionStart.line; i < selectionEnd.line; i++) { - var anchor = Pos(i, selectionStart.ch); - var head = Pos(i, selectionEnd.ch); - var range = {anchor: anchor, head: head}; - selections.push(range); - } - cm.setSelections(selections); - } else { - var start = lastSelection.anchorMark.find(); - var end = lastSelection.headMark.find(); - var line = end.line - start.line; - var ch = end.ch - start.ch; - selectionEnd = {line: selectionEnd.line + line, ch: line ? selectionEnd.ch : ch + selectionEnd.ch}; - if (lastSelection.visualLine) { - selectionStart = Pos(selectionStart.line, 0); - selectionEnd = Pos(selectionEnd.line, lineLength(cm, selectionEnd.line)); - } - cm.setSelection(selectionStart, selectionEnd); + var width = block.width; + var height = block.height; + selectionEnd = new Pos(selectionStart.line + height, selectionStart.ch + width); + var selections = []; + for (var i = selectionStart.line; i < selectionEnd.line; i++) { + var anchor = new Pos(i, selectionStart.ch); + var head = new Pos(i, selectionEnd.ch); + var range = { anchor: anchor, head: head }; + selections.push(range); + } + cm.setSelections(selections); + } + else { + var start = lastSelection.anchorMark.find(); + var end = lastSelection.headMark.find(); + var line = end.line - start.line; + var ch = end.ch - start.ch; + selectionEnd = { line: selectionEnd.line + line, ch: line ? selectionEnd.ch : ch + selectionEnd.ch }; + if (lastSelection.visualLine) { + selectionStart = new Pos(selectionStart.line, 0); + selectionEnd = new Pos(selectionEnd.line, lineLength(cm, selectionEnd.line)); + } + cm.setSelection(selectionStart, selectionEnd); } return [selectionStart, selectionEnd]; - }; - if (!vim.visualMode) { + }; + if (!vim.visualMode) { return getLastSelectedAreaRange(); - } else { - return getCurrentSelectedAreaRange(); - } } - function updateLastSelection(cm, vim) { - var anchor = vim.sel.anchor; - var head = vim.sel.head; - if (vim.lastPastedText) { + else { + return getCurrentSelectedAreaRange(); + } +} +function updateLastSelection(cm, vim) { + var anchor = vim.sel.anchor; + var head = vim.sel.head; + if (vim.lastPastedText) { head = cm.posFromIndex(cm.indexFromPos(anchor) + vim.lastPastedText.length); vim.lastPastedText = null; - } - vim.lastSelection = {'anchorMark': cm.setBookmark(anchor), - 'headMark': cm.setBookmark(head), - 'anchor': copyCursor(anchor), - 'head': copyCursor(head), - 'visualMode': vim.visualMode, - 'visualLine': vim.visualLine, - 'visualBlock': vim.visualBlock}; } - function expandSelection(cm, start, end) { - var sel = cm.state.vim.sel; - var head = sel.head; - var anchor = sel.anchor; - var tmp; - if (cursorIsBefore(end, start)) { + vim.lastSelection = { 'anchorMark': cm.setBookmark(anchor), + 'headMark': cm.setBookmark(head), + 'anchor': copyCursor(anchor), + 'head': copyCursor(head), + 'visualMode': vim.visualMode, + 'visualLine': vim.visualLine, + 'visualBlock': vim.visualBlock }; +} +function expandSelection(cm, start, end, move) { + var sel = cm.state.vim.sel; + var head = move ? start : sel.head; + var anchor = move ? start : sel.anchor; + var tmp; + if (cursorIsBefore(end, start)) { tmp = end; end = start; start = tmp; - } - if (cursorIsBefore(head, anchor)) { + } + if (cursorIsBefore(head, anchor)) { head = cursorMin(start, head); anchor = cursorMax(anchor, end); - } else { + } + else { anchor = cursorMin(start, anchor); head = cursorMax(head, end); head = offsetCursor(head, 0, -1); if (head.ch == -1 && head.line != cm.firstLine()) { - head = Pos(head.line - 1, lineLength(cm, head.line - 1)); + head = new Pos(head.line - 1, lineLength(cm, head.line - 1)); } - } - return [anchor, head]; } - function updateCmSelection(cm, sel, mode) { - var vim = cm.state.vim; - sel = sel || vim.sel; - var mode = mode || + return [anchor, head]; +} +function updateCmSelection(cm, sel, mode) { + var vim = cm.state.vim; + sel = sel || vim.sel; + var mode = mode || vim.visualLine ? 'line' : vim.visualBlock ? 'block' : 'char'; - var cmSel = makeCmSelection(cm, sel, mode); - cm.setSelections(cmSel.ranges, cmSel.primary); - updateFakeCursor(cm); - } - function makeCmSelection(cm, sel, mode, exclusive) { - var head = copyCursor(sel.head); - var anchor = copyCursor(sel.anchor); - if (mode == 'char') { + var cmSel = makeCmSelection(cm, sel, mode); + cm.setSelections(cmSel.ranges, cmSel.primary); +} +function makeCmSelection(cm, sel, mode, exclusive) { + var head = copyCursor(sel.head); + var anchor = copyCursor(sel.anchor); + if (mode == 'char') { var headOffset = !exclusive && !cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; var anchorOffset = cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; head = offsetCursor(sel.head, 0, headOffset); anchor = offsetCursor(sel.anchor, 0, anchorOffset); return { - ranges: [{anchor: anchor, head: head}], - primary: 0 + ranges: [{ anchor: anchor, head: head }], + primary: 0 }; - } else if (mode == 'line') { + } + else if (mode == 'line') { if (!cursorIsBefore(sel.head, sel.anchor)) { - anchor.ch = 0; - - var lastLine = cm.lastLine(); - if (head.line > lastLine) { - head.line = lastLine; - } - head.ch = lineLength(cm, head.line); - } else { - head.ch = 0; - anchor.ch = lineLength(cm, anchor.line); + anchor.ch = 0; + var lastLine = cm.lastLine(); + if (head.line > lastLine) { + head.line = lastLine; + } + head.ch = lineLength(cm, head.line); + } + else { + head.ch = 0; + anchor.ch = lineLength(cm, anchor.line); } return { - ranges: [{anchor: anchor, head: head}], - primary: 0 + ranges: [{ anchor: anchor, head: head }], + primary: 0 }; - } else if (mode == 'block') { - var top = Math.min(anchor.line, head.line), - left = Math.min(anchor.ch, head.ch), - bottom = Math.max(anchor.line, head.line), - right = Math.max(anchor.ch, head.ch) + 1; + } + else if (mode == 'block') { + var top = Math.min(anchor.line, head.line), fromCh = anchor.ch, bottom = Math.max(anchor.line, head.line), toCh = head.ch; + if (fromCh < toCh) { + toCh += 1; + } + else { + fromCh += 1; + } + ; var height = bottom - top + 1; var primary = head.line == top ? 0 : height - 1; var ranges = []; for (var i = 0; i < height; i++) { - ranges.push({ - anchor: Pos(top + i, left), - head: Pos(top + i, right) - }); + ranges.push({ + anchor: new Pos(top + i, fromCh), + head: new Pos(top + i, toCh) + }); } return { - ranges: ranges, - primary: primary + ranges: ranges, + primary: primary }; - } } - function getHead(cm) { - var cur = cm.getCursor('head'); - if (cm.getSelection().length == 1) { +} +function getHead(cm) { + var cur = cm.getCursor('head'); + if (cm.getSelection().length == 1) { cur = cursorMin(cur, cm.getCursor('anchor')); - } - return cur; } - function exitVisualMode(cm, moveHead) { - var vim = cm.state.vim; - if (moveHead !== false) { + return cur; +} +function exitVisualMode(cm, moveHead) { + var vim = cm.state.vim; + if (moveHead !== false) { cm.setCursor(clipCursorToContent(cm, vim.sel.head)); - } - updateLastSelection(cm, vim); - vim.visualMode = false; - vim.visualLine = false; - vim.visualBlock = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - if (vim.fakeCursor) { - vim.fakeCursor.clear(); - } } - function clipToLine(cm, curStart, curEnd) { - var selection = cm.getRange(curStart, curEnd); - if (/\n\s*$/.test(selection)) { + updateLastSelection(cm, vim); + vim.visualMode = false; + vim.visualLine = false; + vim.visualBlock = false; + if (!vim.insertMode) + CodeMirror.signal(cm, "vim-mode-change", { mode: "normal" }); +} +function clipToLine(cm, curStart, curEnd) { + var selection = cm.getRange(curStart, curEnd); + if (/\n\s*$/.test(selection)) { var lines = selection.split('\n'); lines.pop(); var line; for (var line = lines.pop(); lines.length > 0 && line && isWhiteSpaceString(line); line = lines.pop()) { - curEnd.line--; - curEnd.ch = 0; + curEnd.line--; + curEnd.ch = 0; } if (line) { - curEnd.line--; - curEnd.ch = lineLength(cm, curEnd.line); - } else { - curEnd.ch = 0; + curEnd.line--; + curEnd.ch = lineLength(cm, curEnd.line); + } + else { + curEnd.ch = 0; } - } } - function expandSelectionToLine(_cm, curStart, curEnd) { - curStart.ch = 0; - curEnd.ch = 0; - curEnd.line++; - } - - function findFirstNonWhiteSpaceCharacter(text) { - if (!text) { +} +function expandSelectionToLine(_cm, curStart, curEnd) { + curStart.ch = 0; + curEnd.ch = 0; + curEnd.line++; +} +function findFirstNonWhiteSpaceCharacter(text) { + if (!text) { return 0; - } - var firstNonWS = text.search(/\S/); - return firstNonWS == -1 ? text.length : firstNonWS; } - - function expandWordUnderCursor(cm, inclusive, _forward, bigWord, noSymbol) { - var cur = getHead(cm); - var line = cm.getLine(cur.line); - var idx = cur.ch; - var test = noSymbol ? wordCharTest[0] : bigWordCharTest [0]; - while (!test(line.charAt(idx))) { - idx++; - if (idx >= line.length) { return null; } - } - - if (bigWord) { - test = bigWordCharTest[0]; - } else { - test = wordCharTest[0]; - if (!test(line.charAt(idx))) { - test = wordCharTest[1]; - } - } - - var end = idx, start = idx; - while (test(line.charAt(end)) && end < line.length) { end++; } - while (test(line.charAt(start)) && start >= 0) { start--; } - start++; - - if (inclusive) { - var wordEnd = end; - while (/\s/.test(line.charAt(end)) && end < line.length) { end++; } - if (wordEnd == end) { - var wordStart = start; - while (/\s/.test(line.charAt(start - 1)) && start > 0) { start--; } - if (!start) { start = wordStart; } - } - } - return { start: Pos(cur.line, start), end: Pos(cur.line, end) }; + var firstNonWS = text.search(/\S/); + return firstNonWS == -1 ? text.length : firstNonWS; +} +function expandWordUnderCursor(cm, _a, cursor) { + var inclusive = _a.inclusive, innerWord = _a.innerWord, bigWord = _a.bigWord, noSymbol = _a.noSymbol, multiline = _a.multiline; + var cur = cursor || getHead(cm); + var line = cm.getLine(cur.line); + var endLine = line; + var startLineNumber = cur.line; + var endLineNumber = startLineNumber; + var idx = cur.ch; + var wordOnNextLine; + var test = noSymbol ? wordCharTest[0] : bigWordCharTest[0]; + if (innerWord && /\s/.test(line.charAt(idx))) { + test = function (ch) { return /\s/.test(ch); }; } - - function recordJumpPosition(cm, oldCur, newCur) { - if (!cursorEqual(oldCur, newCur)) { - vimGlobalState.jumpList.add(cm, oldCur, newCur); - } - } - - function recordLastCharacterSearch(increment, args) { - vimGlobalState.lastChararacterSearch.increment = increment; - vimGlobalState.lastChararacterSearch.forward = args.forward; - vimGlobalState.lastChararacterSearch.selectedCharacter = args.selectedCharacter; - } - - var symbolToMode = { - '(': 'bracket', ')': 'bracket', '{': 'bracket', '}': 'bracket', - '[': 'section', ']': 'section', - '*': 'comment', '/': 'comment', - 'm': 'method', 'M': 'method', - '#': 'preprocess' - }; - var findSymbolModes = { - bracket: { - isComplete: function(state) { - if (state.nextCh === state.symb) { - state.depth++; - if (state.depth >= 1)return true; - } else if (state.nextCh === state.reverseSymb) { - state.depth--; - } - return false; - } - }, - section: { - init: function(state) { - state.curMoveThrough = true; - state.symb = (state.forward ? ']' : '[') === state.symb ? '{' : '}'; - }, - isComplete: function(state) { - return state.index === 0 && state.nextCh === state.symb; - } - }, - comment: { - isComplete: function(state) { - var found = state.lastCh === '*' && state.nextCh === '/'; - state.lastCh = state.nextCh; - return found; - } - }, - method: { - init: function(state) { - state.symb = (state.symb === 'm' ? '{' : '}'); - state.reverseSymb = state.symb === '{' ? '}' : '{'; - }, - isComplete: function(state) { - if (state.nextCh === state.symb)return true; - return false; - } - }, - preprocess: { - init: function(state) { - state.index = 0; - }, - isComplete: function(state) { - if (state.nextCh === '#') { - var token = state.lineText.match(/#(\w+)/)[1]; - if (token === 'endif') { - if (state.forward && state.depth === 0) { - return true; - } - state.depth++; - } else if (token === 'if') { - if (!state.forward && state.depth === 0) { - return true; - } - state.depth--; + else { + while (!test(line.charAt(idx))) { + idx++; + if (idx >= line.length) { + if (!multiline) + return null; + idx--; + wordOnNextLine = findWord(cm, cur, true, bigWord, true); + break; } - if (token === 'else' && state.depth === 0)return true; - } - return false; } - } - }; - function findSymbol(cm, repeat, forward, symb) { - var cur = copyCursor(cm.getCursor()); - var increment = forward ? 1 : -1; - var endLine = forward ? cm.lineCount() : -1; - var curCh = cur.ch; - var line = cur.line; - var lineText = cm.getLine(line); - var state = { + if (bigWord) { + test = bigWordCharTest[0]; + } + else { + test = wordCharTest[0]; + if (!test(line.charAt(idx))) { + test = wordCharTest[1]; + } + } + } + var end = idx, start = idx; + while (test(line.charAt(start)) && start >= 0) { + start--; + } + start++; + if (wordOnNextLine) { + end = wordOnNextLine.to; + endLineNumber = wordOnNextLine.line; + endLine = cm.getLine(endLineNumber); + if (!endLine && end == 0) + end++; + } + else { + while (test(line.charAt(end)) && end < line.length) { + end++; + } + } + if (inclusive) { + var wordEnd = end; + var startsWithSpace = cur.ch <= start && /\s/.test(line.charAt(cur.ch)); + if (!startsWithSpace) { + while (/\s/.test(endLine.charAt(end)) && end < endLine.length) { + end++; + } + } + if (wordEnd == end || startsWithSpace) { + var wordStart = start; + while (/\s/.test(line.charAt(start - 1)) && start > 0) { + start--; + } + if (!start && !startsWithSpace) { + start = wordStart; + } + } + } + return { start: new Pos(startLineNumber, start), end: new Pos(endLineNumber, end) }; +} +function expandTagUnderCursor(cm, head, inclusive) { + var cur = head; + if (!CodeMirror.findMatchingTag || !CodeMirror.findEnclosingTag) { + return { start: cur, end: cur }; + } + var tags = CodeMirror.findMatchingTag(cm, head) || CodeMirror.findEnclosingTag(cm, head); + if (!tags || !tags.open || !tags.close) { + return { start: cur, end: cur }; + } + if (inclusive) { + return { start: tags.open.from, end: tags.close.to }; + } + return { start: tags.open.to, end: tags.close.from }; +} +function recordJumpPosition(cm, oldCur, newCur) { + if (!cursorEqual(oldCur, newCur)) { + vimGlobalState.jumpList.add(cm, oldCur, newCur); + } +} +function recordLastCharacterSearch(increment, args) { + vimGlobalState.lastCharacterSearch.increment = increment; + vimGlobalState.lastCharacterSearch.forward = args.forward; + vimGlobalState.lastCharacterSearch.selectedCharacter = args.selectedCharacter; +} +var symbolToMode = { + '(': 'bracket', ')': 'bracket', '{': 'bracket', '}': 'bracket', + '[': 'section', ']': 'section', + '*': 'comment', '/': 'comment', + 'm': 'method', 'M': 'method', + '#': 'preprocess' +}; +var findSymbolModes = { + bracket: { + isComplete: function (state) { + if (state.nextCh === state.symb) { + state.depth++; + if (state.depth >= 1) + return true; + } + else if (state.nextCh === state.reverseSymb) { + state.depth--; + } + return false; + } + }, + section: { + init: function (state) { + state.curMoveThrough = true; + state.symb = (state.forward ? ']' : '[') === state.symb ? '{' : '}'; + }, + isComplete: function (state) { + return state.index === 0 && state.nextCh === state.symb; + } + }, + comment: { + isComplete: function (state) { + var found = state.lastCh === '*' && state.nextCh === '/'; + state.lastCh = state.nextCh; + return found; + } + }, + method: { + init: function (state) { + state.symb = (state.symb === 'm' ? '{' : '}'); + state.reverseSymb = state.symb === '{' ? '}' : '{'; + }, + isComplete: function (state) { + if (state.nextCh === state.symb) + return true; + return false; + } + }, + preprocess: { + init: function (state) { + state.index = 0; + }, + isComplete: function (state) { + if (state.nextCh === '#') { + var token = state.lineText.match(/^#(\w+)/)[1]; + if (token === 'endif') { + if (state.forward && state.depth === 0) { + return true; + } + state.depth++; + } + else if (token === 'if') { + if (!state.forward && state.depth === 0) { + return true; + } + state.depth--; + } + if (token === 'else' && state.depth === 0) + return true; + } + return false; + } + } +}; +function findSymbol(cm, repeat, forward, symb) { + var cur = copyCursor(cm.getCursor()); + var increment = forward ? 1 : -1; + var endLine = forward ? cm.lineCount() : -1; + var curCh = cur.ch; + var line = cur.line; + var lineText = cm.getLine(line); + var state = { lineText: lineText, nextCh: lineText.charAt(curCh), lastCh: null, index: curCh, symb: symb, - reverseSymb: (forward ? { ')': '(', '}': '{' } : { '(': ')', '{': '}' })[symb], + reverseSymb: (forward ? { ')': '(', '}': '{' } : { '(': ')', '{': '}' })[symb], forward: forward, depth: 0, curMoveThrough: false - }; - var mode = symbolToMode[symb]; - if (!mode)return cur; - var init = findSymbolModes[mode].init; - var isComplete = findSymbolModes[mode].isComplete; - if (init) { init(state); } - while (line !== endLine && repeat) { + }; + var mode = symbolToMode[symb]; + if (!mode) + return cur; + var init = findSymbolModes[mode].init; + var isComplete = findSymbolModes[mode].isComplete; + if (init) { + init(state); + } + while (line !== endLine && repeat) { state.index += increment; state.nextCh = state.lineText.charAt(state.index); if (!state.nextCh) { - line += increment; - state.lineText = cm.getLine(line) || ''; - if (increment > 0) { - state.index = 0; - } else { - var lineLen = state.lineText.length; - state.index = (lineLen > 0) ? (lineLen-1) : 0; - } - state.nextCh = state.lineText.charAt(state.index); + line += increment; + state.lineText = cm.getLine(line) || ''; + if (increment > 0) { + state.index = 0; + } + else { + var lineLen = state.lineText.length; + state.index = (lineLen > 0) ? (lineLen - 1) : 0; + } + state.nextCh = state.lineText.charAt(state.index); } if (isComplete(state)) { - cur.line = line; - cur.ch = state.index; - repeat--; + cur.line = line; + cur.ch = state.index; + repeat--; } - } - if (state.nextCh || state.curMoveThrough) { - return Pos(line, state.index); - } - return cur; } - function findWord(cm, cur, forward, bigWord, emptyLineIsWord) { - var lineNum = cur.line; - var pos = cur.ch; - var line = cm.getLine(lineNum); - var dir = forward ? 1 : -1; - var charTests = bigWord ? bigWordCharTest: wordCharTest; - - if (emptyLineIsWord && line == '') { + if (state.nextCh || state.curMoveThrough) { + return new Pos(line, state.index); + } + return cur; +} +function findWord(cm, cur, forward, bigWord, emptyLineIsWord) { + var lineNum = cur.line; + var pos = cur.ch; + var line = cm.getLine(lineNum); + var dir = forward ? 1 : -1; + var charTests = bigWord ? bigWordCharTest : wordCharTest; + if (emptyLineIsWord && line == '') { lineNum += dir; line = cm.getLine(lineNum); if (!isLine(cm, lineNum)) { - return null; + return null; } pos = (forward) ? 0 : line.length; - } - - while (true) { + } + while (true) { if (emptyLineIsWord && line == '') { - return { from: 0, to: 0, line: lineNum }; + return { from: 0, to: 0, line: lineNum }; } var stop = (dir > 0) ? line.length : -1; var wordStart = stop, wordEnd = stop; while (pos != stop) { - var foundWord = false; - for (var i = 0; i < charTests.length && !foundWord; ++i) { - if (charTests[i](line.charAt(pos))) { - wordStart = pos; - while (pos != stop && charTests[i](line.charAt(pos))) { - pos += dir; - } - wordEnd = pos; - foundWord = wordStart != wordEnd; - if (wordStart == cur.ch && lineNum == cur.line && - wordEnd == wordStart + dir) { - continue; - } else { - return { - from: Math.min(wordStart, wordEnd + 1), - to: Math.max(wordStart, wordEnd), - line: lineNum }; - } + var foundWord = false; + for (var i = 0; i < charTests.length && !foundWord; ++i) { + if (charTests[i](line.charAt(pos))) { + wordStart = pos; + while (pos != stop && charTests[i](line.charAt(pos))) { + pos += dir; + } + wordEnd = pos; + foundWord = wordStart != wordEnd; + if (wordStart == cur.ch && lineNum == cur.line && + wordEnd == wordStart + dir) { + continue; + } + else { + return { + from: Math.min(wordStart, wordEnd + 1), + to: Math.max(wordStart, wordEnd), + line: lineNum + }; + } + } + } + if (!foundWord) { + pos += dir; } - } - if (!foundWord) { - pos += dir; - } } lineNum += dir; if (!isLine(cm, lineNum)) { - return null; + return null; } line = cm.getLine(lineNum); pos = (dir > 0) ? 0 : line.length; - } - throw new Error('The impossible happened.'); } - function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) { - var curStart = copyCursor(cur); - var words = []; - if (forward && !wordEnd || !forward && wordEnd) { +} +function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) { + var curStart = copyCursor(cur); + var words = []; + if (forward && !wordEnd || !forward && wordEnd) { repeat++; - } - var emptyLineIsWord = !(forward && wordEnd); - for (var i = 0; i < repeat; i++) { + } + var emptyLineIsWord = !(forward && wordEnd); + for (var i = 0; i < repeat; i++) { var word = findWord(cm, cur, forward, bigWord, emptyLineIsWord); if (!word) { - var eodCh = lineLength(cm, cm.lastLine()); - words.push(forward - ? {line: cm.lastLine(), from: eodCh, to: eodCh} - : {line: 0, from: 0, to: 0}); - break; + var eodCh = lineLength(cm, cm.lastLine()); + words.push(forward + ? { line: cm.lastLine(), from: eodCh, to: eodCh } + : { line: 0, from: 0, to: 0 }); + break; } words.push(word); - cur = Pos(word.line, forward ? (word.to - 1) : word.from); - } - var shortCircuit = words.length != repeat; - var firstWord = words[0]; - var lastWord = words.pop(); - if (forward && !wordEnd) { - if (!shortCircuit && (firstWord.from != curStart.ch || firstWord.line != curStart.line)) { - lastWord = words.pop(); - } - return Pos(lastWord.line, lastWord.from); - } else if (forward && wordEnd) { - return Pos(lastWord.line, lastWord.to - 1); - } else if (!forward && wordEnd) { - if (!shortCircuit && (firstWord.to != curStart.ch || firstWord.line != curStart.line)) { - lastWord = words.pop(); - } - return Pos(lastWord.line, lastWord.to); - } else { - return Pos(lastWord.line, lastWord.from); - } + cur = new Pos(word.line, forward ? (word.to - 1) : word.from); } - - function moveToCharacter(cm, repeat, forward, character) { - var cur = cm.getCursor(); - var start = cur.ch; - var idx; - for (var i = 0; i < repeat; i ++) { + var shortCircuit = words.length != repeat; + var firstWord = words[0]; + var lastWord = words.pop(); + if (forward && !wordEnd) { + if (!shortCircuit && (firstWord.from != curStart.ch || firstWord.line != curStart.line)) { + lastWord = words.pop(); + } + return new Pos(lastWord.line, lastWord.from); + } + else if (forward && wordEnd) { + return new Pos(lastWord.line, lastWord.to - 1); + } + else if (!forward && wordEnd) { + if (!shortCircuit && (firstWord.to != curStart.ch || firstWord.line != curStart.line)) { + lastWord = words.pop(); + } + return new Pos(lastWord.line, lastWord.to); + } + else { + return new Pos(lastWord.line, lastWord.from); + } +} +function moveToEol(cm, head, motionArgs, vim, keepHPos) { + var cur = head; + var retval = new Pos(cur.line + motionArgs.repeat - 1, Infinity); + var end = cm.clipPos(retval); + end.ch--; + if (!keepHPos) { + vim.lastHPos = Infinity; + vim.lastHSPos = cm.charCoords(end, 'div').left; + } + return retval; +} +function moveToCharacter(cm, repeat, forward, character, head) { + var cur = head || cm.getCursor(); + var start = cur.ch; + var idx; + for (var i = 0; i < repeat; i++) { var line = cm.getLine(cur.line); idx = charIdxInLine(start, line, character, forward, true); if (idx == -1) { - return null; + return null; } start = idx; - } - return Pos(cm.getCursor().line, idx); } - - function moveToColumn(cm, repeat) { - var line = cm.getCursor().line; - return clipCursorToContent(cm, Pos(line, repeat - 1)); - } - - function updateMark(cm, vim, markName, pos) { - if (!inArray(markName, validMarks)) { + return new Pos(cm.getCursor().line, idx); +} +function moveToColumn(cm, repeat) { + var line = cm.getCursor().line; + return clipCursorToContent(cm, new Pos(line, repeat - 1)); +} +function updateMark(cm, vim, markName, pos) { + if (!inArray(markName, validMarks) && !latinCharRegex.test(markName)) { return; - } - if (vim.marks[markName]) { - vim.marks[markName].clear(); - } - vim.marks[markName] = cm.setBookmark(pos); } - - function charIdxInLine(start, line, character, forward, includeChar) { - var idx; - if (forward) { + if (vim.marks[markName]) { + vim.marks[markName].clear(); + } + vim.marks[markName] = cm.setBookmark(pos); +} +function charIdxInLine(start, line, character, forward, includeChar) { + var idx; + if (forward) { idx = line.indexOf(character, start + 1); if (idx != -1 && !includeChar) { - idx -= 1; + idx -= 1; } - } else { + } + else { idx = line.lastIndexOf(character, start - 1); if (idx != -1 && !includeChar) { - idx += 1; + idx += 1; } - } - return idx; } - - function findParagraph(cm, head, repeat, dir, inclusive) { - var line = head.line; - var min = cm.firstLine(); - var max = cm.lastLine(); - var start, end, i = line; - function isEmpty(i) { return !/\S/.test(cm.getLine(i)); } // ace_patch - function isBoundary(i, dir, any) { - if (any) { return isEmpty(i) != isEmpty(i + dir); } + return idx; +} +function findParagraph(cm, head, repeat, dir, inclusive) { + var line = head.line; + var min = cm.firstLine(); + var max = cm.lastLine(); + var start, end, i = line; + function isEmpty(i) { return !/\S/.test(cm.getLine(i)); } // ace_patch + function isBoundary(i, dir, any) { + if (any) { + return isEmpty(i) != isEmpty(i + dir); + } return !isEmpty(i) && isEmpty(i + dir); - } - function skipFold(i) { - dir = dir > 0 ? 1 : -1; - var foldLine = cm.ace.session.getFoldLine(i); - if (foldLine) { - if (i + dir > foldLine.start.row && i + dir < foldLine.end.row) - dir = (dir > 0 ? foldLine.end.row : foldLine.start.row) - i; - } - } - if (dir) { + } + function skipFold(i) { + dir = dir > 0 ? 1 : -1; + var foldLine = cm.ace.session.getFoldLine(i); + if (foldLine) { + if (i + dir > foldLine.start.row && i + dir < foldLine.end.row) + dir = (dir > 0 ? foldLine.end.row : foldLine.start.row) - i; + } + } + if (dir) { while (min <= i && i <= max && repeat > 0) { - skipFold(i); - if (isBoundary(i, dir)) { repeat--; } - i += dir; + skipFold(i); + if (isBoundary(i, dir)) { + repeat--; + } + i += dir; } return new Pos(i, 0); - } - - var vim = cm.state.vim; - if (vim.visualLine && isBoundary(line, 1, true)) { + } + var vim = cm.state.vim; + if (vim.visualLine && isBoundary(line, 1, true)) { var anchor = vim.sel.anchor; if (isBoundary(anchor.line, -1, true)) { - if (!inclusive || anchor.line != line) { - line += 1; - } + if (!inclusive || anchor.line != line) { + line += 1; + } } - } - var startState = isEmpty(line); - for (i = line; i <= max && repeat; i++) { - if (isBoundary(i, 1, true)) { - if (!inclusive || isEmpty(i) != startState) { - repeat--; - } - } - } - end = new Pos(i, 0); - if (i > max && !startState) { startState = true; } - else { inclusive = false; } - for (i = line; i > min; i--) { - if (!inclusive || isEmpty(i) == startState || i == line) { - if (isBoundary(i, -1, true)) { break; } - } - } - start = new Pos(i, 0); - return { start: start, end: end }; } - function selectCompanionObject(cm, head, symb, inclusive) { - var cur = head, start, end; - - var bracketRegexp = ({ + var startState = isEmpty(line); + for (i = line; i <= max && repeat; i++) { + if (isBoundary(i, 1, true)) { + if (!inclusive || isEmpty(i) != startState) { + repeat--; + } + } + } + end = new Pos(i, 0); + if (i > max && !startState) { + startState = true; + } + else { + inclusive = false; + } + for (i = line; i > min; i--) { + if (!inclusive || isEmpty(i) == startState || i == line) { + if (isBoundary(i, -1, true)) { + break; + } + } + } + start = new Pos(i, 0); + return { start: start, end: end }; +} +function getSentence(cm, cur, repeat, dir, inclusive /*includes whitespace*/) { + function nextChar(curr) { + if (curr.pos + curr.dir < 0 || curr.pos + curr.dir >= curr.line.length) { + curr.line = null; + } + else { + curr.pos += curr.dir; + } + } + function forward(cm, ln, pos, dir) { + var line = cm.getLine(ln); + var curr = { + line: line, + ln: ln, + pos: pos, + dir: dir, + }; + if (curr.line === "") { + return { ln: curr.ln, pos: curr.pos }; + } + var lastSentencePos = curr.pos; + nextChar(curr); + while (curr.line !== null) { + lastSentencePos = curr.pos; + if (isEndOfSentenceSymbol(curr.line[curr.pos])) { + if (!inclusive) { + return { ln: curr.ln, pos: curr.pos + 1 }; + } + else { + nextChar(curr); + while (curr.line !== null) { + if (isWhiteSpaceString(curr.line[curr.pos])) { + lastSentencePos = curr.pos; + nextChar(curr); + } + else { + break; + } + } + return { ln: curr.ln, pos: lastSentencePos + 1 }; + } + } + nextChar(curr); + } + return { ln: curr.ln, pos: lastSentencePos + 1 }; + } + function reverse(cm, ln, pos, dir) { + var line = cm.getLine(ln); + var curr = { + line: line, + ln: ln, + pos: pos, + dir: dir, + }; + if (curr.line === "") { + return { ln: curr.ln, pos: curr.pos }; + } + var lastSentencePos = curr.pos; + nextChar(curr); + while (curr.line !== null) { + if (!isWhiteSpaceString(curr.line[curr.pos]) && !isEndOfSentenceSymbol(curr.line[curr.pos])) { + lastSentencePos = curr.pos; + } + else if (isEndOfSentenceSymbol(curr.line[curr.pos])) { + if (!inclusive) { + return { ln: curr.ln, pos: lastSentencePos }; + } + else { + if (isWhiteSpaceString(curr.line[curr.pos + 1])) { + return { ln: curr.ln, pos: curr.pos + 1 }; + } + else { + return { ln: curr.ln, pos: lastSentencePos }; + } + } + } + nextChar(curr); + } + curr.line = line; + if (inclusive && isWhiteSpaceString(curr.line[curr.pos])) { + return { ln: curr.ln, pos: curr.pos }; + } + else { + return { ln: curr.ln, pos: lastSentencePos }; + } + } + var curr_index = { + ln: cur.line, + pos: cur.ch, + }; + while (repeat > 0) { + if (dir < 0) { + curr_index = reverse(cm, curr_index.ln, curr_index.pos, dir); + } + else { + curr_index = forward(cm, curr_index.ln, curr_index.pos, dir); + } + repeat--; + } + return new Pos(curr_index.ln, curr_index.pos); +} +function findSentence(cm, cur, repeat, dir) { + function nextChar(cm, idx) { + if (idx.pos + idx.dir < 0 || idx.pos + idx.dir >= idx.line.length) { + idx.ln += idx.dir; + if (!isLine(cm, idx.ln)) { + idx.line = null; + idx.ln = null; + idx.pos = null; + return; + } + idx.line = cm.getLine(idx.ln); + idx.pos = (idx.dir > 0) ? 0 : idx.line.length - 1; + } + else { + idx.pos += idx.dir; + } + } + function forward(cm, ln, pos, dir) { + var line = cm.getLine(ln); + var stop = (line === ""); + var curr = { + line: line, + ln: ln, + pos: pos, + dir: dir, + }; + var last_valid = { + ln: curr.ln, + pos: curr.pos, + }; + var skip_empty_lines = (curr.line === ""); + nextChar(cm, curr); + while (curr.line !== null) { + last_valid.ln = curr.ln; + last_valid.pos = curr.pos; + if (curr.line === "" && !skip_empty_lines) { + return { ln: curr.ln, pos: curr.pos, }; + } + else if (stop && curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) { + return { ln: curr.ln, pos: curr.pos, }; + } + else if (isEndOfSentenceSymbol(curr.line[curr.pos]) + && !stop + && (curr.pos === curr.line.length - 1 + || isWhiteSpaceString(curr.line[curr.pos + 1]))) { + stop = true; + } + nextChar(cm, curr); + } + var line = cm.getLine(last_valid.ln); + last_valid.pos = 0; + for (var i = line.length - 1; i >= 0; --i) { + if (!isWhiteSpaceString(line[i])) { + last_valid.pos = i; + break; + } + } + return last_valid; + } + function reverse(cm, ln, pos, dir) { + var line = cm.getLine(ln); + var curr = { + line: line, + ln: ln, + pos: pos, + dir: dir, + }; + var last_valid = { + ln: curr.ln, + pos: null, + }; + var skip_empty_lines = (curr.line === ""); + nextChar(cm, curr); + while (curr.line !== null) { + if (curr.line === "" && !skip_empty_lines) { + if (last_valid.pos !== null) { + return last_valid; + } + else { + return { ln: curr.ln, pos: curr.pos }; + } + } + else if (isEndOfSentenceSymbol(curr.line[curr.pos]) + && last_valid.pos !== null + && !(curr.ln === last_valid.ln && curr.pos + 1 === last_valid.pos)) { + return last_valid; + } + else if (curr.line !== "" && !isWhiteSpaceString(curr.line[curr.pos])) { + skip_empty_lines = false; + last_valid = { ln: curr.ln, pos: curr.pos }; + } + nextChar(cm, curr); + } + var line = cm.getLine(last_valid.ln); + last_valid.pos = 0; + for (var i = 0; i < line.length; ++i) { + if (!isWhiteSpaceString(line[i])) { + last_valid.pos = i; + break; + } + } + return last_valid; + } + var curr_index = { + ln: cur.line, + pos: cur.ch, + }; + while (repeat > 0) { + if (dir < 0) { + curr_index = reverse(cm, curr_index.ln, curr_index.pos, dir); + } + else { + curr_index = forward(cm, curr_index.ln, curr_index.pos, dir); + } + repeat--; + } + return new Pos(curr_index.ln, curr_index.pos); +} +function selectCompanionObject(cm, head, symb, inclusive) { + var cur = head, start, end; + var bracketRegexp = ({ '(': /[()]/, ')': /[()]/, '[': /[[\]]/, ']': /[[\]]/, - '{': /[{}]/, '}': /[{}]/})[symb]; - var openSym = ({ + '{': /[{}]/, '}': /[{}]/, + '<': /[<>]/, '>': /[<>]/ + })[symb]; + var openSym = ({ '(': '(', ')': '(', '[': '[', ']': '[', - '{': '{', '}': '{'})[symb]; - var curChar = cm.getLine(cur.line).charAt(cur.ch); - var offset = curChar === openSym ? 1 : 0; - - start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1, null, {'bracketRegex': bracketRegexp}); - end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, null, {'bracketRegex': bracketRegexp}); - - if (!start || !end) { - return { start: cur, end: cur }; - } - - start = start.pos; - end = end.pos; - - if ((start.line == end.line && start.ch > end.ch) - || (start.line > end.line)) { + '{': '{', '}': '{', + '<': '<', '>': '<' + })[symb]; + var curChar = cm.getLine(cur.line).charAt(cur.ch); + var offset = curChar === openSym ? 1 : 0; + start = cm.scanForBracket(new Pos(cur.line, cur.ch + offset), -1, undefined, { 'bracketRegex': bracketRegexp }); + end = cm.scanForBracket(new Pos(cur.line, cur.ch + offset), 1, undefined, { 'bracketRegex': bracketRegexp }); + if (!start || !end) + return null; + start = start.pos; + end = end.pos; + if ((start.line == end.line && start.ch > end.ch) + || (start.line > end.line)) { var tmp = start; start = end; end = tmp; - } - - if (inclusive) { + } + if (inclusive) { end.ch += 1; - } else { + } + else { start.ch += 1; - } - - return { start: start, end: end }; } - function findBeginningAndEnd(cm, head, symb, inclusive) { - var cur = copyCursor(head); - var line = cm.getLine(cur.line); - var chars = line.split(''); - var start, end, i, len; - var firstIndex = chars.indexOf(symb); - if (cur.ch < firstIndex) { + return { start: start, end: end }; +} +function findBeginningAndEnd(cm, head, symb, inclusive) { + var cur = copyCursor(head); + var line = cm.getLine(cur.line); + var chars = line.split(''); + var start, end, i, len; + var firstIndex = chars.indexOf(symb); + if (cur.ch < firstIndex) { cur.ch = firstIndex; - } - else if (firstIndex < cur.ch && chars[cur.ch] == symb) { - end = cur.ch; // assign end to the current cursor - --cur.ch; // make sure to look backwards - } - if (chars[cur.ch] == symb && !end) { + } + else if (firstIndex < cur.ch && chars[cur.ch] == symb) { + var stringAfter = /string/.test(cm.getTokenTypeAt(offsetCursor(head, 0, 1))); + var stringBefore = /string/.test(cm.getTokenTypeAt(head)); + var isStringStart = stringAfter && !stringBefore; + if (!isStringStart) { + end = cur.ch; // assign end to the current cursor + --cur.ch; // make sure to look backwards + } + } + if (chars[cur.ch] == symb && !end) { start = cur.ch + 1; // assign start to ahead of the cursor - } else { + } + else { for (i = cur.ch; i > -1 && !start; i--) { - if (chars[i] == symb) { - start = i + 1; - } + if (chars[i] == symb) { + start = i + 1; + } } - } - if (start && !end) { + } + if (start && !end) { for (i = start, len = chars.length; i < len && !end; i++) { - if (chars[i] == symb) { - end = i; - } + if (chars[i] == symb) { + end = i; + } } - } - if (!start || !end) { + } + if (!start || !end) { return { start: cur, end: cur }; - } - if (inclusive) { - --start; ++end; - } - - return { - start: Pos(cur.line, start), - end: Pos(cur.line, end) - }; } - defineOption('pcre', true, 'boolean'); - function SearchState() {} - SearchState.prototype = { - getQuery: function() { - return vimGlobalState.query; - }, - setQuery: function(query) { - vimGlobalState.query = query; - }, - getOverlay: function() { - return this.searchOverlay; - }, - setOverlay: function(overlay) { - this.searchOverlay = overlay; - }, - isReversed: function() { - return vimGlobalState.isReversed; - }, - setReversed: function(reversed) { - vimGlobalState.isReversed = reversed; - }, - getScrollbarAnnotate: function() { - return this.annotate; - }, - setScrollbarAnnotate: function(annotate) { - this.annotate = annotate; - } + if (inclusive) { + --start; + ++end; + } + return { + start: new Pos(cur.line, start), + end: new Pos(cur.line, end) }; - function getSearchState(cm) { - var vim = cm.state.vim; - return vim.searchState_ || (vim.searchState_ = new SearchState()); +} +defineOption('pcre', true, 'boolean'); +function SearchState() { } +SearchState.prototype = { + getQuery: function () { + return vimGlobalState.query; + }, + setQuery: function (query) { + vimGlobalState.query = query; + }, + getOverlay: function () { + return this.searchOverlay; + }, + setOverlay: function (overlay) { + this.searchOverlay = overlay; + }, + isReversed: function () { + return vimGlobalState.isReversed; + }, + setReversed: function (reversed) { + vimGlobalState.isReversed = reversed; + }, + getScrollbarAnnotate: function () { + return this.annotate; + }, + setScrollbarAnnotate: function (annotate) { + this.annotate = annotate; } - function dialog(cm, template, shortText, onClose, options) { - if (cm.openDialog) { - cm.openDialog(template, onClose, { bottom: true, value: options.value, - onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp, - selectValueOnOpen: false}); - } - else { - onClose(prompt(shortText, '')); - } - } - function splitBySlash(argString) { - var slashes = findUnescapedSlashes(argString) || []; - if (!slashes.length) return []; - var tokens = []; - if (slashes[0] !== 0) return; - for (var i = 0; i < slashes.length; i++) { +}; +function getSearchState(cm) { + var vim = cm.state.vim; + return vim.searchState_ || (vim.searchState_ = new SearchState()); +} +function splitBySlash(argString) { + return splitBySeparator(argString, '/'); +} +function findUnescapedSlashes(argString) { + return findUnescapedSeparators(argString, '/'); +} +function splitBySeparator(argString, separator) { + var slashes = findUnescapedSeparators(argString, separator) || []; + if (!slashes.length) + return []; + var tokens = []; + if (slashes[0] !== 0) + return; + for (var i = 0; i < slashes.length; i++) { if (typeof slashes[i] == 'number') - tokens.push(argString.substring(slashes[i] + 1, slashes[i+1])); - } - return tokens; + tokens.push(argString.substring(slashes[i] + 1, slashes[i + 1])); } - - function findUnescapedSlashes(str) { - var escapeNextChar = false; - var slashes = []; - for (var i = 0; i < str.length; i++) { + return tokens; +} +function findUnescapedSeparators(str, separator) { + if (!separator) + separator = '/'; + var escapeNextChar = false; + var slashes = []; + for (var i = 0; i < str.length; i++) { var c = str.charAt(i); - if (!escapeNextChar && c == '/') { - slashes.push(i); + if (!escapeNextChar && c == separator) { + slashes.push(i); } escapeNextChar = !escapeNextChar && (c == '\\'); - } - return slashes; } - function translateRegex(str) { - var specials = '|(){'; - var unescape = '}'; - var escapeNextChar = false; - var out = []; - for (var i = -1; i < str.length; i++) { + return slashes; +} +function translateRegex(str) { + var specials = '|(){'; + var unescape = '}'; + var escapeNextChar = false; + var out = []; + for (var i = -1; i < str.length; i++) { var c = str.charAt(i) || ''; - var n = str.charAt(i+1) || ''; + var n = str.charAt(i + 1) || ''; var specialComesNext = (n && specials.indexOf(n) != -1); if (escapeNextChar) { - if (c !== '\\' || !specialComesNext) { - out.push(c); - } - escapeNextChar = false; - } else { - if (c === '\\') { - escapeNextChar = true; - if (n && unescape.indexOf(n) != -1) { - specialComesNext = true; + if (c !== '\\' || !specialComesNext) { + out.push(c); + } + escapeNextChar = false; + } + else { + if (c === '\\') { + escapeNextChar = true; + if (n && unescape.indexOf(n) != -1) { + specialComesNext = true; + } + if (!specialComesNext || n === '\\') { + out.push(c); + } + } + else { + out.push(c); + if (specialComesNext && n !== '\\') { + out.push('\\'); + } } - if (!specialComesNext || n === '\\') { - out.push(c); - } - } else { - out.push(c); - if (specialComesNext && n !== '\\') { - out.push('\\'); - } - } } - } - return out.join(''); } - var charUnescapes = {'\\n': '\n', '\\r': '\r', '\\t': '\t'}; - function translateRegexReplace(str) { - var escapeNextChar = false; - var out = []; - for (var i = -1; i < str.length; i++) { + return out.join(''); +} +var charUnescapes = { '\\n': '\n', '\\r': '\r', '\\t': '\t' }; +function translateRegexReplace(str) { + var escapeNextChar = false; + var out = []; + for (var i = -1; i < str.length; i++) { var c = str.charAt(i) || ''; - var n = str.charAt(i+1) || ''; + var n = str.charAt(i + 1) || ''; if (charUnescapes[c + n]) { - out.push(charUnescapes[c+n]); - i++; - } else if (escapeNextChar) { - out.push(c); - escapeNextChar = false; - } else { - if (c === '\\') { - escapeNextChar = true; - if ((isNumber(n) || n === '$')) { - out.push('$'); - } else if (n !== '/' && n !== '\\') { - out.push('\\'); - } - } else { - if (c === '$') { - out.push('$'); - } - out.push(c); - if (n === '/') { - out.push('\\'); - } - } + out.push(charUnescapes[c + n]); + i++; + } + else if (escapeNextChar) { + out.push(c); + escapeNextChar = false; + } + else { + if (c === '\\') { + escapeNextChar = true; + if ((isNumber(n) || n === '$')) { + out.push('$'); + } + else if (n !== '/' && n !== '\\') { + out.push('\\'); + } + } + else { + if (c === '$') { + out.push('$'); + } + out.push(c); + if (n === '/') { + out.push('\\'); + } + } } - } - return out.join(''); } - var unescapes = {'\\/': '/', '\\\\': '\\', '\\n': '\n', '\\r': '\r', '\\t': '\t'}; - function unescapeRegexReplace(str) { - var stream = new CodeMirror.StringStream(str); - var output = []; - while (!stream.eol()) { + return out.join(''); +} +var unescapes = { '\\/': '/', '\\\\': '\\', '\\n': '\n', '\\r': '\r', '\\t': '\t', '\\&': '&' }; +function unescapeRegexReplace(str) { + var stream = new CodeMirror.StringStream(str); + var output = []; + while (!stream.eol()) { while (stream.peek() && stream.peek() != '\\') { - output.push(stream.next()); + output.push(stream.next()); } var matched = false; for (var matcher in unescapes) { - if (stream.match(matcher, true)) { - matched = true; - output.push(unescapes[matcher]); - break; - } + if (stream.match(matcher, true)) { + matched = true; + output.push(unescapes[matcher]); + break; + } } if (!matched) { - output.push(stream.next()); + output.push(stream.next()); } - } - return output.join(''); } - function parseQuery(query, ignoreCase, smartCase) { - var lastSearchRegister = vimGlobalState.registerController.getRegister('/'); - lastSearchRegister.setText(query); - if (query instanceof RegExp) { return query; } - var slashes = findUnescapedSlashes(query); - var regexPart; - var forceIgnoreCase; - if (!slashes.length) { + return output.join(''); +} +function parseQuery(query, ignoreCase, smartCase) { + var lastSearchRegister = vimGlobalState.registerController.getRegister('/'); + lastSearchRegister.setText(query); + if (query instanceof RegExp) { + return query; + } + var slashes = findUnescapedSlashes(query); + var regexPart; + var forceIgnoreCase; + if (!slashes.length) { regexPart = query; - } else { + } + else { regexPart = query.substring(0, slashes[0]); var flagsPart = query.substring(slashes[0]); forceIgnoreCase = (flagsPart.indexOf('i') != -1); - } - if (!regexPart) { + } + if (!regexPart) { return null; - } - if (!getOption('pcre')) { + } + if (!getOption('pcre')) { regexPart = translateRegex(regexPart); - } - if (smartCase) { + } + if (smartCase) { ignoreCase = (/^[^A-Z]*$/).test(regexPart); - } - var regexp = new RegExp(regexPart, - (ignoreCase || forceIgnoreCase) ? 'i' : undefined); - return regexp; } - function showConfirm(cm, text) { - if (cm.openNotification) { - cm.openNotification('' + text + '', - {bottom: true, duration: 5000}); - } else { - alert(text); - } + var regexp = new RegExp(regexPart, (ignoreCase || forceIgnoreCase) ? 'im' : 'm'); + return regexp; +} +function dom(n) { + if (typeof n === 'string') + n = document.createElement(n); + for (var a, i = 1; i < arguments.length; i++) { + if (!(a = arguments[i])) + continue; + if (typeof a !== 'object') + a = document.createTextNode(a); + if (a.nodeType) + n.appendChild(a); + else + for (var key in a) { + if (!Object.prototype.hasOwnProperty.call(a, key)) + continue; + if (key[0] === '$') + n.style[key.slice(1)] = a[key]; + else + n.setAttribute(key, a[key]); + } } - function makePrompt(prefix, desc) { - var raw = ''; - if (prefix) { - raw += '' + prefix + ''; - } - raw += ' ' + - ''; - if (desc) { - raw += ''; - raw += desc; - raw += ''; - } - return raw; + return n; +} +function showConfirm(cm, template) { + var pre = dom('div', { $color: 'red', $whiteSpace: 'pre', class: 'cm-vim-message' }, template); + if (cm.openNotification) { + cm.openNotification(pre, { bottom: true, duration: 5000 }); } - var searchPromptDesc = '(Javascript regexp)'; - function showPrompt(cm, options) { - var shortText = (options.prefix || '') + ' ' + (options.desc || ''); - var prompt = makePrompt(options.prefix, options.desc); - dialog(cm, prompt, shortText, options.onClose, options); + else { + alert(pre.innerText); } - function regexEqual(r1, r2) { - if (r1 instanceof RegExp && r2 instanceof RegExp) { - var props = ['global', 'multiline', 'ignoreCase', 'source']; - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - if (r1[prop] !== r2[prop]) { - return false; - } - } - return true; - } - return false; - } - function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) { - if (!rawQuery) { +} +function makePrompt(prefix, desc) { + return dom('div', { $display: 'flex' }, dom('span', { $fontFamily: 'monospace', $whiteSpace: 'pre', $flex: 1 }, prefix, dom('input', { type: 'text', autocorrect: 'off', + autocapitalize: 'off', spellcheck: 'false', $width: '100%' })), desc && dom('span', { $color: '#888' }, desc)); +} +function showPrompt(cm, options) { + if (keyToKeyStack.length) { + if (!options.value) + options.value = ''; + virtualPrompt = options; return; - } - var state = getSearchState(cm); - var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase); - if (!query) { + } + var template = makePrompt(options.prefix, options.desc); + if (cm.openDialog) { + cm.openDialog(template, options.onClose, { + onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp, + bottom: true, selectValueOnOpen: false, value: options.value + }); + } + else { + var shortText = ''; + if (typeof options.prefix != "string" && options.prefix) + shortText += options.prefix.textContent; + if (options.desc) + shortText += " " + options.desc; + options.onClose(prompt(shortText, '')); + } +} +function regexEqual(r1, r2) { + if (r1 instanceof RegExp && r2 instanceof RegExp) { + var props = ['global', 'multiline', 'ignoreCase', 'source']; + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + if (r1[prop] !== r2[prop]) { + return false; + } + } + return true; + } + return false; +} +function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) { + if (!rawQuery) { return; - } - highlightSearchMatches(cm, query); - if (regexEqual(query, state.getQuery())) { + } + var state = getSearchState(cm); + var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase); + if (!query) { + return; + } + highlightSearchMatches(cm, query); + if (regexEqual(query, state.getQuery())) { return query; - } - state.setQuery(query); - return query; } - function searchOverlay(query) { - if (query.source.charAt(0) == '^') { + state.setQuery(query); + return query; +} +function searchOverlay(query) { + if (query.source.charAt(0) == '^') { var matchSol = true; - } - return { - token: function(stream) { - if (matchSol && !stream.sol()) { - stream.skipToEnd(); - return; - } - var match = stream.match(query, false); - if (match) { - if (match[0].length == 0) { - stream.next(); - return 'searching'; + } + return { + token: function (stream) { + if (matchSol && !stream.sol()) { + stream.skipToEnd(); + return; } - if (!stream.sol()) { - stream.backUp(1); - if (!query.exec(stream.next() + match[0])) { + var match = stream.match(query, false); + if (match) { + if (match[0].length == 0) { + stream.next(); + return 'searching'; + } + if (!stream.sol()) { + stream.backUp(1); + if (!query.exec(stream.next() + match[0])) { + stream.next(); + return null; + } + } + stream.match(query); + return 'searching'; + } + while (!stream.eol()) { stream.next(); - return null; - } + if (stream.match(query, false)) + break; } - stream.match(query); - return 'searching'; - } - while (!stream.eol()) { - stream.next(); - if (stream.match(query, false)) break; - } }, query: query - }; - } - function highlightSearchMatches(cm, query) { - var searchState = getSearchState(cm); - var overlay = searchState.getOverlay(); - if (!overlay || query != overlay.query) { - if (overlay) { - cm.removeOverlay(overlay); + }; +} +var highlightTimeout = 0; +function highlightSearchMatches(cm, query) { + clearTimeout(highlightTimeout); + var searchState = getSearchState(cm); + searchState.highlightTimeout = highlightTimeout; + highlightTimeout = setTimeout(function () { + if (!cm.state.vim) + return; + var searchState = getSearchState(cm); + searchState.highlightTimeout = null; + var overlay = searchState.getOverlay(); + if (!overlay || query != overlay.query) { + if (overlay) { + cm.removeOverlay(overlay); + } + overlay = searchOverlay(query); + cm.addOverlay(overlay); + if (cm.showMatchesOnScrollbar) { + if (searchState.getScrollbarAnnotate()) { + searchState.getScrollbarAnnotate().clear(); + } + searchState.setScrollbarAnnotate(cm.showMatchesOnScrollbar(query)); + } + searchState.setOverlay(overlay); } - overlay = searchOverlay(query); - cm.addOverlay(overlay); - if (cm.showMatchesOnScrollbar) { - if (searchState.getScrollbarAnnotate()) { - searchState.getScrollbarAnnotate().clear(); - } - searchState.setScrollbarAnnotate(cm.showMatchesOnScrollbar(query)); - } - searchState.setOverlay(overlay); - } + }, 50); +} +function findNext(cm, prev, query, repeat) { + if (repeat === undefined) { + repeat = 1; } - function findNext(cm, prev, query, repeat) { - if (repeat === undefined) { repeat = 1; } - return cm.operation(function() { + return cm.operation(function () { var pos = cm.getCursor(); var cursor = cm.getSearchCursor(query, pos); for (var i = 0; i < repeat; i++) { - var found = cursor.find(prev); - if (i == 0 && found && cursorEqual(cursor.from(), pos)) { found = cursor.find(prev); } - if (!found) { - cursor = cm.getSearchCursor(query, - (prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) ); - if (!cursor.find(prev)) { - return; + var found = cursor.find(prev); + if (i == 0 && found && cursorEqual(cursor.from(), pos)) { + var lastEndPos = prev ? cursor.from() : cursor.to(); + found = cursor.find(prev); + if (found && !found[0] && cursorEqual(cursor.from(), lastEndPos)) { + if (cm.getLine(lastEndPos.line).length == lastEndPos.ch) + found = cursor.find(prev); + } + } + if (!found) { + cursor = cm.getSearchCursor(query, (prev) ? new Pos(cm.lastLine()) : new Pos(cm.firstLine(), 0)); + if (!cursor.find(prev)) { + return; + } } - } } return cursor.from(); - }); + }); +} +function findNextFromAndToInclusive(cm, prev, query, repeat, vim) { + if (repeat === undefined) { + repeat = 1; } - function clearSearchHighlight(cm) { - var state = getSearchState(cm); - cm.removeOverlay(getSearchState(cm).getOverlay()); - state.setOverlay(null); - if (state.getScrollbarAnnotate()) { + return cm.operation(function () { + var pos = cm.getCursor(); + var cursor = cm.getSearchCursor(query, pos); + var found = cursor.find(!prev); + if (!vim.visualMode && found && cursorEqual(cursor.from(), pos)) { + cursor.find(!prev); + } + for (var i = 0; i < repeat; i++) { + found = cursor.find(prev); + if (!found) { + cursor = cm.getSearchCursor(query, (prev) ? new Pos(cm.lastLine()) : new Pos(cm.firstLine(), 0)); + if (!cursor.find(prev)) { + return; + } + } + } + return [cursor.from(), cursor.to()]; + }); +} +function clearSearchHighlight(cm) { + var state = getSearchState(cm); + if (state.highlightTimeout) { + clearTimeout(state.highlightTimeout); + state.highlightTimeout = null; + } + cm.removeOverlay(getSearchState(cm).getOverlay()); + state.setOverlay(null); + if (state.getScrollbarAnnotate()) { state.getScrollbarAnnotate().clear(); state.setScrollbarAnnotate(null); - } } - function isInRange(pos, start, end) { - if (typeof pos != 'number') { +} +function isInRange(pos, start, end) { + if (typeof pos != 'number') { pos = pos.line; - } - if (start instanceof Array) { - return inArray(pos, start); - } else { - if (end) { - return (pos >= start && pos <= end); - } else { - return pos == start; - } - } } - function getUserVisibleLines(cm) { - var renderer = cm.ace.renderer; - return { + if (start instanceof Array) { + return inArray(pos, start); + } + else { + if (typeof end == 'number') { + return (pos >= start && pos <= end); + } + else { + return pos == start; + } + } +} +function getUserVisibleLines(cm) { + var renderer = cm.ace.renderer; + return { top: renderer.getFirstFullyVisibleRow(), bottom: renderer.getLastFullyVisibleRow() - } - } - - var ExCommandDispatcher = function() { - this.buildCommandMap_(); }; - ExCommandDispatcher.prototype = { - processCommand: function(cm, input, opt_params) { +} +function getMarkPos(cm, vim, markName) { + if (markName == '\'' || markName == '`') { + return vimGlobalState.jumpList.find(cm, -1) || new Pos(0, 0); + } + else if (markName == '.') { + return getLastEditPos(cm); + } + var mark = vim.marks[markName]; + return mark && mark.find(); +} +function getLastEditPos(cm) { + if (cm.getLastEditEnd) { + return cm.getLastEditEnd(); + } + var done = cm.doc.history.done; + for (var i = done.length; i--;) { + if (done[i].changes) { + return copyCursor(done[i].changes[0].to); + } + } +} +var ExCommandDispatcher = function () { + this.buildCommandMap_(); +}; +ExCommandDispatcher.prototype = { + processCommand: function (cm, input, opt_params) { var that = this; cm.operation(function () { - cm.curOp.isVimOp = true; - that._processCommand(cm, input, opt_params); + cm.curOp.isVimOp = true; + that._processCommand(cm, input, opt_params); }); - }, - _processCommand: function(cm, input, opt_params) { + }, + _processCommand: function (cm, input, opt_params) { var vim = cm.state.vim; var commandHistoryRegister = vimGlobalState.registerController.getRegister(':'); var previousCommand = commandHistoryRegister.toString(); - if (vim.visualMode) { - exitVisualMode(cm); - } var inputStream = new CodeMirror.StringStream(input); commandHistoryRegister.setText(input); var params = opt_params || {}; params.input = input; try { - this.parseInput_(cm, inputStream, params); - } catch(e) { - showConfirm(cm, e); - throw e; + this.parseInput_(cm, inputStream, params); + } + catch (e) { + showConfirm(cm, e.toString()); + throw e; + } + if (vim.visualMode) { + exitVisualMode(cm); } var command; var commandName; if (!params.commandName) { - if (params.line !== undefined) { - commandName = 'move'; - } - } else { - command = this.matchCommand_(params.commandName); - if (command) { - commandName = command.name; - if (command.excludeFromCommandHistory) { - commandHistoryRegister.setText(previousCommand); + if (params.line !== undefined) { + commandName = 'move'; } - this.parseCommandArgs_(inputStream, params, command); - if (command.type == 'exToKey') { - for (var i = 0; i < command.toKeys.length; i++) { - CodeMirror.Vim.handleKey(cm, command.toKeys[i], 'mapping'); - } - return; - } else if (command.type == 'exToEx') { - this.processCommand(cm, command.toInput); - return; + } + else { + command = this.matchCommand_(params.commandName); + if (command) { + commandName = command.name; + if (command.excludeFromCommandHistory) { + commandHistoryRegister.setText(previousCommand); + } + this.parseCommandArgs_(inputStream, params, command); + if (command.type == 'exToKey') { + doKeyToKey(cm, command.toKeys, command); + return; + } + else if (command.type == 'exToEx') { + this.processCommand(cm, command.toInput); + return; + } } - } } if (!commandName) { - showConfirm(cm, 'Not an editor command ":' + input + '"'); - return; + showConfirm(cm, 'Not an editor command ":' + input + '"'); + return; } try { - exCommands[commandName](cm, params); - if ((!command || !command.possiblyAsync) && params.callback) { - params.callback(); - } - } catch(e) { - showConfirm(cm, e); - throw e; + exCommands[commandName](cm, params); + if ((!command || !command.possiblyAsync) && params.callback) { + params.callback(); + } } - }, - parseInput_: function(cm, inputStream, result) { + catch (e) { + showConfirm(cm, e.toString()); + throw e; + } + }, + parseInput_: function (cm, inputStream, result) { inputStream.eatWhile(':'); if (inputStream.eat('%')) { - result.line = cm.firstLine(); - result.lineEnd = cm.lastLine(); - } else { - result.line = this.parseLineSpec_(cm, inputStream); - if (result.line !== undefined && inputStream.eat(',')) { - result.lineEnd = this.parseLineSpec_(cm, inputStream); - } + result.line = cm.firstLine(); + result.lineEnd = cm.lastLine(); } - var commandMatch = inputStream.match(/^(\w+)/); + else { + result.line = this.parseLineSpec_(cm, inputStream); + if (result.line !== undefined && inputStream.eat(',')) { + result.lineEnd = this.parseLineSpec_(cm, inputStream); + } + } + if (result.line == undefined) { + if (cm.state.vim.visualMode) { + var pos = getMarkPos(cm, cm.state.vim, '<'); + result.selectionLine = pos && pos.line; + pos = getMarkPos(cm, cm.state.vim, '>'); + result.selectionLineEnd = pos && pos.line; + } + else { + result.selectionLine = cm.getCursor().line; + } + } + else { + result.selectionLine = result.line; + result.selectionLineEnd = result.lineEnd; + } + var commandMatch = inputStream.match(/^(\w+|!!|@@|[!#&*<=>@~])/); if (commandMatch) { - result.commandName = commandMatch[1]; - } else { - result.commandName = inputStream.match(/.*/)[0]; + result.commandName = commandMatch[1]; + } + else { + result.commandName = inputStream.match(/.*/)[0]; } - return result; - }, - parseLineSpec_: function(cm, inputStream) { + }, + parseLineSpec_: function (cm, inputStream) { var numberMatch = inputStream.match(/^(\d+)/); if (numberMatch) { - return parseInt(numberMatch[1], 10) - 1; + return parseInt(numberMatch[1], 10) - 1; } switch (inputStream.next()) { - case '.': - return cm.getCursor().line; - case '$': - return cm.lastLine(); - case '\'': - var mark = cm.state.vim.marks[inputStream.next()]; - if (mark && mark.find()) { - return mark.find().line; - } - throw new Error('Mark not set'); - default: - inputStream.backUp(1); - return undefined; + case '.': + return this.parseLineSpecOffset_(inputStream, cm.getCursor().line); + case '$': + return this.parseLineSpecOffset_(inputStream, cm.lastLine()); + case '\'': + var markName = inputStream.next(); + var markPos = getMarkPos(cm, cm.state.vim, markName); + if (!markPos) + throw new Error('Mark not set'); + return this.parseLineSpecOffset_(inputStream, markPos.line); + case '-': + case '+': + inputStream.backUp(1); + return this.parseLineSpecOffset_(inputStream, cm.getCursor().line); + default: + inputStream.backUp(1); + return undefined; } - }, - parseCommandArgs_: function(inputStream, params, command) { + }, + parseLineSpecOffset_: function (inputStream, line) { + var offsetMatch = inputStream.match(/^([+-])?(\d+)/); + if (offsetMatch) { + var offset = parseInt(offsetMatch[2], 10); + if (offsetMatch[1] == "-") { + line -= offset; + } + else { + line += offset; + } + } + return line; + }, + parseCommandArgs_: function (inputStream, params, command) { if (inputStream.eol()) { - return; + return; } params.argString = inputStream.match(/.*/)[0]; var delim = command.argDelimiter || /\s+/; var args = trim(params.argString).split(delim); if (args.length && args[0]) { - params.args = args; + params.args = args; } - }, - matchCommand_: function(commandName) { + }, + matchCommand_: function (commandName) { for (var i = commandName.length; i > 0; i--) { - var prefix = commandName.substring(0, i); - if (this.commandMap_[prefix]) { - var command = this.commandMap_[prefix]; - if (command.name.indexOf(commandName) === 0) { - return command; + var prefix = commandName.substring(0, i); + if (this.commandMap_[prefix]) { + var command = this.commandMap_[prefix]; + if (command.name.indexOf(commandName) === 0) { + return command; + } } - } } return null; - }, - buildCommandMap_: function() { + }, + buildCommandMap_: function () { this.commandMap_ = {}; for (var i = 0; i < defaultExCommandMap.length; i++) { - var command = defaultExCommandMap[i]; - var key = command.shortName || command.name; - this.commandMap_[key] = command; + var command = defaultExCommandMap[i]; + var key = command.shortName || command.name; + this.commandMap_[key] = command; } - }, - map: function(lhs, rhs, ctx) { + }, + map: function (lhs, rhs, ctx, noremap) { if (lhs != ':' && lhs.charAt(0) == ':') { - if (ctx) { throw Error('Mode not supported for ex mappings'); } - var commandName = lhs.substring(1); - if (rhs != ':' && rhs.charAt(0) == ':') { - this.commandMap_[commandName] = { - name: commandName, - type: 'exToEx', - toInput: rhs.substring(1), - user: true - }; - } else { - this.commandMap_[commandName] = { - name: commandName, - type: 'exToKey', - toKeys: rhs, - user: true - }; - } - } else { - if (rhs != ':' && rhs.charAt(0) == ':') { - var mapping = { - keys: lhs, - type: 'keyToEx', - exArgs: { input: rhs.substring(1) }, - user: true}; - if (ctx) { mapping.context = ctx; } - defaultKeymap.unshift(mapping); - } else { - var mapping = { - keys: lhs, - type: 'keyToKey', - toKeys: rhs, - user: true - }; - if (ctx) { mapping.context = ctx; } - defaultKeymap.unshift(mapping); - } - } - }, - unmap: function(lhs, ctx) { - if (lhs != ':' && lhs.charAt(0) == ':') { - if (ctx) { throw Error('Mode not supported for ex mappings'); } - var commandName = lhs.substring(1); - if (this.commandMap_[commandName] && this.commandMap_[commandName].user) { - delete this.commandMap_[commandName]; - return; - } - } else { - var keys = lhs; - for (var i = 0; i < defaultKeymap.length; i++) { - if (keys == defaultKeymap[i].keys - && defaultKeymap[i].context === ctx - && defaultKeymap[i].user) { - defaultKeymap.splice(i, 1); - return; + if (ctx) { + throw Error('Mode not supported for ex mappings'); + } + var commandName = lhs.substring(1); + if (rhs != ':' && rhs.charAt(0) == ':') { + this.commandMap_[commandName] = { + name: commandName, + type: 'exToEx', + toInput: rhs.substring(1), + user: true + }; + } + else { + this.commandMap_[commandName] = { + name: commandName, + type: 'exToKey', + toKeys: rhs, + user: true + }; } - } } - } - }; - - var exCommands = { - colorscheme: function(cm, params) { + else { + var mapping = { + keys: lhs, + type: 'keyToKey', + toKeys: rhs, + noremap: !!noremap + }; + if (ctx) { + mapping.context = ctx; + } + defaultKeymap.unshift(mapping); + } + }, + unmap: function (lhs, ctx) { + if (lhs != ':' && lhs.charAt(0) == ':') { + if (ctx) { + throw Error('Mode not supported for ex mappings'); + } + var commandName = lhs.substring(1); + if (this.commandMap_[commandName] && this.commandMap_[commandName].user) { + delete this.commandMap_[commandName]; + return true; + } + } + else { + var keys = lhs; + for (var i = 0; i < defaultKeymap.length; i++) { + if (keys == defaultKeymap[i].keys + && defaultKeymap[i].context === ctx) { + defaultKeymap.splice(i, 1); + return true; + } + } + } + } +}; +var exCommands = { + colorscheme: function (cm, params) { if (!params.args || params.args.length < 1) { - showConfirm(cm, cm.getOption('theme')); - return; + showConfirm(cm, cm.getOption('theme')); + return; } cm.setOption('theme', params.args[0]); - }, - map: function(cm, params, ctx) { + }, + map: function (cm, params, ctx, defaultOnly) { var mapArgs = params.args; if (!mapArgs || mapArgs.length < 2) { - if (cm) { - showConfirm(cm, 'Invalid mapping: ' + params.input); - } - return; + if (cm) { + showConfirm(cm, 'Invalid mapping: ' + params.input); + } + return; } - exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx); - }, - imap: function(cm, params) { this.map(cm, params, 'insert'); }, - nmap: function(cm, params) { this.map(cm, params, 'normal'); }, - vmap: function(cm, params) { this.map(cm, params, 'visual'); }, - unmap: function(cm, params, ctx) { + exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx, defaultOnly); + }, + imap: function (cm, params) { this.map(cm, params, 'insert'); }, + nmap: function (cm, params) { this.map(cm, params, 'normal'); }, + vmap: function (cm, params) { this.map(cm, params, 'visual'); }, + omap: function (cm, params) { this.map(cm, params, 'operatorPending'); }, + noremap: function (cm, params) { this.map(cm, params, undefined, true); }, + inoremap: function (cm, params) { this.map(cm, params, 'insert', true); }, + nnoremap: function (cm, params) { this.map(cm, params, 'normal', true); }, + vnoremap: function (cm, params) { this.map(cm, params, 'visual', true); }, + onoremap: function (cm, params) { this.map(cm, params, 'operatorPending', true); }, + unmap: function (cm, params, ctx) { var mapArgs = params.args; - if (!mapArgs || mapArgs.length < 1) { - if (cm) { - showConfirm(cm, 'No such mapping: ' + params.input); - } - return; + if (!mapArgs || mapArgs.length < 1 || !exCommandDispatcher.unmap(mapArgs[0], ctx)) { + if (cm) { + showConfirm(cm, 'No such mapping: ' + params.input); + } } - exCommandDispatcher.unmap(mapArgs[0], ctx); - }, - move: function(cm, params) { + }, + mapclear: function (cm, params) { vimApi.mapclear(); }, + imapclear: function (cm, params) { vimApi.mapclear('insert'); }, + nmapclear: function (cm, params) { vimApi.mapclear('normal'); }, + vmapclear: function (cm, params) { vimApi.mapclear('visual'); }, + omapclear: function (cm, params) { vimApi.mapclear('operatorPending'); }, + move: function (cm, params) { commandDispatcher.processCommand(cm, cm.state.vim, { type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: false, explicitRepeat: true, - linewise: true }, - repeatOverride: params.line+1}); - }, - set: function(cm, params) { + linewise: true }, + repeatOverride: params.line + 1 + }); + }, + set: function (cm, params) { var setArgs = params.args; var setCfg = params.setCfg || {}; if (!setArgs || setArgs.length < 1) { - if (cm) { - showConfirm(cm, 'Invalid mapping: ' + params.input); - } - return; + if (cm) { + showConfirm(cm, 'Invalid mapping: ' + params.input); + } + return; } var expr = setArgs[0].split('='); var optionName = expr[0]; var value = expr[1]; var forceGet = false; - + var forceToggle = false; if (optionName.charAt(optionName.length - 1) == '?') { - if (value) { throw Error('Trailing characters: ' + params.argString); } - optionName = optionName.substring(0, optionName.length - 1); - forceGet = true; + if (value) { + throw Error('Trailing characters: ' + params.argString); + } + optionName = optionName.substring(0, optionName.length - 1); + forceGet = true; + } + else if (optionName.charAt(optionName.length - 1) == '!') { + optionName = optionName.substring(0, optionName.length - 1); + forceToggle = true; } if (value === undefined && optionName.substring(0, 2) == 'no') { - optionName = optionName.substring(2); - value = false; + optionName = optionName.substring(2); + value = false; } - var optionIsBoolean = options[optionName] && options[optionName].type == 'boolean'; - if (optionIsBoolean && value == undefined) { - value = true; + if (optionIsBoolean) { + if (forceToggle) { + value = !getOption(optionName, cm, setCfg); + } + else if (value == undefined) { + value = true; + } } if (!optionIsBoolean && value === undefined || forceGet) { - var oldValue = getOption(optionName, cm, setCfg); - if (oldValue === true || oldValue === false) { - showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName); - } else { - showConfirm(cm, ' ' + optionName + '=' + oldValue); - } - } else { - setOption(optionName, value, cm, setCfg); + var oldValue = getOption(optionName, cm, setCfg); + if (oldValue instanceof Error) { + showConfirm(cm, oldValue.message); + } + else if (oldValue === true || oldValue === false) { + showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName); + } + else { + showConfirm(cm, ' ' + optionName + '=' + oldValue); + } } - }, - setlocal: function (cm, params) { - params.setCfg = {scope: 'local'}; + else { + var setOptionReturn = setOption(optionName, value, cm, setCfg); + if (setOptionReturn instanceof Error) { + showConfirm(cm, setOptionReturn.message); + } + } + }, + setlocal: function (cm, params) { + params.setCfg = { scope: 'local' }; this.set(cm, params); - }, - setglobal: function (cm, params) { - params.setCfg = {scope: 'global'}; + }, + setglobal: function (cm, params) { + params.setCfg = { scope: 'global' }; this.set(cm, params); - }, - registers: function(cm, params) { + }, + registers: function (cm, params) { var regArgs = params.args; var registers = vimGlobalState.registerController.registers; - var regInfo = '----------Registers----------

'; + var regInfo = '----------Registers----------\n\n'; if (!regArgs) { - for (var registerName in registers) { - var text = registers[registerName].toString(); - if (text.length) { - regInfo += '"' + registerName + ' ' + text + '
'; + for (var registerName in registers) { + var text = registers[registerName].toString(); + if (text.length) { + regInfo += '"' + registerName + ' ' + text + '\n'; + } } - } - } else { - var registerName; - regArgs = regArgs.join(''); - for (var i = 0; i < regArgs.length; i++) { - registerName = regArgs.charAt(i); - if (!vimGlobalState.registerController.isValidRegister(registerName)) { - continue; + } + else { + var registerName; + regArgs = regArgs.join(''); + for (var i = 0; i < regArgs.length; i++) { + registerName = regArgs.charAt(i); + if (!vimGlobalState.registerController.isValidRegister(registerName)) { + continue; + } + var register = registers[registerName] || new Register(); + regInfo += '"' + registerName + ' ' + register.toString() + '\n'; } - var register = registers[registerName] || new Register(); - regInfo += '"' + registerName + ' ' + register.toString() + '
'; - } } showConfirm(cm, regInfo); - }, - sort: function(cm, params) { - var reverse, ignoreCase, unique, number; + }, + sort: function (cm, params) { + var reverse, ignoreCase, unique, number, pattern; function parseArgs() { - if (params.argString) { - var args = new CodeMirror.StringStream(params.argString); - if (args.eat('!')) { reverse = true; } - if (args.eol()) { return; } - if (!args.eatSpace()) { return 'Invalid arguments'; } - var opts = args.match(/[a-z]+/); - if (opts) { - opts = opts[0]; - ignoreCase = opts.indexOf('i') != -1; - unique = opts.indexOf('u') != -1; - var decimal = opts.indexOf('d') != -1 && 1; - var hex = opts.indexOf('x') != -1 && 1; - var octal = opts.indexOf('o') != -1 && 1; - if (decimal + hex + octal > 1) { return 'Invalid arguments'; } - number = decimal && 'decimal' || hex && 'hex' || octal && 'octal'; + if (params.argString) { + var args = new CodeMirror.StringStream(params.argString); + if (args.eat('!')) { + reverse = true; + } + if (args.eol()) { + return; + } + if (!args.eatSpace()) { + return 'Invalid arguments'; + } + var opts = args.match(/([dinuox]+)?\s*(\/.+\/)?\s*/); + if (!opts && !args.eol()) { + return 'Invalid arguments'; + } + if (opts[1]) { + ignoreCase = opts[1].indexOf('i') != -1; + unique = opts[1].indexOf('u') != -1; + var decimal = opts[1].indexOf('d') != -1 || opts[1].indexOf('n') != -1 && 1; + var hex = opts[1].indexOf('x') != -1 && 1; + var octal = opts[1].indexOf('o') != -1 && 1; + if (decimal + hex + octal > 1) { + return 'Invalid arguments'; + } + number = decimal && 'decimal' || hex && 'hex' || octal && 'octal'; + } + if (opts[2]) { + pattern = new RegExp(opts[2].substr(1, opts[2].length - 2), ignoreCase ? 'i' : ''); + } } - if (args.match(/\/.*\//)) { return 'patterns not supported'; } - } } var err = parseArgs(); if (err) { - showConfirm(cm, err + ': ' + params.argString); - return; + showConfirm(cm, err + ': ' + params.argString); + return; } var lineStart = params.line || cm.firstLine(); var lineEnd = params.lineEnd || params.line || cm.lastLine(); - if (lineStart == lineEnd) { return; } - var curStart = Pos(lineStart, 0); - var curEnd = Pos(lineEnd, lineLength(cm, lineEnd)); + if (lineStart == lineEnd) { + return; + } + var curStart = new Pos(lineStart, 0); + var curEnd = new Pos(lineEnd, lineLength(cm, lineEnd)); var text = cm.getRange(curStart, curEnd).split('\n'); - var numberRegex = (number == 'decimal') ? /(-?)([\d]+)/ : - (number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i : - (number == 'octal') ? /([0-7]+)/ : null; + var numberRegex = pattern ? pattern : + (number == 'decimal') ? /(-?)([\d]+)/ : + (number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i : + (number == 'octal') ? /([0-7]+)/ : null; var radix = (number == 'decimal') ? 10 : (number == 'hex') ? 16 : (number == 'octal') ? 8 : null; var numPart = [], textPart = []; - if (number) { - for (var i = 0; i < text.length; i++) { - if (numberRegex.exec(text[i])) { - numPart.push(text[i]); - } else { - textPart.push(text[i]); + if (number || pattern) { + for (var i = 0; i < text.length; i++) { + var matchPart = pattern ? text[i].match(pattern) : null; + if (matchPart && matchPart[0] != '') { + numPart.push(matchPart); + } + else if (!pattern && numberRegex.exec(text[i])) { + numPart.push(text[i]); + } + else { + textPart.push(text[i]); + } } - } - } else { - textPart = text; + } + else { + textPart = text; } function compareFn(a, b) { - if (reverse) { var tmp; tmp = a; a = b; b = tmp; } - if (ignoreCase) { a = a.toLowerCase(); b = b.toLowerCase(); } - var anum = number && numberRegex.exec(a); - var bnum = number && numberRegex.exec(b); - if (!anum) { return a < b ? -1 : 1; } - anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix); - bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix); - return anum - bnum; + if (reverse) { + var tmp; + tmp = a; + a = b; + b = tmp; + } + if (ignoreCase) { + a = a.toLowerCase(); + b = b.toLowerCase(); + } + var anum = number && numberRegex.exec(a); + var bnum = number && numberRegex.exec(b); + if (!anum) { + return a < b ? -1 : 1; + } + anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix); + bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix); + return anum - bnum; + } + function comparePatternFn(a, b) { + if (reverse) { + var tmp; + tmp = a; + a = b; + b = tmp; + } + if (ignoreCase) { + a[0] = a[0].toLowerCase(); + b[0] = b[0].toLowerCase(); + } + return (a[0] < b[0]) ? -1 : 1; + } + numPart.sort(pattern ? comparePatternFn : compareFn); + if (pattern) { + for (var i = 0; i < numPart.length; i++) { + numPart[i] = numPart[i].input; + } + } + else if (!number) { + textPart.sort(compareFn); } - numPart.sort(compareFn); - textPart.sort(compareFn); text = (!reverse) ? textPart.concat(numPart) : numPart.concat(textPart); if (unique) { // Remove duplicate lines - var textOld = text; - var lastLine; - text = []; - for (var i = 0; i < textOld.length; i++) { - if (textOld[i] != lastLine) { - text.push(textOld[i]); + var textOld = text; + var lastLine; + text = []; + for (var i = 0; i < textOld.length; i++) { + if (textOld[i] != lastLine) { + text.push(textOld[i]); + } + lastLine = textOld[i]; } - lastLine = textOld[i]; - } } cm.replaceRange(text.join('\n'), curStart, curEnd); - }, - global: function(cm, params) { + }, + vglobal: function (cm, params) { + this.global(cm, params); + }, + normal: function (cm, params) { + var argString = params.argString; + if (argString && argString[0] == '!') { + argString = argString.slice(1); + noremap = true; + } + argString = argString.trimStart(); + if (!argString) { + showConfirm(cm, 'Argument is required.'); + return; + } + var line = params.line; + if (typeof line == 'number') { + var lineEnd = isNaN(params.lineEnd) ? line : params.lineEnd; + for (var i = line; i <= lineEnd; i++) { + cm.setCursor(i, 0); + doKeyToKey(cm, params.argString.trimStart()); + if (cm.state.vim.insertMode) { + exitInsertMode(cm, true); + } + } + } + else { + doKeyToKey(cm, params.argString.trimStart()); + if (cm.state.vim.insertMode) { + exitInsertMode(cm, true); + } + } + }, + global: function (cm, params) { var argString = params.argString; if (!argString) { - showConfirm(cm, 'Regular Expression missing from global'); - return; + showConfirm(cm, 'Regular Expression missing from global'); + return; + } + var inverted = params.commandName[0] === 'v'; + if (argString[0] === '!' && params.commandName[0] === 'g') { + inverted = true; + argString = argString.slice(1); } var lineStart = (params.line !== undefined) ? params.line : cm.firstLine(); var lineEnd = params.lineEnd || params.line || cm.lastLine(); var tokens = splitBySlash(argString); var regexPart = argString, cmd; if (tokens.length) { - regexPart = tokens[0]; - cmd = tokens.slice(1, tokens.length).join('/'); + regexPart = tokens[0]; + cmd = tokens.slice(1, tokens.length).join('/'); } if (regexPart) { - try { - updateSearchQuery(cm, regexPart, true /** ignoreCase */, - true /** smartCase */); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + regexPart); - return; - } + try { + updateSearchQuery(cm, regexPart, true /** ignoreCase */, true /** smartCase */); + } + catch (e) { + showConfirm(cm, 'Invalid regex: ' + regexPart); + return; + } } var query = getSearchState(cm).getQuery(); - var matchedLines = [], content = ''; + var matchedLines = []; for (var i = lineStart; i <= lineEnd; i++) { - var matched = query.test(cm.getLine(i)); - if (matched) { - matchedLines.push(i+1); - content+= cm.getLine(i) + '
'; - } + var line = cm.getLine(i); + var matched = query.test(line); + if (matched !== inverted) { + matchedLines.push(cmd ? cm.getLineHandle(i) : line); + } } if (!cmd) { - showConfirm(cm, content); - return; + showConfirm(cm, matchedLines.join('\n')); + return; } var index = 0; - var nextCommand = function() { - if (index < matchedLines.length) { - var command = matchedLines[index] + cmd; - exCommandDispatcher.processCommand(cm, command, { - callback: nextCommand - }); - } - index++; + var nextCommand = function () { + if (index < matchedLines.length) { + var lineHandle = matchedLines[index++]; + var lineNum = cm.getLineNumber(lineHandle); + if (lineNum == null) { + nextCommand(); + return; + } + var command = (lineNum + 1) + cmd; + exCommandDispatcher.processCommand(cm, command, { + callback: nextCommand + }); + } + else if (cm.releaseLineHandles) { + cm.releaseLineHandles(); + } }; nextCommand(); - }, - substitute: function(cm, params) { + }, + substitute: function (cm, params) { if (!cm.getSearchCursor) { - throw new Error('Search feature not available. Requires searchcursor.js or ' + - 'any other getSearchCursor implementation.'); + throw new Error('Search feature not available. Requires searchcursor.js or ' + + 'any other getSearchCursor implementation.'); } var argString = params.argString; - var tokens = argString ? splitBySlash(argString) : []; + var tokens = argString ? splitBySeparator(argString, argString[0]) : []; var regexPart, replacePart = '', trailing, flagsPart, count; var confirm = false; // Whether to confirm each replace. var global = false; // True to replace all instances on a line, false to replace only 1. if (tokens.length) { - regexPart = tokens[0]; - replacePart = tokens[1]; - if (replacePart !== undefined) { - if (getOption('pcre')) { - replacePart = unescapeRegexReplace(replacePart); - } else { - replacePart = translateRegexReplace(replacePart); + regexPart = tokens[0]; + if (getOption('pcre') && regexPart !== '') { + regexPart = new RegExp(regexPart).source; //normalize not escaped characters + } + replacePart = tokens[1]; + if (replacePart !== undefined) { + if (getOption('pcre')) { + replacePart = unescapeRegexReplace(replacePart.replace(/([^\\])&/g, "$1$$&")); + } + else { + replacePart = translateRegexReplace(replacePart); + } + vimGlobalState.lastSubstituteReplacePart = replacePart; + } + trailing = tokens[2] ? tokens[2].split(' ') : []; + } + else { + if (argString && argString.length) { + showConfirm(cm, 'Substitutions should be of the form ' + + ':s/pattern/replace/'); + return; } - vimGlobalState.lastSubstituteReplacePart = replacePart; - } - trailing = tokens[2] ? tokens[2].split(' ') : []; - } else { - if (argString && argString.length) { - showConfirm(cm, 'Substitutions should be of the form ' + - ':s/pattern/replace/'); - return; - } } if (trailing) { - flagsPart = trailing[0]; - count = parseInt(trailing[1]); - if (flagsPart) { - if (flagsPart.indexOf('c') != -1) { - confirm = true; - flagsPart.replace('c', ''); + flagsPart = trailing[0]; + count = parseInt(trailing[1]); + if (flagsPart) { + if (flagsPart.indexOf('c') != -1) { + confirm = true; + } + if (flagsPart.indexOf('g') != -1) { + global = true; + } + if (getOption('pcre')) { + regexPart = regexPart + '/' + flagsPart; + } + else { + regexPart = regexPart.replace(/\//g, "\\/") + '/' + flagsPart; + } } - if (flagsPart.indexOf('g') != -1) { - global = true; - flagsPart.replace('g', ''); - } - regexPart = regexPart + '/' + flagsPart; - } } if (regexPart) { - try { - updateSearchQuery(cm, regexPart, true /** ignoreCase */, - true /** smartCase */); - } catch (e) { - showConfirm(cm, 'Invalid regex: ' + regexPart); - return; - } + try { + updateSearchQuery(cm, regexPart, true /** ignoreCase */, true /** smartCase */); + } + catch (e) { + showConfirm(cm, 'Invalid regex: ' + regexPart); + return; + } } replacePart = replacePart || vimGlobalState.lastSubstituteReplacePart; if (replacePart === undefined) { - showConfirm(cm, 'No previous substitute regular expression'); - return; + showConfirm(cm, 'No previous substitute regular expression'); + return; } var state = getSearchState(cm); var query = state.getQuery(); var lineStart = (params.line !== undefined) ? params.line : cm.getCursor().line; var lineEnd = params.lineEnd || lineStart; if (lineStart == cm.firstLine() && lineEnd == cm.lastLine()) { - lineEnd = Infinity; + lineEnd = Infinity; } if (count) { - lineStart = lineEnd; - lineEnd = lineStart + count - 1; + lineStart = lineEnd; + lineEnd = lineStart + count - 1; } - var startPos = clipCursorToContent(cm, Pos(lineStart, 0)); + var startPos = clipCursorToContent(cm, new Pos(lineStart, 0)); var cursor = cm.getSearchCursor(query, startPos); doReplace(cm, confirm, global, lineStart, lineEnd, cursor, query, replacePart, params.callback); - }, - redo: CodeMirror.commands.redo, - undo: CodeMirror.commands.undo, - write: function(cm) { + }, + startinsert: function (cm, params) { + doKeyToKey(cm, params.argString == '!' ? 'A' : 'i', {}); + }, + redo: CodeMirror.commands.redo, + undo: CodeMirror.commands.undo, + write: function (cm) { if (CodeMirror.commands.save) { - CodeMirror.commands.save(cm); - } else { - cm.save(); + CodeMirror.commands.save(cm); } - }, - nohlsearch: function(cm) { + else if (cm.save) { + cm.save(); + } + }, + nohlsearch: function (cm) { clearSearchHighlight(cm); - }, - delmarks: function(cm, params) { + }, + yank: function (cm) { + var cur = copyCursor(cm.getCursor()); + var line = cur.line; + var lineText = cm.getLine(line); + vimGlobalState.registerController.pushText('0', 'yank', lineText, true, true); + }, + delete: function (cm, params) { + var line = params.selectionLine; + var lineEnd = isNaN(params.selectionLineEnd) ? line : params.selectionLineEnd; + operators.delete(cm, { linewise: true }, [ + { anchor: new Pos(line, 0), + head: new Pos(lineEnd + 1, 0) } + ]); + }, + join: function (cm, params) { + var line = params.selectionLine; + var lineEnd = isNaN(params.selectionLineEnd) ? line : params.selectionLineEnd; + cm.setCursor(new Pos(line, 0)); + actions.joinLines(cm, { repeat: lineEnd - line }, cm.state.vim); + }, + delmarks: function (cm, params) { if (!params.argString || !trim(params.argString)) { - showConfirm(cm, 'Argument required'); - return; + showConfirm(cm, 'Argument required'); + return; } - var state = cm.state.vim; var stream = new CodeMirror.StringStream(trim(params.argString)); while (!stream.eol()) { - stream.eatSpace(); - var count = stream.pos; - - if (!stream.match(/[a-zA-Z]/, false)) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - var sym = stream.next(); - if (stream.match('-', true)) { + stream.eatSpace(); + var count = stream.pos; if (!stream.match(/[a-zA-Z]/, false)) { - showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); - return; - } - - var startMark = sym; - var finishMark = stream.next(); - if (isLowerCase(startMark) && isLowerCase(finishMark) || - isUpperCase(startMark) && isUpperCase(finishMark)) { - var start = startMark.charCodeAt(0); - var finish = finishMark.charCodeAt(0); - if (start >= finish) { showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); return; - } - for (var j = 0; j <= finish - start; j++) { - var mark = String.fromCharCode(start + j); - delete state.marks[mark]; - } - } else { - showConfirm(cm, 'Invalid argument: ' + startMark + '-'); - return; } - } else { - delete state.marks[sym]; - } + var sym = stream.next(); + if (stream.match('-', true)) { + if (!stream.match(/[a-zA-Z]/, false)) { + showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); + return; + } + var startMark = sym; + var finishMark = stream.next(); + if (isLowerCase(startMark) && isLowerCase(finishMark) || + isUpperCase(startMark) && isUpperCase(finishMark)) { + var start = startMark.charCodeAt(0); + var finish = finishMark.charCodeAt(0); + if (start >= finish) { + showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); + return; + } + for (var j = 0; j <= finish - start; j++) { + var mark = String.fromCharCode(start + j); + delete state.marks[mark]; + } + } + else { + showConfirm(cm, 'Invalid argument: ' + startMark + '-'); + return; + } + } + else { + delete state.marks[sym]; + } } - } - }; - - var exCommandDispatcher = new ExCommandDispatcher(); - function doReplace(cm, confirm, global, lineStart, lineEnd, searchCursor, query, - replaceWith, callback) { - cm.state.vim.exMode = true; - var done = false; - var lastPos = searchCursor.from(); - function replaceAll() { - cm.operation(function() { - while (!done) { - replace(); - next(); - } - stop(); + } +}; +var exCommandDispatcher = new ExCommandDispatcher(); +function doReplace(cm, confirm, global, lineStart, lineEnd, searchCursor, query, replaceWith, callback) { + cm.state.vim.exMode = true; + var done = false; + var lastPos, modifiedLineNumber, joined; + function replaceAll() { + cm.operation(function () { + while (!done) { + replace(); + next(); + } + stop(); }); - } - function replace() { + } + function replace() { var text = cm.getRange(searchCursor.from(), searchCursor.to()); var newText = text.replace(query, replaceWith); + var unmodifiedLineNumber = searchCursor.to().line; searchCursor.replace(newText); - } - function next() { - while(searchCursor.findNext() && - isInRange(searchCursor.from(), lineStart, lineEnd)) { - if (!global && lastPos && searchCursor.from().line == lastPos.line) { - continue; - } - cm.scrollIntoView(searchCursor.from(), 30); - cm.setSelection(searchCursor.from(), searchCursor.to()); - lastPos = searchCursor.from(); - done = false; - return; + modifiedLineNumber = searchCursor.to().line; + lineEnd += modifiedLineNumber - unmodifiedLineNumber; + joined = modifiedLineNumber < unmodifiedLineNumber; + } + function findNextValidMatch() { + var lastMatchTo = lastPos && copyCursor(searchCursor.to()); + var match = searchCursor.findNext(); + if (match && !match[0] && lastMatchTo && cursorEqual(searchCursor.from(), lastMatchTo)) { + match = searchCursor.findNext(); + } + return match; + } + function next() { + while (findNextValidMatch() && + isInRange(searchCursor.from(), lineStart, lineEnd)) { + if (!global && searchCursor.from().line == modifiedLineNumber && !joined) { + continue; + } + cm.scrollIntoView(searchCursor.from(), 30); + cm.setSelection(searchCursor.from(), searchCursor.to()); + lastPos = searchCursor.from(); + done = false; + return; } done = true; - } - function stop(close) { - if (close) { close(); } + } + function stop(close) { + if (close) { + close(); + } cm.focus(); if (lastPos) { - cm.setCursor(lastPos); - var vim = cm.state.vim; - vim.exMode = false; - vim.lastHPos = vim.lastHSPos = lastPos.ch; + cm.setCursor(lastPos); + var vim = cm.state.vim; + vim.exMode = false; + vim.lastHPos = vim.lastHSPos = lastPos.ch; } - if (callback) { callback(); } - } - function onPromptKeyDown(e, _value, close) { + if (callback) { + callback(); + } + } + function onPromptKeyDown(e, _value, close) { CodeMirror.e_stop(e); - var keyName = CodeMirror.keyName(e); + var keyName = vimKeyFromEvent(e); switch (keyName) { - case 'Y': - replace(); next(); break; - case 'N': - next(); break; - case 'A': - var savedCallback = callback; - callback = undefined; - cm.operation(replaceAll); - callback = savedCallback; - break; - case 'L': - replace(); - case 'Q': - case 'Esc': - case 'Ctrl-C': - case 'Ctrl-[': - stop(close); - break; + case 'y': + replace(); + next(); + break; + case 'n': + next(); + break; + case 'a': + var savedCallback = callback; + callback = undefined; + cm.operation(replaceAll); + callback = savedCallback; + break; + case 'l': + replace(); + case 'q': + case '': + case '': + case '': + stop(close); + break; + } + if (done) { + stop(close); } - if (done) { stop(close); } return true; - } - next(); - if (done) { + } + next(); + if (done) { showConfirm(cm, 'No matches for ' + query.source); return; - } - if (!confirm) { + } + if (!confirm) { replaceAll(); - if (callback) { callback(); } - return; - } - showPrompt(cm, { - prefix: 'replace with ' + replaceWith + ' (y/n/a/q/l)', - onKeyDown: onPromptKeyDown - }); - } - - CodeMirror.keyMap.vim = { - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - function exitInsertMode(cm) { - var vim = cm.state.vim; - var macroModeState = vimGlobalState.macroModeState; - var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.'); - var isPlaying = macroModeState.isPlaying; - var lastChange = macroModeState.lastInsertModeChanges; - var text = []; - if (!isPlaying) { - var selLength = lastChange.inVisualBlock ? vim.lastSelection.visualBlock.height : 1; - var changes = lastChange.changes; - var text = []; - var i = 0; - while (i < changes.length) { - text.push(changes[i]); - if (changes[i] instanceof InsertModeKey) { - i++; - } else { - i+= selLength; - } + if (callback) { + callback(); } - lastChange.changes = text; + return; + } + showPrompt(cm, { + prefix: dom('span', 'replace with ', dom('strong', replaceWith), ' (y/n/a/q/l)'), + onKeyDown: onPromptKeyDown + }); +} +function exitInsertMode(cm, keepCursor) { + var vim = cm.state.vim; + var macroModeState = vimGlobalState.macroModeState; + var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.'); + var isPlaying = macroModeState.isPlaying; + var lastChange = macroModeState.lastInsertModeChanges; + if (!isPlaying) { cm.off('change', onChange); + if (vim.insertEnd) + vim.insertEnd.clear(); + vim.insertEnd = null; CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); - } - if (!isPlaying && vim.insertModeRepeat > 1) { - repeatLastEdit(cm, vim, vim.insertModeRepeat - 1, - true /** repeatForInsert */); + } + if (!isPlaying && vim.insertModeRepeat > 1) { + repeatLastEdit(cm, vim, vim.insertModeRepeat - 1, true /** repeatForInsert */); vim.lastEditInputState.repeatOverride = vim.insertModeRepeat; - } - delete vim.insertModeRepeat; - vim.insertMode = false; - cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1); - cm.setOption('keyMap', 'vim'); - cm.setOption('disableInput', true); - - lastChange.overwrite = cm.state.overwrite; - cm.toggleOverwrite(false); // exit replace mode if we were in it. - insertModeChangeRegister.setText(lastChange.changes.join('')); - CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); - if (macroModeState.isRecording) { + } + delete vim.insertModeRepeat; + vim.insertMode = false; + if (!keepCursor) { + cm.setCursor(cm.getCursor().line, cm.getCursor().ch - 1); + } + cm.setOption('keyMap', 'vim'); + cm.setOption('disableInput', true); + cm.toggleOverwrite(false); // exit replace mode if we were in it. + insertModeChangeRegister.setText(lastChange.changes.join('')); + CodeMirror.signal(cm, "vim-mode-change", { mode: "normal" }); + if (macroModeState.isRecording) { logInsertModeChange(macroModeState); - } } - - function _mapCommand(command) { - defaultKeymap.unshift(command); - } - - function mapCommand(keys, type, name, args, extra) { - var command = {keys: keys, type: type}; - command[type] = name; - command[type + "Args"] = args; - for (var key in extra) +} +function _mapCommand(command) { + defaultKeymap.unshift(command); +} +function mapCommand(keys, type, name, args, extra) { + var command = { keys: keys, type: type }; + command[type] = name; + command[type + "Args"] = args; + for (var key in extra) command[key] = extra[key]; - _mapCommand(command); - } - defineOption('insertModeEscKeysTimeout', 200, 'number'); - - CodeMirror.keyMap['vim-insert'] = { - 'Ctrl-N': 'autocomplete', - 'Ctrl-P': 'autocomplete', - 'Enter': function(cm) { - var fn = CodeMirror.commands.newlineAndIndentContinueComment || - CodeMirror.commands.newlineAndIndent; - fn(cm); - }, - fallthrough: ['default'], - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - CodeMirror.keyMap['vim-replace'] = { - 'Backspace': 'goCharLeft', - fallthrough: ['vim-insert'], - attach: attachVimMap, - detach: detachVimMap, - call: cmKey - }; - - function executeMacroRegister(cm, vim, macroModeState, registerName) { - var register = vimGlobalState.registerController.getRegister(registerName); - if (registerName == ':') { + _mapCommand(command); +} +defineOption('insertModeEscKeysTimeout', 200, 'number'); +function executeMacroRegister(cm, vim, macroModeState, registerName) { + var register = vimGlobalState.registerController.getRegister(registerName); + if (registerName == ':') { if (register.keyBuffer[0]) { - exCommandDispatcher.processCommand(cm, register.keyBuffer[0]); + exCommandDispatcher.processCommand(cm, register.keyBuffer[0]); } macroModeState.isPlaying = false; return; - } - var keyBuffer = register.keyBuffer; - var imc = 0; - macroModeState.isPlaying = true; - macroModeState.replaySearchQueries = register.searchQueries.slice(0); - for (var i = 0; i < keyBuffer.length; i++) { + } + var keyBuffer = register.keyBuffer; + var imc = 0; + macroModeState.isPlaying = true; + macroModeState.replaySearchQueries = register.searchQueries.slice(0); + for (var i = 0; i < keyBuffer.length; i++) { var text = keyBuffer[i]; var match, key; while (text) { - match = (/<\w+-.+?>|<\w+>|./).exec(text); - key = match[0]; - text = text.substring(match.index + key.length); - CodeMirror.Vim.handleKey(cm, key, 'macro'); - if (vim.insertMode) { - var changes = register.insertModeChanges[imc++].changes; - vimGlobalState.macroModeState.lastInsertModeChanges.changes = - changes; - repeatInsertModeChanges(cm, changes, 1); - exitInsertMode(cm); - } - } - } - macroModeState.isPlaying = false; - } - - function logKey(macroModeState, key) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register) { - register.pushText(key); - } - } - - function logInsertModeChange(macroModeState) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register && register.pushInsertModeChanges) { - register.pushInsertModeChanges(macroModeState.lastInsertModeChanges); - } - } - - function logSearchQuery(macroModeState, query) { - if (macroModeState.isPlaying) { return; } - var registerName = macroModeState.latestRegister; - var register = vimGlobalState.registerController.getRegister(registerName); - if (register && register.pushSearchQuery) { - register.pushSearchQuery(query); - } - } - function onChange(_cm, changeObj) { - var macroModeState = vimGlobalState.macroModeState; - var lastChange = macroModeState.lastInsertModeChanges; - if (!macroModeState.isPlaying) { - while(changeObj) { - lastChange.expectCursorActivityForChange = true; - if (changeObj.origin == '+input' || changeObj.origin == 'paste' - || changeObj.origin === undefined /* only in testing */) { - var text = changeObj.text.join('\n'); - if (lastChange.maybeReset) { - lastChange.changes = []; - lastChange.maybeReset = false; + match = (/<\w+-.+?>|<\w+>|./).exec(text); + key = match[0]; + text = text.substring(match.index + key.length); + vimApi.handleKey(cm, key, 'macro'); + if (vim.insertMode) { + var changes = register.insertModeChanges[imc++].changes; + vimGlobalState.macroModeState.lastInsertModeChanges.changes = + changes; + repeatInsertModeChanges(cm, changes, 1); + exitInsertMode(cm); } - lastChange.changes.push(text); - } - changeObj = changeObj.next; } - } } - function onCursorActivity(cm) { - var vim = cm.state.vim; - if (vim.insertMode) { + macroModeState.isPlaying = false; +} +function logKey(macroModeState, key) { + if (macroModeState.isPlaying) { + return; + } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register) { + register.pushText(key); + } +} +function logInsertModeChange(macroModeState) { + if (macroModeState.isPlaying) { + return; + } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register && register.pushInsertModeChanges) { + register.pushInsertModeChanges(macroModeState.lastInsertModeChanges); + } +} +function logSearchQuery(macroModeState, query) { + if (macroModeState.isPlaying) { + return; + } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register && register.pushSearchQuery) { + register.pushSearchQuery(query); + } +} +function onChange(cm, changeObj) { + var macroModeState = vimGlobalState.macroModeState; + var lastChange = macroModeState.lastInsertModeChanges; + if (!macroModeState.isPlaying) { + var vim = cm.state.vim; + while (changeObj) { + lastChange.expectCursorActivityForChange = true; + if (lastChange.ignoreCount > 1) { + lastChange.ignoreCount--; + } + else if (changeObj.origin == '+input' || changeObj.origin == 'paste' + || changeObj.origin === undefined /* only in testing */) { + var selectionCount = cm.listSelections().length; + if (selectionCount > 1) + lastChange.ignoreCount = selectionCount; + var text = changeObj.text.join('\n'); + if (lastChange.maybeReset) { + lastChange.changes = []; + lastChange.maybeReset = false; + } + if (text) { + if (cm.state.overwrite && !/\n/.test(text)) { + lastChange.changes.push([text]); + } + else { + if (text.length > 1) { + var insertEnd = vim && vim.insertEnd && vim.insertEnd.find(); + var cursor = cm.getCursor(); + if (insertEnd && insertEnd.line == cursor.line) { + var offset = insertEnd.ch - cursor.ch; + if (offset > 0 && offset < text.length) { + lastChange.changes.push([text, offset]); + text = ''; + } + } + } + if (text) + lastChange.changes.push(text); + } + } + } + changeObj = changeObj.next; + } + } +} +function onCursorActivity(cm) { + var vim = cm.state.vim; + if (vim.insertMode) { var macroModeState = vimGlobalState.macroModeState; - if (macroModeState.isPlaying) { return; } + if (macroModeState.isPlaying) { + return; + } var lastChange = macroModeState.lastInsertModeChanges; if (lastChange.expectCursorActivityForChange) { - lastChange.expectCursorActivityForChange = false; - } else { - lastChange.maybeReset = true; + lastChange.expectCursorActivityForChange = false; } - } else if (!cm.curOp.isVimOp) { + else { + lastChange.maybeReset = true; + if (vim.insertEnd) + vim.insertEnd.clear(); + vim.insertEnd = cm.setBookmark(cm.getCursor(), { insertLeft: true }); + } + } + else if (!cm.curOp.isVimOp) { handleExternalSelection(cm, vim); - } - if (vim.visualMode) { - updateFakeCursor(cm); - } } - function updateFakeCursor(cm) { - var vim = cm.state.vim; - var from = clipCursorToContent(cm, copyCursor(vim.sel.head)); - var to = offsetCursor(from, 0, 1); - if (vim.fakeCursor) { - vim.fakeCursor.clear(); - } - vim.fakeCursor = cm.markText(from, to, {className: 'cm-animate-fat-cursor'}); - } - function handleExternalSelection(cm, vim) { - var anchor = cm.getCursor('anchor'); - var head = cm.getCursor('head'); - if (vim.visualMode && !cm.somethingSelected()) { +} +function handleExternalSelection(cm, vim, keepHPos) { + var anchor = cm.getCursor('anchor'); + var head = cm.getCursor('head'); + if (vim.visualMode && !cm.somethingSelected()) { exitVisualMode(cm, false); - } else if (!vim.visualMode && !vim.insertMode && cm.somethingSelected()) { + } + else if (!vim.visualMode && !vim.insertMode && cm.somethingSelected()) { vim.visualMode = true; vim.visualLine = false; - CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); - } - if (vim.visualMode) { + CodeMirror.signal(cm, "vim-mode-change", { mode: "visual" }); + } + if (vim.visualMode) { var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; head = offsetCursor(head, 0, headOffset); anchor = offsetCursor(anchor, 0, anchorOffset); vim.sel = { - anchor: anchor, - head: head + anchor: anchor, + head: head }; updateMark(cm, vim, '<', cursorMin(head, anchor)); updateMark(cm, vim, '>', cursorMax(head, anchor)); - } else if (!vim.insertMode) { + } + else if (!vim.insertMode && !keepHPos) { vim.lastHPos = cm.getCursor().ch; - } } - function InsertModeKey(keyName) { - this.keyName = keyName; +} +function InsertModeKey(keyName, e) { + this.keyName = keyName; + this.key = e.key; + this.ctrlKey = e.ctrlKey; + this.altKey = e.altKey; + this.metaKey = e.metaKey; + this.shiftKey = e.shiftKey; +} +function onKeyEventTargetKeyDown(e) { + var macroModeState = vimGlobalState.macroModeState; + var lastChange = macroModeState.lastInsertModeChanges; + var keyName = CodeMirror.keyName ? CodeMirror.keyName(e) : e.key; + if (!keyName) { + return; } - function onKeyEventTargetKeyDown(e) { - var macroModeState = vimGlobalState.macroModeState; - var lastChange = macroModeState.lastInsertModeChanges; - var keyName = CodeMirror.keyName(e); - if (!keyName) { return; } - function onKeyFound() { + if (keyName.indexOf('Delete') != -1 || keyName.indexOf('Backspace') != -1) { if (lastChange.maybeReset) { - lastChange.changes = []; - lastChange.maybeReset = false; + lastChange.changes = []; + lastChange.maybeReset = false; } - lastChange.changes.push(new InsertModeKey(keyName)); - return true; - } - if (keyName.indexOf('Delete') != -1 || keyName.indexOf('Backspace') != -1) { - CodeMirror.lookupKey(keyName, 'vim-insert', onKeyFound); - } + lastChange.changes.push(new InsertModeKey(keyName, e)); } - function repeatLastEdit(cm, vim, repeat, repeatForInsert) { - var macroModeState = vimGlobalState.macroModeState; - macroModeState.isPlaying = true; - var isAction = !!vim.lastEditActionCommand; - var cachedInputState = vim.inputState; - function repeatCommand() { +} +function repeatLastEdit(cm, vim, repeat, repeatForInsert) { + var macroModeState = vimGlobalState.macroModeState; + macroModeState.isPlaying = true; + var isAction = !!vim.lastEditActionCommand; + var cachedInputState = vim.inputState; + function repeatCommand() { if (isAction) { - commandDispatcher.processAction(cm, vim, vim.lastEditActionCommand); - } else { - commandDispatcher.evalInput(cm, vim); + commandDispatcher.processAction(cm, vim, vim.lastEditActionCommand); } - } - function repeatInsert(repeat) { + else { + commandDispatcher.evalInput(cm, vim); + } + } + function repeatInsert(repeat) { if (macroModeState.lastInsertModeChanges.changes.length > 0) { - repeat = !vim.lastEditActionCommand ? 1 : repeat; - var changeObject = macroModeState.lastInsertModeChanges; - repeatInsertModeChanges(cm, changeObject.changes, repeat, changeObject.overwrite); + repeat = !vim.lastEditActionCommand ? 1 : repeat; + var changeObject = macroModeState.lastInsertModeChanges; + repeatInsertModeChanges(cm, changeObject.changes, repeat); } - } - vim.inputState = vim.lastEditInputState; - if (isAction && vim.lastEditActionCommand.interlaceInsertRepeat) { + } + vim.inputState = vim.lastEditInputState; + if (isAction && vim.lastEditActionCommand.interlaceInsertRepeat) { for (var i = 0; i < repeat; i++) { - repeatCommand(); - repeatInsert(1); + repeatCommand(); + repeatInsert(1); } - } else { + } + else { if (!repeatForInsert) { - repeatCommand(); + repeatCommand(); } repeatInsert(repeat); - } - vim.inputState = cachedInputState; - if (vim.insertMode && !repeatForInsert) { - exitInsertMode(cm); - } - macroModeState.isPlaying = false; } - - function repeatInsertModeChanges(cm, changes, repeat, overwrite) { - function keyHandler(binding) { + vim.inputState = cachedInputState; + if (vim.insertMode && !repeatForInsert) { + exitInsertMode(cm); + } + macroModeState.isPlaying = false; +} +function sendCmKey(cm, key) { + CodeMirror.lookupKey(key, 'vim-insert', function keyHandler(binding) { if (typeof binding == 'string') { - CodeMirror.commands[binding](cm); - } else { - binding(cm); + CodeMirror.commands[binding](cm); + } + else { + binding(cm); } return true; - } - var head = cm.getCursor('head'); - var inVisualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.inVisualBlock; - if (inVisualBlock) { - var vim = cm.state.vim; - var lastSel = vim.lastSelection; - var offset = getOffset(lastSel.anchor, lastSel.head); - selectForInsert(cm, head, offset.line + 1); + }); +} +function repeatInsertModeChanges(cm, changes, repeat) { + var head = cm.getCursor('head'); + var visualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.visualBlock; + if (visualBlock) { + selectForInsert(cm, head, visualBlock + 1); repeat = cm.listSelections().length; cm.setCursor(head); - } - for (var i = 0; i < repeat; i++) { - if (inVisualBlock) { - cm.setCursor(offsetCursor(head, i, 0)); + } + for (var i = 0; i < repeat; i++) { + if (visualBlock) { + cm.setCursor(offsetCursor(head, i, 0)); } for (var j = 0; j < changes.length; j++) { - var change = changes[j]; - if (change instanceof InsertModeKey) { - CodeMirror.lookupKey(change.keyName, 'vim-insert', keyHandler); - } else { - var cur = cm.getCursor(); - var end = cur; - if (overwrite && !/\n/.test(change)) { - end = offsetCursor(cur, 0, change.length); + var change = changes[j]; + if (change instanceof InsertModeKey) { + sendCmKey(cm, change.keyName, change); + } + else if (typeof change == "string") { + cm.replaceSelection(change); + } + else { + var start = cm.getCursor(); + var end = offsetCursor(start, 0, change[0].length - (change[1] || 0)); + cm.replaceRange(change[0], start, change[1] ? start : end); + cm.setCursor(end); } - cm.replaceRange(change, cur, end); - } } - } - if (inVisualBlock) { + } + if (visualBlock) { cm.setCursor(offsetCursor(head, 0, 1)); - } } - - resetVimGlobalState(); - CodeMirror.Vim = Vim(); - - Vim = CodeMirror.Vim; - - var specialKey = {'return':'CR',backspace:'BS','delete':'Del',esc:'Esc', - left:'Left',right:'Right',up:'Up',down:'Down',space: 'Space', - home:'Home',end:'End',pageup:'PageUp',pagedown:'PageDown', enter: 'CR' - }; - function lookupKey(hashId, key, e) { +} +CodeMirror.Vim = vimApi; +var specialKeyAce = { 'return': 'CR', backspace: 'BS', 'delete': 'Del', esc: 'Esc', + left: 'Left', right: 'Right', up: 'Up', down: 'Down', space: 'Space', insert: 'Ins', + home: 'Home', end: 'End', pageup: 'PageUp', pagedown: 'PageDown', enter: 'CR' +}; +function lookupKey(hashId, key, e, vim) { if (key.length > 1 && key[0] == "n") { - key = key.replace("numpad", ""); + key = key.replace("numpad", ""); } - key = specialKey[key] || key; + key = specialKeyAce[key] || key; var name = ''; - if (e.ctrlKey) { name += 'C-'; } - if (e.altKey) { name += 'A-'; } - if (e.shiftKey) { name += 'S-'; } - + if (e.ctrlKey) { + name += 'C-'; + } + if (e.altKey) { + name += 'A-'; + } + if ((name || key.length > 1) && e.shiftKey) { + name += 'S-'; + } + if (vim && !vim.expectLiteralNext && key.length == 1) { + if (langmap.keymap && key in langmap.keymap) { + if (langmap.remapCtrl !== false || !name) + key = langmap.keymap[key]; + } + else if (key.charCodeAt(0) > 255) { + var code = e.code && e.code.slice(-1) || ""; + if (!e.shiftKey) + code = code.toLowerCase(); + if (code) + key = code; + } + } name += key; - if (name.length > 1) { name = '<' + name + '>'; } + if (name.length > 1) { + name = '<' + name + '>'; + } return name; - } - var handleKey = Vim.handleKey.bind(Vim); - Vim.handleKey = function(cm, key, origin) { - return cm.operation(function() { - return handleKey(cm, key, origin); +} +var handleKey = vimApi.handleKey.bind(vimApi); +vimApi.handleKey = function (cm, key, origin) { + return cm.operation(function () { + return handleKey(cm, key, origin); }, true); - } - function cloneVimState(state) { +}; +function cloneVimState(state) { var n = new state.constructor(); - Object.keys(state).forEach(function(key) { - var o = state[key]; - if (Array.isArray(o)) - o = o.slice(); - else if (o && typeof o == "object" && o.constructor != Object) - o = cloneVimState(o); - n[key] = o; + Object.keys(state).forEach(function (key) { + if (key == "insertEnd") + return; + var o = state[key]; + if (Array.isArray(o)) + o = o.slice(); + else if (o && typeof o == "object" && o.constructor != Object) + o = cloneVimState(o); + n[key] = o; }); if (state.sel) { - n.sel = { - head: state.sel.head && copyCursor(state.sel.head), - anchor: state.sel.anchor && copyCursor(state.sel.anchor) - }; + n.sel = { + head: state.sel.head && copyCursor(state.sel.head), + anchor: state.sel.anchor && copyCursor(state.sel.anchor) + }; } return n; - } - function multiSelectHandleKey(cm, key, origin) { +} +function multiSelectHandleKey(cm, key, origin) { var isHandled = false; - var vim = Vim.maybeInitVimState_(cm); + var vim = vimApi.maybeInitVimState_(cm); var visualBlock = vim.visualBlock || vim.wasInVisualBlock; - if (vim.wasInVisualBlock && !cm.ace.inMultiSelectMode) { - vim.wasInVisualBlock = false; - } else if (cm.ace.inMultiSelectMode && vim.visualBlock) { - vim.wasInVisualBlock = true; + var wasMultiselect = cm.ace.inMultiSelectMode; + if (vim.wasInVisualBlock && !wasMultiselect) { + vim.wasInVisualBlock = false; } - - if (key == '' && !vim.insertMode && !vim.visualMode && cm.ace.inMultiSelectMode) { - cm.ace.exitMultiSelectMode(); - } else if (visualBlock || !cm.ace.inMultiSelectMode || cm.ace.inVirtualSelectionMode) { - isHandled = Vim.handleKey(cm, key, origin); - } else { - var old = cloneVimState(vim); - cm.operation(function() { - cm.ace.forEachSelection(function() { - var sel = cm.ace.selection; - cm.state.vim.lastHPos = sel.$desiredColumn == null ? sel.lead.column : sel.$desiredColumn; - var head = cm.getCursor("head"); - var anchor = cm.getCursor("anchor"); - var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; - var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; - head = offsetCursor(head, 0, headOffset); - anchor = offsetCursor(anchor, 0, anchorOffset); - cm.state.vim.sel.head = head; - cm.state.vim.sel.anchor = anchor; - - isHandled = handleKey(cm, key, origin); - sel.$desiredColumn = cm.state.vim.lastHPos == -1 ? null : cm.state.vim.lastHPos; - if (cm.virtualSelectionMode()) { - cm.state.vim = cloneVimState(old); - } - }); - if (cm.curOp.cursorActivity && !isHandled) - cm.curOp.cursorActivity = false; - }, true); + else if (wasMultiselect && vim.visualBlock) { + vim.wasInVisualBlock = true; + } + if (key == '' && !vim.insertMode && !vim.visualMode && wasMultiselect) { + cm.ace.exitMultiSelectMode(); + } + else if (visualBlock || !wasMultiselect || cm.ace.inVirtualSelectionMode) { + isHandled = vimApi.handleKey(cm, key, origin); + } + else { + var old = cloneVimState(vim); + var changeQueueList = vim.inputState.changeQueueList || []; + cm.operation(function () { + cm.curOp.isVimOp = true; + var index = 0; + cm.ace.forEachSelection(function () { + var sel = cm.ace.selection; + cm.state.vim.lastHPos = sel.$desiredColumn == null ? sel.lead.column : sel.$desiredColumn; + cm.state.vim.inputState.changeQueue = changeQueueList[index]; + var head = cm.getCursor("head"); + var anchor = cm.getCursor("anchor"); + var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; + var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; + head = offsetCursor(head, 0, headOffset); + anchor = offsetCursor(anchor, 0, anchorOffset); + cm.state.vim.sel.head = head; + cm.state.vim.sel.anchor = anchor; + isHandled = handleKey(cm, key, origin); + sel.$desiredColumn = cm.state.vim.lastHPos == -1 ? null : cm.state.vim.lastHPos; + if (cm.ace.inVirtualSelectionMode) { + changeQueueList[index] = cm.state.vim.inputState.changeQueue; + } + if (cm.virtualSelectionMode()) { + cm.state.vim = cloneVimState(old); + } + index++; + }); + if (cm.curOp.cursorActivity && !isHandled) + cm.curOp.cursorActivity = false; + vim.status = cm.state.vim.status; + cm.state.vim = vim; + vim.inputState.changeQueueList = changeQueueList; + vim.inputState.changeQueue = null; + }, true); + } + if (isHandled && !vim.visualMode && !vim.insert && vim.visualMode != cm.somethingSelected()) { + handleExternalSelection(cm, vim, true); } return isHandled; - } - exports.CodeMirror = CodeMirror; - var getVim = Vim.maybeInitVimState_; - exports.handler = { +} +resetVimGlobalState(); +exports.CodeMirror = CodeMirror; +var getVim = vimApi.maybeInitVimState_; +exports.handler = { $id: "ace/keyboard/vim", - drawCursor: function(style, pixelPos, config, sel, session) { - var vim = this.state.vim || {}; - var w = config.characterWidth; - var h = config.lineHeight; - var top = pixelPos.top; - var left = pixelPos.left; - if (!vim.insertMode) { - var isbackwards = !sel.cursor - ? session.selection.isBackwards() || session.selection.isEmpty() - : Range.comparePoints(sel.cursor, sel.start) <= 0; - if (!isbackwards && left > w) - left -= w; - } - if (!vim.insertMode && vim.status) { - h = h / 2; - top += h; - } - style.left = left + "px"; - style.top = top + "px"; - style.width = w + "px"; - style.height = h + "px"; - }, - handleKeyboard: function(data, hashId, key, keyCode, e) { - var editor = data.editor; - var cm = editor.state.cm; - var vim = getVim(cm); - if (keyCode == -1) return; - - if (key == "c" && hashId == 1) { // key == "ctrl-c" - if (!useragent.isMac && editor.getCopyText()) { - editor.once("copy", function() { - editor.selection.clearSelection(); - }); - return {command: "null", passEvent: true}; + drawCursor: function (element, pixelPos, config, sel, session) { + var vim = this.state.vim || {}; + var w = config.characterWidth; + var h = config.lineHeight; + var top = pixelPos.top; + var left = pixelPos.left; + if (!vim.insertMode) { + var isbackwards = !sel.cursor + ? session.selection.isBackwards() || session.selection.isEmpty() + : Range.comparePoints(sel.cursor, sel.start) <= 0; + if (!isbackwards && left > w) + left -= w; } - } else if (!vim.insertMode) { - if (useragent.isMac && this.handleMacRepeat(data, hashId, key)) { - hashId = -1; - key = data.inputChar; + if (!vim.insertMode && vim.status) { + h = h / 2; + top += h; } - } - - if (hashId == -1 || hashId & 1 || hashId === 0 && key.length > 1) { - var insertMode = vim.insertMode; - var name = lookupKey(hashId, key, e || {}); - if (vim.status == null) - vim.status = ""; - var isHandled = multiSelectHandleKey(cm, name, 'user'); - vim = getVim(cm); // may be changed by multiSelectHandleKey - if (isHandled && vim.status != null) - vim.status += name; - else if (vim.status == null) - vim.status = ""; - cm._signal("changeStatus"); - if (!isHandled && (hashId != -1 || insertMode)) - return; - return {command: "null", passEvent: !isHandled}; - } + domLib.translate(element, left, top); + domLib.setStyle(element.style, "width", w + "px"); + domLib.setStyle(element.style, "height", h + "px"); }, - attach: function(editor) { - if (!editor.state) editor.state = {}; - var cm = new CodeMirror(editor); - editor.state.cm = cm; - editor.$vimModeHandler = this; - CodeMirror.keyMap.vim.attach(cm); - getVim(cm).status = null; - cm.on('vim-command-done', function() { - if (cm.virtualSelectionMode()) return; + $getDirectionForHighlight: function (editor) { + var cm = editor.state.cm; + var vim = getVim(cm); + if (!vim.insertMode) { + return editor.session.selection.isBackwards() || editor.session.selection.isEmpty(); + } + }, + handleKeyboard: function (data, hashId, key, keyCode, e) { + var editor = data.editor; + var cm = editor.state.cm; + var vim = getVim(cm); + if (keyCode == -1) + return; + if (!vim.insertMode) { + if (hashId == -1) { + if (key.charCodeAt(0) > 0xFF) { + if (data.inputKey) { + key = data.inputKey; + if (key && data.inputHash == 4) + key = key.toUpperCase(); + } + } + data.inputChar = key; + } + else if (hashId == 4 || hashId == 0) { + if (data.inputKey == key && data.inputHash == hashId && data.inputChar) { + key = data.inputChar; + hashId = -1; + } + else { + data.inputChar = null; + data.inputKey = key; + data.inputHash = hashId; + } + } + else { + data.inputChar = data.inputKey = null; + } + } + if (cm.state.overwrite && vim.insertMode && key == "backspace" && hashId == 0) { + return { command: "gotoleft" }; + } + if (key == "c" && hashId == 1) { // key == "ctrl-c" + if (!useragent.isMac && editor.getCopyText()) { + editor.once("copy", function () { + if (vim.insertMode) + editor.selection.clearSelection(); + else + cm.operation(function () { exitVisualMode(cm); }); + }); + return { command: "null", passEvent: true }; + } + } + if (key == "esc" && !vim.insertMode && !vim.visualMode && !cm.ace.inMultiSelectMode) { + var searchState = getSearchState(cm); + var overlay = searchState.getOverlay(); + if (overlay) + cm.removeOverlay(overlay); + } + if (hashId == -1 || hashId & 1 || hashId === 0 && key.length > 1) { + var insertMode = vim.insertMode; + var name = lookupKey(hashId, key, e || {}, vim); + if (vim.status == null) + vim.status = ""; + var isHandled = multiSelectHandleKey(cm, name, 'user'); + vim = getVim(cm); // may be changed by multiSelectHandleKey + if (isHandled && vim.status != null) + vim.status += name; + else if (vim.status == null) + vim.status = ""; + cm._signal("changeStatus"); + if (!isHandled && (hashId != -1 || insertMode)) + return; + return { command: "null", passEvent: !isHandled }; + } + }, + attach: function (editor) { + if (!editor.state) + editor.state = {}; + var cm = new CodeMirror(editor); + editor.state.cm = cm; + editor.$vimModeHandler = this; + enterVimMode(cm); getVim(cm).status = null; - cm.ace._signal("changeStatus"); - cm.ace.session.markUndoGroup(); - }); - cm.on("changeStatus", function() { - cm.ace.renderer.updateCursor(); - cm.ace._signal("changeStatus"); - }); - cm.on("vim-mode-change", function() { - if (cm.virtualSelectionMode()) return; - cm.ace.renderer.setStyle("normal-mode", !getVim(cm).insertMode); - cm._signal("changeStatus"); - }); - cm.ace.renderer.setStyle("normal-mode", !getVim(cm).insertMode); - editor.renderer.$cursorLayer.drawCursor = this.drawCursor.bind(cm); - this.updateMacCompositionHandlers(editor, true); - }, - detach: function(editor) { - var cm = editor.state.cm; - CodeMirror.keyMap.vim.detach(cm); - cm.destroy(); - editor.state.cm = null; - editor.$vimModeHandler = null; - editor.renderer.$cursorLayer.drawCursor = null; - editor.renderer.setStyle("normal-mode", false); - this.updateMacCompositionHandlers(editor, false); - }, - getStatusText: function(editor) { - var cm = editor.state.cm; - var vim = getVim(cm); - if (vim.insertMode) - return "INSERT"; - var status = ""; - if (vim.visualMode) { - status += "VISUAL"; - if (vim.visualLine) - status += " LINE"; - if (vim.visualBlock) - status += " BLOCK"; - } - if (vim.status) - status += (status ? " " : "") + vim.status; - return status; - }, - handleMacRepeat: function(data, hashId, key) { - if (hashId == -1) { - data.inputChar = key; - data.lastEvent = "input"; - } else if (data.inputChar && data.$lastHash == hashId && data.$lastKey == key) { - if (data.lastEvent == "input") { - data.lastEvent = "input1"; - } else if (data.lastEvent == "input1") { - return true; + cm.on('vim-command-done', function () { + if (cm.virtualSelectionMode()) + return; + getVim(cm).status = null; + cm.ace._signal("changeStatus"); + cm.ace.session.markUndoGroup(); + }); + cm.on("changeStatus", function () { + cm.ace.renderer.updateCursor(); + cm.ace._signal("changeStatus"); + }); + cm.on("vim-mode-change", function () { + if (cm.virtualSelectionMode()) + return; + updateInputMode(); + cm._signal("changeStatus"); + }); + function updateInputMode() { + var isIntsert = getVim(cm).insertMode; + cm.ace.renderer.setStyle("normal-mode", !isIntsert); + editor.textInput.setCommandMode(!isIntsert); + editor.renderer.$keepTextAreaAtCursor = isIntsert; + editor.renderer.$blockCursor = !isIntsert; } - } else { - data.$lastHash = hashId; - data.$lastKey = key; - data.lastEvent = "keypress"; - } + updateInputMode(); + editor.renderer.$cursorLayer.drawCursor = this.drawCursor.bind(cm); }, - updateMacCompositionHandlers: function(editor, enable) { - var onCompositionUpdateOverride = function(text) { + detach: function (editor) { + var cm = editor.state.cm; + leaveVimMode(cm); + cm.destroy(); + editor.state.cm = null; + editor.$vimModeHandler = null; + editor.renderer.$cursorLayer.drawCursor = null; + editor.renderer.setStyle("normal-mode", false); + editor.textInput.setCommandMode(false); + editor.renderer.$keepTextAreaAtCursor = true; + }, + getStatusText: function (editor) { var cm = editor.state.cm; var vim = getVim(cm); - if (!vim.insertMode) { - var el = this.textInput.getElement(); - el.blur(); - el.focus(); - el.value = text; - } else { - this.onCompositionUpdateOrig(text); + if (vim.insertMode) + return "INSERT"; + var status = ""; + if (vim.visualMode) { + status += "VISUAL"; + if (vim.visualLine) + status += " LINE"; + if (vim.visualBlock) + status += " BLOCK"; } - }; - var onCompositionStartOverride = function(text) { - var cm = editor.state.cm; - var vim = getVim(cm); - if (!vim.insertMode) { - this.onCompositionStartOrig(text); - } - }; - if (enable) { - if (!editor.onCompositionUpdateOrig) { - editor.onCompositionUpdateOrig = editor.onCompositionUpdate; - editor.onCompositionUpdate = onCompositionUpdateOverride; - editor.onCompositionStartOrig = editor.onCompositionStart; - editor.onCompositionStart = onCompositionStartOverride; - } - } else { - if (editor.onCompositionUpdateOrig) { - editor.onCompositionUpdate = editor.onCompositionUpdateOrig; - editor.onCompositionUpdateOrig = null; - editor.onCompositionStart = editor.onCompositionStartOrig; - editor.onCompositionStartOrig = null; - } - } + if (vim.status) + status += (status ? " " : "") + vim.status; + return status; } - }; - var renderVirtualNumbers = { - getText: function(session, row) { - return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9? "\xb7" : "" ))) + ""; - }, - getWidth: function(session, lastLineNumber, config) { - return session.getLength().toString().length * config.characterWidth; - }, - update: function(e, editor) { - editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER); - }, - attach: function(editor) { - editor.renderer.$gutterLayer.$renderer = this; - editor.on("changeSelection", this.update); - }, - detach: function(editor) { - editor.renderer.$gutterLayer.$renderer = null; - editor.off("changeSelection", this.update); - } - }; - Vim.defineOption({ +}; +vimApi.defineOption({ name: "wrap", - set: function(value, cm) { - if (cm) {cm.ace.setOption("wrap", value)} + set: function (value, cm) { + if (cm) { + cm.ace.setOption("wrap", value); + } }, type: "boolean" - }, false); - Vim.defineEx('write', 'w', function() { - console.log(':write is not implemented') - }); - defaultKeymap.push( - { keys: 'zc', type: 'action', action: 'fold', actionArgs: { open: false } }, - { keys: 'zC', type: 'action', action: 'fold', actionArgs: { open: false, all: true } }, - { keys: 'zo', type: 'action', action: 'fold', actionArgs: { open: true } }, - { keys: 'zO', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, - { keys: 'za', type: 'action', action: 'fold', actionArgs: { toggle: true } }, - { keys: 'zA', type: 'action', action: 'fold', actionArgs: { toggle: true, all: true } }, - { keys: 'zf', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, - { keys: 'zd', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, - - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorAbove" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorBelow" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorAboveSkipCurrent" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorBelowSkipCurrent" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectMoreBefore" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectMoreAfter" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectNextBefore" } }, - { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectNextAfter" } } - ); - actions.aceCommand = function(cm, actionArgs, vim) { +}, false); +vimApi.defineEx('write', 'w', function () { + console.log(':write is not implemented'); +}); +defaultKeymap.push({ keys: 'zc', type: 'action', action: 'fold', actionArgs: { open: false } }, { keys: 'zC', type: 'action', action: 'fold', actionArgs: { open: false, all: true } }, { keys: 'zo', type: 'action', action: 'fold', actionArgs: { open: true } }, { keys: 'zO', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, { keys: 'za', type: 'action', action: 'fold', actionArgs: { toggle: true } }, { keys: 'zA', type: 'action', action: 'fold', actionArgs: { toggle: true, all: true } }, { keys: 'zf', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, { keys: 'zd', type: 'action', action: 'fold', actionArgs: { open: true, all: true } }, { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorAbove" } }, { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorBelow" } }, { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorAboveSkipCurrent" } }, { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "addCursorBelowSkipCurrent" } }, { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectMoreBefore" } }, { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectMoreAfter" } }, { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectNextBefore" } }, { keys: '', type: 'action', action: 'aceCommand', actionArgs: { name: "selectNextAfter" } }); +defaultKeymap.push({ + keys: 'gq', + type: 'operator', + operator: 'hardWrap' +}); +vimApi.defineOperator("hardWrap", function (cm, operatorArgs, ranges, oldAnchor, newHead) { + var anchor = ranges[0].anchor.line; + var head = ranges[0].head.line; + if (operatorArgs.linewise) + head--; + hardWrap(cm.ace, { startRow: anchor, endRow: head }); + return Pos(head, 0); +}); +defineOption('textwidth', undefined, 'number', ['tw'], function (width, cm) { + if (cm === undefined) { + return; + } + if (width === undefined) { + var value = cm.ace.getOption('printMarginColumn'); + return value; + } + else { + var column = Math.round(width); + if (column > 1) { + cm.ace.setOption('printMarginColumn', column); + } + } +}); +actions.aceCommand = function (cm, actionArgs, vim) { cm.vimCmd = actionArgs; if (cm.ace.inVirtualSelectionMode) - cm.ace.on("beforeEndOperation", delayedExecAceCommand); + cm.ace.on("beforeEndOperation", delayedExecAceCommand); else - delayedExecAceCommand(null, cm.ace); - }; - function delayedExecAceCommand(op, ace) { + delayedExecAceCommand(null, cm.ace); +}; +function delayedExecAceCommand(op, ace) { ace.off("beforeEndOperation", delayedExecAceCommand); var cmd = ace.state.cm.vimCmd; if (cmd) { - ace.execCommand(cmd.exec ? cmd : cmd.name, cmd.args); + ace.execCommand(cmd.exec ? cmd : cmd.name, cmd.args); } ace.curOp = ace.prevOp; - } - actions.fold = function(cm, actionArgs, vim) { +} +actions.fold = function (cm, actionArgs, vim) { cm.ace.execCommand(['toggleFoldWidget', 'toggleFoldWidget', 'foldOther', 'unfoldall' - ][(actionArgs.all ? 2 : 0) + (actionArgs.open ? 1 : 0)]); - }; + ][(actionArgs.all ? 2 : 0) + (actionArgs.open ? 1 : 0)]); +}; +defaultKeymapLength = defaultKeymap.length; // ace_patch +exports.handler.defaultKeymap = defaultKeymap; +exports.handler.actions = actions; +exports.Vim = vimApi; - exports.handler.defaultKeymap = defaultKeymap; - exports.handler.actions = actions; - exports.Vim = Vim; - - Vim.map("Y", "yy", "normal"); -}); +}); (function() { + window.require(["ace/keyboard/vim"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/keybinding-vscode.js b/vendor/assets/javascripts/ace/keybinding-vscode.js new file mode 100644 index 00000000..1098cf85 --- /dev/null +++ b/vendor/assets/javascripts/ace/keybinding-vscode.js @@ -0,0 +1,255 @@ +define("ace/keyboard/vscode",["require","exports","module","ace/keyboard/hash_handler","ace/config"], function(require, exports, module){"use strict"; +var HashHandler = require("../keyboard/hash_handler").HashHandler; +var config = require("../config"); +exports.handler = new HashHandler(); +exports.handler.$id = "ace/keyboard/vscode"; +exports.handler.addCommands([{ + name: "toggleWordWrap", + exec: function (editor) { + var wrapUsed = editor.session.getUseWrapMode(); + editor.session.setUseWrapMode(!wrapUsed); + }, + readOnly: true + }, { + name: "navigateToLastEditLocation", + exec: function (editor) { + var lastDelta = editor.session.getUndoManager().$lastDelta; + var range = (lastDelta.action == "remove") ? lastDelta.start : lastDelta.end; + editor.moveCursorTo(range.row, range.column); + editor.clearSelection(); + } + }, { + name: "replaceAll", + exec: function (editor) { + if (!editor.searchBox) { + config.loadModule("ace/ext/searchbox", function (e) { + e.Search(editor, true); + }); + } + else { + if (editor.searchBox.active === true && editor.searchBox.replaceOption.checked === true) { + editor.searchBox.replaceAll(); + } + } + } + }, { + name: "replaceOne", + exec: function (editor) { + if (!editor.searchBox) { + config.loadModule("ace/ext/searchbox", function (e) { + e.Search(editor, true); + }); + } + else { + if (editor.searchBox.active === true && editor.searchBox.replaceOption.checked === true) { + editor.searchBox.replace(); + } + } + } + }, { + name: "selectAllMatches", + exec: function (editor) { + if (!editor.searchBox) { + config.loadModule("ace/ext/searchbox", function (e) { + e.Search(editor, false); + }); + } + else { + if (editor.searchBox.active === true) { + editor.searchBox.findAll(); + } + } + } + }, { + name: "toggleFindCaseSensitive", + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { + e.Search(editor, false); + var sb = editor.searchBox; + sb.caseSensitiveOption.checked = !sb.caseSensitiveOption.checked; + sb.$syncOptions(); + }); + } + }, { + name: "toggleFindInSelection", + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { + e.Search(editor, false); + var sb = editor.searchBox; + sb.searchOption.checked = !sb.searchRange; + sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); + sb.$syncOptions(); + }); + } + }, { + name: "toggleFindRegex", + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { + e.Search(editor, false); + var sb = editor.searchBox; + sb.regExpOption.checked = !sb.regExpOption.checked; + sb.$syncOptions(); + }); + } + }, { + name: "toggleFindWholeWord", + exec: function (editor) { + config.loadModule("ace/ext/searchbox", function (e) { + e.Search(editor, false); + var sb = editor.searchBox; + sb.wholeWordOption.checked = !sb.wholeWordOption.checked; + sb.$syncOptions(); + }); + } + }, { + name: "removeSecondaryCursors", + exec: function (editor) { + var ranges = editor.selection.ranges; + if (ranges && ranges.length > 1) + editor.selection.toSingleRange(ranges[ranges.length - 1]); + else + editor.selection.clearSelection(); + } + }]); +[{ + bindKey: { mac: "Ctrl-G", win: "Ctrl-G" }, + name: "gotoline" + }, { + bindKey: { mac: "Command-Shift-L|Command-F2", win: "Ctrl-Shift-L|Ctrl-F2" }, + name: "findAll" + }, { + bindKey: { mac: "Shift-F8|Shift-Option-F8", win: "Shift-F8|Shift-Alt-F8" }, + name: "goToPreviousError" + }, { + bindKey: { mac: "F8|Option-F8", win: "F8|Alt-F8" }, + name: "goToNextError" + }, { + bindKey: { mac: "Command-Shift-P|F1", win: "Ctrl-Shift-P|F1" }, + name: "openCommandPalette" + }, { + bindKey: { mac: "Shift-Option-Up", win: "Alt-Shift-Up" }, + name: "copylinesup" + }, { + bindKey: { mac: "Shift-Option-Down", win: "Alt-Shift-Down" }, + name: "copylinesdown" + }, { + bindKey: { mac: "Command-Shift-K", win: "Ctrl-Shift-K" }, + name: "removeline" + }, { + bindKey: { mac: "Command-Enter", win: "Ctrl-Enter" }, + name: "addLineAfter" + }, { + bindKey: { mac: "Command-Shift-Enter", win: "Ctrl-Shift-Enter" }, + name: "addLineBefore" + }, { + bindKey: { mac: "Command-Shift-\\", win: "Ctrl-Shift-\\" }, + name: "jumptomatching" + }, { + bindKey: { mac: "Command-]", win: "Ctrl-]" }, + name: "blockindent" + }, { + bindKey: { mac: "Command-[", win: "Ctrl-[" }, + name: "blockoutdent" + }, { + bindKey: { mac: "Ctrl-PageDown", win: "Alt-PageDown" }, + name: "pagedown" + }, { + bindKey: { mac: "Ctrl-PageUp", win: "Alt-PageUp" }, + name: "pageup" + }, { + bindKey: { mac: "Shift-Option-A", win: "Shift-Alt-A" }, + name: "toggleBlockComment" + }, { + bindKey: { mac: "Option-Z", win: "Alt-Z" }, + name: "toggleWordWrap" + }, { + bindKey: { mac: "Command-G", win: "F3|Ctrl-K Ctrl-D" }, + name: "findnext" + }, { + bindKey: { mac: "Command-Shift-G", win: "Shift-F3" }, + name: "findprevious" + }, { + bindKey: { mac: "Option-Enter", win: "Alt-Enter" }, + name: "selectAllMatches" + }, { + bindKey: { mac: "Command-D", win: "Ctrl-D" }, + name: "selectMoreAfter" + }, { + bindKey: { mac: "Command-K Command-D", win: "Ctrl-K Ctrl-D" }, + name: "selectOrFindNext" + }, { + bindKey: { mac: "Shift-Option-I", win: "Shift-Alt-I" }, + name: "splitSelectionIntoLines" + }, { + bindKey: { mac: "Command-K M", win: "Ctrl-K M" }, + name: "modeSelect" + }, { + bindKey: { mac: "Command-Option-[", win: "Ctrl-Shift-[" }, + name: "toggleFoldWidget" + }, { + bindKey: { mac: "Command-Option-]", win: "Ctrl-Shift-]" }, + name: "toggleFoldWidget" + }, { + bindKey: { mac: "Command-K Command-0", win: "Ctrl-K Ctrl-0" }, + name: "foldall" + }, { + bindKey: { mac: "Command-K Command-J", win: "Ctrl-K Ctrl-J" }, + name: "unfoldall" + }, { + bindKey: { mac: "Command-K Command-1", win: "Ctrl-K Ctrl-1" }, + name: "foldOther" + }, { + bindKey: { mac: "Command-K Command-Q", win: "Ctrl-K Ctrl-Q" }, + name: "navigateToLastEditLocation" + }, { + bindKey: { mac: "Command-K Command-R|Command-K Command-S", win: "Ctrl-K Ctrl-R|Ctrl-K Ctrl-S" }, + name: "showKeyboardShortcuts" + }, { + bindKey: { mac: "Command-K Command-X", win: "Ctrl-K Ctrl-X" }, + name: "trimTrailingSpace" + }, { + bindKey: { mac: "Shift-Down|Command-Shift-Down", win: "Shift-Down|Ctrl-Shift-Down" }, + name: "selectdown" + }, { + bindKey: { mac: "Shift-Up|Command-Shift-Up", win: "Shift-Up|Ctrl-Shift-Up" }, + name: "selectup" + }, { + bindKey: { mac: "Command-Alt-Enter", win: "Ctrl-Alt-Enter" }, + name: "replaceAll" + }, { + bindKey: { mac: "Command-Shift-1", win: "Ctrl-Shift-1" }, + name: "replaceOne" + }, { + bindKey: { mac: "Option-C", win: "Alt-C" }, + name: "toggleFindCaseSensitive" + }, { + bindKey: { mac: "Option-L", win: "Alt-L" }, + name: "toggleFindInSelection" + }, { + bindKey: { mac: "Option-R", win: "Alt-R" }, + name: "toggleFindRegex" + }, { + bindKey: { mac: "Option-W", win: "Alt-W" }, + name: "toggleFindWholeWord" + }, { + bindKey: { mac: "Command-L", win: "Ctrl-L" }, + name: "expandtoline" + }, { + bindKey: { mac: "Shift-Esc", win: "Shift-Esc" }, + name: "removeSecondaryCursors" + } +].forEach(function (binding) { + var command = exports.handler.commands[binding.name]; + if (command) + command.bindKey = binding.bindKey; + exports.handler.bindKey(binding.bindKey, command || binding.name); +}); + +}); (function() { + window.require(["ace/keyboard/vscode"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-abap.js b/vendor/assets/javascripts/ace/mode-abap.js index 51ec20ee..fa6e26a5 100644 --- a/vendor/assets/javascripts/ace/mode-abap.js +++ b/vendor/assets/javascripts/ace/mode-abap.js @@ -1,15 +1,18 @@ -define("ace/mode/abap_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/abap_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * based on + * " Vim ABAP syntax file + * " Language: SAP - ABAP/R4 + * " Revision: 2.1 + * " Maintainer: Marius Piedallu van Wyk + * " Last Change: 2012 Oct 23 + */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AbapHighlightRules = function() { - +var AbapHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "variable.language": "this", - "keyword": - "ADD ALIAS ALIASES ASCENDING ASSERT ASSIGN ASSIGNING AT BACK" + + "keyword": "ADD ALIAS ALIASES ASCENDING ASSERT ASSIGN ASSIGNING AT BACK" + " CALL CASE CATCH CHECK CLASS CLEAR CLOSE CNT COLLECT COMMIT COMMUNICATION COMPUTE CONCATENATE CONDENSE CONSTANTS CONTINUE CONTROLS CONVERT CREATE CURRENCY" + " DATA DEFINE DEFINITION DEFERRED DELETE DESCENDING DESCRIBE DETAIL DIVIDE DO" + " ELSE ELSEIF ENDAT ENDCASE ENDCLASS ENDDO ENDEXEC ENDFORM ENDFUNCTION ENDIF ENDIFEND ENDINTERFACE ENDLOOP ENDMETHOD ENDMODULE ENDON ENDPROVIDE ENDSELECT ENDTRY ENDWHILE EVENT EVENTS EXEC EXIT EXPORT EXPORTING EXTRACT" + @@ -35,121 +38,108 @@ var AbapHighlightRules = function() { " APPENDING CORRESPONDING FIELDS OF TABLE" + " LEFT RIGHT OUTER INNER JOIN AS CLIENT SPECIFIED BYPASSING BUFFER UP TO ROWS CONNECTING" + " EQ NE LT LE GT GE NOT AND OR XOR IN LIKE BETWEEN", - "constant.language": - "TRUE FALSE NULL SPACE", - "support.type": - "c n i p f d t x string xstring decfloat16 decfloat34", - "keyword.operator": - "abs sign ceil floor trunc frac acos asin atan cos sin tan" + + "constant.language": "TRUE FALSE NULL SPACE", + "support.type": "c n i p f d t x string xstring decfloat16 decfloat34", + "keyword.operator": "abs sign ceil floor trunc frac acos asin atan cos sin tan" + " abapOperator cosh sinh tanh exp log log10 sqrt" + - " strlen xstrlen charlen numofchar dbmaxlen lines" + " strlen xstrlen charlen numofchar dbmaxlen lines" }, "text", true, " "); - - var compoundKeywords = "WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|"+ - "EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|"+ - "END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|"+ - "RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|"+ - "WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|"+ - "(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)"+ - "(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|"+ - "LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|"+ - "CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|"+ - "FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|"+ - "NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|"+ - "START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|"+ - "TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|"+ + var compoundKeywords = "WITH\\W+(?:HEADER\\W+LINE|FRAME|KEY)|NO\\W+STANDARD\\W+PAGE\\W+HEADING|" + + "EXIT\\W+FROM\\W+STEP\\W+LOOP|BEGIN\\W+OF\\W+(?:BLOCK|LINE)|BEGIN\\W+OF|" + + "END\\W+OF\\W+(?:BLOCK|LINE)|END\\W+OF|NO\\W+INTERVALS|" + + "RESPECTING\\W+BLANKS|SEPARATED\\W+BY|USING\\W+(?:EDIT\\W+MASK)|" + + "WHERE\\W+(?:LINE)|RADIOBUTTON\\W+GROUP|REF\\W+TO|" + + "(?:PUBLIC|PRIVATE|PROTECTED)(?:\\W+SECTION)?|DELETING\\W+(?:TRAILING|LEADING)" + + "(?:ALL\\W+OCCURRENCES)|(?:FIRST|LAST)\\W+OCCURRENCE|INHERITING\\W+FROM|" + + "LINE-COUNT|ADD-CORRESPONDING|AUTHORITY-CHECK|BREAK-POINT|CLASS-DATA|CLASS-METHODS|" + + "CLASS-METHOD|DIVIDE-CORRESPONDING|EDITOR-CALL|END-OF-DEFINITION|END-OF-PAGE|END-OF-SELECTION|" + + "FIELD-GROUPS|FIELD-SYMBOLS|FUNCTION-POOL|MOVE-CORRESPONDING|MULTIPLY-CORRESPONDING|NEW-LINE|" + + "NEW-PAGE|NEW-SECTION|PRINT-CONTROL|RP-PROVIDE-FROM-LAST|SELECT-OPTIONS|SELECTION-SCREEN|" + + "START-OF-SELECTION|SUBTRACT-CORRESPONDING|SYNTAX-CHECK|SYNTAX-TRACE|TOP-OF-PAGE|TYPE-POOL|" + + "TYPE-POOLS|LINE-SIZE|LINE-COUNT|MESSAGE-ID|DISPLAY-MODE|READ(?:-ONLY)?|" + "IS\\W+(?:NOT\\W+)?(?:ASSIGNED|BOUND|INITIAL|SUPPLIED)"; - this.$rules = { - "start" : [ - {token : "string", regex : "`", next : "string"}, - {token : "string", regex : "'", next : "qstring"}, - {token : "doc.comment", regex : /^\*.+/}, - {token : "comment", regex : /".+$/}, - {token : "invalid", regex: "\\.{2,}"}, - {token : "keyword.operator", regex: /\W[\-+%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/}, - {token : "paren.lparen", regex : "[\\[({]"}, - {token : "paren.rparen", regex : "[\\])}]"}, - {token : "constant.numeric", regex: "[+-]?\\d+\\b"}, - {token : "variable.parameter", regex : /sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/}, - {token : "keyword", regex : compoundKeywords}, - {token : "variable.parameter", regex : /\w+-\w+(?:-\w+)*/}, - {token : keywordMapper, regex : "\\b\\w+\\b"}, - {caseInsensitive: true} + "start": [ + { token: "string", regex: "`", next: "string" }, + { token: "string", regex: "'", next: "qstring" }, + { token: "doc.comment", regex: /^\*.+/ }, + { token: "comment", regex: /".+$/ }, + { token: "invalid", regex: "\\.{2,}" }, + { token: "keyword.operator", regex: /\W[\-+%=<>*]\W|\*\*|[~:,\.&$]|->*?|=>/ }, + { token: "paren.lparen", regex: "[\\[({]" }, + { token: "paren.rparen", regex: "[\\])}]" }, + { token: "constant.numeric", regex: "[+-]?\\d+\\b" }, + { token: "variable.parameter", regex: /sy|pa?\d\d\d\d\|t\d\d\d\.|innnn/ }, + { token: "keyword", regex: compoundKeywords }, + { token: "variable.parameter", regex: /\w+-\w[\-\w]*/ }, + { token: keywordMapper, regex: "\\b\\w+\\b" }, + { caseInsensitive: true } ], - "qstring" : [ - {token : "constant.language.escape", regex : "''"}, - {token : "string", regex : "'", next : "start"}, - {defaultToken : "string"} + "qstring": [ + { token: "constant.language.escape", regex: "''" }, + { token: "string", regex: "'", next: "start" }, + { defaultToken: "string" } ], - "string" : [ - {token : "constant.language.escape", regex : "``"}, - {token : "string", regex : "`", next : "start"}, - {defaultToken : "string"} + "string": [ + { token: "constant.language.escape", regex: "``" }, + { token: "string", regex: "`", next: "start" }, + { defaultToken: "string" } ] }; }; oop.inherits(AbapHighlightRules, TextHighlightRules); - exports.AbapHighlightRules = AbapHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -158,57 +148,53 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/abap",["require","exports","module","ace/mode/abap_highlight_rules","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/lib/oop"], function(require, exports, module) { -"use strict"; - +define("ace/mode/abap",["require","exports","module","ace/mode/abap_highlight_rules","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/lib/oop"], function(require, exports, module){"use strict"; var Rules = require("./abap_highlight_rules").AbapHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; var Range = require("../range").Range; var TextMode = require("./text").Mode; var oop = require("../lib/oop"); - function Mode() { this.HighlightRules = Rules; this.foldingRules = new FoldMode(); } - oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = '"'; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); return indent; - }; - + }; this.$id = "ace/mode/abap"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/abap"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-abc.js b/vendor/assets/javascripts/ace/mode-abc.js index 8e310527..e93f435f 100644 --- a/vendor/assets/javascripts/ace/mode-abc.js +++ b/vendor/assets/javascripts/ace/mode-abc.js @@ -1,186 +1,160 @@ -define("ace/mode/abc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function (require, exports, module) { - "use strict"; +define("ace/mode/abc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was partially autogenerated from https://github.com/jimhawkridge/SublimeABC - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + Modifications - var ABCHighlightRules = function () { + - more classes to express the abc semantic + - added syntax highlighting for Zupfnoter conventions (https://github.com/bwl21/zupfnoter) + - separate note pitch and note duration - even if it looks the same - this.$rules = { - start: [ - { - token: ['zupfnoter.information.comment.line.percentage', 'information.keyword', 'in formation.keyword.embedded'], - regex: '(%%%%)(hn\\.[a-z]*)(.*)', - comment: 'Instruction Comment' - }, - { - token: ['information.comment.line.percentage', 'information.keyword.embedded'], - regex: '(%%)(.*)', - comment: 'Instruction Comment' - }, - - { - token: 'comment.line.percentage', - regex: '%.*', - comment: 'Comments' - }, - - { - token: 'barline.keyword.operator', - regex: '[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+', - comment: 'Bar lines' - }, - { - token: ['information.keyword.embedded', 'information.argument.string.unquoted'], - regex: '(\\[[A-Za-z]:)([^\\]]*\\])', - comment: 'embedded Header lines' - }, - { - token: ['information.keyword', 'information.argument.string.unquoted'], - regex: '^([A-Za-z]:)([^%\\\\]*)', - comment: 'Header lines' - }, - { - token: ['text', 'entity.name.function', 'string.unquoted', 'text'], - regex: '(\\[)([A-Z]:)(.*?)(\\])', - comment: 'Inline fields' - }, - { - token: ['accent.constant.language', 'pitch.constant.numeric', 'duration.constant.numeric'], - regex: '([\\^=_]*)([A-Ga-gz][,\']*)([0-9]*/*[><0-9]*)', - comment: 'Notes' - }, - { - token: 'zupfnoter.jumptarget.string.quoted', - regex: '[\\"!]\\^\\:.*?[\\"!]', - comment: 'Zupfnoter jumptarget' - }, { - token: 'zupfnoter.goto.string.quoted', - regex: '[\\"!]\\^\\@.*?[\\"!]', - comment: 'Zupfnoter goto' - }, - { - token: 'zupfnoter.annotation.string.quoted', - regex: '[\\"!]\\^\\!.*?[\\"!]', - comment: 'Zupfnoter annoation' - }, - { - token: 'zupfnoter.annotationref.string.quoted', - regex: '[\\"!]\\^\\#.*?[\\"!]', - comment: 'Zupfnoter annotation reference' - }, - { - token: 'chordname.string.quoted', - regex: '[\\"!]\\^.*?[\\"!]', - comment: 'abc chord' - }, - { - token: 'string.quoted', - regex: '[\\"!].*?[\\"!]', - comment: 'abc annotation' - } - - ] - }; - - this.normalizeRules(); + ***********************************************************************************************/ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var ABCHighlightRules = function () { + this.$rules = { + start: [ + { + token: ['zupfnoter.information.comment.line.percentage', 'information.keyword', 'in formation.keyword.embedded'], + regex: '(%%%%)(hn\\.[a-z]*)(.*)', + comment: 'Instruction Comment' + }, + { + token: ['information.comment.line.percentage', 'information.keyword.embedded'], + regex: '(%%)(.*)', + comment: 'Instruction Comment' + }, + { + token: 'comment.line.percentage', + regex: '%.*', + comment: 'Comments' + }, + { + token: 'barline.keyword.operator', + regex: '[\\[:]*[|:][|\\]:]*(?:\\[?[0-9]+)?|\\[[0-9]+', + comment: 'Bar lines' + }, + { + token: ['information.keyword.embedded', 'information.argument.string.unquoted'], + regex: '(\\[[A-Za-z]:)([^\\]]*\\])', + comment: 'embedded Header lines' + }, + { + token: ['information.keyword', 'information.argument.string.unquoted'], + regex: '^([A-Za-z]:)([^%\\\\]*)', + comment: 'Header lines' + }, + { + token: ['text', 'entity.name.function', 'string.unquoted', 'text'], + regex: '(\\[)([A-Z]:)(.*?)(\\])', + comment: 'Inline fields' + }, + { + token: ['accent.constant.language', 'pitch.constant.numeric', 'duration.constant.numeric'], + regex: '([\\^=_]*)([A-Ga-gz][,\']*)([0-9]*/*[><0-9]*)', + comment: 'Notes' + }, + { + token: 'zupfnoter.jumptarget.string.quoted', + regex: '[\\"!]\\^\\:.*?[\\"!]', + comment: 'Zupfnoter jumptarget' + }, { + token: 'zupfnoter.goto.string.quoted', + regex: '[\\"!]\\^\\@.*?[\\"!]', + comment: 'Zupfnoter goto' + }, + { + token: 'zupfnoter.annotation.string.quoted', + regex: '[\\"!]\\^\\!.*?[\\"!]', + comment: 'Zupfnoter annoation' + }, + { + token: 'zupfnoter.annotationref.string.quoted', + regex: '[\\"!]\\^\\#.*?[\\"!]', + comment: 'Zupfnoter annotation reference' + }, + { + token: 'chordname.string.quoted', + regex: '[\\"!]\\^.*?[\\"!]', + comment: 'abc chord' + }, + { + token: 'string.quoted', + regex: '[\\"!].*?[\\"!]', + comment: 'abc annotation' + } + ] }; + this.normalizeRules(); +}; +ABCHighlightRules.metaData = { + fileTypes: ['abc'], + name: 'ABC', + scopeName: 'text.abcnotation' +}; +oop.inherits(ABCHighlightRules, TextHighlightRules); +exports.ABCHighlightRules = ABCHighlightRules; - ABCHighlightRules.metaData = { - fileTypes: ['abc'], - name: 'ABC', - scopeName: 'text.abcnotation' - }; - - - oop.inherits(ABCHighlightRules, TextHighlightRules); - - exports.ABCHighlightRules = ABCHighlightRules; }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -193,69 +167,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"], function (require, exports, module) { - "use strict"; +define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/abc_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js + */ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ABCHighlightRules = require("./abc_highlight_rules").ABCHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = ABCHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "%"; + this.$id = "ace/mode/abc"; + this.snippetFileId = "ace/snippets/abc"; +}).call(Mode.prototype); +exports.Mode = Mode; - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var ABCHighlightRules = require("./abc_highlight_rules").ABCHighlightRules; - var FoldMode = require("./folding/cstyle").FoldMode; - - var Mode = function () { - this.HighlightRules = ABCHighlightRules; - this.foldingRules = new FoldMode(); - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function () { - this.$id = "ace/mode/abc"; - }).call(Mode.prototype); - - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/abc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-actionscript.js b/vendor/assets/javascripts/ace/mode-actionscript.js index 2d9424da..2dc1fae5 100644 --- a/vendor/assets/javascripts/ace/mode-actionscript.js +++ b/vendor/assets/javascripts/ace/mode-actionscript.js @@ -1,190 +1,150 @@ -define("ace/mode/actionscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/actionscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from tm bundles\actionscript.tmbundle\Syntaxes\ActionScript.plist (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ActionScriptHighlightRules = function() { - - this.$rules = { start: - [ { token: 'support.class.actionscript.2', - regex: '\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b' }, - { token: 'support.function.actionscript.2', - regex: '\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b' }, - { token: 'support.constant.actionscript.2', - regex: '\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b' }, - { token: 'keyword.control.actionscript.2', - regex: '\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b' }, - { token: 'storage.type.actionscript.2', - regex: '\\b(?:Boolean|Number|String|Void)\\b' }, - { token: 'constant.language.actionscript.2', - regex: '\\b(?:null|undefined|true|false)\\b' }, - { token: 'constant.numeric.actionscript.2', - regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, - { token: 'punctuation.definition.string.begin.actionscript.2', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.actionscript.2', +var ActionScriptHighlightRules = function () { + this.$rules = { start: [{ token: 'support.class.actionscript.2', + regex: '\\b(?:R(?:ecordset|DBMSResolver|adioButton(?:Group)?)|X(?:ML(?:Socket|Node|Connector)?|UpdateResolverDataHolder)|M(?:M(?:Save|Execute)|icrophoneMicrophone|o(?:use|vieClip(?:Loader)?)|e(?:nu(?:Bar)?|dia(?:Controller|Display|Playback))|ath)|B(?:yName|inding|utton)|S(?:haredObject|ystem|crollPane|t(?:yleSheet|age|ream)|ound|e(?:ndEvent|rviceObject)|OAPCall|lide)|N(?:umericStepper|et(?:stream|S(?:tream|ervices)|Connection|Debug(?:Config)?))|C(?:heckBox|o(?:ntextMenu(?:Item)?|okie|lor|m(?:ponentMixins|boBox))|ustomActions|lient|amera)|T(?:ypedValue|ext(?:Snapshot|Input|F(?:ield|ormat)|Area)|ree|AB)|Object|D(?:ownload|elta(?:Item|Packet)?|at(?:e(?:Chooser|Field)?|a(?:G(?:lue|rid)|Set|Type)))|U(?:RL|TC|IScrollBar)|P(?:opUpManager|endingCall|r(?:intJob|o(?:duct|gressBar)))|E(?:ndPoint|rror)|Video|Key|F(?:RadioButton|GridColumn|MessageBox|BarChart|S(?:croll(?:Bar|Pane)|tyleFormat|plitView)|orm|C(?:heckbox|omboBox|alendar)|unction|T(?:icker|ooltip(?:Lite)?|ree(?:Node)?)|IconButton|D(?:ataGrid|raggablePane)|P(?:ieChart|ushButton|ro(?:gressBar|mptBox))|L(?:i(?:stBox|neChart)|oadingBox)|AdvancedMessageBox)|W(?:indow|SDLURL|ebService(?:Connector)?)|L(?:ist|o(?:calConnection|ad(?:er|Vars)|g)|a(?:unch|bel))|A(?:sBroadcaster|cc(?:ordion|essibility)|S(?:Set(?:Native|PropFlags)|N(?:ew|ative)|C(?:onstructor|lamp(?:2)?)|InstanceOf)|pplication|lert|rray))\\b' }, + { token: 'support.function.actionscript.2', + regex: '\\b(?:s(?:h(?:ift|ow(?:GridLines|Menu|Border|Settings|Headers|ColumnHeaders|Today|Preferences)?|ad(?:ow|ePane))|c(?:hema|ale(?:X|Mode|Y|Content)|r(?:oll(?:Track|Drag)?|een(?:Resolution|Color|DPI)))|t(?:yleSheet|op(?:Drag|A(?:nimation|llSounds|gent))?|epSize|a(?:tus|rt(?:Drag|A(?:nimation|gent))?))|i(?:n|ze|lence(?:TimeOut|Level))|o(?:ngname|urce|rt(?:Items(?:By)?|On(?:HeaderRelease)?|able(?:Columns)?)?)|u(?:ppressInvalidCalls|bstr(?:ing)?)|p(?:li(?:ce|t)|aceCol(?:umnsEqually|lumnsEqually))|e(?:nd(?:DefaultPushButtonEvent|AndLoad)?|curity|t(?:R(?:GB|o(?:otNode|w(?:Height|Count))|esizable(?:Columns)?|a(?:nge|te))|G(?:ain|roupName)|X(?:AxisTitle)?|M(?:i(?:n(?:imum|utes)|lliseconds)|o(?:nth(?:Names)?|tionLevel|de)|ultilineMode|e(?:ssage|nu(?:ItemEnabled(?:At)?|EnabledAt)|dia)|a(?:sk|ximum))|B(?:u(?:tton(?:s|Width)|fferTime)|a(?:seTabIndex|ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Target|P(?:osition|roperties)|barState|Location)|t(?:yle(?:Property)?|opOnFocus|at(?:us|e))|i(?:ze|lenceLevel)|ort(?:able(?:Columns)?|Function)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)?|Style|Color|ed(?:Node(?:s)?|Cell|I(?:nd(?:ices|ex)|tem(?:s)?))?|able))|kin|m(?:oothness|allScroll))|H(?:ighlight(?:s|Color)|Scroll|o(?:urs|rizontal)|eader(?:Symbol|Height|Text|Property|Format|Width|Location)?|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:ode(?:Properties|ExpansionHandler)|ewTextFormat)|C(?:h(?:ildNodes|a(?:ngeHandler|rt(?:Title|EventHandler)))|o(?:ntent(?:Size)?|okie|lumns)|ell(?:Symbol|Data)|l(?:i(?:ckHandler|pboard)|oseHandler)|redentials)|T(?:ype(?:dVaule)?|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:out(?:Handler)?)?)|oggle|extFormat|ransform)|I(?:s(?:Branch|Open)|n(?:terval|putProperty)|con(?:SymbolName)?|te(?:rator|m(?:ByKey|Symbol)))|Orientation|D(?:i(?:splay(?:Range|Graphics|Mode|Clip|Text|edMonth)|rection)|uration|e(?:pth(?:Below|To|Above)|fault(?:GatewayURL|Mappings|NodeIconSymbolName)|l(?:iveryMode|ay)|bug(?:ID)?)|a(?:yOfWeekNames|t(?:e(?:Filter)?|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Provider|All(?:Height|Property|Format|Width))?))|ra(?:wConnectors|gContent))|U(?:se(?:Shadow|HandCursor|EchoSuppression|rInput|Fade)|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear))|P(?:osition|ercentComplete|an(?:e(?:M(?:inimumSize|aximumSize)|Size|Title))?|ro(?:pert(?:y(?:Data)?|iesAt)|gress))|E(?:nabled|dit(?:Handler|able)|xpand(?:NodeTrigger|erSymbolName))|V(?:Scroll|olume|alue(?:Source)?)|KeyFrameInterval|Quality|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|ocus|ullYear|ps|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:opback|adTarget)|a(?:rgeScroll|bel(?:Source|Placement)?))|A(?:s(?:Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:e(?:State(?:Handler)?|Handler)|ateHandler)|utoH(?:ideScrollBar|eight)))?|paratorBefore|ek|lect(?:ion(?:Disabled|Unfocused)?|ed(?:Node(?:s)?|Child|I(?:nd(?:ices|ex)|tem(?:s)?)|Dat(?:e|a))?|able(?:Ranges)?)|rver(?:String)?)|kip|qrt|wapDepths|lice|aveToSharedObj|moothing)|h(?:scroll(?:Policy)?|tml(?:Text)?|i(?:t(?:Test(?:TextNearPos)?|Area)|de(?:BuiltInItems|Child)?|ghlight(?:2D|3D)?)|orizontal|e(?:ight|ader(?:Re(?:nderer|lease)|Height|Text))|P(?:osition|ageScrollSize)|a(?:s(?:childNodes|MP3|S(?:creen(?:Broadcast|Playback)|treaming(?:Video|Audio)|ort)|Next|OwnProperty|Pr(?:inting|evious)|EmbeddedVideo|VideoEncoder|A(?:ccesibility|udio(?:Encoder)?))|ndlerName)|LineScrollSize)|ye(?:sLabel|ar)|n(?:o(?:t|de(?:Name|Close|Type|Open|Value)|Label)|u(?:llValue|mChild(?:S(?:creens|lides)|ren|Forms))|e(?:w(?:Item|line|Value|LocationDialog)|xt(?:S(?:cene|ibling|lide)|TabIndex|Value|Frame)?)?|ame(?:s)?)|c(?:h(?:ildNodes|eck|a(?:nge(?:sPending)?|r(?:CodeAt|At))|r)|o(?:s|n(?:st(?:ant|ructor)|nect|c(?:urrency|at)|t(?:ent(?:Type|Path)?|ains|rol(?:Placement|lerPolicy))|denseWhite|version)|py|l(?:or|umn(?:Stretch|Name(?:s)?|Count))|m(?:p(?:onent|lete)|ment))|u(?:stomItems|ePoint(?:s)?|r(?:veTo|Value|rent(?:Slide|ChildSlide|Item|F(?:ocused(?:S(?:creen|lide)|Form)|ps))))|e(?:il|ll(?:Renderer|Press|Edit|Focus(?:In|Out)))|l(?:i(?:ck|ents)|o(?:se(?:Button|Pane)?|ne(?:Node)?)|ear(?:S(?:haredObjects|treams)|Timeout|Interval)?)|a(?:ncelLabel|tch|p(?:tion|abilities)|l(?:cFields|l(?:e(?:e|r))?))|reate(?:GatewayConnection|Menu|Se(?:rver|gment)|C(?:hild(?:AtDepth)?|l(?:ient|ass(?:ChildAtDepth|Object(?:AtDepth)?))|all)|Text(?:Node|Field)|Item|Object(?:AtDepth)?|PopUp|E(?:lement|mptyMovieClip)))|t(?:h(?:is|row)|ype(?:of|Name)?|i(?:tle(?:StyleDeclaration)?|me(?:out)?)|o(?:talTime|String|olTipText|p|UpperCase|ggle(?:HighQuality)?|Lo(?:caleString|werCase))|e(?:st|llTarget|xt(?:RightMargin|Bold|S(?:ize|elected)|Height|Color|I(?:ndent|talic)|Disabled|Underline|F(?:ield|ont)|Width|LeftMargin|Align)?)|a(?:n|rget(?:Path)?|b(?:Stops|Children|Index|Enabled|leName))|r(?:y|igger|ac(?:e|k(?:AsMenu)?)))|i(?:s(?:Running|Branch|NaN|Con(?:soleOpen|nected)|Toggled|Installed|Open|D(?:own|ebugger)|P(?:urchased|ro(?:totypeOf|pertyEnumerable))|Empty|F(?:inite|ullyPopulated)|Local|Active)|n(?:s(?:tall|ertBefore)|cludeDeltaPacketInfo|t|it(?:ialize|Component|Pod|A(?:pplication|gent))?|de(?:nt|terminate|x(?:InParent(?:Slide|Form)?|Of)?)|put|validate|finity|LocalInternetCache)?|con(?:F(?:ield|unction))?|t(?:e(?:ratorScrolled|m(?:s|RollO(?:ut|ver)|ClassName))|alic)|d3|p|fFrameLoaded|gnore(?:Case|White))|o(?:s|n(?:R(?:ollO(?:ut|ver)|e(?:s(?:ize|ult)|l(?:ease(?:Outside)?|aseOutside)))|XML|Mouse(?:Move|Down|Up|Wheel)|S(?:ync|croller|tatus|oundComplete|e(?:tFocus|lect(?:edItem)?))|N(?:oticeEvent|etworkChange)|C(?:hanged|onnect|l(?:ipEvent|ose))|ID3|D(?:isconnect|eactivate|ata|ragO(?:ut|ver))|Un(?:install|load)|P(?:aymentResult|ress)|EnterFrame|K(?:illFocus|ey(?:Down|Up))|Fault|Lo(?:ad|g)|A(?:ctiv(?:ity|ate)|ppSt(?:op|art)))?|pe(?:n|ration)|verLayChildren|kLabel|ldValue|r(?:d)?)|d(?:i(?:s(?:connect|play(?:Normal|ed(?:Month|Year)|Full)|able(?:Shader|d(?:Ranges|Days)|CloseBox|Events))|rection)|o(?:cTypeDecl|tall|Decoding|main|LazyDecoding)|u(?:plicateMovieClip|ration)|e(?:stroy(?:ChildAt|Object)|code|fault(?:PushButton(?:Enabled)?|KeydownHandler)?|l(?:ta(?:Packet(?:Changed)?)?|ete(?:PopUp|All)?)|blocking)|a(?:shBoardSave|yNames|ta(?:Provider)?|rkshadow)|r(?:opdown(?:Width)?|a(?:w|gO(?:ut|ver))))|u(?:se(?:Sort|HandCursor|Codepage|EchoSuppression)|n(?:shift|install|derline|escape|format|watch|lo(?:ck|ad(?:Movie(?:Num)?)?))|pdate(?:Results|Mode|I(?:nputProperties|tem(?:ByIndex)?)|P(?:acket|roperties)|View|AfterEvent)|rl)|join|p(?:ixelAspectRatio|o(?:sition|p|w)|u(?:sh|rge|blish)|ercen(?:tComplete|Loaded)|lay(?:head(?:Change|Time)|ing|Hidden|erType)?|a(?:ssword|use|r(?:se(?:XML|CSS|Int|Float)|ent(?:Node|Is(?:S(?:creen|lide)|Form))|ams))|r(?:int(?:Num|AsBitmap(?:Num)?)?|o(?:to(?:type)?|pert(?:y|ies)|gress)|e(?:ss|v(?:ious(?:S(?:ibling|lide)|Value)?|Scene|Frame)|ferred(?:Height|Width))))|e(?:scape|n(?:code(?:r)?|ter(?:Frame)?|dFill|able(?:Shader|d|CloseBox|Events))|dit(?:able|Field|LocationDialog)|v(?:ent|al(?:uate)?)|q|x(?:tended|p|ec(?:ute)?|actSettings)|m(?:phasized(?:StyleDeclaration)?|bedFonts))|v(?:i(?:sible|ewPod)|ScrollPolicy|o(?:id|lume)|ersion|P(?:osition|ageScrollSize)|a(?:l(?:idat(?:ionError|e(?:Property|ActivationKey)?)|ue(?:Of)?)|riable)|LineScrollSize)|k(?:ind|ey(?:Down|Up|Press|FrameInterval))|q(?:sort|uality)|f(?:scommand|i(?:n(?:d(?:Text|First|Last)?|ally)|eldInfo|lter(?:ed|Func)?|rst(?:Slide|Child|DayOfWeek|VisibleNode)?)|o(?:nt|cus(?:In|edCell|Out|Enabled)|r(?:egroundDisabled|mat(?:ter)?))|unctionName|ps|l(?:oor|ush)|ace|romCharCode)|w(?:i(?:th|dth)|ordWrap|atch|riteAccess)|l(?:t|i(?:st(?:Owner)?|ne(?:Style|To))|o(?:c(?:k|a(?:t(?:ion|eByld)|l(?:ToGlobal|FileReadDisable)))|opback|ad(?:Movie(?:Num)?|S(?:crollContent|ound)|ed|Variables(?:Num)?|Application)?|g(?:Changes)?)|e(?:ngth|ft(?:Margin)?|ading)?|a(?:st(?:Slide|Child|Index(?:Of)?)?|nguage|b(?:el(?:Placement|F(?:ield|unction))?|leField)))|a(?:s(?:scociate(?:Controller|Display)|in|pectRatio|function)|nd|c(?:ceptConnection|tiv(?:ityLevel|ePlayControl)|os)|t(?:t(?:ach(?:Movie|Sound|Video|Audio)|ributes)|an(?:2)?)|dd(?:header|RequestHeader|Menu(?:Item(?:At)?|At)?|Sort|Header|No(?:tice|de(?:At)?)|C(?:olumn(?:At)?|uePoint)|T(?:oLocalInternetCache|reeNode(?:At)?)|I(?:con|tem(?:s(?:At)?|At)?)|DeltaItem|P(?:od|age|roperty)|EventListener|View|FieldInfo|Listener|Animation)?|uto(?:Size|Play|KeyNav|Load)|pp(?:endChild|ly(?:Changes|Updates)?)|vHardwareDisable|fterLoaded|l(?:ternateRowColors|ign|l(?:ow(?:InsecureDomain|Domain)|Transitions(?:InDone|OutDone))|bum)|r(?:tist|row|g(?:uments|List))|gent|bs)|r(?:ight(?:Margin)?|o(?:ot(?:S(?:creen|lide)|Form)|und|w(?:Height|Count)|llO(?:ut|ver))|e(?:s(?:yncDepth|t(?:orePane|artAnimation|rict)|iz(?:e|able(?:Columns)?)|olveDelta|ult(?:s)?|ponse)|c(?:o(?:ncile(?:Results|Updates)|rd)|eive(?:Video|Audio))|draw|jectConnection|place(?:Sel|ItemAt|AllItems)?|ve(?:al(?:Child)?|rse)|quest(?:SizeChange|Payment)?|f(?:errer|resh(?:ScrollContent|Destinations|Pane|FromSources)?)|lease(?:Outside)?|ad(?:Only|Access)|gister(?:SkinElement|C(?:olor(?:Style|Name)|lass)|InheritingStyle|Proxy)|move(?:Range|M(?:ovieClip|enu(?:Item(?:At)?|At))|Background|Sort|No(?:tice|de(?:sAt|At)?)|C(?:olum(?:nAt|At)|uePoints)|T(?:extField|reeNode(?:At)?)|Item(?:At)?|Pod|EventListener|FromLocalInternetCache|Listener|All(?:C(?:olumns|uePoints)|Items)?))|a(?:ndom|te|dioDot))|g(?:t|oto(?:Slide|NextSlide|PreviousSlide|FirstSlide|LastSlide|And(?:Stop|Play))|e(?:nre|t(?:R(?:GB|o(?:otNode|wCount)|e(?:sizable|mote))|X(?:AxisTitle)?|M(?:i(?:n(?:imum(?:Size)?|utes)|lliseconds)|onth(?:Names)?|ultilineMode|e(?:ssage|nu(?:ItemAt|EnabledAt|At))|aximum(?:Size)?)|B(?:ytes(?:Total|Loaded)|ounds|utton(?:s|Width)|eginIndex|a(?:ndwidthLimit|ckground))|S(?:howAsDisabled|croll(?:ing|Speed|Content|Position|barState|Location)|t(?:yle(?:Names)?|opOnFocus|ate)|ize|o(?:urce|rtState)|p(?:litterBarPosition|acing)|e(?:conds|lect(?:Multiple|ion(?:Required|Type)|Style|ed(?:Node(?:s)?|Cell|Text|I(?:nd(?:ices|ex)|tem(?:s)?))?)|rvice)|moothness|WFVersion)|H(?:ighlight(?:s|Color)|ours|e(?:ight|ader(?:Height|Text|Property|Format|Width|Location)?)|as(?:Shader|CloseBox))|Y(?:ear|AxisTitle)?|N(?:o(?:tices|de(?:DisplayedAt|At))|um(?:Children|berAvailable)|e(?:wTextFormat|xtHighestDepth))|C(?:h(?:ild(?:S(?:creen|lide)|Nodes|Form|At)|artTitle)|o(?:n(?:tent|figInfo)|okie|de|unt|lumn(?:Names|Count|Index|At))|uePoint|ellIndex|loseHandler|a(?:ll|retIndex))|T(?:ypedValue|i(?:tle(?:barHeight)?|p(?:Target|Offset)?|me(?:stamp|zoneOffset|out(?:State|Handler)|r)?)|oggle|ext(?:Extent|Format)?|r(?:ee(?:NodeAt|Length)|ans(?:form|actionId)))|I(?:s(?:Branch|Open)|n(?:stanceAtDepth|d(?:icesByKey|exByKey))|con(?:SymbolName)?|te(?:rator|m(?:sByKey|By(?:Name|Key)|id|ID|At))|d)|O(?:utput(?:Parameter(?:s|ByName)?|Value(?:s)?)|peration|ri(?:entation|ginalCellData))|D(?:i(?:s(?:play(?:Range|Mode|Clip|Index|edMonth)|kUsage)|rection)|uration|e(?:pth|faultNodeIconSymbolName|l(?:taPacket|ay)|bug(?:Config|ID)?)|a(?:y(?:OfWeekNames)?|t(?:e|a(?:Mapping(?:s)?|Item(?:Text|Property|Format)|Label|All(?:Height|Property|Format|Width))?))|rawConnectors)|U(?:se(?:Shadow|HandCursor|rInput|Fade)|RL|TC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear))|P(?:o(?:sition|ds)|ercentComplete|a(?:n(?:e(?:M(?:inimums|aximums)|Height|Title|Width))?|rentNode)|r(?:operty(?:Name|Data)?|efer(?:ences|red(?:Height|Width))))|E(?:n(?:dIndex|abled)|ditingData|x(?:panderSymbolName|andNodeTrigger))|V(?:iewed(?:Pods|Applications)|olume|ersion|alue(?:Source)?)|F(?:i(?:eld|rst(?:DayOfWeek|VisibleNode))|o(?:ntList|cus)|ullYear|ade(?:InLength|OutLength)|rame(?:Color|Width))|Width|L(?:ine(?:Color|Weight)|o(?:cal|adTarget)|ength|a(?:stTabIndex|bel(?:Source)?))|A(?:s(?:cii|Boolean|String|Number)|n(?:yTypedValue|imation)|ctiv(?:eState(?:Handler)?|ateHandler)|utoH(?:ideScrollBar|eight)|llItems|gent))?)?|lobal(?:StyleFormat|ToLocal)?|ain|roupName)|x(?:updatePackety|mlDecl)?|m(?:y(?:MethodName|Call)|in(?:imum)?|o(?:nthNames|tion(?:TimeOut|Level)|de(?:lChanged)?|use(?:Move|O(?:ut|ver)|Down(?:Somewhere|Outside)?|Up(?:Somewhere)?|WheelEnabled)|ve(?:To)?)|u(?:ted|lti(?:pleS(?:imultaneousAllowed|elections)|line))|e(?:ssage|nu(?:Show|Hide)?|th(?:od)?|diaType)|a(?:nufacturer|tch|x(?:scroll|hscroll|imum|HPosition|Chars|VPosition)?)|b(?:substring|chr|ord|length))|b(?:ytes(?:Total|Loaded)|indFormat(?:Strings|Function)|o(?:ttom(?:Scroll)?|ld|rder(?:Color)?)|u(?:tton(?:Height|Width)|iltInItems|ffer(?:Time|Length)|llet)|e(?:foreApplyUpdates|gin(?:GradientFill|Fill))|lockIndent|a(?:ndwidth|ckground(?:Style|Color|Disabled)?)|roadcastMessage)|onHTTPStatus)\\b' }, + { token: 'support.constant.actionscript.2', + regex: '\\b(?:__proto__|__resolve|_accProps|_alpha|_changed|_currentframe|_droptarget|_flash|_focusrect|_framesloaded|_global|_height|_highquality|_level|_listeners|_lockroot|_name|_parent|_quality|_root|_rotation|_soundbuftime|_target|_totalframes|_url|_visible|_width|_x|_xmouse|_xscale|_y|_ymouse|_yscale)\\b' }, + { token: 'keyword.control.actionscript.2', + regex: '\\b(?:dynamic|extends|import|implements|interface|public|private|new|static|super|var|for|in|break|continue|while|do|return|if|else|case|switch)\\b' }, + { token: 'storage.type.actionscript.2', + regex: '\\b(?:Boolean|Number|String|Void)\\b' }, + { token: 'constant.language.actionscript.2', + regex: '\\b(?:null|undefined|true|false)\\b' }, + { token: 'constant.numeric.actionscript.2', + regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, + { token: 'punctuation.definition.string.begin.actionscript.2', regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.actionscript.2', - regex: '\\\\.' }, - { defaultToken: 'string.quoted.double.actionscript.2' } ] }, - { token: 'punctuation.definition.string.begin.actionscript.2', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.actionscript.2', + push: [{ token: 'punctuation.definition.string.end.actionscript.2', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.actionscript.2', + regex: '\\\\.' }, + { defaultToken: 'string.quoted.double.actionscript.2' }] }, + { token: 'punctuation.definition.string.begin.actionscript.2', regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.actionscript.2', - regex: '\\\\.' }, - { defaultToken: 'string.quoted.single.actionscript.2' } ] }, - { token: 'support.constant.actionscript.2', - regex: '\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b' }, - { token: 'punctuation.definition.comment.actionscript.2', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.actionscript.2', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.actionscript.2' } ] }, - { token: 'punctuation.definition.comment.actionscript.2', - regex: '//.*$', - push_: - [ { token: 'comment.line.double-slash.actionscript.2', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-slash.actionscript.2' } ] }, - { token: 'keyword.operator.actionscript.2', - regex: '\\binstanceof\\b' }, - { token: 'keyword.operator.symbolic.actionscript.2', - regex: '[-!%&*+=/?:]' }, - { token: - [ 'meta.preprocessor.actionscript.2', - 'punctuation.definition.preprocessor.actionscript.2', - 'meta.preprocessor.actionscript.2' ], - regex: '^([ \\t]*)(#)([a-zA-Z]+)' }, - { token: - [ 'storage.type.function.actionscript.2', - 'meta.function.actionscript.2', - 'entity.name.function.actionscript.2', - 'meta.function.actionscript.2', - 'punctuation.definition.parameters.begin.actionscript.2' ], - regex: '\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()', - push: - [ { token: 'punctuation.definition.parameters.end.actionscript.2', - regex: '\\)', - next: 'pop' }, - { token: 'variable.parameter.function.actionscript.2', - regex: '[^,)$]+' }, - { defaultToken: 'meta.function.actionscript.2' } ] }, - { token: - [ 'storage.type.class.actionscript.2', - 'meta.class.actionscript.2', - 'entity.name.type.class.actionscript.2', - 'meta.class.actionscript.2', - 'storage.modifier.extends.actionscript.2', - 'meta.class.actionscript.2', - 'entity.other.inherited-class.actionscript.2' ], - regex: '\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?' } ] }; - + push: [{ token: 'punctuation.definition.string.end.actionscript.2', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.actionscript.2', + regex: '\\\\.' }, + { defaultToken: 'string.quoted.single.actionscript.2' }] }, + { token: 'support.constant.actionscript.2', + regex: '\\b(?:BACKSPACE|CAPSLOCK|CONTROL|DELETEKEY|DOWN|END|ENTER|HOME|INSERT|LEFT|LN10|LN2|LOG10E|LOG2E|MAX_VALUE|MIN_VALUE|NEGATIVE_INFINITY|NaN|PGDN|PGUP|PI|POSITIVE_INFINITY|RIGHT|SPACE|SQRT1_2|SQRT2|UP)\\b' }, + { token: 'punctuation.definition.comment.actionscript.2', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.actionscript.2', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.actionscript.2' }] }, + { token: 'punctuation.definition.comment.actionscript.2', + regex: '//.*$', + push_: [{ token: 'comment.line.double-slash.actionscript.2', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-slash.actionscript.2' }] }, + { token: 'keyword.operator.actionscript.2', + regex: '\\binstanceof\\b' }, + { token: 'keyword.operator.symbolic.actionscript.2', + regex: '[-!%&*+=/?:]' }, + { token: ['meta.preprocessor.actionscript.2', + 'punctuation.definition.preprocessor.actionscript.2', + 'meta.preprocessor.actionscript.2'], + regex: '^([ \\t]*)(#)([a-zA-Z]+)' }, + { token: ['storage.type.function.actionscript.2', + 'meta.function.actionscript.2', + 'entity.name.function.actionscript.2', + 'meta.function.actionscript.2', + 'punctuation.definition.parameters.begin.actionscript.2'], + regex: '\\b(function)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()', + push: [{ token: 'punctuation.definition.parameters.end.actionscript.2', + regex: '\\)', + next: 'pop' }, + { token: 'variable.parameter.function.actionscript.2', + regex: '[^,)$]+' }, + { defaultToken: 'meta.function.actionscript.2' }] }, + { token: ['storage.type.class.actionscript.2', + 'meta.class.actionscript.2', + 'entity.name.type.class.actionscript.2', + 'meta.class.actionscript.2', + 'storage.modifier.extends.actionscript.2', + 'meta.class.actionscript.2', + 'entity.other.inherited-class.actionscript.2'], + regex: '\\b(class)(\\s+)([a-zA-Z_](?:\\w|\\.)*)(?:(\\s+)(extends)(\\s+)([a-zA-Z_](?:\\w|\\.)*))?' }] }; this.normalizeRules(); }; - -ActionScriptHighlightRules.metaData = { fileTypes: [ 'as' ], - keyEquivalent: '^~A', - name: 'ActionScript', - scopeName: 'source.actionscript.2' }; - - +ActionScriptHighlightRules.metaData = { fileTypes: ['as'], + keyEquivalent: '^~A', + name: 'ActionScript', + scopeName: 'source.actionscript.2' }; oop.inherits(ActionScriptHighlightRules, TextHighlightRules); - exports.ActionScriptHighlightRules = ActionScriptHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -197,71 +157,78 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/actionscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/actionscript_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/actionscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/actionscript_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ActionScriptHighlightRules = require("./actionscript_highlight_rules").ActionScriptHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ActionScriptHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/actionscript"; + this.snippetFileId = "ace/snippets/actionscript"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/actionscript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-ada.js b/vendor/assets/javascripts/ace/mode-ada.js index 22738c35..fe91d708 100644 --- a/vendor/assets/javascripts/ace/mode-ada.js +++ b/vendor/assets/javascripts/ace/mode-ada.js @@ -1,87 +1,108 @@ -define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AdaHighlightRules = function() { -var keywords = "abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|" + -"access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|" + -"array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|" + -"body|private|then|if|procedure|type|case|in|protected|constant|interface|until|" + -"|is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - +var AdaHighlightRules = function () { + var keywords = "abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|" + + "access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|" + + "array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|" + + "body|private|then|if|procedure|type|case|in|protected|constant|interface|until|" + + "|is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor"; + var builtinConstants = ("true|false|null"); + var builtinFunctions = ("count|min|max|avg|sum|rank|now|coalesce|main"); var keywordMapper = this.createKeywordMapper({ "support.function": builtinFunctions, "keyword": keywords, "constant.language": builtinConstants }, "identifier", true); - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] + "start": [{ + token: "comment", + regex: "--.*$" + }, { + token: "string", // " string + regex: '".*?"' + }, { + token: "string", // character + regex: "'.'" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + }] }; }; - oop.inherits(AdaHighlightRules, TextHighlightRules); - exports.AdaHighlightRules = AdaHighlightRules; + }); -define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var AdaHighlightRules = require("./ada_highlight_rules").AdaHighlightRules; - -var Mode = function() { +var Range = require("../range").Range; +var Mode = function () { this.HighlightRules = AdaHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "--"; - + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*(begin|loop|then|is|do)\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + var complete_line = line + input; + if (complete_line.match(/^\s*(begin|end)$/)) { + return true; + } + return false; + }; + this.autoOutdent = function (state, session, row) { + var line = session.getLine(row); + var prevLine = session.getLine(row - 1); + var prevIndent = this.$getIndent(prevLine).length; + var indent = this.$getIndent(line).length; + if (indent <= prevIndent) { + return; + } + session.outdentRows(new Range(row, 0, row + 2, 0)); + }; this.$id = "ace/mode/ada"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/ada"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-alda.js b/vendor/assets/javascripts/ace/mode-alda.js new file mode 100644 index 00000000..b54df15a --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-alda.js @@ -0,0 +1,279 @@ +define("ace/mode/alda_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from ../../src/alda.JSON-tmLanguage (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var AldaHighlightRules = function () { + this.$rules = { + pitch: [{ + token: "variable.parameter.operator.pitch.alda", + regex: /(?:[+\-]+|\=)/ + }, { + token: "", + regex: "", + next: "timing" + }], + timing: [{ + token: "string.quoted.operator.timing.alda", + regex: /\d+(?:s|ms)?/ + }, { + token: "", + regex: "", + next: "start" + }], + start: [{ + token: [ + "constant.language.instrument.alda", + "constant.language.instrument.alda", + "meta.part.call.alda", + "storage.type.nickname.alda", + "meta.part.call.alda" + ], + regex: /^([a-zA-Z]{2}[\w\-+\'()]*)((?:\s*\/\s*[a-zA-Z]{2}[\w\-+\'()]*)*)(?:(\s*)(\"[a-zA-Z]{2}[\w\-+\'()]*\"))?(\s*:)/ + }, { + token: [ + "text", + "entity.other.inherited-class.voice.alda", + "text" + ], + regex: /^(\s*)(V\d+)(:)/ + }, { + token: "comment.line.number-sign.alda", + regex: /#.*$/ + }, { + token: "entity.name.function.pipe.measure.alda", + regex: /\|/ + }, { + token: "comment.block.inline.alda", + regex: /\(comment\b/, + push: [{ + token: "comment.block.inline.alda", + regex: /\)/, + next: "pop" + }, { + defaultToken: "comment.block.inline.alda" + }] + }, { + token: "entity.name.function.marker.alda", + regex: /%[a-zA-Z]{2}[\w\-+\'()]*/ + }, { + token: "entity.name.function.at-marker.alda", + regex: /@[a-zA-Z]{2}[\w\-+\'()]*/ + }, { + token: "keyword.operator.octave-change.alda", + regex: /\bo\d+\b/ + }, { + token: "keyword.operator.octave-shift.alda", + regex: /[><]/ + }, { + token: "keyword.operator.repeat.alda", + regex: /\*\s*\d+/ + }, { + token: "string.quoted.operator.timing.alda", + regex: /[.]|r\d*(?:s|ms)?/ + }, { + token: "text", + regex: /([cdefgab])/, + next: "pitch" + }, { + token: "string.quoted.operator.timing.alda", + regex: /~/, + next: "timing" + }, { + token: "punctuation.section.embedded.cram.alda", + regex: /\}/, + next: "timing" + }, { + token: "constant.numeric.subchord.alda", + regex: /\// + }, { + todo: { + token: "punctuation.section.embedded.cram.alda", + regex: /\{/, + push: [{ + token: "punctuation.section.embedded.cram.alda", + regex: /\}/, + next: "pop" + }, { + include: "$self" + }] + } + }, { + todo: { + token: "keyword.control.sequence.alda", + regex: /\[/, + push: [{ + token: "keyword.control.sequence.alda", + regex: /\]/, + next: "pop" + }, { + include: "$self" + }] + } + }, { + token: "meta.inline.clojure.alda", + regex: /\(/, + push: [{ + token: "meta.inline.clojure.alda", + regex: /\)/, + next: "pop" + }, { + include: "source.clojure" + }, { + defaultToken: "meta.inline.clojure.alda" + }] + }] + }; + this.normalizeRules(); +}; +AldaHighlightRules.metaData = { + scopeName: "source.alda", + fileTypes: ["alda"], + name: "Alda" +}; +oop.inherits(AldaHighlightRules, TextHighlightRules); +exports.AldaHighlightRules = AldaHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/alda",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/alda_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var AldaHighlightRules = require("./alda_highlight_rules").AldaHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = AldaHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/alda"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/alda"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-apache_conf.js b/vendor/assets/javascripts/ace/mode-apache_conf.js index 1b465242..237e73e3 100644 --- a/vendor/assets/javascripts/ace/mode-apache_conf.js +++ b/vendor/assets/javascripts/ace/mode-apache_conf.js @@ -1,280 +1,236 @@ -define("ace/mode/apache_conf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/apache_conf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.github.com/colinta/ApacheConf.tmLanguage/master/ApacheConf.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ApacheConfHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'punctuation.definition.comment.apacheconf', - 'comment.line.hash.ini', - 'comment.line.hash.ini' ], - regex: '^((?:\\s)*)(#)(.*$)' }, - { token: - [ 'punctuation.definition.tag.apacheconf', - 'entity.tag.apacheconf', - 'text', - 'string.value.apacheconf', - 'punctuation.definition.tag.apacheconf' ], - regex: '(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)' }, - { token: - [ 'punctuation.definition.tag.apacheconf', - 'entity.tag.apacheconf', - 'punctuation.definition.tag.apacheconf' ], - regex: '()' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.replacement.apacheconf', 'text' ], - regex: '(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'entity.status.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'entity.status.apacheconf', 'text', - 'string.path.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.regexp.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?' }, - { token: - [ 'keyword.alias.apacheconf', 'text', - 'string.path.apacheconf', 'text', - 'string.path.apacheconf', 'text' ], - regex: '(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, - { token: 'keyword.core.apacheconf', - regex: '\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b' }, - { token: 'keyword.mpm.apacheconf', - regex: '\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b' }, - { token: 'keyword.access.apacheconf', - regex: '\\b(?:Allow|Deny|Order)\\b' }, - { token: 'keyword.actions.apacheconf', - regex: '\\b(?:Action|Script)\\b' }, - { token: 'keyword.alias.apacheconf', - regex: '\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b' }, - { token: 'keyword.auth.apacheconf', - regex: '\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b' }, - { token: 'keyword.auth_anon.apacheconf', - regex: '\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b' }, - { token: 'keyword.auth_dbm.apacheconf', - regex: '\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b' }, - { token: 'keyword.auth_digest.apacheconf', - regex: '\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b' }, - { token: 'keyword.auth_ldap.apacheconf', - regex: '\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b' }, - { token: 'keyword.autoindex.apacheconf', - regex: '\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b' }, - { token: 'keyword.cache.apacheconf', - regex: '\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b' }, - { token: 'keyword.cern_meta.apacheconf', - regex: '\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b' }, - { token: 'keyword.cgi.apacheconf', - regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b' }, - { token: 'keyword.cgid.apacheconf', - regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b' }, - { token: 'keyword.charset_lite.apacheconf', - regex: '\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b' }, - { token: 'keyword.dav.apacheconf', - regex: '\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b' }, - { token: 'keyword.deflate.apacheconf', - regex: '\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b' }, - { token: 'keyword.dir.apacheconf', - regex: '\\b(?:DirectoryIndex|DirectorySlash)\\b' }, - { token: 'keyword.disk_cache.apacheconf', - regex: '\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b' }, - { token: 'keyword.dumpio.apacheconf', - regex: '\\b(?:DumpIOInput|DumpIOOutput)\\b' }, - { token: 'keyword.env.apacheconf', - regex: '\\b(?:PassEnv|SetEnv|UnsetEnv)\\b' }, - { token: 'keyword.expires.apacheconf', - regex: '\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b' }, - { token: 'keyword.ext_filter.apacheconf', - regex: '\\b(?:ExtFilterDefine|ExtFilterOptions)\\b' }, - { token: 'keyword.file_cache.apacheconf', - regex: '\\b(?:CacheFile|MMapFile)\\b' }, - { token: 'keyword.headers.apacheconf', - regex: '\\b(?:Header|RequestHeader)\\b' }, - { token: 'keyword.imap.apacheconf', - regex: '\\b(?:ImapBase|ImapDefault|ImapMenu)\\b' }, - { token: 'keyword.include.apacheconf', - regex: '\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b' }, - { token: 'keyword.isapi.apacheconf', - regex: '\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b' }, - { token: 'keyword.ldap.apacheconf', - regex: '\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b' }, - { token: 'keyword.log.apacheconf', - regex: '\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b' }, - { token: 'keyword.mem_cache.apacheconf', - regex: '\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b' }, - { token: 'keyword.mime.apacheconf', - regex: '\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b' }, - { token: 'keyword.misc.apacheconf', - regex: '\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b' }, - { token: 'keyword.negotiation.apacheconf', - regex: '\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b' }, - { token: 'keyword.nw_ssl.apacheconf', - regex: '\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b' }, - { token: 'keyword.proxy.apacheconf', - regex: '\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b' }, - { token: 'keyword.rewrite.apacheconf', - regex: '\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b' }, - { token: 'keyword.setenvif.apacheconf', - regex: '\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b' }, - { token: 'keyword.so.apacheconf', - regex: '\\b(?:LoadFile|LoadModule)\\b' }, - { token: 'keyword.ssl.apacheconf', - regex: '\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b' }, - { token: 'keyword.usertrack.apacheconf', - regex: '\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b' }, - { token: 'keyword.vhost_alias.apacheconf', - regex: '\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b' }, - { token: - [ 'keyword.php.apacheconf', - 'text', - 'entity.property.apacheconf', - 'text', - 'string.value.apacheconf', - 'text' ], - regex: '\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)' }, - { token: - [ 'punctuation.variable.apacheconf', - 'variable.env.apacheconf', - 'variable.misc.apacheconf', - 'punctuation.variable.apacheconf' ], - regex: '(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})' }, - { token: [ 'entity.mime-type.apacheconf', 'text' ], - regex: '\\b((?:text|image|application|video|audio)/.+?)(\\s)' }, - { token: 'entity.helper.apacheconf', - regex: '\\b(?:from|unset|set|on|off)\\b', - caseInsensitive: true }, - { token: 'constant.integer.apacheconf', regex: '\\b\\d+\\b' }, - { token: - [ 'text', - 'punctuation.definition.flag.apacheconf', - 'string.flag.apacheconf', - 'punctuation.definition.flag.apacheconf', - 'text' ], - regex: '(\\s)(\\[)(.*?)(\\])(\\s)' } ] }; - +var ApacheConfHighlightRules = function () { + this.$rules = { start: [{ token: ['punctuation.definition.comment.apacheconf', + 'comment.line.hash.ini', + 'comment.line.hash.ini'], + regex: '^((?:\\s)*)(#)(.*$)' }, + { token: ['punctuation.definition.tag.apacheconf', + 'entity.tag.apacheconf', + 'text', + 'string.value.apacheconf', + 'punctuation.definition.tag.apacheconf'], + regex: '(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost)(?:(\\s)(.+?))?(>)' }, + { token: ['punctuation.definition.tag.apacheconf', + 'entity.tag.apacheconf', + 'punctuation.definition.tag.apacheconf'], + regex: '()' }, + { token: ['keyword.alias.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.replacement.apacheconf', 'text'], + regex: '(Rewrite(?:Rule|Cond))(\\s+)(.+?)(\\s+)(.+?)($|\\s)' }, + { token: ['keyword.alias.apacheconf', 'text', + 'entity.status.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.path.apacheconf', 'text'], + regex: '(RedirectMatch)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: ['keyword.alias.apacheconf', 'text', + 'entity.status.apacheconf', 'text', + 'string.path.apacheconf', 'text', + 'string.path.apacheconf', 'text'], + regex: '(Redirect)(?:(\\s+)(\\d\\d\\d|permanent|temp|seeother|gone))?(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: ['keyword.alias.apacheconf', 'text', + 'string.regexp.apacheconf', 'text', + 'string.path.apacheconf', 'text'], + regex: '(ScriptAliasMatch|AliasMatch)(\\s+)(.+?)(\\s+)(?:(.+?)(\\s))?' }, + { token: ['keyword.alias.apacheconf', 'text', + 'string.path.apacheconf', 'text', + 'string.path.apacheconf', 'text'], + regex: '(RedirectPermanent|RedirectTemp|ScriptAlias|Alias)(\\s+)(.+?)(\\s+)(?:(.+?)($|\\s))?' }, + { token: 'keyword.core.apacheconf', + regex: '\\b(?:AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|TimeOut|TraceEnable|UseCanonicalName)\\b' }, + { token: 'keyword.mpm.apacheconf', + regex: '\\b(?:AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b' }, + { token: 'keyword.access.apacheconf', + regex: '\\b(?:Allow|Deny|Order)\\b' }, + { token: 'keyword.actions.apacheconf', + regex: '\\b(?:Action|Script)\\b' }, + { token: 'keyword.alias.apacheconf', + regex: '\\b(?:Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b' }, + { token: 'keyword.auth.apacheconf', + regex: '\\b(?:AuthAuthoritative|AuthGroupFile|AuthUserFile)\\b' }, + { token: 'keyword.auth_anon.apacheconf', + regex: '\\b(?:Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b' }, + { token: 'keyword.auth_dbm.apacheconf', + regex: '\\b(?:AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b' }, + { token: 'keyword.auth_digest.apacheconf', + regex: '\\b(?:AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize)\\b' }, + { token: 'keyword.auth_ldap.apacheconf', + regex: '\\b(?:AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b' }, + { token: 'keyword.autoindex.apacheconf', + regex: '\\b(?:AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|ReadmeName)\\b' }, + { token: 'keyword.cache.apacheconf', + regex: '\\b(?:CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b' }, + { token: 'keyword.cern_meta.apacheconf', + regex: '\\b(?:MetaDir|MetaFiles|MetaSuffix)\\b' }, + { token: 'keyword.cgi.apacheconf', + regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b' }, + { token: 'keyword.cgid.apacheconf', + regex: '\\b(?:ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b' }, + { token: 'keyword.charset_lite.apacheconf', + regex: '\\b(?:CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b' }, + { token: 'keyword.dav.apacheconf', + regex: '\\b(?:Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b' }, + { token: 'keyword.deflate.apacheconf', + regex: '\\b(?:DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b' }, + { token: 'keyword.dir.apacheconf', + regex: '\\b(?:DirectoryIndex|DirectorySlash)\\b' }, + { token: 'keyword.disk_cache.apacheconf', + regex: '\\b(?:CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b' }, + { token: 'keyword.dumpio.apacheconf', + regex: '\\b(?:DumpIOInput|DumpIOOutput)\\b' }, + { token: 'keyword.env.apacheconf', + regex: '\\b(?:PassEnv|SetEnv|UnsetEnv)\\b' }, + { token: 'keyword.expires.apacheconf', + regex: '\\b(?:ExpiresActive|ExpiresByType|ExpiresDefault)\\b' }, + { token: 'keyword.ext_filter.apacheconf', + regex: '\\b(?:ExtFilterDefine|ExtFilterOptions)\\b' }, + { token: 'keyword.file_cache.apacheconf', + regex: '\\b(?:CacheFile|MMapFile)\\b' }, + { token: 'keyword.headers.apacheconf', + regex: '\\b(?:Header|RequestHeader)\\b' }, + { token: 'keyword.imap.apacheconf', + regex: '\\b(?:ImapBase|ImapDefault|ImapMenu)\\b' }, + { token: 'keyword.include.apacheconf', + regex: '\\b(?:SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b' }, + { token: 'keyword.isapi.apacheconf', + regex: '\\b(?:ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b' }, + { token: 'keyword.ldap.apacheconf', + regex: '\\b(?:LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b' }, + { token: 'keyword.log.apacheconf', + regex: '\\b(?:BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b' }, + { token: 'keyword.mem_cache.apacheconf', + regex: '\\b(?:MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b' }, + { token: 'keyword.mime.apacheconf', + regex: '\\b(?:AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b' }, + { token: 'keyword.misc.apacheconf', + regex: '\\b(?:ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b' }, + { token: 'keyword.negotiation.apacheconf', + regex: '\\b(?:CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b' }, + { token: 'keyword.nw_ssl.apacheconf', + regex: '\\b(?:NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b' }, + { token: 'keyword.proxy.apacheconf', + regex: '\\b(?:AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b' }, + { token: 'keyword.rewrite.apacheconf', + regex: '\\b(?:RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b' }, + { token: 'keyword.setenvif.apacheconf', + regex: '\\b(?:BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b' }, + { token: 'keyword.so.apacheconf', + regex: '\\b(?:LoadFile|LoadModule)\\b' }, + { token: 'keyword.ssl.apacheconf', + regex: '\\b(?:SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth)\\b' }, + { token: 'keyword.usertrack.apacheconf', + regex: '\\b(?:CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b' }, + { token: 'keyword.vhost_alias.apacheconf', + regex: '\\b(?:VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b' }, + { token: ['keyword.php.apacheconf', + 'text', + 'entity.property.apacheconf', + 'text', + 'string.value.apacheconf', + 'text'], + regex: '\\b(php_value|php_flag)\\b(?:(\\s+)(.+?)(?:(\\s+)(.+?))?)?(\\s)' }, + { token: ['punctuation.variable.apacheconf', + 'variable.env.apacheconf', + 'variable.misc.apacheconf', + 'punctuation.variable.apacheconf'], + regex: '(%\\{)(?:(HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})' }, + { token: ['entity.mime-type.apacheconf', 'text'], + regex: '\\b((?:text|image|application|video|audio)/.+?)(\\s)' }, + { token: 'entity.helper.apacheconf', + regex: '\\b(?:from|unset|set|on|off)\\b', + caseInsensitive: true }, + { token: 'constant.integer.apacheconf', regex: '\\b\\d+\\b' }, + { token: ['text', + 'punctuation.definition.flag.apacheconf', + 'string.flag.apacheconf', + 'punctuation.definition.flag.apacheconf', + 'text'], + regex: '(\\s)(\\[)(.*?)(\\])(\\s)' }] }; this.normalizeRules(); }; - -ApacheConfHighlightRules.metaData = { fileTypes: - [ 'conf', - 'CONF', - 'htaccess', - 'HTACCESS', - 'htgroups', - 'HTGROUPS', - 'htpasswd', - 'HTPASSWD', - '.htaccess', - '.HTACCESS', - '.htgroups', - '.HTGROUPS', - '.htpasswd', - '.HTPASSWD' ], - name: 'Apache Conf', - scopeName: 'source.apacheconf' }; - - +ApacheConfHighlightRules.metaData = { fileTypes: ['conf', + 'CONF', + 'htaccess', + 'HTACCESS', + 'htgroups', + 'HTGROUPS', + 'htpasswd', + 'HTPASSWD', + '.htaccess', + '.HTACCESS', + '.htgroups', + '.HTGROUPS', + '.htpasswd', + '.HTPASSWD'], + name: 'Apache Conf', + scopeName: 'source.apacheconf' }; oop.inherits(ApacheConfHighlightRules, TextHighlightRules); - exports.ApacheConfHighlightRules = ApacheConfHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -287,70 +243,76 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/apache_conf",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apache_conf_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/apache_conf",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apache_conf_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ApacheConfHighlightRules = require("./apache_conf_highlight_rules").ApacheConfHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ApacheConfHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "#"; this.$id = "ace/mode/apache_conf"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/apache_conf"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-apex.js b/vendor/assets/javascripts/ace/mode-apex.js new file mode 100644 index 00000000..7f302e93 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-apex.js @@ -0,0 +1,402 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +define("ace/mode/apex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("../mode/text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = require("../mode/doc_comment_highlight_rules").DocCommentHighlightRules; +var ApexHighlightRules = function () { + var mainKeywordMapper = this.createKeywordMapper({ + "variable.language": "activate|any|autonomous|begin|bigdecimal|byte|cast|char|collect|const" + + "|end|exit|export|float|goto|group|having|hint|import|inner|into|join|loop|number|object|of|outer" + + "|parallel|pragma|retrieve|returning|search|short|stat|synchronized|then|this_month" + + "|transaction|type|when", + "keyword": "private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final" + + "|and|array|as|asc|break|bulk|by|catch|class|commit|continue|convertcurrency" + + "|delete|desc|do|else|enum|extends|false|final|finally|for|from|future|global" + + "|if|implements|in|insert|instanceof|interface|last_90_days|last_month" + + "|last_n_days|last_week|like|limit|list|map|merge|new|next_90_days|next_month|next_n_days" + + "|next_week|not|null|nulls|on|or|override|package|return" + + "|rollback|savepoint|select|set|sort|super|testmethod|this|this_week|throw|today" + + "|tolabel|tomorrow|trigger|true|try|undelete|update|upsert|using|virtual|webservice" + + "|where|while|yesterday|switch|case|default", + "storage.type": "def|boolean|byte|char|short|int|float|pblob|date|datetime|decimal|double|id|integer|long|string|time|void|blob|Object", + "constant.language": "true|false|null|after|before|count|excludes|first|includes|last|order|sharing|with", + "support.function": "system|apex|label|apexpages|userinfo|schema" + }, "identifier", true); + function keywordMapper(value) { + if (value.slice(-3) == "__c") + return "support.function"; + return mainKeywordMapper(value); + } + function string(start, options) { + return { + regex: start + (options.multiline ? "" : "(?=.)"), + token: "string.start", + next: [{ + regex: options.escape, + token: "character.escape" + }, { + regex: options.error, + token: "error.invalid" + }, { + regex: start + (options.multiline ? "" : "|$"), + token: "string.end", + next: options.next || "start" + }, { + defaultToken: "string" + }] + }; + } + function comments() { + return [{ + token: "comment", + regex: "\\/\\/(?=.)", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: "start" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: "start" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; + } + this.$rules = { + start: [ + string("'", { + escape: /\\[nb'"\\]/, + error: /\\./, + multiline: false + }), + comments("c"), + { + type: "decoration", + token: [ + "meta.package.apex", + "keyword.other.package.apex", + "meta.package.apex", + "storage.modifier.package.apex", + "meta.package.apex", + "punctuation.terminator.apex" + ], + regex: /^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*)((?:;)?))?/ + }, { + regex: /@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, + token: "constant.language" + }, + { + regex: /[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, + token: keywordMapper + }, + { + regex: "`#%", + token: "error.invalid" + }, { + token: "constant.numeric", // float + regex: /[+-]?\d+(?:(?:\.\d*)?(?:[LlDdEe][+-]?\d+)?)\b|\.\d+[LlDdEe]/ + }, { + token: "keyword.operator", + regex: /--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[]/, + next: "maybe_soql", + merge: false + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start", + merge: false + }, { + token: "paren.rparen", + regex: /[\])}]/, + merge: false + } + ], + maybe_soql: [{ + regex: /\s+/, + token: "text" + }, { + regex: /(SELECT|FIND)\b/, + token: "keyword", + caseInsensitive: true, + next: "soql" + }, { + regex: "", + token: "none", + next: "start" + }], + soql: [{ + regex: "(:?ASC|BY|CATEGORY|CUBE|DATA|DESC|END|FIND|FIRST|FOR|FROM|GROUP|HAVING|IN|LAST" + + "|LIMIT|NETWORK|NULLS|OFFSET|ORDER|REFERENCE|RETURNING|ROLLUP|SCOPE|SELECT" + + "|SNIPPET|TRACKING|TYPEOF|UPDATE|USING|VIEW|VIEWSTAT|WHERE|WITH|AND|OR)\\b", + token: "keyword", + caseInsensitive: true + }, { + regex: "(:?target_length|toLabel|convertCurrency|count|Contact|Account|User|FIELDS)\\b", + token: "support.function", + caseInsensitive: true + }, { + token: "paren.rparen", + regex: /[\]]/, + next: "start", + merge: false + }, + string("'", { + escape: /\\[nb'"\\]/, + error: /\\./, + multiline: false, + next: "soql" + }), + string('"', { + escape: /\\[nb'"\\]/, + error: /\\./, + multiline: false, + next: "soql" + }), + { + regex: /\\./, + token: "character.escape" + }, + { + regex: /[\?\&\|\!\{\}\[\]\(\)\^\~\*\:\"\'\+\-\,\.=\\\/]/, + token: "keyword.operator" + }], + "log-start": [{ + token: "timestamp.invisible", + regex: /^[\d:.() ]+\|/, + next: "log-header" + }, { + token: "timestamp.invisible", + regex: /^ (Number of|Maximum)[^:]*:/, + next: "log-comment" + }, { + token: "invisible", + regex: /^Execute Anonymous:/, + next: "log-comment" + }, { + defaultToken: "text" + }], + "log-comment": [{ + token: "log-comment", + regex: /.*$/, + next: "log-start" + }], + "log-header": [{ + token: "timestamp.invisible", + regex: /((USER_DEBUG|\[\d+\]|DEBUG)\|)+/ + }, + { + token: "keyword", + regex: "(?:EXECUTION_FINISHED|EXECUTION_STARTED|CODE_UNIT_STARTED" + + "|CUMULATIVE_LIMIT_USAGE|LIMIT_USAGE_FOR_NS" + + "|CUMULATIVE_LIMIT_USAGE_END|CODE_UNIT_FINISHED)" + }, { + regex: "", + next: "log-start" + }] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(ApexHighlightRules, TextHighlightRules); +exports.ApexHighlightRules = ApexHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/apex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/apex_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* caption: Apex; extensions: apex,cls,trigger,tgr */ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("../mode/text").Mode; +var ApexHighlightRules = require("./apex_highlight_rules").ApexHighlightRules; +var FoldMode = require("../mode/folding/cstyle").FoldMode; +function ApexMode() { + TextMode.call(this); + this.HighlightRules = ApexHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +} +oop.inherits(ApexMode, TextMode); +ApexMode.prototype.lineCommentStart = "//"; +ApexMode.prototype.blockComment = { + start: "/*", + end: "*/" +}; +exports.Mode = ApexMode; + +}); (function() { + window.require(["ace/mode/apex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-applescript.js b/vendor/assets/javascripts/ace/mode-applescript.js index 112a25dd..d1525d40 100644 --- a/vendor/assets/javascripts/ace/mode-applescript.js +++ b/vendor/assets/javascripts/ace/mode-applescript.js @@ -1,12 +1,8 @@ -define("ace/mode/applescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/applescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AppleScriptHighlightRules = function() { - var keywords = ( - "about|above|after|against|and|around|as|at|back|before|beginning|" + +var AppleScriptHighlightRules = function () { + var keywords = ("about|above|after|against|and|around|as|at|back|before|beginning|" + "behind|below|beneath|beside|between|but|by|considering|" + "contain|contains|continue|copy|div|does|eighth|else|end|equal|" + "equals|error|every|exit|fifth|first|for|fourth|from|front|" + @@ -14,32 +10,20 @@ var AppleScriptHighlightRules = function() { "middle|mod|my|ninth|not|of|on|onto|or|over|prop|property|put|ref|" + "reference|repeat|returning|script|second|set|seventh|since|" + "sixth|some|tell|tenth|that|the|then|third|through|thru|" + - "timeout|times|to|transaction|try|until|where|while|whose|with|without" - ); - - var builtinConstants = ( - "AppleScript|false|linefeed|return|pi|quote|result|space|tab|true" - ); - - var builtinFunctions = ( - "activate|beep|count|delay|launch|log|offset|read|round|run|say|" + - "summarize|write" - ); - - var builtinTypes = ( - "alias|application|boolean|class|constant|date|file|integer|list|" + + "timeout|times|to|transaction|try|until|where|while|whose|with|without"); + var builtinConstants = ("AppleScript|false|linefeed|return|pi|quote|result|space|tab|true"); + var builtinFunctions = ("activate|beep|count|delay|launch|log|offset|read|round|run|say|" + + "summarize|write"); + var builtinTypes = ("alias|application|boolean|class|constant|date|file|integer|list|" + "number|real|record|string|text|character|characters|contents|day|" + "frontmost|id|item|length|month|name|paragraph|paragraphs|rest|" + - "reverse|running|time|version|weekday|word|words|year" - ); - + "reverse|running|time|version|weekday|word|words|year"); var keywordMapper = this.createKeywordMapper({ "support.function": builtinFunctions, "constant.language": builtinConstants, "support.type": builtinTypes, "keyword": keywords }, "identifier"); - this.$rules = { "start": [ { @@ -47,12 +31,12 @@ var AppleScriptHighlightRules = function() { regex: "--.*$" }, { - token : "comment", // multi line comment - regex : "\\(\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\(\\*", + next: "comment" }, { - token: "string", // " string + token: "string", // " string regex: '".*?"' }, { @@ -62,14 +46,14 @@ var AppleScriptHighlightRules = function() { { token: "support.function", regex: '\\b(clipboard info|the clipboard|info for|list (disks|folder)|' + - 'mount volume|path to|(close|open for) access|(get|set) eof|' + - 'current date|do shell script|get volume settings|random number|' + - 'set volume|system attribute|system info|time to GMT|' + - '(load|run|store) script|scripting components|' + - 'ASCII (character|number)|localized string|' + - 'choose (application|color|file|file name|' + - 'folder|from list|remote application|URL)|' + - 'display (alert|dialog))\\b|^\\s*return\\b' + 'mount volume|path to|(close|open for) access|(get|set) eof|' + + 'current date|do shell script|get volume settings|random number|' + + 'set volume|system attribute|system info|time to GMT|' + + '(load|run|store) script|scripting components|' + + 'ASCII (character|number)|localized string|' + + 'choose (application|color|file|file name|' + + 'folder|from list|remote application|URL)|' + + 'display (alert|dialog))\\b|^\\s*return\\b' }, { token: "constant.language", @@ -78,9 +62,9 @@ var AppleScriptHighlightRules = function() { { token: "keyword", regex: '\\b(apart from|aside from|instead of|out of|greater than|' + - "isn't|(doesn't|does not) (equal|come before|come after|contain)|" + - '(greater|less) than( or equal)?|(starts?|ends|begins?) with|' + - 'contained by|comes (before|after)|a (ref|reference))\\b' + "isn't|(doesn't|does not) (equal|come before|come after|contain)|" + + '(greater|less) than( or equal)?|(starts?|ends|begins?) with|' + + 'contained by|comes (before|after)|a (ref|reference))\\b' }, { token: keywordMapper, @@ -97,98 +81,72 @@ var AppleScriptHighlightRules = function() { } ] }; - this.normalizeRules(); }; - oop.inherits(AppleScriptHighlightRules, TextHighlightRules); - exports.AppleScriptHighlightRules = AppleScriptHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -201,71 +159,74 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var AppleScriptHighlightRules = require("./applescript_highlight_rules").AppleScriptHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = AppleScriptHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; - this.blockComment = {start: "(*", end: "*)"}; + this.blockComment = { start: "(*", end: "*)" }; this.$id = "ace/mode/applescript"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/applescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-aql.js b/vendor/assets/javascripts/ace/mode-aql.js new file mode 100644 index 00000000..5de8d007 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-aql.js @@ -0,0 +1,92 @@ +define("ace/mode/aql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var AqlHighlightRules = function () { + var keywords = ("for|return|filter|search|sort|limit|let|collect|asc|desc|in|into|insert|update|remove|replace|upsert|options|with|and|or|not|distinct|graph|shortest_path|outbound|inbound|any|all|none|at least|aggregate|like|k_shortest_paths|k_paths|all_shortest_paths|prune|window"); + var builtinConstants = ("true|false"); + var builtinFunctions = ("to_bool|to_number|to_string|to_array|to_list|is_null|is_bool|is_number|is_string|is_array|is_list|is_object|is_document|is_datestring|" + + "typename|json_stringify|json_parse|concat|concat_separator|char_length|lower|upper|substring|left|right|trim|reverse|contains|" + + "log|log2|log10|exp|exp2|sin|cos|tan|asin|acos|atan|atan2|radians|degrees|pi|regex_test|regex_replace|" + + "like|floor|ceil|round|abs|rand|sqrt|pow|length|count|min|max|average|avg|sum|product|median|variance_population|variance_sample|variance|percentile|" + + "bit_and|bit_or|bit_xor|bit_negate|bit_test|bit_popcount|bit_shift_left|bit_shift_right|bit_construct|bit_deconstruct|bit_to_string|bit_from_string|" + + "first|last|unique|outersection|interleave|in_range|jaccard|matches|merge|merge_recursive|has|attributes|keys|values|unset|unset_recursive|keep|keep_recursive|" + + "near|within|within_rectangle|is_in_polygon|distance|fulltext|stddev_sample|stddev_population|stddev|" + + "slice|nth|position|contains_array|translate|zip|call|apply|push|append|pop|shift|unshift|remove_value|remove_values|" + + "remove_nth|replace_nth|date_now|date_timestamp|date_iso8601|date_dayofweek|date_year|date_month|date_day|date_hour|" + + "date_minute|date_second|date_millisecond|date_dayofyear|date_isoweek|date_isoweekyear|date_leapyear|date_quarter|date_days_in_month|date_trunc|date_round|" + + "date_add|date_subtract|date_diff|date_compare|date_format|date_utctolocal|date_localtoutc|date_timezone|date_timezones|" + + "fail|passthru|v8|sleep|schema_get|schema_validate|shard_id|call_greenspun|version|noopt|noeval|not_null|" + + "first_list|first_document|parse_identifier|current_user|current_database|collection_count|pregel_result|" + + "collections|document|decode_rev|range|union|union_distinct|minus|intersection|flatten|is_same_collection|check_document|" + + "ltrim|rtrim|find_first|find_last|split|substitute|ipv4_to_number|ipv4_from_number|is_ipv4|md5|sha1|sha512|crc32|fnv64|hash|random_token|to_base64|" + + "to_hex|encode_uri_component|soundex|assert|warn|is_key|sorted|sorted_unique|count_distinct|count_unique|" + + "levenshtein_distance|levenshtein_match|regex_matches|regex_split|ngram_match|ngram_similarity|ngram_positional_similarity|uuid|" + + "tokens|exists|starts_with|phrase|min_match|bm25|tfidf|boost|analyzer|" + + "cosine_similarity|decay_exp|decay_gauss|decay_linear|l1_distance|l2_distance|minhash|minhash_count|minhash_error|minhash_match|" + + "geo_point|geo_multipoint|geo_polygon|geo_multipolygon|geo_linestring|geo_multilinestring|geo_contains|geo_intersects|" + + "geo_equals|geo_distance|geo_area|geo_in_range"); + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants + }, "identifier", true); + this.$rules = { + "start": [{ + token: "comment", + regex: "//.*$" + }, { + token: "string", // " string + regex: '".*?"' + }, { + token: "string", // ' string + regex: "'.*?'" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + }] + }; + this.normalizeRules(); +}; +oop.inherits(AqlHighlightRules, TextHighlightRules); +exports.AqlHighlightRules = AqlHighlightRules; + +}); + +define("ace/mode/aql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/aql_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var AqlHighlightRules = require("./aql_highlight_rules").AqlHighlightRules; +var Mode = function () { + this.HighlightRules = AqlHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$id = "ace/mode/aql"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/aql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-asciidoc.js b/vendor/assets/javascripts/ace/mode-asciidoc.js index 34e87bcc..18574fe9 100644 --- a/vendor/assets/javascripts/ace/mode-asciidoc.js +++ b/vendor/assets/javascripts/ace/mode-asciidoc.js @@ -1,161 +1,138 @@ -define("ace/mode/asciidoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/asciidoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AsciidocHighlightRules = function() { +var AsciidocHighlightRules = function () { var identifierRe = "[a-zA-Z\u00a1-\uffff]+\\b"; - this.$rules = { "start": [ - {token: "empty", regex: /$/}, - {token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, - {token: "literal", regex: /^-{4,}\s*$/, next: "literalBlock"}, - {token: "string", regex: /^\+{4,}\s*$/, next: "passthroughBlock"}, - {token: "keyword", regex: /^={4,}\s*$/}, - {token: "text", regex: /^\s*$/}, - {token: "empty", regex: "", next: "dissallowDelimitedBlock"} + { token: "empty", regex: /$/ }, + { token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock" }, + { token: "literal", regex: /^-{4,}\s*$/, next: "literalBlock" }, + { token: "string", regex: /^\+{4,}\s*$/, next: "passthroughBlock" }, + { token: "keyword", regex: /^={4,}\s*$/ }, + { token: "text", regex: /^\s*$/ }, + { token: "empty", regex: "", next: "dissallowDelimitedBlock" } ], - "dissallowDelimitedBlock": [ - {include: "paragraphEnd"}, - {token: "comment", regex: '^//.+$'}, - {token: "keyword", regex: "^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"}, - - {include: "listStart"}, - {token: "literal", regex: /^\s+.+$/, next: "indentedBlock"}, - {token: "empty", regex: "", next: "text"} + { include: "paragraphEnd" }, + { token: "comment", regex: '^//.+$' }, + { token: "keyword", regex: "^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):" }, + { include: "listStart" }, + { token: "literal", regex: /^\s+.+$/, next: "indentedBlock" }, + { token: "empty", regex: "", next: "text" } ], - "paragraphEnd": [ - {token: "doc.comment", regex: /^\/{4,}\s*$/, next: "commentBlock"}, - {token: "tableBlock", regex: /^\s*[|!]=+\s*$/, next: "tableBlock"}, - {token: "keyword", regex: /^(?:--|''')\s*$/, next: "start"}, - {token: "option", regex: /^\[.*\]\s*$/, next: "start"}, - {token: "pageBreak", regex: /^>{3,}$/, next: "start"}, - {token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, - {token: "titleUnderline", regex: /^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/, next: "start"}, - {token: "singleLineTitle", regex: /^={1,5}\s+\S.*$/, next: "start"}, - - {token: "otherBlock", regex: /^(?:\*{2,}|_{2,})\s*$/, next: "start"}, - {token: "optionalTitle", regex: /^\.[^.\s].+$/, next: "start"} + { token: "doc.comment", regex: /^\/{4,}\s*$/, next: "commentBlock" }, + { token: "tableBlock", regex: /^\s*[|!]=+\s*$/, next: "tableBlock" }, + { token: "keyword", regex: /^(?:--|''')\s*$/, next: "start" }, + { token: "option", regex: /^\[.*\]\s*$/, next: "start" }, + { token: "pageBreak", regex: /^>{3,}$/, next: "start" }, + { token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock" }, + { token: "titleUnderline", regex: /^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/, next: "start" }, + { token: "singleLineTitle", regex: /^={1,5}\s+\S.*$/, next: "start" }, + { token: "otherBlock", regex: /^(?:\*{2,}|_{2,})\s*$/, next: "start" }, + { token: "optionalTitle", regex: /^\.[^.\s].+$/, next: "start" } ], - "listStart": [ - {token: "keyword", regex: /^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/, next: "listText"}, - {token: "meta.tag", regex: /^.+(?::{2,4}|;;)(?: |$)/, next: "listText"}, - {token: "support.function.list.callout", regex: /^(?:<\d+>|\d+>|>) /, next: "text"}, - {token: "keyword", regex: /^\+\s*$/, next: "start"} + { token: "keyword", regex: /^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/, next: "listText" }, + { token: "meta.tag", regex: /^.+(?::{2,4}|;;)(?: |$)/, next: "listText" }, + { token: "support.function.list.callout", regex: /^(?:<\d+>|\d+>|>) /, next: "text" }, + { token: "keyword", regex: /^\+\s*$/, next: "start" } ], - "text": [ - {token: ["link", "variable.language"], regex: /((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/}, - {token: "link", regex: /(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/}, - {token: "link", regex: /\b[\w\.\/\-]+@[\w\.\/\-]+\b/}, - {include: "macros"}, - {include: "paragraphEnd"}, - {token: "literal", regex:/\+{3,}/, next:"smallPassthrough"}, - {token: "escape", regex: /\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/}, - {token: "escape", regex: /\\[_*'`+#]|\\{2}[_*'`+#]{2}/}, - {token: "keyword", regex: /\s\+$/}, - {token: "text", regex: identifierRe}, - {token: ["keyword", "string", "keyword"], - regex: /(<<[\w\d\-$]+,)(.*?)(>>|$)/}, - {token: "keyword", regex: /<<[\w\d\-$]+,?|>>/}, - {token: "constant.character", regex: /\({2,3}.*?\){2,3}/}, - {token: "keyword", regex: /\[\[.+?\]\]/}, - {token: "support", regex: /^\[{3}[\w\d =\-]+\]{3}/}, - - {include: "quotes"}, - {token: "empty", regex: /^\s*$/, next: "start"} + { token: ["link", "variable.language"], regex: /((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/ }, + { token: "link", regex: /(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/ }, + { token: "link", regex: /\b[\w\.\/\-]+@[\w\.\/\-]+\b/ }, + { include: "macros" }, + { include: "paragraphEnd" }, + { token: "literal", regex: /\+{3,}/, next: "smallPassthrough" }, + { token: "escape", regex: /\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/ }, + { token: "escape", regex: /\\[_*'`+#]|\\{2}[_*'`+#]{2}/ }, + { token: "keyword", regex: /\s\+$/ }, + { token: "text", regex: identifierRe }, + { token: ["keyword", "string", "keyword"], + regex: /(<<[\w\d\-$]+,)(.*?)(>>|$)/ }, + { token: "keyword", regex: /<<[\w\d\-$]+,?|>>/ }, + { token: "constant.character", regex: /\({2,3}.*?\){2,3}/ }, + { token: "keyword", regex: /\[\[.+?\]\]/ }, + { token: "support", regex: /^\[{3}[\w\d =\-]+\]{3}/ }, + { include: "quotes" }, + { token: "empty", regex: /^\s*$/, next: "start" } ], - "listText": [ - {include: "listStart"}, - {include: "text"} + { include: "listStart" }, + { include: "text" } ], - "indentedBlock": [ - {token: "literal", regex: /^[\s\w].+$/, next: "indentedBlock"}, - {token: "literal", regex: "", next: "start"} + { token: "literal", regex: /^[\s\w].+$/, next: "indentedBlock" }, + { token: "literal", regex: "", next: "start" } ], - "listingBlock": [ - {token: "literal", regex: /^\.{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "constant.numeric", regex: '<\\d+>'}, - {token: "literal", regex: '[^<]+'}, - {token: "literal", regex: '<'} + { token: "literal", regex: /^\.{4,}\s*$/, next: "dissallowDelimitedBlock" }, + { token: "constant.numeric", regex: '<\\d+>' }, + { token: "literal", regex: '[^<]+' }, + { token: "literal", regex: '<' } ], "literalBlock": [ - {token: "literal", regex: /^-{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "constant.numeric", regex: '<\\d+>'}, - {token: "literal", regex: '[^<]+'}, - {token: "literal", regex: '<'} + { token: "literal", regex: /^-{4,}\s*$/, next: "dissallowDelimitedBlock" }, + { token: "constant.numeric", regex: '<\\d+>' }, + { token: "literal", regex: '[^<]+' }, + { token: "literal", regex: '<' } ], "passthroughBlock": [ - {token: "literal", regex: /^\+{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: identifierRe + "|\\d+"}, - {include: "macros"}, - {token: "literal", regex: "."} + { token: "literal", regex: /^\+{4,}\s*$/, next: "dissallowDelimitedBlock" }, + { token: "literal", regex: identifierRe + "|\\d+" }, + { include: "macros" }, + { token: "literal", regex: "." } ], - "smallPassthrough": [ - {token: "literal", regex: /[+]{3,}/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: /^\s*$/, next: "dissallowDelimitedBlock"}, - {token: "literal", regex: identifierRe + "|\\d+"}, - {include: "macros"} + { token: "literal", regex: /[+]{3,}/, next: "dissallowDelimitedBlock" }, + { token: "literal", regex: /^\s*$/, next: "dissallowDelimitedBlock" }, + { token: "literal", regex: identifierRe + "|\\d+" }, + { include: "macros" } ], - "commentBlock": [ - {token: "doc.comment", regex: /^\/{4,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "doc.comment", regex: '^.*$'} + { token: "doc.comment", regex: /^\/{4,}\s*$/, next: "dissallowDelimitedBlock" }, + { token: "doc.comment", regex: '^.*$' } ], "tableBlock": [ - {token: "tableBlock", regex: /^\s*\|={3,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "innerTableBlock"}, - {token: "tableBlock", regex: /\|/}, - {include: "text", noEscape: true} + { token: "tableBlock", regex: /^\s*\|={3,}\s*$/, next: "dissallowDelimitedBlock" }, + { token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "innerTableBlock" }, + { token: "tableBlock", regex: /\|/ }, + { include: "text", noEscape: true } ], "innerTableBlock": [ - {token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "tableBlock"}, - {token: "tableBlock", regex: /^\s*|={3,}\s*$/, next: "dissallowDelimitedBlock"}, - {token: "tableBlock", regex: /!/} + { token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "tableBlock" }, + { token: "tableBlock", regex: /^\s*|={3,}\s*$/, next: "dissallowDelimitedBlock" }, + { token: "tableBlock", regex: /!/ } ], "macros": [ - {token: "macro", regex: /{[\w\-$]+}/}, - {token: ["text", "string", "text", "constant.character", "text"], regex: /({)([\w\-$]+)(:)?(.+)?(})/}, - {token: ["text", "markup.list.macro", "keyword", "string"], regex: /(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/}, - {token: ["markup.list.macro", "keyword", "string"], regex: /([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/}, - {token: ["markup.list.macro", "keyword"], regex: /([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/}, - {token: "keyword", regex: /^:.+?:(?= |$)/} + { token: "macro", regex: /{[\w\-$]+}/ }, + { token: ["text", "string", "text", "constant.character", "text"], regex: /({)([\w\-$]+)(:)?(.+)?(})/ }, + { token: ["text", "markup.list.macro", "keyword", "string"], regex: /(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/ }, + { token: ["markup.list.macro", "keyword", "string"], regex: /([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/ }, + { token: ["markup.list.macro", "keyword"], regex: /([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/ }, + { token: "keyword", regex: /^:.+?:(?= |$)/ } ], - "quotes": [ - {token: "string.italic", regex: /__[^_\s].*?__/}, - {token: "string.italic", regex: quoteRule("_")}, - - {token: "keyword.bold", regex: /\*\*[^*\s].*?\*\*/}, - {token: "keyword.bold", regex: quoteRule("\\*")}, - - {token: "literal", regex: quoteRule("\\+")}, - {token: "literal", regex: /\+\+[^+\s].*?\+\+/}, - {token: "literal", regex: /\$\$.+?\$\$/}, - {token: "literal", regex: quoteRule("`")}, - - {token: "keyword", regex: quoteRule("^")}, - {token: "keyword", regex: quoteRule("~")}, - {token: "keyword", regex: /##?/}, - {token: "keyword", regex: /(?:\B|^)``|\b''/} + { token: "string.italic", regex: /__[^_\s].*?__/ }, + { token: "string.italic", regex: quoteRule("_") }, + { token: "keyword.bold", regex: /\*\*[^*\s].*?\*\*/ }, + { token: "keyword.bold", regex: quoteRule("\\*") }, + { token: "literal", regex: quoteRule("\\+") }, + { token: "literal", regex: /\+\+[^+\s].*?\+\+/ }, + { token: "literal", regex: /\$\$.+?\$\$/ }, + { token: "literal", regex: quoteRule("`") }, + { token: "keyword", regex: quoteRule("^") }, + { token: "keyword", regex: quoteRule("~") }, + { token: "keyword", regex: /##?/ }, + { token: "keyword", regex: /(?:\B|^)``|\b''/ } ] - }; - function quoteRule(ch) { var prefix = /\w/.test(ch) ? "\\b" : "(?:\\B|^)"; return prefix + ch + "[^" + ch + "].*?" + ch + "(?![\\w*])"; } - var tokenMap = { macro: "constant.character", tableBlock: "doc.comment", @@ -169,49 +146,43 @@ var AsciidocHighlightRules = function() { escape: "constant.language.escape", link: "markup.underline.list" }; - for (var state in this.$rules) { var stateRules = this.$rules[state]; - for (var i = stateRules.length; i--; ) { + for (var i = stateRules.length; i--;) { var rule = stateRules[i]; if (rule.include || typeof rule == "string") { var args = [i, 1].concat(this.$rules[rule.include || rule]); if (rule.noEscape) { - args = args.filter(function(x) { + args = args.filter(function (x) { return !x.next; }); } stateRules.splice.apply(stateRules, args); - } else if (rule.token in tokenMap) { + } + else if (rule.token in tokenMap) { rule.token = tokenMap[rule.token]; } } } }; oop.inherits(AsciidocHighlightRules, TextHighlightRules); - exports.AsciidocHighlightRules = AsciidocHighlightRules; + }); -define("ace/mode/folding/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { +(function () { this.foldingStartMarker = /^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/; this.singleLineHeadingRe = /^={1,5}(?=\s+\S)/; - - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); if (!this.foldingStartMarker.test(line)) return ""; - if (line[0] == "=") { if (this.singleLineHeadingRe.test(line)) return "start"; @@ -223,8 +194,7 @@ oop.inherits(FoldMode, BaseFoldMode); return "end"; return "start"; }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.getLine(row); var startColumn = line.length; var maxRow = session.getLength(); @@ -232,14 +202,12 @@ oop.inherits(FoldMode, BaseFoldMode); var endRow = row; if (!line.match(this.foldingStartMarker)) return; - var token; function getTokenType(row) { token = session.getTokens(row)[0]; return token && token.type; } - - var levels = ["=","-","~","^","+"]; + var levels = ["=", "-", "~", "^", "+"]; var heading = "markup.heading"; var singleLineHeadingRe = this.singleLineHeadingRe; function getLevel() { @@ -253,7 +221,6 @@ oop.inherits(FoldMode, BaseFoldMode); } return level; } - if (getTokenType(row) == heading) { var startHeadingLevel = getLevel(); while (++row < maxRow) { @@ -263,23 +230,21 @@ oop.inherits(FoldMode, BaseFoldMode); if (level <= startHeadingLevel) break; } - var isSingleLineHeading = token && token.value.match(this.singleLineHeadingRe); endRow = isSingleLineHeading ? row - 1 : row - 2; - if (endRow > startRow) { while (endRow > startRow && (!getTokenType(endRow) || token.value[0] == "[")) endRow--; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } - } else { + } + else { var state = session.bgTokenizer.getState(row); if (state == "dissallowDelimitedBlock") { - while (row -- > 0) { + while (row-- > 0) { if (session.bgTokenizer.getState(row).lastIndexOf("Block") == -1) break; } @@ -288,7 +253,8 @@ oop.inherits(FoldMode, BaseFoldMode); var endColumn = session.getLine(row).length; return new Range(endRow, 5, startRow, startColumn - 5); } - } else { + } + else { while (++row < maxRow) { if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") break; @@ -301,42 +267,45 @@ oop.inherits(FoldMode, BaseFoldMode); } } }; - }).call(FoldMode.prototype); }); -define("ace/mode/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asciidoc_highlight_rules","ace/mode/folding/asciidoc"], function(require, exports, module) { -"use strict"; - +define("ace/mode/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asciidoc_highlight_rules","ace/mode/folding/asciidoc"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var AsciidocHighlightRules = require("./asciidoc_highlight_rules").AsciidocHighlightRules; var AsciidocFoldMode = require("./folding/asciidoc").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = AsciidocHighlightRules; - - this.foldingRules = new AsciidocFoldMode(); + this.foldingRules = new AsciidocFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.type = "text"; - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { if (state == "listblock") { var match = /^((?:.+)?)([-+*][ ]+)/.exec(line); if (match) { return new Array(match[1].length + 1).join(" ") + match[2]; - } else { + } + else { return ""; } - } else { + } + else { return this.$getIndent(line); } }; this.$id = "ace/mode/asciidoc"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/asciidoc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-asl.js b/vendor/assets/javascripts/ace/mode-asl.js new file mode 100644 index 00000000..8fad9300 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-asl.js @@ -0,0 +1,357 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +define("ace/mode/asl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var ASLHighlightRules = function () { + var keywords = ("Default|DefinitionBlock|Device|Method|Else|ElseIf|For|Function|If|Include|Method|Return|" + + "Scope|Switch|Case|While|Break|BreakPoint|Continue|NoOp|Wait|True|False|" + + "AccessAs|Acquire|Alias|BankField|Buffer|Concatenate|ConcatenateResTemplate|" + + "CondRefOf|Connection|CopyObject|CreateBitField|CreateByteField|CreateDWordField|" + + "CreateField|CreateQWordField|CreateWordField|DataTableRegion|Debug|" + + "DMA|DWordIO|DWordMemory|DWordSpace|EisaId|EISAID|EndDependentFn|Event|ExtendedIO|" + + "ExtendedMemory|ExtendedSpace|External|Fatal|Field|FindSetLeftBit|FindSetRightBit|" + + "FixedDMA|FixedIO|Fprintf|FromBCD|GpioInt|GpioIo|I2CSerialBusV2|IndexField|" + + "Interrupt|IO|IRQ|IRQNoFlags|Load|LoadTable|Match|Memory32|Memory32Fixed|" + + "Mid|Mutex|Name|Notify|Offset|ObjectType|OperationRegion|Package|PowerResource|Printf|" + + "QWordIO|QWordMemory|QWordSpace|RawDataBuffer|Register|Release|Reset|ResourceTemplate|" + + "Signal|SizeOf|Sleep|SPISerialBusV2|Stall|StartDependentFn|StartDependentFnNoPri|" + + "Store|ThermalZone|Timer|ToBCD|ToBuffer|ToDecimalString|ToInteger|ToPLD|ToString|" + + "ToUUID|UARTSerialBusV2|Unicode|Unload|VendorLong|VendorShort|WordBusNumber|WordIO|" + + "WordSpace"); + var keywordOperators = ("Add|And|Decrement|Divide|Increment|Index|LAnd|LEqual|LGreater|LGreaterEqual|" + + "LLess|LLessEqual|LNot|LNotEqual|LOr|Mod|Multiply|NAnd|NOr|Not|Or|RefOf|Revision|" + + "ShiftLeft|ShiftRight|Subtract|XOr|DerefOf"); + var flags = ("AttribQuick|AttribSendReceive|AttribByte|AttribBytes|AttribRawBytes|" + + "AttribRawProcessBytes|AttribWord|AttribBlock|AttribProcessCall|AttribBlockProcessCall|" + + "AnyAcc|ByteAcc|WordAcc|DWordAcc|QWordAcc|BufferAcc|" + + "AddressRangeMemory|AddressRangeReserved|AddressRangeNVS|AddressRangeACPI|" + + "RegionSpaceKeyword|FFixedHW|PCC|" + + "AddressingMode7Bit|AddressingMode10Bit|" + + "DataBitsFive|DataBitsSix|DataBitsSeven|DataBitsEight|DataBitsNine|" + + "BusMaster|NotBusMaster|" + + "ClockPhaseFirst|ClockPhaseSecond|ClockPolarityLow|ClockPolarityHigh|" + + "SubDecode|PosDecode|" + + "BigEndianing|LittleEndian|" + + "FlowControlNone|FlowControlXon|FlowControlHardware|" + + "Edge|Level|ActiveHigh|ActiveLow|ActiveBoth|Decode16|Decode10|" + + "IoRestrictionNone|IoRestrictionInputOnly|IoRestrictionOutputOnly|" + + "IoRestrictionNoneAndPreserve|Lock|NoLock|MTR|MEQ|MLE|MLT|MGE|MGT|" + + "MaxFixed|MaxNotFixed|Cacheable|WriteCombining|Prefetchable|NonCacheable|" + + "MinFixed|MinNotFixed|" + + "ParityTypeNone|ParityTypeSpace|ParityTypeMark|ParityTypeOdd|ParityTypeEven|" + + "PullDefault|PullUp|PullDown|PullNone|PolarityHigh|PolarityLow|" + + "ISAOnlyRanges|NonISAOnlyRanges|EntireRange|ReadWrite|ReadOnly|" + + "UserDefRegionSpace|SystemIO|SystemMemory|PCI_Config|EmbeddedControl|" + + "SMBus|SystemCMOS|PciBarTarget|IPMI|GeneralPurposeIO|GenericSerialBus|" + + "ResourceConsumer|ResourceProducer|Serialized|NotSerialized|" + + "Shared|Exclusive|SharedAndWake|ExclusiveAndWake|ControllerInitiated|DeviceInitiated|" + + "StopBitsZero|StopBitsOne|StopBitsOnePlusHalf|StopBitsTwo|" + + "Width8Bit|Width16Bit|Width32Bit|Width64Bit|Width128Bit|Width256Bit|" + + "SparseTranslation|DenseTranslation|TypeTranslation|TypeStatic|" + + "Preserve|WriteAsOnes|WriteAsZeros|Transfer8|Transfer16|Transfer8_16|" + + "ThreeWireMode|FourWireMode"); + var storageTypes = ("UnknownObj|IntObj|StrObj|BuffObj|PkgObj|FieldUnitObj|DeviceObj|" + + "EventObj|MethodObj|MutexObj|OpRegionObj|PowerResObj|ProcessorObj|" + + "ThermalZoneObj|BuffFieldObj|DDBHandleObj"); + var builtinConstants = ("__FILE__|__PATH__|__LINE__|__DATE__|__IASL__"); + var strNumbers = ("One|Ones|Zero"); + var deprecated = ("Memory24|Processor"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.numeric": strNumbers, + "keyword.operator": keywordOperators, + "constant.language": builtinConstants, + "storage.type": storageTypes, + "constant.library": flags, + "invalid.deprecated": deprecated + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // ignored fields / comments + regex: "\\\[", + next: "ignoredfield" + }, { + token: "variable", + regex: "\\Local[0-7]|\\Arg[0-6]" + }, { + token: "keyword", // pre-compiler directives + regex: "#\\s*(?:define|elif|else|endif|error|if|ifdef|ifndef|include|includebuffer|line|pragma|undef|warning)\\b", + next: "directive" + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "constant.character", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", // hex + regex: /0[xX][0-9a-fA-F]+\b/ + }, { + token: "constant.numeric", + regex: /[0-9]+\b/ + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: /[!\~\*\/%+-<>\^|=&]/ + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "ignoredfield": [ + { + token: "comment", // closing ignored fields / comments + regex: "\\\]", + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ + }, + { + token: "constant.other.multiline", + regex: /.*\\/ + }, + { + token: "constant.other", + regex: "\\s*<.+?>*s", + next: "start" + }, + { + token: "constant.other", // single line + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]*s', + next: "start" + }, + { + token: "constant.other", // single line + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(ASLHighlightRules, TextHighlightRules); +exports.ASLHighlightRules = ASLHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/asl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asl_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ASLHighlightRules = require("./asl_highlight_rules").ASLHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = ASLHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/asl"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/asl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-assembly_x86.js b/vendor/assets/javascripts/ace/mode-assembly_x86.js index 584ef05c..41e27df2 100644 --- a/vendor/assets/javascripts/ace/mode-assembly_x86.js +++ b/vendor/assets/javascripts/ace/mode-assembly_x86.js @@ -1,136 +1,116 @@ -define("ace/mode/assembly_x86_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/assembly_x86_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from Assembly x86.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AssemblyX86HighlightRules = function() { - - this.$rules = { start: - [ { token: 'keyword.control.assembly', - regex: '\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\b', - caseInsensitive: true }, - { token: 'variable.parameter.register.assembly', - regex: '\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\b', - caseInsensitive: true }, - { token: 'constant.character.decimal.assembly', - regex: '\\b[0-9]+\\b' }, - { token: 'constant.character.hexadecimal.assembly', - regex: '\\b0x[A-F0-9]+\\b', - caseInsensitive: true }, - { token: 'constant.character.hexadecimal.assembly', - regex: '\\b[A-F0-9]+h\\b', - caseInsensitive: true }, - { token: 'string.assembly', regex: /'([^\\']|\\.)*'/ }, - { token: 'string.assembly', regex: /"([^\\"]|\\.)*"/ }, - { token: 'support.function.directive.assembly', - regex: '^\\[', - push: - [ { token: 'support.function.directive.assembly', - regex: '\\]$', - next: 'pop' }, - { defaultToken: 'support.function.directive.assembly' } ] }, - { token: - [ 'support.function.directive.assembly', - 'support.function.directive.assembly', - 'entity.name.function.assembly' ], - regex: '(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)' }, - { token: 'support.function.directive.assembly', - regex: '^endstruc\\b' }, - { token: - [ 'support.function.directive.assembly', - 'entity.name.function.assembly', - 'support.function.directive.assembly', - 'constant.character.assembly' ], - regex: '^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)' }, - { token: 'support.function.directive.assembly', - regex: '^%endmacro' }, - { token: - [ 'text', - 'support.function.directive.assembly', - 'text', - 'entity.name.function.assembly' ], - regex: '(\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\$\\$|\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)', - caseInsensitive: true }, - { token: 'support.function.directive.assembly', - regex: '\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\b', - caseInsensitive: true }, - { token: 'entity.name.function.assembly', regex: '^\\s*%%[\\w.]+?:$' }, - { token: 'entity.name.function.assembly', regex: '^\\s*%\\$[\\w.]+?:$' }, - { token: 'entity.name.function.assembly', regex: '^[\\w.]+?:' }, - { token: 'entity.name.function.assembly', regex: '^[\\w.]+?\\b' }, - { token: 'comment.assembly', regex: ';.*$' } ] +var AssemblyX86HighlightRules = function () { + this.$rules = { start: [{ token: 'keyword.control.assembly', + regex: '\\b(?:aaa|aad|aam|aas|adc|add|addpd|addps|addsd|addss|addsubpd|addsubps|aesdec|aesdeclast|aesenc|aesenclast|aesimc|aeskeygenassist|and|andpd|andps|andnpd|andnps|arpl|blendpd|blendps|blendvpd|blendvps|bound|bsf|bsr|bswap|bt|btc|btr|bts|cbw|cwde|cdqe|clc|cld|cflush|clts|cmc|cmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|cmp|cmppd|cmpps|cmps|cnpsb|cmpsw|cmpsd|cmpsq|cmpss|cmpxchg|cmpxchg8b|cmpxchg16b|comisd|comiss|cpuid|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq|cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvts2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvtpd2pi|cvttps2dq|cvttps2pi|cvttps2dq|cvttps2pi|cvttsd2si|cvttss2si|cwd|cdq|cqo|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|enter|extractps|f2xm1|fabs|fadd|faddp|fiadd|fbld|fbstp|fchs|fclex|fnclex|fcmov(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|fcom|fcmop|fcompp|fcomi|fcomip|fucomi|fucomip|fcos|fdecstp|fdiv|fdivp|fidiv|fdivr|fdivrp|fidivr|ffree|ficom|ficomp|fild|fincstp|finit|fnint|fist|fistp|fisttp|fld|fld1|fldl2t|fldl2e|fldpi|fldlg2|fldln2|fldz|fldcw|fldenv|fmul|fmulp|fimul|fnop|fpatan|fprem|fprem1|fptan|frndint|frstor|fsave|fnsave|fscale|fsin|fsincos|fsqrt|fst|fstp|fstcw|fnstcw|fstenv|fnstenv|fsts|fnstsw|fsub|fsubp|fisub|fsubr|fsubrp|fisubr|ftst|fucom|fucomp|fucompp|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|haddpd|haddps|husbpd|hsubps|idiv|imul|in|inc|ins|insb|insw|insd|insertps|int|into|invd|invplg|invpcid|iret|iretd|iretq|lahf|lar|lddqu|ldmxcsr|lds|les|lfs|lgs|lss|lea|leave|lfence|lgdt|lidt|llgdt|lmsw|lock|lods|lodsb|lodsw|lodsd|lodsq|lsl|ltr|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor|mov|movapd|movaps|movbe|movd|movq|movddup|movdqa|movdqu|movq2q|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdqa|movntdq|movnti|movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsw|movsd|movsq|movsd|movshdup|movsldup|movss|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss|mwait|neg|not|or|orpd|orps|out|outs|outsb|outsw|outsd|pabsb|pabsw|pabsd|packsswb|packssdw|packusdw|packuswbpaddb|paddw|paddd|paddq|paddsb|paddsw|paddusb|paddusw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqw|pcmpeqd|pcmpeqq|pcmpestri|pcmpestrm|pcmptb|pcmptgw|pcmpgtd|pcmpgtq|pcmpistri|pcmpisrm|pextrb|pextrd|pextrq|pextrw|phaddw|phaddd|phaddsw|phinposuw|phsubw|phsubd|phsubsw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmadddwd|pmaxsb|pmaxsd|pmaxsw|pmaxsw|pmaxub|pmaxud|pmaxuw|pminsb|pminsd|pminsw|pminub|pminud|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw|pmulld|pmullw|pmuludw|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetch|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignw|psignd|pslldq|psllw|pslld|psllq|psraw|psrad|psrldq|psrlw|psrld|psrlq|psubb|psubw|psubd|psubq|psubsb|psubsw|psubusb|psubusw|test|ptest|punpckhbw|punpckhwd|punpckhdq|punpckhddq|punpcklbw|punpcklwd|punpckldq|punpckldqd|push|pusha|pushad|pushf|pushfd|pxor|prcl|rcr|rol|ror|rcpps|rcpss|rdfsbase|rdgsbase|rdmsr|rdpmc|rdrand|rdtsc|rdtscp|rep|repe|repz|repne|repnz|roundpd|roundps|roundsd|roundss|rsm|rsqrps|rsqrtss|sahf|sal|sar|shl|shr|sbb|scas|scasb|scasw|scasd|set(?:n?e|ge?|ae?|le?|be?|n?o|n?z)|sfence|sgdt|shld|shrd|shufpd|shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stc|std|stmxcsr|stos|stosb|stosw|stosd|stosq|str|sub|subpd|subps|subsd|subss|swapgs|syscall|sysenter|sysexit|sysret|teset|ucomisd|ucomiss|ud2|unpckhpd|unpckhps|unpcklpd|unpcklps|vbroadcast|vcvtph2ps|vcvtp2sph|verr|verw|vextractf128|vinsertf128|vmaskmov|vpermilpd|vpermilps|vperm2f128|vtestpd|vtestps|vzeroall|vzeroupper|wait|fwait|wbinvd|wrfsbase|wrgsbase|wrmsr|xadd|xchg|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrstor|xsave|xsaveopt|xsetbv|lzcnt|extrq|insertq|movntsd|movntss|vfmaddpd|vfmaddps|vfmaddsd|vfmaddss|vfmaddsubbpd|vfmaddsubps|vfmsubaddpd|vfmsubaddps|vfmsubpd|vfmsubps|vfmsubsd|vfnmaddpd|vfnmaddps|vfnmaddsd|vfnmaddss|vfnmsubpd|vfnmusbps|vfnmusbsd|vfnmusbss|cvt|xor|cli|sti|hlt|nop|lock|wait|enter|leave|ret|loop(?:n?e|n?z)?|call|j(?:mp|n?e|ge?|ae?|le?|be?|n?o|n?z))\\b', + caseInsensitive: true }, + { token: 'variable.parameter.register.assembly', + regex: '\\b(?:CS|DS|ES|FS|GS|SS|RAX|EAX|RBX|EBX|RCX|ECX|RDX|EDX|RCX|RIP|EIP|IP|RSP|ESP|SP|RSI|ESI|SI|RDI|EDI|DI|RFLAGS|EFLAGS|FLAGS|R8-15|(?:Y|X)MM(?:[0-9]|10|11|12|13|14|15)|(?:A|B|C|D)(?:X|H|L)|CR(?:[0-4]|DR(?:[0-7]|TR6|TR7|EFER)))\\b', + caseInsensitive: true }, + { token: 'constant.character.decimal.assembly', + regex: '\\b[0-9]+\\b' }, + { token: 'constant.character.hexadecimal.assembly', + regex: '\\b0x[A-F0-9]+\\b', + caseInsensitive: true }, + { token: 'constant.character.hexadecimal.assembly', + regex: '\\b[A-F0-9]+h\\b', + caseInsensitive: true }, + { token: 'string.assembly', regex: /'([^\\']|\\.)*'/ }, + { token: 'string.assembly', regex: /"([^\\"]|\\.)*"/ }, + { token: 'support.function.directive.assembly', + regex: '^\\[', + push: [{ token: 'support.function.directive.assembly', + regex: '\\]$', + next: 'pop' }, + { defaultToken: 'support.function.directive.assembly' }] }, + { token: ['support.function.directive.assembly', + 'support.function.directive.assembly', + 'entity.name.function.assembly'], + regex: '(^struc)( )([_a-zA-Z][_a-zA-Z0-9]*)' }, + { token: 'support.function.directive.assembly', + regex: '^endstruc\\b' }, + { token: ['support.function.directive.assembly', + 'entity.name.function.assembly', + 'support.function.directive.assembly', + 'constant.character.assembly'], + regex: '^(%macro )([_a-zA-Z][_a-zA-Z0-9]*)( )([0-9]+)' }, + { token: 'support.function.directive.assembly', + regex: '^%endmacro' }, + { token: ['text', + 'support.function.directive.assembly', + 'text', + 'entity.name.function.assembly'], + regex: '(\\s*)(%define|%xdefine|%idefine|%undef|%assign|%defstr|%strcat|%strlen|%substr|%00|%0|%rotate|%rep|%endrep|%include|\\$\\$|\\$|%unmacro|%if|%elif|%else|%endif|%(?:el)?ifdef|%(?:el)?ifmacro|%(?:el)?ifctx|%(?:el)?ifidn|%(?:el)?ifidni|%(?:el)?ifid|%(?:el)?ifnum|%(?:el)?ifstr|%(?:el)?iftoken|%(?:el)?ifempty|%(?:el)?ifenv|%pathsearch|%depend|%use|%push|%pop|%repl|%arg|%stacksize|%local|%error|%warning|%fatal|%line|%!|%comment|%endcomment|__NASM_VERSION_ID__|__NASM_VER__|__FILE__|__LINE__|__BITS__|__OUTPUT_FORMAT__|__DATE__|__TIME__|__DATE_NUM__|_TIME__NUM__|__UTC_DATE__|__UTC_TIME__|__UTC_DATE_NUM__|__UTC_TIME_NUM__|__POSIX_TIME__|__PASS__|ISTRUC|AT|IEND|BITS 16|BITS 32|BITS 64|USE16|USE32|__SECT__|ABSOLUTE|EXTERN|GLOBAL|COMMON|CPU|FLOAT)\\b( ?)((?:[_a-zA-Z][_a-zA-Z0-9]*)?)', + caseInsensitive: true }, + { token: 'support.function.directive.assembly', + regex: '\\b(?:d[bwdqtoy]|res[bwdqto]|equ|times|align|alignb|sectalign|section|ptr|byte|word|dword|qword|incbin)\\b', + caseInsensitive: true }, + { token: 'entity.name.function.assembly', regex: '^\\s*%%[\\w.]+?:$' }, + { token: 'entity.name.function.assembly', regex: '^\\s*%\\$[\\w.]+?:$' }, + { token: 'entity.name.function.assembly', regex: '^[\\w.]+?:' }, + { token: 'entity.name.function.assembly', regex: '^[\\w.]+?\\b' }, + { token: 'comment.assembly', regex: ';.*$' }] }; - this.normalizeRules(); }; - -AssemblyX86HighlightRules.metaData = { fileTypes: [ 'asm' ], - name: 'Assembly x86', - scopeName: 'source.assembly' }; - - +AssemblyX86HighlightRules.metaData = { fileTypes: ['asm'], + name: 'Assembly x86', + scopeName: 'source.assembly' }; oop.inherits(AssemblyX86HighlightRules, TextHighlightRules); - exports.AssemblyX86HighlightRules = AssemblyX86HighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -139,48 +119,52 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/assembly_x86",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/assembly_x86_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { +define("ace/mode/assembly_x86",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/assembly_x86_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var AssemblyX86HighlightRules = require("./assembly_x86_highlight_rules").AssemblyX86HighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = AssemblyX86HighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = ";"; +(function () { + this.lineCommentStart = [";"]; this.$id = "ace/mode/assembly_x86"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/assembly_x86"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-astro.js b/vendor/assets/javascripts/ace/mode-astro.js new file mode 100644 index 00000000..1b942f24 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-astro.js @@ -0,0 +1,2414 @@ +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", // multi line comment + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/astro_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var JavascriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var AstroHighlightRules = function () { + HtmlHighlightRules.call(this); + var astro = { + token: "paren.quasi.start", + regex: /{/, + next: function (state, stack) { + if (state !== "start") { + if (state.indexOf("attribute-equals") !== -1) { + stack.splice(0); + stack.unshift("tag_stuff"); + } + else { + stack.unshift(state); + } + } + return "inline-js-start"; + } + }; + for (var key in this.$rules) { + if (key.startsWith("js") || + key.startsWith("css") || + key.startsWith("comment")) + continue; + this.$rules[key].unshift(astro); + } + this.$rules.start.unshift({ + token: "comment", + regex: /^---$/, + onMatch: function (value, state, stack) { + stack.splice(0); + return this.token; + }, + next: "javascript-start" + }); + this.embedRules(JavascriptHighlightRules, "javascript-", [ + { + regex: /^---$/, + token: "comment", + next: "start", + onMatch: function (value, state, stack) { + stack.splice(0); + return this.token; + } + } + ]); + this.embedRules(JavascriptHighlightRules, "inline-js-"); + var astroRules = [ + { + regex: /}/, + token: "paren.quasi.end", + onMatch: function (value, state, stack) { + if (stack[0] === "inline-js-start") { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") !== -1) + return "paren.quasi.end"; + return "paren.rparen"; + } + else { + this.next = stack.shift() || "start"; + return this.token; + } + } + }, + { + regex: /{/, + token: "paren.lparen", + push: "inline-js-start" + } + ]; + this.$rules["inline-js-start"].unshift(astroRules); + this.$rules["inline-js-no_regex"].unshift(astroRules); + function overwriteJSXendRule(prefix) { + for (var index in this.$rules[prefix + "jsxAttributes"]) { + if (this.$rules[prefix + "jsxAttributes"][index].token === + "meta.tag.punctuation.tag-close.xml") { + this.$rules[prefix + "jsxAttributes"][index].onMatch = function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || prefix + "start"; + return [{ type: this.token, value: value }]; + }; + break; + } + } + } + overwriteJSXendRule.call(this, "javascript-"); + overwriteJSXendRule.call(this, "inline-js-"); + this.normalizeRules(); +}; +oop.inherits(AstroHighlightRules, HtmlHighlightRules); +exports.AstroHighlightRules = AstroHighlightRules; + +}); + +define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; +var HtmlBehaviour = function () { + XmlBehaviour.call(this); +}; +oop.inherits(HtmlBehaviour, XmlBehaviour); +exports.HtmlBehaviour = HtmlBehaviour; + +}); + +define("ace/mode/astro",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/astro_highlight_rules","ace/mode/behaviour/html"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var AstroHighlightRules = require("./astro_highlight_rules").AstroHighlightRules; +var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = AstroHighlightRules; + this.$behaviour = new HtmlBehaviour(); +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.$id = "ace/mode/astro"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/astro"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-autohotkey.js b/vendor/assets/javascripts/ace/mode-autohotkey.js index 1b1d3e13..f941a12f 100644 --- a/vendor/assets/javascripts/ace/mode-autohotkey.js +++ b/vendor/assets/javascripts/ace/mode-autohotkey.js @@ -1,158 +1,125 @@ -define("ace/mode/autohotkey_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/autohotkey_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from C:\Users\LED\Desktop\AutoHotKey.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var AutoHotKeyHighlightRules = function() { - var autoItKeywords = 'And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|' + +var AutoHotKeyHighlightRules = function () { + var autoItKeywords = 'And|ByRef|Case|Const|ContinueCase|ContinueLoop|Default|Dim|Do|Else|ElseIf|EndFunc|EndIf|EndSelect|EndSwitch|EndWith|Enum|Exit|ExitLoop|False|For|Func|Global|If|In|Local|Next|Not|Or|ReDim|Return|Select|Step|Switch|Then|To|True|Until|WEnd|While|With|' + 'Abs|ACos|AdlibDisable|AdlibEnable|Asc|AscW|ASin|Assign|ATan|AutoItSetOption|AutoItWinGetTitle|AutoItWinSetTitle|Beep|Binary|BinaryLen|BinaryMid|BinaryToString|BitAND|BitNOT|BitOR|BitRotate|BitShift|BitXOR|BlockInput|Break|Call|CDTray|Ceiling|Chr|ChrW|ClipGet|ClipPut|ConsoleRead|ConsoleWrite|ConsoleWriteError|ControlClick|ControlCommand|ControlDisable|ControlEnable|ControlFocus|ControlGetFocus|ControlGetHandle|ControlGetPos|ControlGetText|ControlHide|ControlListView|ControlMove|ControlSend|ControlSetText|ControlShow|ControlTreeView|Cos|Dec|DirCopy|DirCreate|DirGetSize|DirMove|DirRemove|DllCall|DllCallbackFree|DllCallbackGetPtr|DllCallbackRegister|DllClose|DllOpen|DllStructCreate|DllStructGetData|DllStructGetPtr|DllStructGetSize|DllStructSetData|DriveGetDrive|DriveGetFileSystem|DriveGetLabel|DriveGetSerial|DriveGetType|DriveMapAdd|DriveMapDel|DriveMapGet|DriveSetLabel|DriveSpaceFree|DriveSpaceTotal|DriveStatus|EnvGet|EnvSet|EnvUpdate|Eval|Execute|Exp|FileChangeDir|FileClose|FileCopy|FileCreateNTFSLink|FileCreateShortcut|FileDelete|FileExists|FileFindFirstFile|FileFindNextFile|FileGetAttrib|FileGetLongName|FileGetShortcut|FileGetShortName|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileOpen|FileOpenDialog|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileSaveDialog|FileSelectFolder|FileSetAttrib|FileSetTime|FileWrite|FileWriteLine|Floor|FtpSetProxy|GUICreate|GUICtrlCreateAvi|GUICtrlCreateButton|GUICtrlCreateCheckbox|GUICtrlCreateCombo|GUICtrlCreateContextMenu|GUICtrlCreateDate|GUICtrlCreateDummy|GUICtrlCreateEdit|GUICtrlCreateGraphic|GUICtrlCreateGroup|GUICtrlCreateIcon|GUICtrlCreateInput|GUICtrlCreateLabel|GUICtrlCreateList|GUICtrlCreateListView|GUICtrlCreateListViewItem|GUICtrlCreateMenu|GUICtrlCreateMenuItem|GUICtrlCreateMonthCal|GUICtrlCreateObj|GUICtrlCreatePic|GUICtrlCreateProgress|GUICtrlCreateRadio|GUICtrlCreateSlider|GUICtrlCreateTab|GUICtrlCreateTabItem|GUICtrlCreateTreeView|GUICtrlCreateTreeViewItem|GUICtrlCreateUpdown|GUICtrlDelete|GUICtrlGetHandle|GUICtrlGetState|GUICtrlRead|GUICtrlRecvMsg|GUICtrlRegisterListViewSort|GUICtrlSendMsg|GUICtrlSendToDummy|GUICtrlSetBkColor|GUICtrlSetColor|GUICtrlSetCursor|GUICtrlSetData|GUICtrlSetFont|GUICtrlSetDefColor|GUICtrlSetDefBkColor|GUICtrlSetGraphic|GUICtrlSetImage|GUICtrlSetLimit|GUICtrlSetOnEvent|GUICtrlSetPos|GUICtrlSetResizing|GUICtrlSetState|GUICtrlSetStyle|GUICtrlSetTip|GUIDelete|GUIGetCursorInfo|GUIGetMsg|GUIGetStyle|GUIRegisterMsg|GUISetAccelerators()|GUISetBkColor|GUISetCoord|GUISetCursor|GUISetFont|GUISetHelp|GUISetIcon|GUISetOnEvent|GUISetState|GUISetStyle|GUIStartGroup|GUISwitch|Hex|HotKeySet|HttpSetProxy|HWnd|InetGet|InetGetSize|IniDelete|IniRead|IniReadSection|IniReadSectionNames|IniRenameSection|IniWrite|IniWriteSection|InputBox|Int|IsAdmin|IsArray|IsBinary|IsBool|IsDeclared|IsDllStruct|IsFloat|IsHWnd|IsInt|IsKeyword|IsNumber|IsObj|IsPtr|IsString|Log|MemGetStats|Mod|MouseClick|MouseClickDrag|MouseDown|MouseGetCursor|MouseGetPos|MouseMove|MouseUp|MouseWheel|MsgBox|Number|ObjCreate|ObjEvent|ObjGet|ObjName|Opt|Ping|PixelChecksum|PixelGetColor|PixelSearch|PluginClose|PluginOpen|ProcessClose|ProcessExists|ProcessGetStats|ProcessList|ProcessSetPriority|ProcessWait|ProcessWaitClose|ProgressOff|ProgressOn|ProgressSet|Ptr|Random|RegDelete|RegEnumKey|RegEnumVal|RegRead|RegWrite|Round|Run|RunAs|RunAsWait|RunWait|Send|SendKeepActive|SetError|SetExtended|ShellExecute|ShellExecuteWait|Shutdown|Sin|Sleep|SoundPlay|SoundSetWaveVolume|SplashImageOn|SplashOff|SplashTextOn|Sqrt|SRandom|StatusbarGetText|StderrRead|StdinWrite|StdioClose|StdoutRead|String|StringAddCR|StringCompare|StringFormat|StringInStr|StringIsAlNum|StringIsAlpha|StringIsASCII|StringIsDigit|StringIsFloat|StringIsInt|StringIsLower|StringIsSpace|StringIsUpper|StringIsXDigit|StringLeft|StringLen|StringLower|StringMid|StringRegExp|StringRegExpReplace|StringReplace|StringRight|StringSplit|StringStripCR|StringStripWS|StringToBinary|StringTrimLeft|StringTrimRight|StringUpper|Tan|TCPAccept|TCPCloseSocket|TCPConnect|TCPListen|TCPNameToIP|TCPRecv|TCPSend|TCPShutdown|TCPStartup|TimerDiff|TimerInit|ToolTip|TrayCreateItem|TrayCreateMenu|TrayGetMsg|TrayItemDelete|TrayItemGetHandle|TrayItemGetState|TrayItemGetText|TrayItemSetOnEvent|TrayItemSetState|TrayItemSetText|TraySetClick|TraySetIcon|TraySetOnEvent|TraySetPauseIcon|TraySetState|TraySetToolTip|TrayTip|UBound|UDPBind|UDPCloseSocket|UDPOpen|UDPRecv|UDPSend|UDPShutdown|UDPStartup|VarGetType|WinActivate|WinActive|WinClose|WinExists|WinFlash|WinGetCaretPos|WinGetClassList|WinGetClientSize|WinGetHandle|WinGetPos|WinGetProcess|WinGetState|WinGetText|WinGetTitle|WinKill|WinList|WinMenuSelectItem|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinSetOnTop|WinSetState|WinSetTitle|WinSetTrans|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive|' + 'ArrayAdd|ArrayBinarySearch|ArrayConcatenate|ArrayDelete|ArrayDisplay|ArrayFindAll|ArrayInsert|ArrayMax|ArrayMaxIndex|ArrayMin|ArrayMinIndex|ArrayPop|ArrayPush|ArrayReverse|ArraySearch|ArraySort|ArraySwap|ArrayToClip|ArrayToString|ArrayTrim|ChooseColor|ChooseFont|ClipBoard_ChangeChain|ClipBoard_Close|ClipBoard_CountFormats|ClipBoard_Empty|ClipBoard_EnumFormats|ClipBoard_FormatStr|ClipBoard_GetData|ClipBoard_GetDataEx|ClipBoard_GetFormatName|ClipBoard_GetOpenWindow|ClipBoard_GetOwner|ClipBoard_GetPriorityFormat|ClipBoard_GetSequenceNumber|ClipBoard_GetViewer|ClipBoard_IsFormatAvailable|ClipBoard_Open|ClipBoard_RegisterFormat|ClipBoard_SetData|ClipBoard_SetDataEx|ClipBoard_SetViewer|ClipPutFile|ColorConvertHSLtoRGB|ColorConvertRGBtoHSL|ColorGetBlue|ColorGetGreen|ColorGetRed|Date_Time_CompareFileTime|Date_Time_DOSDateTimeToArray|Date_Time_DOSDateTimeToFileTime|Date_Time_DOSDateTimeToStr|Date_Time_DOSDateToArray|Date_Time_DOSDateToStr|Date_Time_DOSTimeToArray|Date_Time_DOSTimeToStr|Date_Time_EncodeFileTime|Date_Time_EncodeSystemTime|Date_Time_FileTimeToArray|Date_Time_FileTimeToDOSDateTime|Date_Time_FileTimeToLocalFileTime|Date_Time_FileTimeToStr|Date_Time_FileTimeToSystemTime|Date_Time_GetFileTime|Date_Time_GetLocalTime|Date_Time_GetSystemTime|Date_Time_GetSystemTimeAdjustment|Date_Time_GetSystemTimeAsFileTime|Date_Time_GetSystemTimes|Date_Time_GetTickCount|Date_Time_GetTimeZoneInformation|Date_Time_LocalFileTimeToFileTime|Date_Time_SetFileTime|Date_Time_SetLocalTime|Date_Time_SetSystemTime|Date_Time_SetSystemTimeAdjustment|Date_Time_SetTimeZoneInformation|Date_Time_SystemTimeToArray|Date_Time_SystemTimeToDateStr|Date_Time_SystemTimeToDateTimeStr|Date_Time_SystemTimeToFileTime|Date_Time_SystemTimeToTimeStr|Date_Time_SystemTimeToTzSpecificLocalTime|Date_Time_TzSpecificLocalTimeToSystemTime|DateAdd|DateDayOfWeek|DateDaysInMonth|DateDiff|DateIsLeapYear|DateIsValid|DateTimeFormat|DateTimeSplit|DateToDayOfWeek|DateToDayOfWeekISO|DateToDayValue|DateToMonth|DayValueToDate|DebugBugReportEnv|DebugOut|DebugSetup|Degree|EventLog__Backup|EventLog__Clear|EventLog__Close|EventLog__Count|EventLog__DeregisterSource|EventLog__Full|EventLog__Notify|EventLog__Oldest|EventLog__Open|EventLog__OpenBackup|EventLog__Read|EventLog__RegisterSource|EventLog__Report|FileCountLines|FileCreate|FileListToArray|FilePrint|FileReadToArray|FileWriteFromArray|FileWriteLog|FileWriteToLine|GDIPlus_ArrowCapCreate|GDIPlus_ArrowCapDispose|GDIPlus_ArrowCapGetFillState|GDIPlus_ArrowCapGetHeight|GDIPlus_ArrowCapGetMiddleInset|GDIPlus_ArrowCapGetWidth|GDIPlus_ArrowCapSetFillState|GDIPlus_ArrowCapSetHeight|GDIPlus_ArrowCapSetMiddleInset|GDIPlus_ArrowCapSetWidth|GDIPlus_BitmapCloneArea|GDIPlus_BitmapCreateFromFile|GDIPlus_BitmapCreateFromGraphics|GDIPlus_BitmapCreateFromHBITMAP|GDIPlus_BitmapCreateHBITMAPFromBitmap|GDIPlus_BitmapDispose|GDIPlus_BitmapLockBits|GDIPlus_BitmapUnlockBits|GDIPlus_BrushClone|GDIPlus_BrushCreateSolid|GDIPlus_BrushDispose|GDIPlus_BrushGetType|GDIPlus_CustomLineCapDispose|GDIPlus_Decoders|GDIPlus_DecodersGetCount|GDIPlus_DecodersGetSize|GDIPlus_Encoders|GDIPlus_EncodersGetCLSID|GDIPlus_EncodersGetCount|GDIPlus_EncodersGetParamList|GDIPlus_EncodersGetParamListSize|GDIPlus_EncodersGetSize|GDIPlus_FontCreate|GDIPlus_FontDispose|GDIPlus_FontFamilyCreate|GDIPlus_FontFamilyDispose|GDIPlus_GraphicsClear|GDIPlus_GraphicsCreateFromHDC|GDIPlus_GraphicsCreateFromHWND|GDIPlus_GraphicsDispose|GDIPlus_GraphicsDrawArc|GDIPlus_GraphicsDrawBezier|GDIPlus_GraphicsDrawClosedCurve|GDIPlus_GraphicsDrawCurve|GDIPlus_GraphicsDrawEllipse|GDIPlus_GraphicsDrawImage|GDIPlus_GraphicsDrawImageRect|GDIPlus_GraphicsDrawImageRectRect|GDIPlus_GraphicsDrawLine|GDIPlus_GraphicsDrawPie|GDIPlus_GraphicsDrawPolygon|GDIPlus_GraphicsDrawRect|GDIPlus_GraphicsDrawString|GDIPlus_GraphicsDrawStringEx|GDIPlus_GraphicsFillClosedCurve|GDIPlus_GraphicsFillEllipse|GDIPlus_GraphicsFillPie|GDIPlus_GraphicsFillRect|GDIPlus_GraphicsGetDC|GDIPlus_GraphicsGetSmoothingMode|GDIPlus_GraphicsMeasureString|GDIPlus_GraphicsReleaseDC|GDIPlus_GraphicsSetSmoothingMode|GDIPlus_GraphicsSetTransform|GDIPlus_ImageDispose|GDIPlus_ImageGetGraphicsContext|GDIPlus_ImageGetHeight|GDIPlus_ImageGetWidth|GDIPlus_ImageLoadFromFile|GDIPlus_ImageSaveToFile|GDIPlus_ImageSaveToFileEx|GDIPlus_MatrixCreate|GDIPlus_MatrixDispose|GDIPlus_MatrixRotate|GDIPlus_ParamAdd|GDIPlus_ParamInit|GDIPlus_PenCreate|GDIPlus_PenDispose|GDIPlus_PenGetAlignment|GDIPlus_PenGetColor|GDIPlus_PenGetCustomEndCap|GDIPlus_PenGetDashCap|GDIPlus_PenGetDashStyle|GDIPlus_PenGetEndCap|GDIPlus_PenGetWidth|GDIPlus_PenSetAlignment|GDIPlus_PenSetColor|GDIPlus_PenSetCustomEndCap|GDIPlus_PenSetDashCap|GDIPlus_PenSetDashStyle|GDIPlus_PenSetEndCap|GDIPlus_PenSetWidth|GDIPlus_RectFCreate|GDIPlus_Shutdown|GDIPlus_Startup|GDIPlus_StringFormatCreate|GDIPlus_StringFormatDispose|GetIP|GUICtrlAVI_Close|GUICtrlAVI_Create|GUICtrlAVI_Destroy|GUICtrlAVI_Open|GUICtrlAVI_OpenEx|GUICtrlAVI_Play|GUICtrlAVI_Seek|GUICtrlAVI_Show|GUICtrlAVI_Stop|GUICtrlButton_Click|GUICtrlButton_Create|GUICtrlButton_Destroy|GUICtrlButton_Enable|GUICtrlButton_GetCheck|GUICtrlButton_GetFocus|GUICtrlButton_GetIdealSize|GUICtrlButton_GetImage|GUICtrlButton_GetImageList|GUICtrlButton_GetState|GUICtrlButton_GetText|GUICtrlButton_GetTextMargin|GUICtrlButton_SetCheck|GUICtrlButton_SetFocus|GUICtrlButton_SetImage|GUICtrlButton_SetImageList|GUICtrlButton_SetSize|GUICtrlButton_SetState|GUICtrlButton_SetStyle|GUICtrlButton_SetText|GUICtrlButton_SetTextMargin|GUICtrlButton_Show|GUICtrlComboBox_AddDir|GUICtrlComboBox_AddString|GUICtrlComboBox_AutoComplete|GUICtrlComboBox_BeginUpdate|GUICtrlComboBox_Create|GUICtrlComboBox_DeleteString|GUICtrlComboBox_Destroy|GUICtrlComboBox_EndUpdate|GUICtrlComboBox_FindString|GUICtrlComboBox_FindStringExact|GUICtrlComboBox_GetComboBoxInfo|GUICtrlComboBox_GetCount|GUICtrlComboBox_GetCurSel|GUICtrlComboBox_GetDroppedControlRect|GUICtrlComboBox_GetDroppedControlRectEx|GUICtrlComboBox_GetDroppedState|GUICtrlComboBox_GetDroppedWidth|GUICtrlComboBox_GetEditSel|GUICtrlComboBox_GetEditText|GUICtrlComboBox_GetExtendedUI|GUICtrlComboBox_GetHorizontalExtent|GUICtrlComboBox_GetItemHeight|GUICtrlComboBox_GetLBText|GUICtrlComboBox_GetLBTextLen|GUICtrlComboBox_GetList|GUICtrlComboBox_GetListArray|GUICtrlComboBox_GetLocale|GUICtrlComboBox_GetLocaleCountry|GUICtrlComboBox_GetLocaleLang|GUICtrlComboBox_GetLocalePrimLang|GUICtrlComboBox_GetLocaleSubLang|GUICtrlComboBox_GetMinVisible|GUICtrlComboBox_GetTopIndex|GUICtrlComboBox_InitStorage|GUICtrlComboBox_InsertString|GUICtrlComboBox_LimitText|GUICtrlComboBox_ReplaceEditSel|GUICtrlComboBox_ResetContent|GUICtrlComboBox_SelectString|GUICtrlComboBox_SetCurSel|GUICtrlComboBox_SetDroppedWidth|GUICtrlComboBox_SetEditSel|GUICtrlComboBox_SetEditText|GUICtrlComboBox_SetExtendedUI|GUICtrlComboBox_SetHorizontalExtent|GUICtrlComboBox_SetItemHeight|GUICtrlComboBox_SetMinVisible|GUICtrlComboBox_SetTopIndex|GUICtrlComboBox_ShowDropDown|GUICtrlComboBoxEx_AddDir|GUICtrlComboBoxEx_AddString|GUICtrlComboBoxEx_BeginUpdate|GUICtrlComboBoxEx_Create|GUICtrlComboBoxEx_CreateSolidBitMap|GUICtrlComboBoxEx_DeleteString|GUICtrlComboBoxEx_Destroy|GUICtrlComboBoxEx_EndUpdate|GUICtrlComboBoxEx_FindStringExact|GUICtrlComboBoxEx_GetComboBoxInfo|GUICtrlComboBoxEx_GetComboControl|GUICtrlComboBoxEx_GetCount|GUICtrlComboBoxEx_GetCurSel|GUICtrlComboBoxEx_GetDroppedControlRect|GUICtrlComboBoxEx_GetDroppedControlRectEx|GUICtrlComboBoxEx_GetDroppedState|GUICtrlComboBoxEx_GetDroppedWidth|GUICtrlComboBoxEx_GetEditControl|GUICtrlComboBoxEx_GetEditSel|GUICtrlComboBoxEx_GetEditText|GUICtrlComboBoxEx_GetExtendedStyle|GUICtrlComboBoxEx_GetExtendedUI|GUICtrlComboBoxEx_GetImageList|GUICtrlComboBoxEx_GetItem|GUICtrlComboBoxEx_GetItemEx|GUICtrlComboBoxEx_GetItemHeight|GUICtrlComboBoxEx_GetItemImage|GUICtrlComboBoxEx_GetItemIndent|GUICtrlComboBoxEx_GetItemOverlayImage|GUICtrlComboBoxEx_GetItemParam|GUICtrlComboBoxEx_GetItemSelectedImage|GUICtrlComboBoxEx_GetItemText|GUICtrlComboBoxEx_GetItemTextLen|GUICtrlComboBoxEx_GetList|GUICtrlComboBoxEx_GetListArray|GUICtrlComboBoxEx_GetLocale|GUICtrlComboBoxEx_GetLocaleCountry|GUICtrlComboBoxEx_GetLocaleLang|GUICtrlComboBoxEx_GetLocalePrimLang|GUICtrlComboBoxEx_GetLocaleSubLang|GUICtrlComboBoxEx_GetMinVisible|GUICtrlComboBoxEx_GetTopIndex|GUICtrlComboBoxEx_InitStorage|GUICtrlComboBoxEx_InsertString|GUICtrlComboBoxEx_LimitText|GUICtrlComboBoxEx_ReplaceEditSel|GUICtrlComboBoxEx_ResetContent|GUICtrlComboBoxEx_SetCurSel|GUICtrlComboBoxEx_SetDroppedWidth|GUICtrlComboBoxEx_SetEditSel|GUICtrlComboBoxEx_SetEditText|GUICtrlComboBoxEx_SetExtendedStyle|GUICtrlComboBoxEx_SetExtendedUI|GUICtrlComboBoxEx_SetImageList|GUICtrlComboBoxEx_SetItem|GUICtrlComboBoxEx_SetItemEx|GUICtrlComboBoxEx_SetItemHeight|GUICtrlComboBoxEx_SetItemImage|GUICtrlComboBoxEx_SetItemIndent|GUICtrlComboBoxEx_SetItemOverlayImage|GUICtrlComboBoxEx_SetItemParam|GUICtrlComboBoxEx_SetItemSelectedImage|GUICtrlComboBoxEx_SetMinVisible|GUICtrlComboBoxEx_SetTopIndex|GUICtrlComboBoxEx_ShowDropDown|GUICtrlDTP_Create|GUICtrlDTP_Destroy|GUICtrlDTP_GetMCColor|GUICtrlDTP_GetMCFont|GUICtrlDTP_GetMonthCal|GUICtrlDTP_GetRange|GUICtrlDTP_GetRangeEx|GUICtrlDTP_GetSystemTime|GUICtrlDTP_GetSystemTimeEx|GUICtrlDTP_SetFormat|GUICtrlDTP_SetMCColor|GUICtrlDTP_SetMCFont|GUICtrlDTP_SetRange|GUICtrlDTP_SetRangeEx|GUICtrlDTP_SetSystemTime|GUICtrlDTP_SetSystemTimeEx|GUICtrlEdit_AppendText|GUICtrlEdit_BeginUpdate|GUICtrlEdit_CanUndo|GUICtrlEdit_CharFromPos|GUICtrlEdit_Create|GUICtrlEdit_Destroy|GUICtrlEdit_EmptyUndoBuffer|GUICtrlEdit_EndUpdate|GUICtrlEdit_Find|GUICtrlEdit_FmtLines|GUICtrlEdit_GetFirstVisibleLine|GUICtrlEdit_GetLimitText|GUICtrlEdit_GetLine|GUICtrlEdit_GetLineCount|GUICtrlEdit_GetMargins|GUICtrlEdit_GetModify|GUICtrlEdit_GetPasswordChar|GUICtrlEdit_GetRECT|GUICtrlEdit_GetRECTEx|GUICtrlEdit_GetSel|GUICtrlEdit_GetText|GUICtrlEdit_GetTextLen|GUICtrlEdit_HideBalloonTip|GUICtrlEdit_InsertText|GUICtrlEdit_LineFromChar|GUICtrlEdit_LineIndex|GUICtrlEdit_LineLength|GUICtrlEdit_LineScroll|GUICtrlEdit_PosFromChar|GUICtrlEdit_ReplaceSel|GUICtrlEdit_Scroll|GUICtrlEdit_SetLimitText|GUICtrlEdit_SetMargins|GUICtrlEdit_SetModify|GUICtrlEdit_SetPasswordChar|GUICtrlEdit_SetReadOnly|GUICtrlEdit_SetRECT|GUICtrlEdit_SetRECTEx|GUICtrlEdit_SetRECTNP|GUICtrlEdit_SetRectNPEx|GUICtrlEdit_SetSel|GUICtrlEdit_SetTabStops|GUICtrlEdit_SetText|GUICtrlEdit_ShowBalloonTip|GUICtrlEdit_Undo|GUICtrlHeader_AddItem|GUICtrlHeader_ClearFilter|GUICtrlHeader_ClearFilterAll|GUICtrlHeader_Create|GUICtrlHeader_CreateDragImage|GUICtrlHeader_DeleteItem|GUICtrlHeader_Destroy|GUICtrlHeader_EditFilter|GUICtrlHeader_GetBitmapMargin|GUICtrlHeader_GetImageList|GUICtrlHeader_GetItem|GUICtrlHeader_GetItemAlign|GUICtrlHeader_GetItemBitmap|GUICtrlHeader_GetItemCount|GUICtrlHeader_GetItemDisplay|GUICtrlHeader_GetItemFlags|GUICtrlHeader_GetItemFormat|GUICtrlHeader_GetItemImage|GUICtrlHeader_GetItemOrder|GUICtrlHeader_GetItemParam|GUICtrlHeader_GetItemRect|GUICtrlHeader_GetItemRectEx|GUICtrlHeader_GetItemText|GUICtrlHeader_GetItemWidth|GUICtrlHeader_GetOrderArray|GUICtrlHeader_GetUnicodeFormat|GUICtrlHeader_HitTest|GUICtrlHeader_InsertItem|GUICtrlHeader_Layout|GUICtrlHeader_OrderToIndex|GUICtrlHeader_SetBitmapMargin|GUICtrlHeader_SetFilterChangeTimeout|GUICtrlHeader_SetHotDivider|GUICtrlHeader_SetImageList|GUICtrlHeader_SetItem|GUICtrlHeader_SetItemAlign|GUICtrlHeader_SetItemBitmap|GUICtrlHeader_SetItemDisplay|GUICtrlHeader_SetItemFlags|GUICtrlHeader_SetItemFormat|GUICtrlHeader_SetItemImage|GUICtrlHeader_SetItemOrder|GUICtrlHeader_SetItemParam|GUICtrlHeader_SetItemText|GUICtrlHeader_SetItemWidth|GUICtrlHeader_SetOrderArray|GUICtrlHeader_SetUnicodeFormat|GUICtrlIpAddress_ClearAddress|GUICtrlIpAddress_Create|GUICtrlIpAddress_Destroy|GUICtrlIpAddress_Get|GUICtrlIpAddress_GetArray|GUICtrlIpAddress_GetEx|GUICtrlIpAddress_IsBlank|GUICtrlIpAddress_Set|GUICtrlIpAddress_SetArray|GUICtrlIpAddress_SetEx|GUICtrlIpAddress_SetFocus|GUICtrlIpAddress_SetFont|GUICtrlIpAddress_SetRange|GUICtrlIpAddress_ShowHide|GUICtrlListBox_AddFile|GUICtrlListBox_AddString|GUICtrlListBox_BeginUpdate|GUICtrlListBox_Create|GUICtrlListBox_DeleteString|GUICtrlListBox_Destroy|GUICtrlListBox_Dir|GUICtrlListBox_EndUpdate|GUICtrlListBox_FindInText|GUICtrlListBox_FindString|GUICtrlListBox_GetAnchorIndex|GUICtrlListBox_GetCaretIndex|GUICtrlListBox_GetCount|GUICtrlListBox_GetCurSel|GUICtrlListBox_GetHorizontalExtent|GUICtrlListBox_GetItemData|GUICtrlListBox_GetItemHeight|GUICtrlListBox_GetItemRect|GUICtrlListBox_GetItemRectEx|GUICtrlListBox_GetListBoxInfo|GUICtrlListBox_GetLocale|GUICtrlListBox_GetLocaleCountry|GUICtrlListBox_GetLocaleLang|GUICtrlListBox_GetLocalePrimLang|GUICtrlListBox_GetLocaleSubLang|GUICtrlListBox_GetSel|GUICtrlListBox_GetSelCount|GUICtrlListBox_GetSelItems|GUICtrlListBox_GetSelItemsText|GUICtrlListBox_GetText|GUICtrlListBox_GetTextLen|GUICtrlListBox_GetTopIndex|GUICtrlListBox_InitStorage|GUICtrlListBox_InsertString|GUICtrlListBox_ItemFromPoint|GUICtrlListBox_ReplaceString|GUICtrlListBox_ResetContent|GUICtrlListBox_SelectString|GUICtrlListBox_SelItemRange|GUICtrlListBox_SelItemRangeEx|GUICtrlListBox_SetAnchorIndex|GUICtrlListBox_SetCaretIndex|GUICtrlListBox_SetColumnWidth|GUICtrlListBox_SetCurSel|GUICtrlListBox_SetHorizontalExtent|GUICtrlListBox_SetItemData|GUICtrlListBox_SetItemHeight|GUICtrlListBox_SetLocale|GUICtrlListBox_SetSel|GUICtrlListBox_SetTabStops|GUICtrlListBox_SetTopIndex|GUICtrlListBox_Sort|GUICtrlListBox_SwapString|GUICtrlListBox_UpdateHScroll|GUICtrlListView_AddArray|GUICtrlListView_AddColumn|GUICtrlListView_AddItem|GUICtrlListView_AddSubItem|GUICtrlListView_ApproximateViewHeight|GUICtrlListView_ApproximateViewRect|GUICtrlListView_ApproximateViewWidth|GUICtrlListView_Arrange|GUICtrlListView_BeginUpdate|GUICtrlListView_CancelEditLabel|GUICtrlListView_ClickItem|GUICtrlListView_CopyItems|GUICtrlListView_Create|GUICtrlListView_CreateDragImage|GUICtrlListView_CreateSolidBitMap|GUICtrlListView_DeleteAllItems|GUICtrlListView_DeleteColumn|GUICtrlListView_DeleteItem|GUICtrlListView_DeleteItemsSelected|GUICtrlListView_Destroy|GUICtrlListView_DrawDragImage|GUICtrlListView_EditLabel|GUICtrlListView_EnableGroupView|GUICtrlListView_EndUpdate|GUICtrlListView_EnsureVisible|GUICtrlListView_FindInText|GUICtrlListView_FindItem|GUICtrlListView_FindNearest|GUICtrlListView_FindParam|GUICtrlListView_FindText|GUICtrlListView_GetBkColor|GUICtrlListView_GetBkImage|GUICtrlListView_GetCallbackMask|GUICtrlListView_GetColumn|GUICtrlListView_GetColumnCount|GUICtrlListView_GetColumnOrder|GUICtrlListView_GetColumnOrderArray|GUICtrlListView_GetColumnWidth|GUICtrlListView_GetCounterPage|GUICtrlListView_GetEditControl|GUICtrlListView_GetExtendedListViewStyle|GUICtrlListView_GetGroupInfo|GUICtrlListView_GetGroupViewEnabled|GUICtrlListView_GetHeader|GUICtrlListView_GetHotCursor|GUICtrlListView_GetHotItem|GUICtrlListView_GetHoverTime|GUICtrlListView_GetImageList|GUICtrlListView_GetISearchString|GUICtrlListView_GetItem|GUICtrlListView_GetItemChecked|GUICtrlListView_GetItemCount|GUICtrlListView_GetItemCut|GUICtrlListView_GetItemDropHilited|GUICtrlListView_GetItemEx|GUICtrlListView_GetItemFocused|GUICtrlListView_GetItemGroupID|GUICtrlListView_GetItemImage|GUICtrlListView_GetItemIndent|GUICtrlListView_GetItemParam|GUICtrlListView_GetItemPosition|GUICtrlListView_GetItemPositionX|GUICtrlListView_GetItemPositionY|GUICtrlListView_GetItemRect|GUICtrlListView_GetItemRectEx|GUICtrlListView_GetItemSelected|GUICtrlListView_GetItemSpacing|GUICtrlListView_GetItemSpacingX|GUICtrlListView_GetItemSpacingY|GUICtrlListView_GetItemState|GUICtrlListView_GetItemStateImage|GUICtrlListView_GetItemText|GUICtrlListView_GetItemTextArray|GUICtrlListView_GetItemTextString|GUICtrlListView_GetNextItem|GUICtrlListView_GetNumberOfWorkAreas|GUICtrlListView_GetOrigin|GUICtrlListView_GetOriginX|GUICtrlListView_GetOriginY|GUICtrlListView_GetOutlineColor|GUICtrlListView_GetSelectedColumn|GUICtrlListView_GetSelectedCount|GUICtrlListView_GetSelectedIndices|GUICtrlListView_GetSelectionMark|GUICtrlListView_GetStringWidth|GUICtrlListView_GetSubItemRect|GUICtrlListView_GetTextBkColor|GUICtrlListView_GetTextColor|GUICtrlListView_GetToolTips|GUICtrlListView_GetTopIndex|GUICtrlListView_GetUnicodeFormat|GUICtrlListView_GetView|GUICtrlListView_GetViewDetails|GUICtrlListView_GetViewLarge|GUICtrlListView_GetViewList|GUICtrlListView_GetViewRect|GUICtrlListView_GetViewSmall|GUICtrlListView_GetViewTile|GUICtrlListView_HideColumn|GUICtrlListView_HitTest|GUICtrlListView_InsertColumn|GUICtrlListView_InsertGroup|GUICtrlListView_InsertItem|GUICtrlListView_JustifyColumn|GUICtrlListView_MapIDToIndex|GUICtrlListView_MapIndexToID|GUICtrlListView_RedrawItems|GUICtrlListView_RegisterSortCallBack|GUICtrlListView_RemoveAllGroups|GUICtrlListView_RemoveGroup|GUICtrlListView_Scroll|GUICtrlListView_SetBkColor|GUICtrlListView_SetBkImage|GUICtrlListView_SetCallBackMask|GUICtrlListView_SetColumn|GUICtrlListView_SetColumnOrder|GUICtrlListView_SetColumnOrderArray|GUICtrlListView_SetColumnWidth|GUICtrlListView_SetExtendedListViewStyle|GUICtrlListView_SetGroupInfo|GUICtrlListView_SetHotItem|GUICtrlListView_SetHoverTime|GUICtrlListView_SetIconSpacing|GUICtrlListView_SetImageList|GUICtrlListView_SetItem|GUICtrlListView_SetItemChecked|GUICtrlListView_SetItemCount|GUICtrlListView_SetItemCut|GUICtrlListView_SetItemDropHilited|GUICtrlListView_SetItemEx|GUICtrlListView_SetItemFocused|GUICtrlListView_SetItemGroupID|GUICtrlListView_SetItemImage|GUICtrlListView_SetItemIndent|GUICtrlListView_SetItemParam|GUICtrlListView_SetItemPosition|GUICtrlListView_SetItemPosition32|GUICtrlListView_SetItemSelected|GUICtrlListView_SetItemState|GUICtrlListView_SetItemStateImage|GUICtrlListView_SetItemText|GUICtrlListView_SetOutlineColor|GUICtrlListView_SetSelectedColumn|GUICtrlListView_SetSelectionMark|GUICtrlListView_SetTextBkColor|GUICtrlListView_SetTextColor|GUICtrlListView_SetToolTips|GUICtrlListView_SetUnicodeFormat|GUICtrlListView_SetView|GUICtrlListView_SetWorkAreas|GUICtrlListView_SimpleSort|GUICtrlListView_SortItems|GUICtrlListView_SubItemHitTest|GUICtrlListView_UnRegisterSortCallBack|GUICtrlMenu_AddMenuItem|GUICtrlMenu_AppendMenu|GUICtrlMenu_CheckMenuItem|GUICtrlMenu_CheckRadioItem|GUICtrlMenu_CreateMenu|GUICtrlMenu_CreatePopup|GUICtrlMenu_DeleteMenu|GUICtrlMenu_DestroyMenu|GUICtrlMenu_DrawMenuBar|GUICtrlMenu_EnableMenuItem|GUICtrlMenu_FindItem|GUICtrlMenu_FindParent|GUICtrlMenu_GetItemBmp|GUICtrlMenu_GetItemBmpChecked|GUICtrlMenu_GetItemBmpUnchecked|GUICtrlMenu_GetItemChecked|GUICtrlMenu_GetItemCount|GUICtrlMenu_GetItemData|GUICtrlMenu_GetItemDefault|GUICtrlMenu_GetItemDisabled|GUICtrlMenu_GetItemEnabled|GUICtrlMenu_GetItemGrayed|GUICtrlMenu_GetItemHighlighted|GUICtrlMenu_GetItemID|GUICtrlMenu_GetItemInfo|GUICtrlMenu_GetItemRect|GUICtrlMenu_GetItemRectEx|GUICtrlMenu_GetItemState|GUICtrlMenu_GetItemStateEx|GUICtrlMenu_GetItemSubMenu|GUICtrlMenu_GetItemText|GUICtrlMenu_GetItemType|GUICtrlMenu_GetMenu|GUICtrlMenu_GetMenuBackground|GUICtrlMenu_GetMenuBarInfo|GUICtrlMenu_GetMenuContextHelpID|GUICtrlMenu_GetMenuData|GUICtrlMenu_GetMenuDefaultItem|GUICtrlMenu_GetMenuHeight|GUICtrlMenu_GetMenuInfo|GUICtrlMenu_GetMenuStyle|GUICtrlMenu_GetSystemMenu|GUICtrlMenu_InsertMenuItem|GUICtrlMenu_InsertMenuItemEx|GUICtrlMenu_IsMenu|GUICtrlMenu_LoadMenu|GUICtrlMenu_MapAccelerator|GUICtrlMenu_MenuItemFromPoint|GUICtrlMenu_RemoveMenu|GUICtrlMenu_SetItemBitmaps|GUICtrlMenu_SetItemBmp|GUICtrlMenu_SetItemBmpChecked|GUICtrlMenu_SetItemBmpUnchecked|GUICtrlMenu_SetItemChecked|GUICtrlMenu_SetItemData|GUICtrlMenu_SetItemDefault|GUICtrlMenu_SetItemDisabled|GUICtrlMenu_SetItemEnabled|GUICtrlMenu_SetItemGrayed|GUICtrlMenu_SetItemHighlighted|GUICtrlMenu_SetItemID|GUICtrlMenu_SetItemInfo|GUICtrlMenu_SetItemState|GUICtrlMenu_SetItemSubMenu|GUICtrlMenu_SetItemText|GUICtrlMenu_SetItemType|GUICtrlMenu_SetMenu|GUICtrlMenu_SetMenuBackground|GUICtrlMenu_SetMenuContextHelpID|GUICtrlMenu_SetMenuData|GUICtrlMenu_SetMenuDefaultItem|GUICtrlMenu_SetMenuHeight|GUICtrlMenu_SetMenuInfo|GUICtrlMenu_SetMenuStyle|GUICtrlMenu_TrackPopupMenu|GUICtrlMonthCal_Create|GUICtrlMonthCal_Destroy|GUICtrlMonthCal_GetColor|GUICtrlMonthCal_GetColorArray|GUICtrlMonthCal_GetCurSel|GUICtrlMonthCal_GetCurSelStr|GUICtrlMonthCal_GetFirstDOW|GUICtrlMonthCal_GetFirstDOWStr|GUICtrlMonthCal_GetMaxSelCount|GUICtrlMonthCal_GetMaxTodayWidth|GUICtrlMonthCal_GetMinReqHeight|GUICtrlMonthCal_GetMinReqRect|GUICtrlMonthCal_GetMinReqRectArray|GUICtrlMonthCal_GetMinReqWidth|GUICtrlMonthCal_GetMonthDelta|GUICtrlMonthCal_GetMonthRange|GUICtrlMonthCal_GetMonthRangeMax|GUICtrlMonthCal_GetMonthRangeMaxStr|GUICtrlMonthCal_GetMonthRangeMin|GUICtrlMonthCal_GetMonthRangeMinStr|GUICtrlMonthCal_GetMonthRangeSpan|GUICtrlMonthCal_GetRange|GUICtrlMonthCal_GetRangeMax|GUICtrlMonthCal_GetRangeMaxStr|GUICtrlMonthCal_GetRangeMin|GUICtrlMonthCal_GetRangeMinStr|GUICtrlMonthCal_GetSelRange|GUICtrlMonthCal_GetSelRangeMax|GUICtrlMonthCal_GetSelRangeMaxStr|GUICtrlMonthCal_GetSelRangeMin|GUICtrlMonthCal_GetSelRangeMinStr|GUICtrlMonthCal_GetToday|GUICtrlMonthCal_GetTodayStr|GUICtrlMonthCal_GetUnicodeFormat|GUICtrlMonthCal_HitTest|GUICtrlMonthCal_SetColor|GUICtrlMonthCal_SetCurSel|GUICtrlMonthCal_SetDayState|GUICtrlMonthCal_SetFirstDOW|GUICtrlMonthCal_SetMaxSelCount|GUICtrlMonthCal_SetMonthDelta|GUICtrlMonthCal_SetRange|GUICtrlMonthCal_SetSelRange|GUICtrlMonthCal_SetToday|GUICtrlMonthCal_SetUnicodeFormat|GUICtrlRebar_AddBand|GUICtrlRebar_AddToolBarBand|GUICtrlRebar_BeginDrag|GUICtrlRebar_Create|GUICtrlRebar_DeleteBand|GUICtrlRebar_Destroy|GUICtrlRebar_DragMove|GUICtrlRebar_EndDrag|GUICtrlRebar_GetBandBackColor|GUICtrlRebar_GetBandBorders|GUICtrlRebar_GetBandBordersEx|GUICtrlRebar_GetBandChildHandle|GUICtrlRebar_GetBandChildSize|GUICtrlRebar_GetBandCount|GUICtrlRebar_GetBandForeColor|GUICtrlRebar_GetBandHeaderSize|GUICtrlRebar_GetBandID|GUICtrlRebar_GetBandIdealSize|GUICtrlRebar_GetBandLength|GUICtrlRebar_GetBandLParam|GUICtrlRebar_GetBandMargins|GUICtrlRebar_GetBandMarginsEx|GUICtrlRebar_GetBandRect|GUICtrlRebar_GetBandRectEx|GUICtrlRebar_GetBandStyle|GUICtrlRebar_GetBandStyleBreak|GUICtrlRebar_GetBandStyleChildEdge|GUICtrlRebar_GetBandStyleFixedBMP|GUICtrlRebar_GetBandStyleFixedSize|GUICtrlRebar_GetBandStyleGripperAlways|GUICtrlRebar_GetBandStyleHidden|GUICtrlRebar_GetBandStyleHideTitle|GUICtrlRebar_GetBandStyleNoGripper|GUICtrlRebar_GetBandStyleTopAlign|GUICtrlRebar_GetBandStyleUseChevron|GUICtrlRebar_GetBandStyleVariableHeight|GUICtrlRebar_GetBandText|GUICtrlRebar_GetBarHeight|GUICtrlRebar_GetBKColor|GUICtrlRebar_GetColorScheme|GUICtrlRebar_GetRowCount|GUICtrlRebar_GetRowHeight|GUICtrlRebar_GetTextColor|GUICtrlRebar_GetToolTips|GUICtrlRebar_GetUnicodeFormat|GUICtrlRebar_HitTest|GUICtrlRebar_IDToIndex|GUICtrlRebar_MaximizeBand|GUICtrlRebar_MinimizeBand|GUICtrlRebar_MoveBand|GUICtrlRebar_SetBandBackColor|GUICtrlRebar_SetBandForeColor|GUICtrlRebar_SetBandHeaderSize|GUICtrlRebar_SetBandID|GUICtrlRebar_SetBandIdealSize|GUICtrlRebar_SetBandLength|GUICtrlRebar_SetBandLParam|GUICtrlRebar_SetBandStyle|GUICtrlRebar_SetBandStyleBreak|GUICtrlRebar_SetBandStyleChildEdge|GUICtrlRebar_SetBandStyleFixedBMP|GUICtrlRebar_SetBandStyleFixedSize|GUICtrlRebar_SetBandStyleGripperAlways|GUICtrlRebar_SetBandStyleHidden|GUICtrlRebar_SetBandStyleHideTitle|GUICtrlRebar_SetBandStyleNoGripper|GUICtrlRebar_SetBandStyleTopAlign|GUICtrlRebar_SetBandStyleUseChevron|GUICtrlRebar_SetBandStyleVariableHeight|GUICtrlRebar_SetBandText|GUICtrlRebar_SetBKColor|GUICtrlRebar_SetColorScheme|GUICtrlRebar_SetTextColor|GUICtrlRebar_SetToolTips|GUICtrlRebar_SetUnicodeFormat|GUICtrlRebar_ShowBand|GUICtrlSlider_ClearSel|GUICtrlSlider_ClearTics|GUICtrlSlider_Create|GUICtrlSlider_Destroy|GUICtrlSlider_GetBuddy|GUICtrlSlider_GetChannelRect|GUICtrlSlider_GetLineSize|GUICtrlSlider_GetNumTics|GUICtrlSlider_GetPageSize|GUICtrlSlider_GetPos|GUICtrlSlider_GetPTics|GUICtrlSlider_GetRange|GUICtrlSlider_GetRangeMax|GUICtrlSlider_GetRangeMin|GUICtrlSlider_GetSel|GUICtrlSlider_GetSelEnd|GUICtrlSlider_GetSelStart|GUICtrlSlider_GetThumbLength|GUICtrlSlider_GetThumbRect|GUICtrlSlider_GetThumbRectEx|GUICtrlSlider_GetTic|GUICtrlSlider_GetTicPos|GUICtrlSlider_GetToolTips|GUICtrlSlider_GetUnicodeFormat|GUICtrlSlider_SetBuddy|GUICtrlSlider_SetLineSize|GUICtrlSlider_SetPageSize|GUICtrlSlider_SetPos|GUICtrlSlider_SetRange|GUICtrlSlider_SetRangeMax|GUICtrlSlider_SetRangeMin|GUICtrlSlider_SetSel|GUICtrlSlider_SetSelEnd|GUICtrlSlider_SetSelStart|GUICtrlSlider_SetThumbLength|GUICtrlSlider_SetTic|GUICtrlSlider_SetTicFreq|GUICtrlSlider_SetTipSide|GUICtrlSlider_SetToolTips|GUICtrlSlider_SetUnicodeFormat|GUICtrlStatusBar_Create|GUICtrlStatusBar_Destroy|GUICtrlStatusBar_EmbedControl|GUICtrlStatusBar_GetBorders|GUICtrlStatusBar_GetBordersHorz|GUICtrlStatusBar_GetBordersRect|GUICtrlStatusBar_GetBordersVert|GUICtrlStatusBar_GetCount|GUICtrlStatusBar_GetHeight|GUICtrlStatusBar_GetIcon|GUICtrlStatusBar_GetParts|GUICtrlStatusBar_GetRect|GUICtrlStatusBar_GetRectEx|GUICtrlStatusBar_GetText|GUICtrlStatusBar_GetTextFlags|GUICtrlStatusBar_GetTextLength|GUICtrlStatusBar_GetTextLengthEx|GUICtrlStatusBar_GetTipText|GUICtrlStatusBar_GetUnicodeFormat|GUICtrlStatusBar_GetWidth|GUICtrlStatusBar_IsSimple|GUICtrlStatusBar_Resize|GUICtrlStatusBar_SetBkColor|GUICtrlStatusBar_SetIcon|GUICtrlStatusBar_SetMinHeight|GUICtrlStatusBar_SetParts|GUICtrlStatusBar_SetSimple|GUICtrlStatusBar_SetText|GUICtrlStatusBar_SetTipText|GUICtrlStatusBar_SetUnicodeFormat|GUICtrlStatusBar_ShowHide|GUICtrlTab_Create|GUICtrlTab_DeleteAllItems|GUICtrlTab_DeleteItem|GUICtrlTab_DeselectAll|GUICtrlTab_Destroy|GUICtrlTab_FindTab|GUICtrlTab_GetCurFocus|GUICtrlTab_GetCurSel|GUICtrlTab_GetDisplayRect|GUICtrlTab_GetDisplayRectEx|GUICtrlTab_GetExtendedStyle|GUICtrlTab_GetImageList|GUICtrlTab_GetItem|GUICtrlTab_GetItemCount|GUICtrlTab_GetItemImage|GUICtrlTab_GetItemParam|GUICtrlTab_GetItemRect|GUICtrlTab_GetItemRectEx|GUICtrlTab_GetItemState|GUICtrlTab_GetItemText|GUICtrlTab_GetRowCount|GUICtrlTab_GetToolTips|GUICtrlTab_GetUnicodeFormat|GUICtrlTab_HighlightItem|GUICtrlTab_HitTest|GUICtrlTab_InsertItem|GUICtrlTab_RemoveImage|GUICtrlTab_SetCurFocus|GUICtrlTab_SetCurSel|GUICtrlTab_SetExtendedStyle|GUICtrlTab_SetImageList|GUICtrlTab_SetItem|GUICtrlTab_SetItemImage|GUICtrlTab_SetItemParam|GUICtrlTab_SetItemSize|GUICtrlTab_SetItemState|GUICtrlTab_SetItemText|GUICtrlTab_SetMinTabWidth|GUICtrlTab_SetPadding|GUICtrlTab_SetToolTips|GUICtrlTab_SetUnicodeFormat|GUICtrlToolbar_AddBitmap|GUICtrlToolbar_AddButton|GUICtrlToolbar_AddButtonSep|GUICtrlToolbar_AddString|GUICtrlToolbar_ButtonCount|GUICtrlToolbar_CheckButton|GUICtrlToolbar_ClickAccel|GUICtrlToolbar_ClickButton|GUICtrlToolbar_ClickIndex|GUICtrlToolbar_CommandToIndex|GUICtrlToolbar_Create|GUICtrlToolbar_Customize|GUICtrlToolbar_DeleteButton|GUICtrlToolbar_Destroy|GUICtrlToolbar_EnableButton|GUICtrlToolbar_FindToolbar|GUICtrlToolbar_GetAnchorHighlight|GUICtrlToolbar_GetBitmapFlags|GUICtrlToolbar_GetButtonBitmap|GUICtrlToolbar_GetButtonInfo|GUICtrlToolbar_GetButtonInfoEx|GUICtrlToolbar_GetButtonParam|GUICtrlToolbar_GetButtonRect|GUICtrlToolbar_GetButtonRectEx|GUICtrlToolbar_GetButtonSize|GUICtrlToolbar_GetButtonState|GUICtrlToolbar_GetButtonStyle|GUICtrlToolbar_GetButtonText|GUICtrlToolbar_GetColorScheme|GUICtrlToolbar_GetDisabledImageList|GUICtrlToolbar_GetExtendedStyle|GUICtrlToolbar_GetHotImageList|GUICtrlToolbar_GetHotItem|GUICtrlToolbar_GetImageList|GUICtrlToolbar_GetInsertMark|GUICtrlToolbar_GetInsertMarkColor|GUICtrlToolbar_GetMaxSize|GUICtrlToolbar_GetMetrics|GUICtrlToolbar_GetPadding|GUICtrlToolbar_GetRows|GUICtrlToolbar_GetString|GUICtrlToolbar_GetStyle|GUICtrlToolbar_GetStyleAltDrag|GUICtrlToolbar_GetStyleCustomErase|GUICtrlToolbar_GetStyleFlat|GUICtrlToolbar_GetStyleList|GUICtrlToolbar_GetStyleRegisterDrop|GUICtrlToolbar_GetStyleToolTips|GUICtrlToolbar_GetStyleTransparent|GUICtrlToolbar_GetStyleWrapable|GUICtrlToolbar_GetTextRows|GUICtrlToolbar_GetToolTips|GUICtrlToolbar_GetUnicodeFormat|GUICtrlToolbar_HideButton|GUICtrlToolbar_HighlightButton|GUICtrlToolbar_HitTest|GUICtrlToolbar_IndexToCommand|GUICtrlToolbar_InsertButton|GUICtrlToolbar_InsertMarkHitTest|GUICtrlToolbar_IsButtonChecked|GUICtrlToolbar_IsButtonEnabled|GUICtrlToolbar_IsButtonHidden|GUICtrlToolbar_IsButtonHighlighted|GUICtrlToolbar_IsButtonIndeterminate|GUICtrlToolbar_IsButtonPressed|GUICtrlToolbar_LoadBitmap|GUICtrlToolbar_LoadImages|GUICtrlToolbar_MapAccelerator|GUICtrlToolbar_MoveButton|GUICtrlToolbar_PressButton|GUICtrlToolbar_SetAnchorHighlight|GUICtrlToolbar_SetBitmapSize|GUICtrlToolbar_SetButtonBitMap|GUICtrlToolbar_SetButtonInfo|GUICtrlToolbar_SetButtonInfoEx|GUICtrlToolbar_SetButtonParam|GUICtrlToolbar_SetButtonSize|GUICtrlToolbar_SetButtonState|GUICtrlToolbar_SetButtonStyle|GUICtrlToolbar_SetButtonText|GUICtrlToolbar_SetButtonWidth|GUICtrlToolbar_SetCmdID|GUICtrlToolbar_SetColorScheme|GUICtrlToolbar_SetDisabledImageList|GUICtrlToolbar_SetDrawTextFlags|GUICtrlToolbar_SetExtendedStyle|GUICtrlToolbar_SetHotImageList|GUICtrlToolbar_SetHotItem|GUICtrlToolbar_SetImageList|GUICtrlToolbar_SetIndent|GUICtrlToolbar_SetIndeterminate|GUICtrlToolbar_SetInsertMark|GUICtrlToolbar_SetInsertMarkColor|GUICtrlToolbar_SetMaxTextRows|GUICtrlToolbar_SetMetrics|GUICtrlToolbar_SetPadding|GUICtrlToolbar_SetParent|GUICtrlToolbar_SetRows|GUICtrlToolbar_SetStyle|GUICtrlToolbar_SetStyleAltDrag|GUICtrlToolbar_SetStyleCustomErase|GUICtrlToolbar_SetStyleFlat|GUICtrlToolbar_SetStyleList|GUICtrlToolbar_SetStyleRegisterDrop|GUICtrlToolbar_SetStyleToolTips|GUICtrlToolbar_SetStyleTransparent|GUICtrlToolbar_SetStyleWrapable|GUICtrlToolbar_SetToolTips|GUICtrlToolbar_SetUnicodeFormat|GUICtrlToolbar_SetWindowTheme|GUICtrlTreeView_Add|GUICtrlTreeView_AddChild|GUICtrlTreeView_AddChildFirst|GUICtrlTreeView_AddFirst|GUICtrlTreeView_BeginUpdate|GUICtrlTreeView_ClickItem|GUICtrlTreeView_Create|GUICtrlTreeView_CreateDragImage|GUICtrlTreeView_CreateSolidBitMap|GUICtrlTreeView_Delete|GUICtrlTreeView_DeleteAll|GUICtrlTreeView_DeleteChildren|GUICtrlTreeView_Destroy|GUICtrlTreeView_DisplayRect|GUICtrlTreeView_DisplayRectEx|GUICtrlTreeView_EditText|GUICtrlTreeView_EndEdit|GUICtrlTreeView_EndUpdate|GUICtrlTreeView_EnsureVisible|GUICtrlTreeView_Expand|GUICtrlTreeView_ExpandedOnce|GUICtrlTreeView_FindItem|GUICtrlTreeView_FindItemEx|GUICtrlTreeView_GetBkColor|GUICtrlTreeView_GetBold|GUICtrlTreeView_GetChecked|GUICtrlTreeView_GetChildCount|GUICtrlTreeView_GetChildren|GUICtrlTreeView_GetCount|GUICtrlTreeView_GetCut|GUICtrlTreeView_GetDropTarget|GUICtrlTreeView_GetEditControl|GUICtrlTreeView_GetExpanded|GUICtrlTreeView_GetFirstChild|GUICtrlTreeView_GetFirstItem|GUICtrlTreeView_GetFirstVisible|GUICtrlTreeView_GetFocused|GUICtrlTreeView_GetHeight|GUICtrlTreeView_GetImageIndex|GUICtrlTreeView_GetImageListIconHandle|GUICtrlTreeView_GetIndent|GUICtrlTreeView_GetInsertMarkColor|GUICtrlTreeView_GetISearchString|GUICtrlTreeView_GetItemByIndex|GUICtrlTreeView_GetItemHandle|GUICtrlTreeView_GetItemParam|GUICtrlTreeView_GetLastChild|GUICtrlTreeView_GetLineColor|GUICtrlTreeView_GetNext|GUICtrlTreeView_GetNextChild|GUICtrlTreeView_GetNextSibling|GUICtrlTreeView_GetNextVisible|GUICtrlTreeView_GetNormalImageList|GUICtrlTreeView_GetParentHandle|GUICtrlTreeView_GetParentParam|GUICtrlTreeView_GetPrev|GUICtrlTreeView_GetPrevChild|GUICtrlTreeView_GetPrevSibling|GUICtrlTreeView_GetPrevVisible|GUICtrlTreeView_GetScrollTime|GUICtrlTreeView_GetSelected|GUICtrlTreeView_GetSelectedImageIndex|GUICtrlTreeView_GetSelection|GUICtrlTreeView_GetSiblingCount|GUICtrlTreeView_GetState|GUICtrlTreeView_GetStateImageIndex|GUICtrlTreeView_GetStateImageList|GUICtrlTreeView_GetText|GUICtrlTreeView_GetTextColor|GUICtrlTreeView_GetToolTips|GUICtrlTreeView_GetTree|GUICtrlTreeView_GetUnicodeFormat|GUICtrlTreeView_GetVisible|GUICtrlTreeView_GetVisibleCount|GUICtrlTreeView_HitTest|GUICtrlTreeView_HitTestEx|GUICtrlTreeView_HitTestItem|GUICtrlTreeView_Index|GUICtrlTreeView_InsertItem|GUICtrlTreeView_IsFirstItem|GUICtrlTreeView_IsParent|GUICtrlTreeView_Level|GUICtrlTreeView_SelectItem|GUICtrlTreeView_SelectItemByIndex|GUICtrlTreeView_SetBkColor|GUICtrlTreeView_SetBold|GUICtrlTreeView_SetChecked|GUICtrlTreeView_SetCheckedByIndex|GUICtrlTreeView_SetChildren|GUICtrlTreeView_SetCut|GUICtrlTreeView_SetDropTarget|GUICtrlTreeView_SetFocused|GUICtrlTreeView_SetHeight|GUICtrlTreeView_SetIcon|GUICtrlTreeView_SetImageIndex|GUICtrlTreeView_SetIndent|GUICtrlTreeView_SetInsertMark|GUICtrlTreeView_SetInsertMarkColor|GUICtrlTreeView_SetItemHeight|GUICtrlTreeView_SetItemParam|GUICtrlTreeView_SetLineColor|GUICtrlTreeView_SetNormalImageList|GUICtrlTreeView_SetScrollTime|GUICtrlTreeView_SetSelected|GUICtrlTreeView_SetSelectedImageIndex|GUICtrlTreeView_SetState|GUICtrlTreeView_SetStateImageIndex|GUICtrlTreeView_SetStateImageList|GUICtrlTreeView_SetText|GUICtrlTreeView_SetTextColor|GUICtrlTreeView_SetToolTips|GUICtrlTreeView_SetUnicodeFormat|GUICtrlTreeView_Sort|GUIImageList_Add|GUIImageList_AddBitmap|GUIImageList_AddIcon|GUIImageList_AddMasked|GUIImageList_BeginDrag|GUIImageList_Copy|GUIImageList_Create|GUIImageList_Destroy|GUIImageList_DestroyIcon|GUIImageList_DragEnter|GUIImageList_DragLeave|GUIImageList_DragMove|GUIImageList_Draw|GUIImageList_DrawEx|GUIImageList_Duplicate|GUIImageList_EndDrag|GUIImageList_GetBkColor|GUIImageList_GetIcon|GUIImageList_GetIconHeight|GUIImageList_GetIconSize|GUIImageList_GetIconSizeEx|GUIImageList_GetIconWidth|GUIImageList_GetImageCount|GUIImageList_GetImageInfoEx|GUIImageList_Remove|GUIImageList_ReplaceIcon|GUIImageList_SetBkColor|GUIImageList_SetIconSize|GUIImageList_SetImageCount|GUIImageList_Swap|GUIScrollBars_EnableScrollBar|GUIScrollBars_GetScrollBarInfoEx|GUIScrollBars_GetScrollBarRect|GUIScrollBars_GetScrollBarRGState|GUIScrollBars_GetScrollBarXYLineButton|GUIScrollBars_GetScrollBarXYThumbBottom|GUIScrollBars_GetScrollBarXYThumbTop|GUIScrollBars_GetScrollInfo|GUIScrollBars_GetScrollInfoEx|GUIScrollBars_GetScrollInfoMax|GUIScrollBars_GetScrollInfoMin|GUIScrollBars_GetScrollInfoPage|GUIScrollBars_GetScrollInfoPos|GUIScrollBars_GetScrollInfoTrackPos|GUIScrollBars_GetScrollPos|GUIScrollBars_GetScrollRange|GUIScrollBars_Init|GUIScrollBars_ScrollWindow|GUIScrollBars_SetScrollInfo|GUIScrollBars_SetScrollInfoMax|GUIScrollBars_SetScrollInfoMin|GUIScrollBars_SetScrollInfoPage|GUIScrollBars_SetScrollInfoPos|GUIScrollBars_SetScrollRange|GUIScrollBars_ShowScrollBar|GUIToolTip_Activate|GUIToolTip_AddTool|GUIToolTip_AdjustRect|GUIToolTip_BitsToTTF|GUIToolTip_Create|GUIToolTip_DelTool|GUIToolTip_Destroy|GUIToolTip_EnumTools|GUIToolTip_GetBubbleHeight|GUIToolTip_GetBubbleSize|GUIToolTip_GetBubbleWidth|GUIToolTip_GetCurrentTool|GUIToolTip_GetDelayTime|GUIToolTip_GetMargin|GUIToolTip_GetMarginEx|GUIToolTip_GetMaxTipWidth|GUIToolTip_GetText|GUIToolTip_GetTipBkColor|GUIToolTip_GetTipTextColor|GUIToolTip_GetTitleBitMap|GUIToolTip_GetTitleText|GUIToolTip_GetToolCount|GUIToolTip_GetToolInfo|GUIToolTip_HitTest|GUIToolTip_NewToolRect|GUIToolTip_Pop|GUIToolTip_PopUp|GUIToolTip_SetDelayTime|GUIToolTip_SetMargin|GUIToolTip_SetMaxTipWidth|GUIToolTip_SetTipBkColor|GUIToolTip_SetTipTextColor|GUIToolTip_SetTitle|GUIToolTip_SetToolInfo|GUIToolTip_SetWindowTheme|GUIToolTip_ToolExists|GUIToolTip_ToolToArray|GUIToolTip_TrackActivate|GUIToolTip_TrackPosition|GUIToolTip_TTFToBits|GUIToolTip_Update|GUIToolTip_UpdateTipText|HexToString|IE_Example|IE_Introduction|IE_VersionInfo|IEAction|IEAttach|IEBodyReadHTML|IEBodyReadText|IEBodyWriteHTML|IECreate|IECreateEmbedded|IEDocGetObj|IEDocInsertHTML|IEDocInsertText|IEDocReadHTML|IEDocWriteHTML|IEErrorHandlerDeRegister|IEErrorHandlerRegister|IEErrorNotify|IEFormElementCheckBoxSelect|IEFormElementGetCollection|IEFormElementGetObjByName|IEFormElementGetValue|IEFormElementOptionSelect|IEFormElementRadioSelect|IEFormElementSetValue|IEFormGetCollection|IEFormGetObjByName|IEFormImageClick|IEFormReset|IEFormSubmit|IEFrameGetCollection|IEFrameGetObjByName|IEGetObjById|IEGetObjByName|IEHeadInsertEventScript|IEImgClick|IEImgGetCollection|IEIsFrameSet|IELinkClickByIndex|IELinkClickByText|IELinkGetCollection|IELoadWait|IELoadWaitTimeout|IENavigate|IEPropertyGet|IEPropertySet|IEQuit|IETableGetCollection|IETableWriteToArray|IETagNameAllGetCollection|IETagNameGetCollection|Iif|INetExplorerCapable|INetGetSource|INetMail|INetSmtpMail|IsPressed|MathCheckDiv|Max|MemGlobalAlloc|MemGlobalFree|MemGlobalLock|MemGlobalSize|MemGlobalUnlock|MemMoveMemory|MemMsgBox|MemShowError|MemVirtualAlloc|MemVirtualAllocEx|MemVirtualFree|MemVirtualFreeEx|Min|MouseTrap|NamedPipes_CallNamedPipe|NamedPipes_ConnectNamedPipe|NamedPipes_CreateNamedPipe|NamedPipes_CreatePipe|NamedPipes_DisconnectNamedPipe|NamedPipes_GetNamedPipeHandleState|NamedPipes_GetNamedPipeInfo|NamedPipes_PeekNamedPipe|NamedPipes_SetNamedPipeHandleState|NamedPipes_TransactNamedPipe|NamedPipes_WaitNamedPipe|Net_Share_ConnectionEnum|Net_Share_FileClose|Net_Share_FileEnum|Net_Share_FileGetInfo|Net_Share_PermStr|Net_Share_ResourceStr|Net_Share_SessionDel|Net_Share_SessionEnum|Net_Share_SessionGetInfo|Net_Share_ShareAdd|Net_Share_ShareCheck|Net_Share_ShareDel|Net_Share_ShareEnum|Net_Share_ShareGetInfo|Net_Share_ShareSetInfo|Net_Share_StatisticsGetSvr|Net_Share_StatisticsGetWrk|Now|NowCalc|NowCalcDate|NowDate|NowTime|PathFull|PathMake|PathSplit|ProcessGetName|ProcessGetPriority|Radian|ReplaceStringInFile|RunDOS|ScreenCapture_Capture|ScreenCapture_CaptureWnd|ScreenCapture_SaveImage|ScreenCapture_SetBMPFormat|ScreenCapture_SetJPGQuality|ScreenCapture_SetTIFColorDepth|ScreenCapture_SetTIFCompression|Security__AdjustTokenPrivileges|Security__GetAccountSid|Security__GetLengthSid|Security__GetTokenInformation|Security__ImpersonateSelf|Security__IsValidSid|Security__LookupAccountName|Security__LookupAccountSid|Security__LookupPrivilegeValue|Security__OpenProcessToken|Security__OpenThreadToken|Security__OpenThreadTokenEx|Security__SetPrivilege|Security__SidToStringSid|Security__SidTypeStr|Security__StringSidToSid|SendMessage|SendMessageA|SetDate|SetTime|Singleton|SoundClose|SoundLength|SoundOpen|SoundPause|SoundPlay|SoundPos|SoundResume|SoundSeek|SoundStatus|SoundStop|SQLite_Changes|SQLite_Close|SQLite_Display2DResult|SQLite_Encode|SQLite_ErrCode|SQLite_ErrMsg|SQLite_Escape|SQLite_Exec|SQLite_FetchData|SQLite_FetchNames|SQLite_GetTable|SQLite_GetTable2d|SQLite_LastInsertRowID|SQLite_LibVersion|SQLite_Open|SQLite_Query|SQLite_QueryFinalize|SQLite_QueryReset|SQLite_QuerySingleRow|SQLite_SaveMode|SQLite_SetTimeout|SQLite_Shutdown|SQLite_SQLiteExe|SQLite_Startup|SQLite_TotalChanges|StringAddComma|StringBetween|StringEncrypt|StringInsert|StringProper|StringRepeat|StringReverse|StringSplit|StringToHex|TCPIpToName|TempFile|TicksToTime|Timer_Diff|Timer_GetTimerID|Timer_Init|Timer_KillAllTimers|Timer_KillTimer|Timer_SetTimer|TimeToTicks|VersionCompare|viClose|viExecCommand|viFindGpib|viGpibBusReset|viGTL|viOpen|viSetAttribute|viSetTimeout|WeekNumberISO|WinAPI_AttachConsole|WinAPI_AttachThreadInput|WinAPI_Beep|WinAPI_BitBlt|WinAPI_CallNextHookEx|WinAPI_Check|WinAPI_ClientToScreen|WinAPI_CloseHandle|WinAPI_CommDlgExtendedError|WinAPI_CopyIcon|WinAPI_CreateBitmap|WinAPI_CreateCompatibleBitmap|WinAPI_CreateCompatibleDC|WinAPI_CreateEvent|WinAPI_CreateFile|WinAPI_CreateFont|WinAPI_CreateFontIndirect|WinAPI_CreateProcess|WinAPI_CreateSolidBitmap|WinAPI_CreateSolidBrush|WinAPI_CreateWindowEx|WinAPI_DefWindowProc|WinAPI_DeleteDC|WinAPI_DeleteObject|WinAPI_DestroyIcon|WinAPI_DestroyWindow|WinAPI_DrawEdge|WinAPI_DrawFrameControl|WinAPI_DrawIcon|WinAPI_DrawIconEx|WinAPI_DrawText|WinAPI_EnableWindow|WinAPI_EnumDisplayDevices|WinAPI_EnumWindows|WinAPI_EnumWindowsPopup|WinAPI_EnumWindowsTop|WinAPI_ExpandEnvironmentStrings|WinAPI_ExtractIconEx|WinAPI_FatalAppExit|WinAPI_FillRect|WinAPI_FindExecutable|WinAPI_FindWindow|WinAPI_FlashWindow|WinAPI_FlashWindowEx|WinAPI_FloatToInt|WinAPI_FlushFileBuffers|WinAPI_FormatMessage|WinAPI_FrameRect|WinAPI_FreeLibrary|WinAPI_GetAncestor|WinAPI_GetAsyncKeyState|WinAPI_GetClassName|WinAPI_GetClientHeight|WinAPI_GetClientRect|WinAPI_GetClientWidth|WinAPI_GetCurrentProcess|WinAPI_GetCurrentProcessID|WinAPI_GetCurrentThread|WinAPI_GetCurrentThreadId|WinAPI_GetCursorInfo|WinAPI_GetDC|WinAPI_GetDesktopWindow|WinAPI_GetDeviceCaps|WinAPI_GetDIBits|WinAPI_GetDlgCtrlID|WinAPI_GetDlgItem|WinAPI_GetFileSizeEx|WinAPI_GetFocus|WinAPI_GetForegroundWindow|WinAPI_GetIconInfo|WinAPI_GetLastError|WinAPI_GetLastErrorMessage|WinAPI_GetModuleHandle|WinAPI_GetMousePos|WinAPI_GetMousePosX|WinAPI_GetMousePosY|WinAPI_GetObject|WinAPI_GetOpenFileName|WinAPI_GetOverlappedResult|WinAPI_GetParent|WinAPI_GetProcessAffinityMask|WinAPI_GetSaveFileName|WinAPI_GetStdHandle|WinAPI_GetStockObject|WinAPI_GetSysColor|WinAPI_GetSysColorBrush|WinAPI_GetSystemMetrics|WinAPI_GetTextExtentPoint32|WinAPI_GetWindow|WinAPI_GetWindowDC|WinAPI_GetWindowHeight|WinAPI_GetWindowLong|WinAPI_GetWindowRect|WinAPI_GetWindowText|WinAPI_GetWindowThreadProcessId|WinAPI_GetWindowWidth|WinAPI_GetXYFromPoint|WinAPI_GlobalMemStatus|WinAPI_GUIDFromString|WinAPI_GUIDFromStringEx|WinAPI_HiWord|WinAPI_InProcess|WinAPI_IntToFloat|WinAPI_InvalidateRect|WinAPI_IsClassName|WinAPI_IsWindow|WinAPI_IsWindowVisible|WinAPI_LoadBitmap|WinAPI_LoadImage|WinAPI_LoadLibrary|WinAPI_LoadLibraryEx|WinAPI_LoadShell32Icon|WinAPI_LoadString|WinAPI_LocalFree|WinAPI_LoWord|WinAPI_MakeDWord|WinAPI_MAKELANGID|WinAPI_MAKELCID|WinAPI_MakeLong|WinAPI_MessageBeep|WinAPI_Mouse_Event|WinAPI_MoveWindow|WinAPI_MsgBox|WinAPI_MulDiv|WinAPI_MultiByteToWideChar|WinAPI_MultiByteToWideCharEx|WinAPI_OpenProcess|WinAPI_PointFromRect|WinAPI_PostMessage|WinAPI_PrimaryLangId|WinAPI_PtInRect|WinAPI_ReadFile|WinAPI_ReadProcessMemory|WinAPI_RectIsEmpty|WinAPI_RedrawWindow|WinAPI_RegisterWindowMessage|WinAPI_ReleaseCapture|WinAPI_ReleaseDC|WinAPI_ScreenToClient|WinAPI_SelectObject|WinAPI_SetBkColor|WinAPI_SetCapture|WinAPI_SetCursor|WinAPI_SetDefaultPrinter|WinAPI_SetDIBits|WinAPI_SetEvent|WinAPI_SetFocus|WinAPI_SetFont|WinAPI_SetHandleInformation|WinAPI_SetLastError|WinAPI_SetParent|WinAPI_SetProcessAffinityMask|WinAPI_SetSysColors|WinAPI_SetTextColor|WinAPI_SetWindowLong|WinAPI_SetWindowPos|WinAPI_SetWindowsHookEx|WinAPI_SetWindowText|WinAPI_ShowCursor|WinAPI_ShowError|WinAPI_ShowMsg|WinAPI_ShowWindow|WinAPI_StringFromGUID|WinAPI_SubLangId|WinAPI_SystemParametersInfo|WinAPI_TwipsPerPixelX|WinAPI_TwipsPerPixelY|WinAPI_UnhookWindowsHookEx|WinAPI_UpdateLayeredWindow|WinAPI_UpdateWindow|WinAPI_ValidateClassName|WinAPI_WaitForInputIdle|WinAPI_WaitForMultipleObjects|WinAPI_WaitForSingleObject|WinAPI_WideCharToMultiByte|WinAPI_WindowFromPoint|WinAPI_WriteConsole|WinAPI_WriteFile|WinAPI_WriteProcessMemory|WinNet_AddConnection|WinNet_AddConnection2|WinNet_AddConnection3|WinNet_CancelConnection|WinNet_CancelConnection2|WinNet_CloseEnum|WinNet_ConnectionDialog|WinNet_ConnectionDialog1|WinNet_DisconnectDialog|WinNet_DisconnectDialog1|WinNet_EnumResource|WinNet_GetConnection|WinNet_GetConnectionPerformance|WinNet_GetLastError|WinNet_GetNetworkInformation|WinNet_GetProviderName|WinNet_GetResourceInformation|WinNet_GetResourceParent|WinNet_GetUniversalName|WinNet_GetUser|WinNet_OpenEnum|WinNet_RestoreConnection|WinNet_UseConnection|Word_VersionInfo|WordAttach|WordCreate|WordDocAdd|WordDocAddLink|WordDocAddPicture|WordDocClose|WordDocFindReplace|WordDocGetCollection|WordDocLinkGetCollection|WordDocOpen|WordDocPrint|WordDocPropertyGet|WordDocPropertySet|WordDocSave|WordDocSaveAs|WordErrorHandlerDeRegister|WordErrorHandlerRegister|WordErrorNotify|WordMacroRun|WordPropertyGet|WordPropertySet|WordQuit|' + 'ce|comments-end|comments-start|cs|include|include-once|NoTrayIcon|RequireAdmin|' + 'AutoIt3Wrapper_Au3Check_Parameters|AutoIt3Wrapper_Au3Check_Stop_OnWarning|AutoIt3Wrapper_Change2CUI|AutoIt3Wrapper_Compression|AutoIt3Wrapper_cvsWrapper_Parameters|AutoIt3Wrapper_Icon|AutoIt3Wrapper_Outfile|AutoIt3Wrapper_Outfile_Type|AutoIt3Wrapper_Plugin_Funcs|AutoIt3Wrapper_Res_Comment|AutoIt3Wrapper_Res_Description|AutoIt3Wrapper_Res_Field|AutoIt3Wrapper_Res_File_Add|AutoIt3Wrapper_Res_Fileversion|AutoIt3Wrapper_Res_FileVersion_AutoIncrement|AutoIt3Wrapper_Res_Icon_Add|AutoIt3Wrapper_Res_Language|AutoIt3Wrapper_Res_LegalCopyright|AutoIt3Wrapper_res_requestedExecutionLevel|AutoIt3Wrapper_Res_SaveSource|AutoIt3Wrapper_Run_After|AutoIt3Wrapper_Run_Au3check|AutoIt3Wrapper_Run_Before|AutoIt3Wrapper_Run_cvsWrapper|AutoIt3Wrapper_Run_Debug_Mode|AutoIt3Wrapper_Run_Obfuscator|AutoIt3Wrapper_Run_Tidy|AutoIt3Wrapper_Tidy_Stop_OnError|AutoIt3Wrapper_UseAnsi|AutoIt3Wrapper_UseUpx|AutoIt3Wrapper_UseX64|AutoIt3Wrapper_Version|EndRegion|forceref|Obfuscator_Ignore_Funcs|Obfuscator_Ignore_Variables|Obfuscator_Parameters|Region|Tidy_Parameters'; var atKeywords = 'AppDataCommonDir|AppDataDir|AutoItExe|AutoItPID|AutoItUnicode|AutoItVersion|AutoItX64|COM_EventObj|CommonFilesDir|Compiled|ComputerName|ComSpec|CR|CRLF|DesktopCommonDir|DesktopDepth|DesktopDir|DesktopHeight|DesktopRefresh|DesktopWidth|DocumentsCommonDir|error|exitCode|exitMethod|extended|FavoritesCommonDir|FavoritesDir|GUI_CtrlHandle|GUI_CtrlId|GUI_DragFile|GUI_DragId|GUI_DropId|GUI_WinHandle|HomeDrive|HomePath|HomeShare|HotKeyPressed|HOUR|InetGetActive|InetGetBytesRead|IPAddress1|IPAddress2|IPAddress3|IPAddress4|KBLayout|LF|LogonDNSDomain|LogonDomain|LogonServer|MDAY|MIN|MON|MyDocumentsDir|NumParams|OSBuild|OSLang|OSServicePack|OSTYPE|OSVersion|ProcessorArch|ProgramFilesDir|ProgramsCommonDir|ProgramsDir|ScriptDir|ScriptFullPath|ScriptLineNumber|ScriptName|SEC|StartMenuCommonDir|StartMenuDir|StartupCommonDir|StartupDir|SW_DISABLE|SW_ENABLE|SW_HIDE|SW_LOCK|SW_MAXIMIZE|SW_MINIMIZE|SW_RESTORE|SW_SHOW|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWMINNOACTIVE|SW_SHOWNA|SW_SHOWNOACTIVATE|SW_SHOWNORMAL|SW_UNLOCK|SystemDir|TAB|TempDir|TRAY_ID|TrayIconFlashing|TrayIconVisible|UserName|UserProfileDir|WDAY|WindowsDir|WorkingDir|YDAY|YEAR'; - - this.$rules = { start: - [ { token: 'comment.line.ahk', regex: '(?:^| );.*$' }, - { token: 'comment.block.ahk', - regex: '/\\*', push: - [ { token: 'comment.block.ahk', regex: '\\*/', next: 'pop' }, - { defaultToken: 'comment.block.ahk' } ] }, - { token: 'doc.comment.ahk', - regex: '#cs', push: - [ { token: 'doc.comment.ahk', regex: '#ce', next: 'pop' }, - { defaultToken: 'doc.comment.ahk' } ] }, - { token: 'keyword.command.ahk', - regex: '(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b', - caseInsensitive: true }, - { token: 'keyword.control.ahk', - regex: '(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b', - caseInsensitive: true }, - { token: 'support.function.ahk', - regex: '(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b', - caseInsensitive: true }, - { token: 'variable.predefined.ahk', - regex: '(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b', - caseInsensitive: true }, - { token: 'support.constant.ahk', - regex: '(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b', - caseInsensitive: true }, - { token: 'variable.parameter', - regex: '(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b', - caseInsensitive: true }, - { keywordMap: {"constant.language": autoItKeywords}, regex: '\\w+\\b'}, - { keywordMap: {"variable.function": atKeywords}, regex: '@\\w+\\b'}, - { token : "constant.numeric", regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"}, - { token: 'keyword.operator.ahk', - regex: '=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-' }, - { token: 'punctuation.ahk', - regex: '#|`|::|,|\\{|\\}|\\(|\\)|\\%' }, - { token: - [ 'punctuation.quote.double', - 'string.quoted.ahk', - 'punctuation.quote.double' ], - regex: '(")((?:[^"]|"")*)(")' }, - { token: [ 'label.ahk', 'punctuation.definition.label.ahk' ], - regex: '^([^: ]+)(:)(?!:)' } ] }; - + this.$rules = { start: [{ token: 'comment.line.ahk', regex: '(?:^| );.*$' }, + { token: 'comment.block.ahk', + regex: '/\\*', push: [{ token: 'comment.block.ahk', regex: '\\*/', next: 'pop' }, + { defaultToken: 'comment.block.ahk' }] }, + { token: 'doc.comment.ahk', + regex: '#cs', push: [{ token: 'doc.comment.ahk', regex: '#ce', next: 'pop' }, + { defaultToken: 'doc.comment.ahk' }] }, + { token: 'keyword.command.ahk', + regex: '(?:\\b|^)(?:allowsamelinecomments|clipboardtimeout|commentflag|errorstdout|escapechar|hotkeyinterval|hotkeymodifiertimeout|hotstring|include|includeagain|installkeybdhook|installmousehook|keyhistory|ltrim|maxhotkeysperinterval|maxmem|maxthreads|maxthreadsbuffer|maxthreadsperhotkey|noenv|notrayicon|persistent|singleinstance|usehook|winactivateforce|autotrim|blockinput|click|clipwait|continue|control|controlclick|controlfocus|controlget|controlgetfocus|controlgetpos|controlgettext|controlmove|controlsend|controlsendraw|controlsettext|coordmode|critical|detecthiddentext|detecthiddenwindows|drive|driveget|drivespacefree|edit|endrepeat|envadd|envdiv|envget|envmult|envset|envsub|envupdate|exit|exitapp|fileappend|filecopy|filecopydir|filecreatedir|filecreateshortcut|filedelete|filegetattrib|filegetshortcut|filegetsize|filegettime|filegetversion|fileinstall|filemove|filemovedir|fileread|filereadline|filerecycle|filerecycleempty|fileremovedir|fileselectfile|fileselectfolder|filesetattrib|filesettime|formattime|getkeystate|gosub|goto|groupactivate|groupadd|groupclose|groupdeactivate|gui|guicontrol|guicontrolget|hideautoitwin|hotkey|ifequal|ifexist|ifgreater|ifgreaterorequal|ifinstring|ifless|iflessorequal|ifmsgbox|ifnotequal|ifnotexist|ifnotinstring|ifwinactive|ifwinexist|ifwinnotactive|ifwinnotexist|imagesearch|inidelete|iniread|iniwrite|input|inputbox|keyhistory|keywait|listhotkeys|listlines|listvars|menu|mouseclick|mouseclickdrag|mousegetpos|mousemove|msgbox|onexit|outputdebug|pause|pixelgetcolor|pixelsearch|postmessage|process|progress|random|regdelete|regread|regwrite|reload|repeat|run|runas|runwait|send|sendevent|sendinput|sendmode|sendplay|sendmessage|sendraw|setbatchlines|setcapslockstate|setcontroldelay|setdefaultmousespeed|setenv|setformat|setkeydelay|setmousedelay|setnumlockstate|setscrolllockstate|setstorecapslockmode|settimer|settitlematchmode|setwindelay|setworkingdir|shutdown|sleep|sort|soundbeep|soundget|soundgetwavevolume|soundplay|soundset|soundsetwavevolume|splashimage|splashtextoff|splashtexton|splitpath|statusbargettext|statusbarwait|stringcasesense|stringgetpos|stringleft|stringlen|stringlower|stringmid|stringreplace|stringright|stringsplit|stringtrimleft|stringtrimright|stringupper|suspend|sysget|thread|tooltip|transform|traytip|urldownloadtofile|while|winactivate|winactivatebottom|winclose|winget|wingetactivestats|wingetactivetitle|wingetclass|wingetpos|wingettext|wingettitle|winhide|winkill|winmaximize|winmenuselectitem|winminimize|winminimizeall|winminimizeallundo|winmove|winrestore|winset|winsettitle|winshow|winwait|winwaitactive|winwaitclose|winwaitnotactive)\\b', + caseInsensitive: true }, + { token: 'keyword.control.ahk', + regex: '(?:\\b|^)(?:if|else|return|loop|break|for|while|global|local|byref)\\b', + caseInsensitive: true }, + { token: 'support.function.ahk', + regex: '(?:\\b|^)(?:abs|acos|asc|asin|atan|ceil|chr|cos|dllcall|exp|fileexist|floor|getkeystate|il_add|il_create|il_destroy|instr|substr|isfunc|islabel|ln|log|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|onmessage|numget|numput|registercallback|regexmatch|regexreplace|round|sin|tan|sqrt|strlen|sb_seticon|sb_setparts|sb_settext|tv_add|tv_delete|tv_getchild|tv_getcount|tv_getnext|tv_get|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist)\\b', + caseInsensitive: true }, + { token: 'variable.predefined.ahk', + regex: '(?:\\b|^)(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_formatfloat|a_formatinteger|a_gui|a_guievent|a_guicontrol|a_guicontrolevent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|programfiles|a_programfiles|a_programs|a_programscommon|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel)\\b', + caseInsensitive: true }, + { token: 'support.constant.ahk', + regex: '(?:\\b|^)(?:shift|lshift|rshift|alt|lalt|ralt|control|lcontrol|rcontrol|ctrl|lctrl|rctrl|lwin|rwin|appskey|altdown|altup|shiftdown|shiftup|ctrldown|ctrlup|lwindown|lwinup|rwindown|rwinup|lbutton|rbutton|mbutton|wheelup|wheelleft|wheelright|wheeldown|xbutton1|xbutton2|joy1|joy2|joy3|joy4|joy5|joy6|joy7|joy8|joy9|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy30|joy31|joy32|joyx|joyy|joyz|joyr|joyu|joyv|joypov|joyname|joybuttons|joyaxes|joyinfo|space|tab|enter|escape|esc|backspace|bs|delete|del|insert|ins|pgup|pgdn|home|end|up|down|left|right|printscreen|ctrlbreak|pause|scrolllock|capslock|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadmult|numpadadd|numpadsub|numpaddiv|numpaddot|numpaddel|numpadins|numpadclear|numpadup|numpaddown|numpadleft|numpadright|numpadhome|numpadend|numpadpgup|numpadpgdn|numpadenter|f1|f2|f3|f4|f5|f6|f7|f8|f9|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f20|f21|f22|f23|f24|browser_back|browser_forward|browser_refresh|browser_stop|browser_search|browser_favorites|browser_home|volume_mute|volume_down|volume_up|media_next|media_prev|media_stop|media_play_pause|launch_mail|launch_media|launch_app1|launch_app2)\\b', + caseInsensitive: true }, + { token: 'variable.parameter', + regex: '(?:\\b|^)(?:pixel|mouse|screen|relative|rgb|ltrim|rtrim|join|low|belownormal|normal|abovenormal|high|realtime|ahk_id|ahk_pid|ahk_class|ahk_group|between|contains|in|is|integer|float|integerfast|floatfast|number|digit|xdigit|alpha|upper|lower|alnum|time|date|not|or|and|alwaysontop|topmost|top|bottom|transparent|transcolor|redraw|region|id|idlast|processname|minmax|controllist|count|list|capacity|statuscd|eject|lock|unlock|label|filesystem|label|setlabel|serial|type|status|static|seconds|minutes|hours|days|read|parse|logoff|close|error|single|tray|add|rename|check|uncheck|togglecheck|enable|disable|toggleenable|default|nodefault|standard|nostandard|color|delete|deleteall|icon|noicon|tip|click|show|mainwindow|nomainwindow|useerrorlevel|text|picture|pic|groupbox|button|checkbox|radio|dropdownlist|ddl|combobox|listbox|listview|datetime|monthcal|updown|slider|tab|tab2|statusbar|treeview|iconsmall|tile|report|sortdesc|nosort|nosorthdr|grid|hdr|autosize|range|xm|ym|ys|xs|xp|yp|font|resize|owner|submit|nohide|minimize|maximize|restore|noactivate|na|cancel|destroy|center|margin|maxsize|minsize|owndialogs|guiescape|guiclose|guisize|guicontextmenu|guidropfiles|tabstop|section|altsubmit|wrap|hscroll|vscroll|border|top|bottom|buttons|expand|first|imagelist|lines|wantctrla|wantf2|vis|visfirst|number|uppercase|lowercase|limit|password|multi|wantreturn|group|background|bold|italic|strike|underline|norm|backgroundtrans|theme|caption|delimiter|minimizebox|maximizebox|sysmenu|toolwindow|flash|style|exstyle|check3|checked|checkedgray|readonly|password|hidden|left|right|center|notab|section|move|focus|hide|choose|choosestring|text|pos|enabled|disabled|visible|lastfound|lastfoundexist|alttab|shiftalttab|alttabmenu|alttabandmenu|alttabmenudismiss|notimers|interrupt|priority|waitclose|blind|raw|unicode|deref|pow|bitnot|bitand|bitor|bitxor|bitshiftleft|bitshiftright|yes|no|ok|cancel|abort|retry|ignore|tryagain|on|off|all|hkey_local_machine|hkey_users|hkey_current_user|hkey_classes_root|hkey_current_config|hklm|hku|hkcu|hkcr|hkcc|reg_sz|reg_expand_sz|reg_multi_sz|reg_dword|reg_qword|reg_binary|reg_link|reg_resource_list|reg_full_resource_descriptor|reg_resource_requirements_list|reg_dword_big_endian)\\b', + caseInsensitive: true }, + { keywordMap: { "constant.language": autoItKeywords }, regex: '\\w+\\b' }, + { keywordMap: { "variable.function": atKeywords }, regex: '@\\w+\\b' }, + { token: "constant.numeric", regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, + { token: 'keyword.operator.ahk', + regex: '=|==|<>|:=|<|>|\\*|\\/|\\+|:|\\?|\\-' }, + { token: 'punctuation.ahk', + regex: /#|`|::|,|%/ }, + { token: 'paren', + regex: /[{}()]/ }, + { token: ['punctuation.quote.double', + 'string.quoted.ahk', + 'punctuation.quote.double'], + regex: '(")((?:[^"]|"")*)(")' }, + { token: ['label.ahk', 'punctuation.definition.label.ahk'], + regex: '^([^: ]+)(:)(?!:)' }] }; this.normalizeRules(); }; - AutoHotKeyHighlightRules.metaData = { name: 'AutoHotKey', - scopeName: 'source.ahk', - fileTypes: [ 'ahk' ], - foldingStartMarker: '^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))', - foldingStopMarker: '^\\s*\\*/|^\\s*\\}' }; - - + scopeName: 'source.ahk', + fileTypes: ['ahk'], + foldingStartMarker: '^\\s*/\\*|^(?![^{]*?;|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|;|/\\*(?!.*?\\*/.*\\S))', + foldingStopMarker: '^\\s*\\*/|^\\s*\\}' }; oop.inherits(AutoHotKeyHighlightRules, TextHighlightRules); - exports.AutoHotKeyHighlightRules = AutoHotKeyHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -165,71 +132,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/autohotkey",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/autohotkey_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/autohotkey",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/autohotkey_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var AutoHotKeyHighlightRules = require("./autohotkey_highlight_rules").AutoHotKeyHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = AutoHotKeyHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = ";"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/autohotkey"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/autohotkey"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-batchfile.js b/vendor/assets/javascripts/ace/mode-batchfile.js index 59014f33..ff98b447 100644 --- a/vendor/assets/javascripts/ace/mode-batchfile.js +++ b/vendor/assets/javascripts/ace/mode-batchfile.js @@ -1,146 +1,116 @@ -define("ace/mode/batchfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/batchfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from C:\Users\LED\AppData\Roaming\Sublime Text 2\Packages\Batch File\Batch File.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var BatchFileHighlightRules = function() { - - this.$rules = { start: - [ { token: 'keyword.command.dosbatch', - regex: '\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b', - caseInsensitive: true }, - { token: 'keyword.control.statement.dosbatch', - regex: '\\b(?:goto|call|exit)\\b', - caseInsensitive: true }, - { token: 'keyword.control.conditional.if.dosbatch', - regex: '\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b', - caseInsensitive: true }, - { token: 'keyword.control.conditional.dosbatch', - regex: '\\b(?:if|else)\\b', - caseInsensitive: true }, - { token: 'keyword.control.repeat.dosbatch', - regex: '\\bfor\\b', - caseInsensitive: true }, - { token: 'keyword.operator.dosbatch', - regex: '\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b' }, - { token: ['doc.comment', 'comment'], - regex: '(?:^|\\b)(rem)($|\\s.*$)', - caseInsensitive: true }, - { token: 'comment.line.colons.dosbatch', - regex: '::.*$' }, - { include: 'variable' }, - { token: 'punctuation.definition.string.begin.shell', - regex: '"', - push: [ - { token: 'punctuation.definition.string.end.shell', regex: '"', next: 'pop' }, - { include: 'variable' }, - { defaultToken: 'string.quoted.double.dosbatch' } ] }, - { token: 'keyword.operator.pipe.dosbatch', regex: '[|]' }, - { token: 'keyword.operator.redirect.shell', - regex: '&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>' } ], +var BatchFileHighlightRules = function () { + this.$rules = { start: [{ token: 'keyword.command.dosbatch', + regex: '\\b(?:append|assoc|at|attrib|break|cacls|cd|chcp|chdir|chkdsk|chkntfs|cls|cmd|color|comp|compact|convert|copy|date|del|dir|diskcomp|diskcopy|doskey|echo|endlocal|erase|fc|find|findstr|format|ftype|graftabl|help|keyb|label|md|mkdir|mode|more|move|path|pause|popd|print|prompt|pushd|rd|recover|ren|rename|replace|restore|rmdir|set|setlocal|shift|sort|start|subst|time|title|tree|type|ver|verify|vol|xcopy)\\b', + caseInsensitive: true }, + { token: 'keyword.control.statement.dosbatch', + regex: '\\b(?:goto|call|exit)\\b', + caseInsensitive: true }, + { token: 'keyword.control.conditional.if.dosbatch', + regex: '\\bif\\s+not\\s+(?:exist|defined|errorlevel|cmdextversion)\\b', + caseInsensitive: true }, + { token: 'keyword.control.conditional.dosbatch', + regex: '\\b(?:if|else)\\b', + caseInsensitive: true }, + { token: 'keyword.control.repeat.dosbatch', + regex: '\\bfor\\b', + caseInsensitive: true }, + { token: 'keyword.operator.dosbatch', + regex: '\\b(?:EQU|NEQ|LSS|LEQ|GTR|GEQ)\\b' }, + { token: ['doc.comment', 'comment'], + regex: '(?:^|\\b)(rem)($|\\s.*$)', + caseInsensitive: true }, + { token: 'comment.line.colons.dosbatch', + regex: '::.*$' }, + { include: 'variable' }, + { token: 'punctuation.definition.string.begin.shell', + regex: '"', + push: [ + { token: 'punctuation.definition.string.end.shell', regex: '"', next: 'pop' }, + { include: 'variable' }, + { defaultToken: 'string.quoted.double.dosbatch' } + ] }, + { token: 'keyword.operator.pipe.dosbatch', regex: '[|]' }, + { token: 'keyword.operator.redirect.shell', + regex: '&>|\\d*>&\\d*|\\d*(?:>>|>|<)|\\d*<&|\\d*<>' }], variable: [ - { token: 'constant.numeric', regex: '%%\\w+|%[*\\d]|%\\w+%'}, - { token: 'constant.numeric', regex: '%~\\d+'}, - { token: ['markup.list', 'constant.other', 'markup.list'], - regex: '(%)(\\w+)(%?)' }]}; - + { token: 'constant.numeric', regex: '%%\\w+|%[*\\d]|%\\w+%' }, + { token: 'constant.numeric', regex: '%~\\d+' }, + { token: ['markup.list', 'constant.other', 'markup.list'], + regex: '(%)(\\w+)(%?)' } + ] }; this.normalizeRules(); }; - BatchFileHighlightRules.metaData = { name: 'Batch File', - scopeName: 'source.dosbatch', - fileTypes: [ 'bat' ] }; - - + scopeName: 'source.dosbatch', + fileTypes: ['bat'] }; oop.inherits(BatchFileHighlightRules, TextHighlightRules); - exports.BatchFileHighlightRules = BatchFileHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -153,71 +123,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/batchfile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/batchfile_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/batchfile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/batchfile_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var BatchFileHighlightRules = require("./batchfile_highlight_rules").BatchFileHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = BatchFileHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "::"; this.blockComment = ""; this.$id = "ace/mode/batchfile"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/batchfile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-bibtex.js b/vendor/assets/javascripts/ace/mode-bibtex.js new file mode 100644 index 00000000..535000a1 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-bibtex.js @@ -0,0 +1,318 @@ +define("ace/mode/bibtex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var BibTeXHighlightRules = function () { + this.$rules = { + start: [ + { + token: "comment", + regex: /@Comment\{/, + stateName: "bibtexComment", + push: [ + { + token: "comment", + regex: /}/, + next: "pop" + }, { + token: "comment", + regex: /\{/, + push: "bibtexComment" + }, { + defaultToken: "comment" + } + ] + }, { + token: [ + "keyword", "text", "paren.lparen", "text", "variable", "text", "keyword.operator" + ], + regex: /(@String)(\s*)(\{)(\s*)([a-zA-Z]*)(\s*)(=)/, + push: [ + { + token: "paren.rparen", + regex: /\}/, + next: "pop" + }, { + include: "#misc" + }, { + defaultToken: "text" + } + ] + }, { + token: [ + "keyword", "text", "paren.lparen", "text", "variable", "text", "keyword.operator" + ], + regex: /(@String)(\s*)(\()(\s*)([a-zA-Z]*)(\s*)(=)/, + push: [ + { + token: "paren.rparen", + regex: /\)/, + next: "pop" + }, { + include: "#misc" + }, { + defaultToken: "text" + } + ] + }, { + token: [ + "keyword", "text", "paren.lparen" + ], + regex: /(@preamble)(\s*)(\()/, + push: [ + { + token: "paren.rparen", + regex: /\)/, + next: "pop" + }, { + include: "#misc" + }, { + defaultToken: "text" + } + ] + }, { + token: [ + "keyword", "text", "paren.lparen" + ], + regex: /(@preamble)(\s*)(\{)/, + push: [ + { + token: "paren.rparen", + regex: /\}/, + next: "pop" + }, { + include: "#misc" + }, { + defaultToken: "text" + } + ] + }, { + token: [ + "keyword", "text", "paren.lparen", "text", "support.class" + ], + regex: /(@[a-zA-Z]+)(\s*)(\{)(\s*)([\w-]+)/, + push: [ + { + token: "paren.rparen", + regex: /\}/, + next: "pop" + }, { + token: [ + "variable", "text", "keyword.operator" + ], + regex: /([a-zA-Z0-9\!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+)(\s*)(=)/, + push: [ + { + token: "text", + regex: /(?=[,}])/, + next: "pop" + }, { + include: "#misc" + }, { + include: "#integer" + }, { + defaultToken: "text" + } + ] + }, { + token: "punctuation", + regex: /,/ + }, { + defaultToken: "text" + } + ] + }, { + defaultToken: "comment" + } + ], + "#integer": [ + { + token: "constant.numeric.bibtex", + regex: /\d+/ + } + ], + "#misc": [ + { + token: "string", + regex: /"/, + push: "#string_quotes" + }, { + token: "paren.lparen", + regex: /\{/, + push: "#string_braces" + }, { + token: "keyword.operator", + regex: /#/ + } + ], + "#string_braces": [ + { + token: "paren.rparen", + regex: /\}/, + next: "pop" + }, { + token: "invalid.illegal", + regex: /@/ + }, { + include: "#misc" + }, { + defaultToken: "string" + } + ], + "#string_quotes": [ + { + token: "string", + regex: /"/, + next: "pop" + }, { + include: "#misc" + }, { + defaultToken: "string" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(BibTeXHighlightRules, TextHighlightRules); +exports.BibTeXHighlightRules = BibTeXHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/bibtex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/bibtex_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var BibTeXHighlightRules = require("./bibtex_highlight_rules").BibTeXHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = BibTeXHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/bibtex"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/bibtex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-bro.js b/vendor/assets/javascripts/ace/mode-bro.js deleted file mode 100644 index 4e183b54..00000000 --- a/vendor/assets/javascripts/ace/mode-bro.js +++ /dev/null @@ -1,327 +0,0 @@ -define("ace/mode/bro_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var BroHighlightRules = function() { - - this.$rules = { - start: [{ - token: "punctuation.definition.comment.bro", - regex: /#/, - push: [{ - token: "comment.line.number-sign.bro", - regex: /$/, - next: "pop" - }, { - defaultToken: "comment.line.number-sign.bro" - }] - }, { - token: "keyword.control.bro", - regex: /\b(?:break|case|continue|else|for|if|return|switch|next|when|timeout|schedule)\b/ - }, { - token: [ - "meta.function.bro", - "meta.function.bro", - "storage.type.bro", - "meta.function.bro", - "entity.name.function.bro", - "meta.function.bro" - ], - regex: /^(\s*)(?:function|hook|event)(\s*)(.*)(\s*\()(.*)(\).*$)/ - }, { - token: "storage.type.bro", - regex: /\b(?:bool|enum|double|int|count|port|addr|subnet|any|file|interval|time|string|table|vector|set|record|pattern|hook)\b/ - }, { - token: "storage.modifier.bro", - regex: /\b(?:global|const|redef|local|&(?:optional|rotate_interval|rotate_size|add_func|del_func|expire_func|expire_create|expire_read|expire_write|persistent|synchronized|encrypt|mergeable|priority|group|type_column|log|error_handler))\b/ - }, { - token: "keyword.operator.bro", - regex: /\s*(?:\||&&|(?:>|<|!)=?|==)\s*|\b!?in\b/ - }, { - token: "constant.language.bro", - regex: /\b(?:T|F)\b/ - }, { - token: "constant.numeric.bro", - regex: /\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:\/(?:tcp|udp|icmp)|\s*(?:u?sec|min|hr|day)s?)?\b/ - }, { - token: "punctuation.definition.string.begin.bro", - regex: /"/, - push: [{ - token: "punctuation.definition.string.end.bro", - regex: /"/, - next: "pop" - }, { - include: "#string_escaped_char" - }, { - include: "#string_placeholder" - }, { - defaultToken: "string.quoted.double.bro" - }] - }, { - token: "punctuation.definition.string.begin.bro", - regex: /\//, - push: [{ - token: "punctuation.definition.string.end.bro", - regex: /\//, - next: "pop" - }, { - include: "#string_escaped_char" - }, { - include: "#string_placeholder" - }, { - defaultToken: "string.quoted.regex.bro" - }] - }, { - token: [ - "meta.preprocessor.bro.load", - "keyword.other.special-method.bro" - ], - regex: /^(\s*)(\@load(?:-sigs)?)\b/, - push: [{ - token: [], - regex: /(?=\#)|$/, - next: "pop" - }, { - defaultToken: "meta.preprocessor.bro.load" - }] - }, { - token: [ - "meta.preprocessor.bro.if", - "keyword.other.special-method.bro", - "meta.preprocessor.bro.if" - ], - regex: /^(\s*)(\@endif|\@if(?:n?def)?)(.*$)/, - push: [{ - token: [], - regex: /$/, - next: "pop" - }, { - defaultToken: "meta.preprocessor.bro.if" - }] - }], - "#disabled": [{ - token: "text", - regex: /^\s*\@if(?:n?def)?\b.*$/, - push: [{ - token: "text", - regex: /^\s*\@endif\b.*$/, - next: "pop" - }, { - include: "#disabled" - }, { - include: "#pragma-mark" - }], - comment: "eat nested preprocessor ifdefs" - }], - "#preprocessor-rule-other": [{ - token: [ - "text", - "meta.preprocessor.bro", - "meta.preprocessor.bro", - "text" - ], - regex: /^(\s*)(@if)((?:n?def)?)\b(.*?)(?:(?=)|$)/, - push: [{ - token: ["text", "meta.preprocessor.bro", "text"], - regex: /^(\s*)(@endif)\b(.*$)/, - next: "pop" - }, { - include: "$base" - }] - }], - "#string_escaped_char": [{ - token: "constant.character.escape.bro", - regex: /\\(?:\\|[abefnprtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-fA-F0-9]{,2})/ - }, { - token: "invalid.illegal.unknown-escape.bro", - regex: /\\./ - }], - "#string_placeholder": [{ - token: "constant.other.placeholder.bro", - regex: /%(?:\d+\$)?[#0\- +']*[,;:_]?(?:-?\d+|\*(?:-?\d+\$)?)?(?:\.(?:-?\d+|\*(?:-?\d+\$)?)?)?(?:hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?[diouxXDOUeEfFgGaACcSspn%]/ - }, { - token: "invalid.illegal.placeholder.bro", - regex: /%/ - }] - }; - - this.normalizeRules(); -}; - -BroHighlightRules.metaData = { - fileTypes: ["bro"], - foldingStartMarker: "^(\\@if(n?def)?)", - foldingStopMarker: "^\\@endif", - keyEquivalent: "@B", - name: "Bro", - scopeName: "source.bro" -}; - - -oop.inherits(BroHighlightRules, TextHighlightRules); - -exports.BroHighlightRules = BroHighlightRules; -}); - -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -define("ace/mode/bro",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/bro_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var BroHighlightRules = require("./bro_highlight_rules").BroHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = BroHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/bro"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); diff --git a/vendor/assets/javascripts/ace/mode-c9search.js b/vendor/assets/javascripts/ace/mode-c9search.js index f0c8855d..cd963aee 100644 --- a/vendor/assets/javascripts/ace/mode-c9search.js +++ b/vendor/assets/javascripts/ace/mode-c9search.js @@ -1,33 +1,29 @@ -define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c9search_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - function safeCreateRegexp(source, flag) { try { return new RegExp(source, flag); - } catch(e) {} + } + catch (e) { } } - -var C9SearchHighlightRules = function() { +var C9SearchHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - tokenNames : ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text", "c9searchresults.keyword"], - regex : /(^\s+[0-9]+)(:)(\d*\s?)([^\r\n]+)/, - onMatch : function(val, state, stack) { + tokenNames: ["c9searchresults.constant.numeric", "c9searchresults.text", "c9searchresults.text", "c9searchresults.keyword"], + regex: /(^\s+[0-9]+)(:)(\d*\s?)([^\r\n]+)/, + onMatch: function (val, state, stack) { var values = this.splitRegex.exec(val); var types = this.tokenNames; var tokens = [{ - type: types[0], - value: values[1] - }, { - type: types[1], - value: values[2] - }]; - + type: types[0], + value: values[1] + }, { + type: types[1], + value: values[2] + }]; if (values[3]) { if (values[3] == " ") tokens[1] = { type: types[1], value: values[2] + " " }; @@ -36,7 +32,6 @@ var C9SearchHighlightRules = function() { } var regex = stack[1]; var str = values[4]; - var m; var last = 0; if (regex && regex.exec) { @@ -45,40 +40,37 @@ var C9SearchHighlightRules = function() { var skipped = str.substring(last, m.index); last = regex.lastIndex; if (skipped) - tokens.push({type: types[2], value: skipped}); + tokens.push({ type: types[2], value: skipped }); if (m[0]) - tokens.push({type: types[3], value: m[0]}); + tokens.push({ type: types[3], value: m[0] }); else if (!skipped) break; } } if (last < str.length) - tokens.push({type: types[2], value: str.substr(last)}); + tokens.push({ type: types[2], value: str.substr(last) }); return tokens; } }, { - regex : "^Searching for [^\\r\\n]*$", - onMatch: function(val, state, stack) { + regex: "^Searching for [^\\r\\n]*$", + onMatch: function (val, state, stack) { var parts = val.split("\x01"); if (parts.length < 3) return "text"; - - var options, search, replace; - + var options, search; var i = 0; var tokens = [{ - value: parts[i++] + "'", - type: "text" - }, { - value: search = parts[i++], - type: "text" // "c9searchresults.keyword" - }, { - value: "'" + parts[i++], - type: "text" - }]; + value: parts[i++] + "'", + type: "text" + }, { + value: search = parts[i++], + type: "text" // "c9searchresults.keyword" + }, { + value: "'" + parts[i++], + type: "text" + }]; if (parts[2] !== " in") { - replace = parts[i]; tokens.push({ value: "'" + parts[i++] + "'", type: "text" @@ -91,14 +83,15 @@ var C9SearchHighlightRules = function() { value: " " + parts[i++] + " ", type: "text" }); - if (parts[i+1]) { - options = parts[i+1]; + if (parts[i + 1]) { + options = parts[i + 1]; tokens.push({ - value: "(" + parts[i+1] + ")", + value: "(" + parts[i + 1] + ")", type: "text" }); i += 1; - } else { + } + else { i -= 1; } while (i++ < parts.length) { @@ -107,120 +100,93 @@ var C9SearchHighlightRules = function() { type: "text" }); } - if (search) { if (!/regex/.test(options)) search = lang.escapeRegExp(search); if (/whole/.test(options)) search = "\\b" + search + "\\b"; } - - var regex = search && safeCreateRegexp( - "(" + search + ")", - / sensitive/.test(options) ? "g" : "ig" - ); + var regex = search && safeCreateRegexp("(" + search + ")", / sensitive/.test(options) ? "g" : "ig"); if (regex) { stack[0] = state; stack[1] = regex; } - return tokens; } }, { - regex : "^(?=Found \\d+ matches)", - token : "text", - next : "numbers" + regex: "^(?=Found \\d+ matches)", + token: "text", + next: "numbers" }, { - token : "string", // single line - regex : "^\\S:?[^:]+", - next : "numbers" + token: "string", // single line + regex: "^\\S:?[^:]+", + next: "numbers" } ], - numbers:[{ - regex : "\\d+", - token : "constant.numeric" - }, { - regex : "$", - token : "text", - next : "start" - }] + numbers: [{ + regex: "\\d+", + token: "constant.numeric" + }, { + regex: "$", + token: "text", + next: "start" + }] }; this.normalizeRules(); }; - oop.inherits(C9SearchHighlightRules, TextHighlightRules); - exports.C9SearchHighlightRules = C9SearchHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/c9search",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /^(\S.*:|Searching for.*)$/; this.foldingStopMarker = /^(\s+|Found.*)$/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { var lines = session.doc.getAllLines(row); var line = lines[row]; var level1 = /^(Found.*|Searching for.*)$/; var level2 = /^(\S.*:|\s*)$/; var re = level1.test(line) ? level1 : level2; - var startRow = row; var endRow = row; - if (this.foldingStartMarker.test(line)) { for (var i = row + 1, l = session.getLength(); i < l; i++) { if (re.test(lines[i])) @@ -243,45 +209,42 @@ oop.inherits(FoldMode, BaseFoldMode); return new Range(startRow, col, endRow, 0); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c9search",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c9search_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/c9search"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var C9SearchHighlightRules = require("./c9search_highlight_rules").C9SearchHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var C9StyleFoldMode = require("./folding/c9search").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = C9SearchHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new C9StyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { +(function () { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/c9search"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/c9search"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-c_cpp.js b/vendor/assets/javascripts/ace/mode-c_cpp.js index 54b930e3..188dc7f0 100644 --- a/vendor/assets/javascripts/ace/mode-c_cpp.js +++ b/vendor/assets/javascripts/ace/mode-c_cpp.js @@ -1,370 +1,300 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + +var cFunctions = exports.cFunctions = "hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen"; +var c_cppHighlightRules = function (extraKeywords) { + var keywordControls = ("break|case|continue|default|do|else|for|goto|if|_Pragma|" + + "return|switch|while|catch|operator|try|throw|using"); + var storageType = ("asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + + "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + + "class|wchar_t|template|char16_t|char32_t"); + var storageModifiers = ("const|extern|register|restrict|static|volatile|inline|private|" + "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, + "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local"); + var keywordOperators = ("and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + + "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace"); + var builtinConstants = ("NULL|true|false|TRUE|FALSE|nullptr"); + var keywordMapper = this.$keywords = this.createKeywordMapper(Object.assign({ + "keyword.control": keywordControls, + "storage.type": storageType, + "storage.modifier": storageModifiers, + "keyword.operator": keywordOperators, "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - + "constant.language": builtinConstants, + "support.function.C99.c": cFunctions + }, extraKeywords), "identifier"); var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ + + /(\d+\$)?/.source // field (argument #) + + /[#0\- +']*/.source // flags + + /[,;:_]?/.source // separator character (AltiVec) + + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type + this.$rules = { + "start": [ { - token : "comment", - regex : "//$", - next : "start" + token: "comment", + regex: "//$", + next: "start" }, { - token : "comment", - regex : "//", - next : "singleLineComment" + token: "comment", + regex: "//", + next: "singleLineComment" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" + token: "string", // character + regex: "'(?:" + escapeRe + "|.)?'" }, { - token : "string.start", - regex : '"', + token: "string.start", + regex: '"', stateName: "qqstring", next: [ { token: "string", regex: /\\\s*$/, next: "qqstring" }, { token: "constant.language.escape", regex: escapeRe }, { token: "constant.language.escape", regex: formatRe }, { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "string.start", - regex : 'R"\\(', + token: "string.start", + regex: 'R"\\(', stateName: "rawString", next: [ { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" + token: "keyword", // pre-compiler directives + regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b", + next: "directive" }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" + token: "keyword", // special case pre-compiler directive + regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" }, { - token : "support.function.C99.c", - regex : cFunctions + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" + token: "keyword.operator", + regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { defaultToken: "comment" } ], - "directive" : [ + "singleLineComment": [ { - token : "constant.other.multiline", - regex : /\\/ + token: "comment", + regex: /\\$/, + next: "singleLineComment" + }, { + token: "comment", + regex: /$/, + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ }, { - token : "constant.other.multiline", - regex : /.*\\/ + token: "constant.other.multiline", + regex: /.*\\/ }, { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" + token: "constant.other", + regex: "\\s*<.+?>", + next: "start" }, { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" + token: "constant.other", // single line + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next: "start" }, { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" + token: "constant.other", // single line + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; - oop.inherits(c_cppHighlightRules, TextHighlightRules); - exports.c_cppHighlightRules = c_cppHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -377,94 +307,82 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = c_cppHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start") { return ""; } @@ -476,20 +394,24 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/c_cpp"; + this.snippetFileId = "ace/snippets/c_cpp"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/c_cpp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-cirru.js b/vendor/assets/javascripts/ace/mode-cirru.js index dddf2149..918928dd 100644 --- a/vendor/assets/javascripts/ace/mode-cirru.js +++ b/vendor/assets/javascripts/ace/mode-cirru.js @@ -1,153 +1,141 @@ -define("ace/mode/cirru_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/cirru_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var CirruHighlightRules = function() { +var CirruHighlightRules = function () { this.$rules = { start: [{ - token: 'constant.numeric', - regex: /[\d\.]+/ - }, { - token: 'comment.line.double-dash', - regex: /--/, - next: 'comment' - }, { - token: 'storage.modifier', - regex: /\(/ - }, { - token: 'storage.modifier', - regex: /,/, - next: 'line' - }, { - token: 'support.function', - regex: /[^\(\)"\s]+/, - next: 'line' - }, { - token: 'string.quoted.double', - regex: /"/, - next: 'string' - }, { - token: 'storage.modifier', - regex: /\)/ - }], + token: 'constant.numeric', + regex: /[\d\.]+/ + }, { + token: 'comment.line.double-dash', + regex: /--/, + next: 'comment' + }, { + token: 'storage.modifier', + regex: /\(/ + }, { + token: 'storage.modifier', + regex: /,/, + next: 'line' + }, { + token: 'support.function', + regex: /[^\(\)"\s{}\[\]]+/, + next: 'line' + }, { + token: 'string.quoted.double', + regex: /"/, + next: 'string' + }, { + token: 'storage.modifier', + regex: /\)/ + }], comment: [{ - token: 'comment.line.double-dash', - regex: / +[^\n]+/, - next: 'start' - }], + token: 'comment.line.double-dash', + regex: / +[^\n]+/, + next: 'start' + }], string: [{ - token: 'string.quoted.double', - regex: /"/, - next: 'line' - }, { - token: 'constant.character.escape', - regex: /\\/, - next: 'escape' - }, { - token: 'string.quoted.double', - regex: /[^\\"]+/ - }], + token: 'string.quoted.double', + regex: /"/, + next: 'line' + }, { + token: 'constant.character.escape', + regex: /\\/, + next: 'escape' + }, { + token: 'string.quoted.double', + regex: /[^\\"]+/ + }], escape: [{ - token: 'constant.character.escape', - regex: /./, - next: 'string' - }], + token: 'constant.character.escape', + regex: /./, + next: 'string' + }], line: [{ - token: 'constant.numeric', - regex: /[\d\.]+/ - }, { - token: 'markup.raw', - regex: /^\s*/, - next: 'start' - }, { - token: 'storage.modifier', - regex: /\$/, - next: 'start' - }, { - token: 'variable.parameter', - regex: /[^\(\)"\s]+/ - }, { - token: 'storage.modifier', - regex: /\(/, - next: 'start' - }, { - token: 'storage.modifier', - regex: /\)/ - }, { - token: 'markup.raw', - regex: /^ */, - next: 'start' - }, { - token: 'string.quoted.double', - regex: /"/, - next: 'string' - }] + token: 'constant.numeric', + regex: /[\d\.]+/ + }, { + token: 'markup.raw', + regex: /^\s*/, + next: 'start' + }, { + token: 'storage.modifier', + regex: /\$/, + next: 'start' + }, { + token: 'variable.parameter', + regex: /[^\(\)"\s{}\[\]]+/ + }, { + token: 'storage.modifier', + regex: /\(/, + next: 'start' + }, { + token: 'storage.modifier', + regex: /\)/ + }, { + token: 'markup.raw', + regex: /^ */, + next: 'start' + }, { + token: 'string.quoted.double', + regex: /"/, + next: 'string' + }] }; - }; - oop.inherits(CirruHighlightRules, TextHighlightRules); - exports.CirruHighlightRules = CirruHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -156,48 +144,49 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/cirru",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cirru_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - +define("ace/mode/cirru",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cirru_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CirruHighlightRules = require("./cirru_highlight_rules").CirruHighlightRules; var CoffeeFoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CirruHighlightRules; this.foldingRules = new CoffeeFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; this.$id = "ace/mode/cirru"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/cirru"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-clojure.js b/vendor/assets/javascripts/ace/mode-clojure.js index 9f0abcb7..7418a479 100644 --- a/vendor/assets/javascripts/ace/mode-clojure.js +++ b/vendor/assets/javascripts/ace/mode-clojure.js @@ -1,15 +1,8 @@ -define("ace/mode/clojure_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/clojure_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - - -var ClojureHighlightRules = function() { - - var builtinFunctions = ( - '* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* ' + +var ClojureHighlightRules = function () { + var builtinFunctions = ('* *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* ' + '*command-line-args* *compile-files* *compile-path* *e *err* *file* ' + '*flush-on-newline* *in* *macro-meta* *math-context* *ns* *out* ' + '*print-dup* *print-length* *print-level* *print-meta* *print-readably* ' + @@ -76,172 +69,183 @@ var ClojureHighlightRules = function() { 'var? vary-meta vec vector vector? when when-first when-let when-not ' + 'while with-bindings with-bindings* with-in-str with-loading-context ' + 'with-local-vars with-meta with-open with-out-str with-precision xml-seq ' + - 'zero? zipmap' - ); - + 'zero? zipmap'); var keywords = ('throw try var ' + - 'def do fn if let loop monitor-enter monitor-exit new quote recur set!' - ); - + 'def do fn if let loop monitor-enter monitor-exit new quote recur set!'); var buildinConstants = ("true false nil"); - var keywordMapper = this.createKeywordMapper({ "keyword": keywords, "constant.language": buildinConstants, "support.function": builtinFunctions }, "identifier", false, " "); - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : ";.*$" + token: "comment", + regex: ";.*$" }, { - token : "keyword", //parens - regex : "[\\(|\\)]" + token: "keyword", //parens + regex: "[\\(|\\)]" }, { - token : "keyword", //lists - regex : "[\\'\\(]" + token: "keyword", //lists + regex: "[\\'\\(]" }, { - token : "keyword", //vectors - regex : "[\\[|\\]]" + token: "keyword", //vectors + regex: "[\\[|\\]]" }, { - token : "keyword", //sets and maps - regex : "[\\{|\\}|\\#\\{|\\#\\}]" + token: "string.regexp", //Regular Expressions + regex: '#"', + next: "regex" }, { - token : "keyword", // ampersands - regex : '[\\&]' + token: "keyword", //sets and maps + regex: "[\\{|\\}|\\#\\{|\\#\\}]" }, { - token : "keyword", // metadata - regex : '[\\#\\^\\{]' + token: "keyword", // ampersands + regex: '[\\&]' }, { - token : "keyword", // anonymous fn syntactic sugar - regex : '[\\%]' + token: "keyword", // metadata + regex: '[\\#\\^\\{]' }, { - token : "keyword", // deref reader macro - regex : '[@]' + token: "keyword", // anonymous fn syntactic sugar + regex: '[\\%]' }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "keyword", // deref reader macro + regex: '[@]' }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.language", - regex : '[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]' + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" + token: "constant.language", + regex: '[!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+||=|!=|<=|>=|<>|<|>|!|&&]' }, { - token : "string", // single line - regex : '"', + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" + }, { + token: "string", // single line + regex: '"', next: "string" }, { - token : "constant", // symbol - regex : /:[^()\[\]{}'"\^%`,;\s]+/ - }, { - token : "string.regexp", //Regular Expressions - regex : '/#"(?:\\.|(?:\\")|[^""\n])*"/g' + token: "constant", // symbol + regex: /:[^()\[\]{}'"\^%`,;\s]+/ } - ], - "string" : [ + "string": [ { - token : "constant.language.escape", - regex : "\\\\.|\\\\$" + token: "constant.language.escape", + regex: "\\\\.|\\\\$" }, { - token : "string", - regex : '[^"\\\\]+' + token: "string", + regex: '"', + next: "start" }, { - token : "string", - regex : '"', - next : "start" + defaultToken: "string" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: '"', + next: "start" + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + defaultToken: "string.regexp.charachterclass" } ] }; }; - oop.inherits(ClojureHighlightRules, TextHighlightRules); - exports.ClojureHighlightRules = ClojureHighlightRules; + }); -define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingParensOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingParensOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\)/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\))/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { var match = line.match(/^(\s+)/); if (match) { return match[1]; } - return ""; }; - }).call(MatchingParensOutdent.prototype); - exports.MatchingParensOutdent = MatchingParensOutdent; + }); -define("ace/mode/clojure",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/clojure_highlight_rules","ace/mode/matching_parens_outdent"], function(require, exports, module) { -"use strict"; - +define("ace/mode/clojure",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/clojure_highlight_rules","ace/mode/matching_parens_outdent"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ClojureHighlightRules = require("./clojure_highlight_rules").ClojureHighlightRules; var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ClojureHighlightRules; this.$outdent = new MatchingParensOutdent(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ";"; this.minorIndentFunctions = ["defn", "defn-", "defmacro", "def", "deftest", "testing"]; - - this.$toIndent = function(str) { - return str.split('').map(function(ch) { + this.$toIndent = function (str) { + return str.split('').map(function (ch) { if (/\s/.exec(ch)) { return ch; - } else { + } + else { return ' '; } }).join(''); }; - - this.$calculateIndent = function(line, tab) { + this.$calculateIndent = function (line, tab) { var baseIndent = this.$getIndent(line); var delta = 0; var isParen, ch; @@ -250,10 +254,12 @@ oop.inherits(Mode, TextMode); if (ch === '(') { delta--; isParen = true; - } else if (ch === '(' || ch === '[' || ch === '{') { + } + else if (ch === '(' || ch === '[' || ch === '{') { delta--; isParen = false; - } else if (ch === ')' || ch === ']' || ch === '}') { + } + else if (ch === ')' || ch === ']' || ch === '}') { delta++; } if (delta < 0) { @@ -267,41 +273,50 @@ oop.inherits(Mode, TextMode); while (true) { ch = line[i]; if (ch === ' ' || ch === '\t') { - if(this.minorIndentFunctions.indexOf(fn) !== -1) { + if (this.minorIndentFunctions.indexOf(fn) !== -1) { return this.$toIndent(line.substring(0, iBefore - 1) + tab); - } else { + } + else { return this.$toIndent(line.substring(0, i + 1)); } - } else if (ch === undefined) { + } + else if (ch === undefined) { return this.$toIndent(line.substring(0, iBefore - 1) + tab); } fn += line[i]; i++; } - } else if(delta < 0 && !isParen) { - return this.$toIndent(line.substring(0, i+1)); - } else if(delta > 0) { + } + else if (delta < 0 && !isParen) { + return this.$toIndent(line.substring(0, i + 1)); + } + else if (delta > 0) { baseIndent = baseIndent.substring(0, baseIndent.length - tab.length); return baseIndent; - } else { + } + else { return baseIndent; } }; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$calculateIndent(line, tab); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/clojure"; + this.snippetFileId = "ace/snippets/clojure"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/clojure"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-cobol.js b/vendor/assets/javascripts/ace/mode-cobol.js index e7784c70..fca5f369 100644 --- a/vendor/assets/javascripts/ace/mode-cobol.js +++ b/vendor/assets/javascripts/ace/mode-cobol.js @@ -1,94 +1,82 @@ -define("ace/mode/cobol_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/cobol_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CobolHighlightRules = function() { -var keywords = "ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|" + -"AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|" + -"ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|" + -"TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|" + -"UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|" + -"PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|" + -"CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|" + -"COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|" + -"RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|" + -"DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|" + -"ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|" + -"EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - +var CobolHighlightRules = function () { + var keywords = "ACCEPT|MERGE|SUM|ADD||MESSAGE|TABLE|ADVANCING|MODE|TAPE|" + + "AFTER|MULTIPLY|TEST|ALL|NEGATIVE|TEXT|ALPHABET|NEXT|THAN|" + + "ALSO|NO|THEN|ALTERNATE|NOT|THROUGH|AND|NUMBER|THRU|ANY|OCCURS|" + + "TIME|ARE|OF|TO|AREA|OFF|TOP||ASCENDING|OMITTED|TRUE|ASSIGN|ON|TYPE|AT|OPEN|" + + "UNIT|AUTHOR|OR|UNTIL|BEFORE|OTHER|UP|BLANK|OUTPUT|USE|BLOCK|PAGE|USING|BOTTOM|" + + "PERFORM|VALUE|BY|PIC|VALUES|CALL|PICTURE|WHEN|CANCEL|PLUS|WITH|CD|POINTER|WRITE|" + + "CHARACTER|POSITION||ZERO|CLOSE|POSITIVE|ZEROS|COLUMN|PROCEDURE|ZEROES|COMMA|PROGRAM|" + + "COMMON|PROGRAM-ID|COMMUNICATION|QUOTE|COMP|RANDOM|COMPUTE|READ|CONTAINS|RECEIVE|CONFIGURATION|" + + "RECORD|CONTINUE|REDEFINES|CONTROL|REFERENCE|COPY|REMAINDER|COUNT|REPLACE|DATA|REPORT|DATE|RESERVE|" + + "DAY|RESET|DELETE|RETURN|DESTINATION|REWIND|DISABLE|REWRITE|DISPLAY|RIGHT|DIVIDE|RUN|DOWN|SAME|" + + "ELSE|SEARCH|ENABLE|SECTION|END|SELECT|ENVIRONMENT|SENTENCE|EQUAL|SET|ERROR|SIGN|EXIT|SEQUENTIAL|" + + "EXTERNAL|SIZE|FLASE|SORT|FILE|SOURCE|LENGTH|SPACE|LESS|STANDARD|LIMIT|START|LINE|STOP|LOCK|STRING|LOW-VALUE|SUBTRACT"; + var builtinConstants = ("true|false|null"); + var builtinFunctions = ("count|min|max|avg|sum|rank|now|coalesce|main"); var keywordMapper = this.createKeywordMapper({ "support.function": builtinFunctions, "keyword": keywords, "constant.language": builtinConstants }, "identifier", true); - this.$rules = { - "start" : [ { - token : "comment", - regex : "\\*.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] + "start": [{ + token: "comment", + regex: "\\*.*$" + }, { + token: "string", // " string + regex: '".*?"' + }, { + token: "string", // ' string + regex: "'.*?'" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + }] }; }; - oop.inherits(CobolHighlightRules, TextHighlightRules); - exports.CobolHighlightRules = CobolHighlightRules; + }); -define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CobolHighlightRules = require("./cobol_highlight_rules").CobolHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CobolHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "*"; - this.$id = "ace/mode/cobol"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/cobol"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-coffee.js b/vendor/assets/javascripts/ace/mode-coffee.js index e8e3d5f0..4322f07b 100644 --- a/vendor/assets/javascripts/ace/mode-coffee.js +++ b/vendor/assets/javascripts/ace/mode-coffee.js @@ -1,300 +1,253 @@ -define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - oop.inherits(CoffeeHighlightRules, TextHighlightRules); - - function CoffeeHighlightRules() { - var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - var keywords = ( - "this|throw|then|try|typeof|super|switch|return|break|by|continue|" + - "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + - "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + - "or|on|unless|until|and|yes" - ); - - var langConstant = ( - "true|false|null|undefined|NaN|Infinity" - ); - - var illegal = ( - "case|const|default|function|var|void|with|enum|export|implements|" + - "interface|let|package|private|protected|public|static|yield" - ); - - var supportClass = ( - "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + - "SyntaxError|TypeError|URIError|" + - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray" - ); - - var supportFunction = ( - "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + - "encodeURIComponent|decodeURI|decodeURIComponent|String|" - ); - - var variableLanguage = ( - "window|arguments|prototype|document" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": langConstant, - "invalid.illegal": illegal, - "language.support.class": supportClass, - "language.support.function": supportFunction, - "variable.language": variableLanguage - }, "identifier"); - - var functionRule = { - token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], - regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source - }; - - var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; - - this.$rules = { - start : [ - { - token : "constant.numeric", - regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" - }, { - stateName: "qdoc", - token : "string", regex : "'''", next : [ - {token : "string", regex : "'''", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqdoc", - token : "string", - regex : '"""', - next : [ - {token : "string", regex : '"""', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qstring", - token : "string", regex : "'", next : [ - {token : "string", regex : "'", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqstring", - token : "string.start", regex : '"', next : [ - {token : "string.end", regex : '"', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "js", - token : "string", regex : "`", next : [ - {token : "string", regex : "`", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift() || ""; - if (this.next.indexOf("string") != -1) - return "paren.string"; - } +define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +oop.inherits(CoffeeHighlightRules, TextHighlightRules); +function CoffeeHighlightRules() { + var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; + var keywords = ("this|throw|then|try|typeof|super|switch|return|break|by|continue|" + + "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + + "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + + "or|on|unless|until|and|yes|yield|export|import|default"); + var langConstant = ("true|false|null|undefined|NaN|Infinity"); + var illegal = ("case|const|function|var|void|with|enum|implements|" + + "interface|let|package|private|protected|public|static"); + var supportClass = ("Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + + "SyntaxError|TypeError|URIError|" + + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray"); + var supportFunction = ("Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + + "encodeURIComponent|decodeURI|decodeURIComponent|String|"); + var variableLanguage = ("window|arguments|prototype|document"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": langConstant, + "invalid.illegal": illegal, + "language.support.class": supportClass, + "language.support.function": supportFunction, + "variable.language": variableLanguage + }, "identifier"); + var functionRule = { + token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], + regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source + }; + var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; + this.$rules = { + start: [ + { + token: "constant.numeric", + regex: "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" + }, { + stateName: "qdoc", + token: "string", regex: "'''", next: [ + { token: "string", regex: "'''", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qqdoc", + token: "string", + regex: '"""', + next: [ + { token: "string", regex: '"""', next: "start" }, + { token: "paren.string", regex: '#{', push: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qstring", + token: "string", regex: "'", next: [ + { token: "string", regex: "'", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qqstring", + token: "string.start", regex: '"', next: [ + { token: "string.end", regex: '"', next: "start" }, + { token: "paren.string", regex: '#{', push: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "js", + token: "string", regex: "`", next: [ + { token: "string", regex: "`", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); return "paren"; } - }, { - token : "string.regex", - regex : "///", - next : "heregex" - }, { - token : "string.regex", - regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ - }, { - token : "comment", - regex : "###(?!#)", - next : "comment" - }, { - token : "comment", - regex : "#.*" - }, { - token : ["punctuation.operator", "text", "identifier"], - regex : "(\\.)(\\s*)(" + illegal + ")" - }, { - token : "punctuation.operator", - regex : "\\.{1,3}" - }, { - token : ["keyword", "text", "language.support.class", - "text", "keyword", "text", "language.support.class"], - regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" - }, { - token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), - regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex - }, - functionRule, - { - token : "variable", - regex : "@(?:" + identifier + ")?" - }, { - token: keywordMapper, - regex : identifier - }, { - token : "punctuation.operator", - regex : "\\,|\\." - }, { - token : "storage.type", - regex : "[\\-=]>" - }, { - token : "keyword.operator", - regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" - }, { - token : "paren.lparen", - regex : "[({[]" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }], - - - heregex : [{ - token : "string.regex", - regex : '.*?///[imgy]{0,4}', - next : "start" + if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift() || ""; + if (this.next.indexOf("string") != -1) + return "paren.string"; + } + return "paren"; + } }, { - token : "comment.regex", - regex : "\\s+(?:#.*)?" + token: "string.regex", + regex: "///", + next: "heregex" }, { - token : "string.regex", - regex : "\\S+" + token: "string.regex", + regex: /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ + }, { + token: "comment", + regex: "###(?!#)", + next: "comment" + }, { + token: "comment", + regex: "#.*" + }, { + token: ["punctuation.operator", "text", "identifier"], + regex: "(\\.)(\\s*)(" + illegal + ")" + }, { + token: "punctuation.operator", + regex: "\\.{1,3}" + }, { + token: ["keyword", "text", "language.support.class", + "text", "keyword", "text", "language.support.class"], + regex: "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" + }, { + token: ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), + regex: "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex + }, + functionRule, + { + token: "variable", + regex: "@(?:" + identifier + ")?" + }, { + token: keywordMapper, + regex: identifier + }, { + token: "punctuation.operator", + regex: "\\,|\\." + }, { + token: "storage.type", + regex: "[\\-=]>" + }, { + token: "keyword.operator", + regex: "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" + }, { + token: "paren.lparen", + regex: "[({[]" + }, { + token: "paren.rparen", + regex: "[\\]})]" + }, { + token: "text", + regex: "\\s+" + } + ], + heregex: [{ + token: "string.regex", + regex: '.*?///[imgy]{0,4}', + next: "start" + }, { + token: "comment.regex", + regex: "\\s+(?:#.*)?" + }, { + token: "string.regex", + regex: "\\S+" }], - - comment : [{ - token : "comment", - regex : '###', - next : "start" + comment: [{ + token: "comment", + regex: '###', + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" }] - }; - this.normalizeRules(); - } + }; + this.normalizeRules(); +} +exports.CoffeeHighlightRules = CoffeeHighlightRules; - exports.CoffeeHighlightRules = CoffeeHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -303,32 +256,28 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"], function(require, exports, module) { -"use strict"; - +define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"], function(require, exports, module){"use strict"; var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules; var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; var FoldMode = require("./folding/coffee").FoldMode; @@ -336,57 +285,51 @@ var Range = require("../range").Range; var TextMode = require("./text").Mode; var WorkerClient = require("../worker/worker_client").WorkerClient; var oop = require("../lib/oop"); - function Mode() { this.HighlightRules = Rules; this.$outdent = new Outdent(); this.foldingRules = new FoldMode(); } - oop.inherits(Mode, TextMode); - -(function() { +(function () { var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/; - this.lineCommentStart = "#"; - this.blockComment = {start: "###", end: "###"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "###", end: "###" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && state === 'start' && indenter.test(line)) indent += tab; return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/coffee"; + this.snippetFileId = "ace/snippets/coffee"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/coffee"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-coldfusion.js b/vendor/assets/javascripts/ace/mode-coldfusion.js index f1e91299..aa7dce69 100644 --- a/vendor/assets/javascripts/ace/mode-coldfusion.js +++ b/vendor/assets/javascripts/ace/mode-coldfusion.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,149 +2225,125 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/coldfusion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/coldfusion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var ColdfusionHighlightRules = function() { +var ColdfusionHighlightRules = function () { HtmlHighlightRules.call(this); this.$rules.tag[2].token = function (start, tag) { - var group = tag.slice(0,2) == "cf" ? "keyword" : "meta.tag"; + var group = tag.slice(0, 2) == "cf" ? "keyword" : "meta.tag"; return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", group + ".tag-name.xml"]; }; - - var jsAndCss = Object.keys(this.$rules).filter(function(x) { + var jsAndCss = Object.keys(this.$rules).filter(function (x) { return /^(js|css)-/.test(x); }); this.embedRules({ cfmlComment: [ - { regex: "", token: "comment.end", next: "pop"}, - { defaultToken: "comment"} + { regex: "", token: "comment.end", next: "pop" }, + { defaultToken: "comment" } ] }, "", [ - { regex: "", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/csound_document_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_orchestra_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_document_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_orchestra_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); - var CsoundOrchestraHighlightRules = require("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules; var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CsoundDocumentHighlightRules = function() { - +var CsoundDocumentHighlightRules = function () { + var orchestraHighlightRules = new CsoundOrchestraHighlightRules("csound-"); + var scoreHighlightRules = new CsoundScoreHighlightRules("csound-score-"); this.$rules = { "start": [ { - token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : /(<)(CsoundSynthesi[sz]er)(>)/, - next : "synthesizer" + token: ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex: /(<)(CsoundSynthesi[sz]er)(>)/, + next: "synthesizer" }, - {defaultToken : "text.csound-document"} + { defaultToken: "text.csound-document" } ], - "synthesizer": [ { - token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "()", - next : "start" + token: ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex: "()", + next: "start" }, { - token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "(<)(CsInstruments)(>)", - next : "csound-start" + token: ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex: "(<)(CsInstruments)(>)", + next: orchestraHighlightRules.embeddedRulePrefix + "start" }, { - token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "(<)(CsScore)(>)", - next : "csound-score-start" + token: ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex: "(<)(CsScore)(>)", + next: scoreHighlightRules.embeddedRulePrefix + "start" }, { - token : ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "(<)([Hh][Tt][Mm][Ll])(>)", - next : "html-start" + token: ["meta.tag.punctuation.tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex: "(<)([Hh][Tt][Mm][Ll])(>)", + next: "html-start" } ] }; - - this.embedRules(CsoundOrchestraHighlightRules, "csound-", [{ - token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "()", - next : "synthesizer" - }]); - this.embedRules(CsoundScoreHighlightRules, "csound-score-", [{ - token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "()", - next : "synthesizer" - }]); + this.embedRules(orchestraHighlightRules.getRules(), orchestraHighlightRules.embeddedRulePrefix, [{ + token: ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex: "()", + next: "synthesizer" + }]); + this.embedRules(scoreHighlightRules.getRules(), scoreHighlightRules.embeddedRulePrefix, [{ + token: ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex: "()", + next: "synthesizer" + }]); this.embedRules(HtmlHighlightRules, "html-", [{ - token : ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], - regex : "()", - next : "synthesizer" - }]); - + token: ["meta.tag.punctuation.end-tag-open.csound-document", "entity.name.tag.begin.csound-document", "meta.tag.punctuation.tag-close.csound-document"], + regex: "()", + next: "synthesizer" + }]); this.normalizeRules(); }; - oop.inherits(CsoundDocumentHighlightRules, TextHighlightRules); - exports.CsoundDocumentHighlightRules = CsoundDocumentHighlightRules; + }); -define("ace/mode/csound_document",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_document_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_document",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_document_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CsoundDocumentHighlightRules = require("./csound_document_highlight_rules").CsoundDocumentHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CsoundDocumentHighlightRules; }; oop.inherits(Mode, TextMode); - +(function () { + this.$id = "ace/mode/csound_document"; + this.snippetFileId = "ace/snippets/csound_document"; +}).call(Mode.prototype); exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/csound_document"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-csound_orchestra.js b/vendor/assets/javascripts/ace/mode-csound_orchestra.js index d863b729..53c641e7 100644 --- a/vendor/assets/javascripts/ace/mode-csound_orchestra.js +++ b/vendor/assets/javascripts/ace/mode-csound_orchestra.js @@ -1,188 +1,183 @@ -define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CsoundPreprocessorHighlightRules = function() { - +var CsoundPreprocessorHighlightRules = function (embeddedRulePrefix) { + this.embeddedRulePrefix = embeddedRulePrefix === undefined ? "" : embeddedRulePrefix; this.semicolonComments = { - token : "comment.line.semicolon.csound", - regex : ";.*$" + token: "comment.line.semicolon.csound", + regex: ";.*$" }; - this.comments = [ { - token : "punctuation.definition.comment.begin.csound", - regex : "/\\*", - push : [ + token: "punctuation.definition.comment.begin.csound", + regex: "/\\*", + push: [ { - token : "punctuation.definition.comment.end.csound", - regex : "\\*/", - next : "pop" + token: "punctuation.definition.comment.end.csound", + regex: "\\*/", + next: "pop" }, { defaultToken: "comment.block.csound" } ] }, { - token : "comment.line.double-slash.csound", - regex : "//.*$" + token: "comment.line.double-slash.csound", + regex: "//.*$" }, this.semicolonComments ]; - this.macroUses = [ { - token : ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"], - regex : /(\$[A-Z_a-z]\w*\.?)(\()/, - next : "macro parameter value list" + token: ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"], + regex: /(\$[A-Z_a-z]\w*\.?)(\()/, + next: "macro parameter value list" }, { - token : "entity.name.function.preprocessor.csound", - regex : /\$[A-Z_a-z]\w*(?:\.|\b)/ + token: "entity.name.function.preprocessor.csound", + regex: /\$[A-Z_a-z]\w*(?:\.|\b)/ } ]; - this.numbers = [ { - token : "constant.numeric.float.csound", - regex : /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/ + token: "constant.numeric.float.csound", + regex: /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/ }, { - token : ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"], - regex : /(0[Xx])([0-9A-Fa-f]+)/ + token: ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"], + regex: /(0[Xx])([0-9A-Fa-f]+)/ }, { - token : "constant.numeric.integer.decimal.csound", - regex : /\d+/ + token: "constant.numeric.integer.decimal.csound", + regex: /\d+/ } ]; - this.bracedStringContents = [ { - token : "constant.character.escape.csound", - regex : /\\(?:[\\abnrt"]|[0-7]{1,3})/ + token: "constant.character.escape.csound", + regex: /\\(?:[\\abnrt"]|[0-7]{1,3})/ }, { - token : "constant.character.placeholder.csound", - regex : /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/ + token: "constant.character.placeholder.csound", + regex: /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/ }, { - token : "constant.character.escape.csound", - regex : /%%/ + token: "constant.character.escape.csound", + regex: /%%/ } ]; - this.quotedStringContents = [ this.macroUses, this.bracedStringContents ]; - var start = [ this.comments, - { - token : "keyword.preprocessor.csound", - regex : /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/ + token: "keyword.preprocessor.csound", + regex: /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/ }, { - token : "keyword.preprocessor.csound", - regex : /#include/, - push : [ + token: "keyword.preprocessor.csound", + regex: /#include/, + push: [ this.comments, { - token : "string.csound", - regex : /([^ \t])(?:.*?\1)/, - next : "pop" + token: "string.csound", + regex: /([^ \t])(?:.*?\1)/, + next: "pop" } ] }, { - token : "keyword.preprocessor.csound", - regex : /#[ \t]*define/, - next : "define directive" + token: "keyword.preprocessor.csound", + regex: /#includestr/, + push: [ + this.comments, + { + token: "string.csound", + regex: /([^ \t])(?:.*?\1)/, + next: "pop" + } + ] }, { - token : "keyword.preprocessor.csound", - regex : /#(?:ifn?def|undef)\b/, - next : "macro directive" + token: "keyword.preprocessor.csound", + regex: /#[ \t]*define/, + next: "define directive" + }, { + token: "keyword.preprocessor.csound", + regex: /#(?:ifn?def|undef)\b/, + next: "macro directive" }, - this.macroUses ]; - this.$rules = { "start": start, - "define directive": [ this.comments, { - token : "entity.name.function.preprocessor.csound", - regex : /[A-Z_a-z]\w*/ + token: "entity.name.function.preprocessor.csound", + regex: /[A-Z_a-z]\w*/ }, { - token : "punctuation.definition.macro-parameter-name-list.begin.csound", - regex : /\(/, - next : "macro parameter name list" + token: "punctuation.definition.macro-parameter-name-list.begin.csound", + regex: /\(/, + next: "macro parameter name list" }, { - token : "punctuation.definition.macro.begin.csound", - regex : /#/, - next : "macro body" + token: "punctuation.definition.macro.begin.csound", + regex: /#/, + next: "macro body" } ], "macro parameter name list": [ { - token : "variable.parameter.preprocessor.csound", - regex : /[A-Z_a-z]\w*/ + token: "variable.parameter.preprocessor.csound", + regex: /[A-Z_a-z]\w*/ }, { - token : "punctuation.definition.macro-parameter-name-list.end.csound", - regex : /\)/, - next : "define directive" + token: "punctuation.definition.macro-parameter-name-list.end.csound", + regex: /\)/, + next: "define directive" } ], "macro body": [ { - token : "constant.character.escape.csound", - regex : /\\#/ + token: "constant.character.escape.csound", + regex: /\\#/ }, { - token : "punctuation.definition.macro.end.csound", - regex : /#/, - next : "start" + token: "punctuation.definition.macro.end.csound", + regex: /#/, + next: "start" }, start ], - "macro directive": [ this.comments, { - token : "entity.name.function.preprocessor.csound", - regex : /[A-Z_a-z]\w*/, - next : "start" + token: "entity.name.function.preprocessor.csound", + regex: /[A-Z_a-z]\w*/, + next: "start" } ], - "macro parameter value list": [ { - token : "punctuation.definition.macro-parameter-value-list.end.csound", - regex : /\)/, - next : "start" + token: "punctuation.definition.macro-parameter-value-list.end.csound", + regex: /\)/, + next: "start" }, { - token : "punctuation.definition.string.begin.csound", - regex : /"/, - next : "macro parameter value quoted string" + token: "punctuation.definition.string.begin.csound", + regex: /"/, + next: "macro parameter value quoted string" }, this.pushRule({ - token : "punctuation.macro-parameter-value-parenthetical.begin.csound", - regex : /\(/, - next : "macro parameter value parenthetical" + token: "punctuation.macro-parameter-value-parenthetical.begin.csound", + regex: /\(/, + next: "macro parameter value parenthetical" }), { - token : "punctuation.macro-parameter-value-separator.csound", - regex : "[#']" + token: "punctuation.macro-parameter-value-separator.csound", + regex: "[#']" } ], "macro parameter value quoted string": [ { - token : "constant.character.escape.csound", - regex : /\\[#'()]/ + token: "constant.character.escape.csound", + regex: /\\[#'()]/ }, { - token : "invalid.illegal.csound", - regex : /[#'()]/ + token: "invalid.illegal.csound", + regex: /[#'()]/ }, { - token : "punctuation.definition.string.end.csound", - regex : /"/, - next : "macro parameter value list" + token: "punctuation.definition.string.end.csound", + regex: /"/, + next: "macro parameter value list" }, this.quotedStringContents, { @@ -191,35 +186,38 @@ var CsoundPreprocessorHighlightRules = function() { ], "macro parameter value parenthetical": [ { - token : "constant.character.escape.csound", - regex : /\\\)/ + token: "constant.character.escape.csound", + regex: /\\\)/ }, this.popRule({ - token : "punctuation.macro-parameter-value-parenthetical.end.csound", - regex : /\)/ + token: "punctuation.macro-parameter-value-parenthetical.end.csound", + regex: /\)/ }), this.pushRule({ - token : "punctuation.macro-parameter-value-parenthetical.begin.csound", - regex : /\(/, - next : "macro parameter value parenthetical" + token: "punctuation.macro-parameter-value-parenthetical.begin.csound", + regex: /\(/, + next: "macro parameter value parenthetical" }), start ] }; }; - oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules); - -(function() { - - this.pushRule = function(params) { +(function () { + this.pushRule = function (params) { + if (Array.isArray(params.next)) { + for (var i = 0; i < params.next.length; i++) { + params.next[i] = this.embeddedRulePrefix + params.next[i]; + } + } return { - regex : params.regex, onMatch: function(value, currentState, stack, line) { + regex: params.regex, onMatch: function (value, currentState, stack, line) { if (stack.length === 0) stack.push(currentState); if (Array.isArray(params.next)) { for (var i = 0; i < params.next.length; i++) { stack.push(params.next[i]); } - } else { + } + else { stack.push(params.next); } this.next = stack[stack.length - 1]; @@ -227,246 +225,196 @@ oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules); }, get next() { return Array.isArray(params.next) ? params.next[params.next.length - 1] : params.next; }, set next(next) { - if (Array.isArray(params.next)) { - var oldNext = params.next[params.next.length - 1]; - var oldNextIndex = oldNext.length - 1; - var newNextIndex = next.length - 1; - if (newNextIndex > oldNextIndex) { - while (oldNextIndex >= 0 && newNextIndex >= 0) { - if (oldNext.charAt(oldNextIndex) !== next.charAt(newNextIndex)) { - var prefix = next.substr(0, newNextIndex); - for (var i = 0; i < params.next.length; i++) { - params.next[i] = prefix + params.next[i]; - } - break; - } - oldNextIndex--; - newNextIndex--; - } - } - } else { + if (!Array.isArray(params.next)) { params.next = next; } }, get token() { return params.token; } }; }; - - this.popRule = function(params) { + this.popRule = function (params) { + if (params.next) { + params.next = this.embeddedRulePrefix + params.next; + } return { - regex : params.regex, onMatch: function(value, currentState, stack, line) { + regex: params.regex, onMatch: function (value, currentState, stack, line) { stack.pop(); if (params.next) { stack.push(params.next); this.next = stack[stack.length - 1]; - } else { + } + else { this.next = stack.length > 1 ? stack[stack.length - 1] : stack.pop(); } return params.token; } }; }; - }).call(CsoundPreprocessorHighlightRules.prototype); - exports.CsoundPreprocessorHighlightRules = CsoundPreprocessorHighlightRules; + }); -define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); - var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; - -var CsoundScoreHighlightRules = function() { - - CsoundPreprocessorHighlightRules.call(this); - +var CsoundScoreHighlightRules = function (embeddedRulePrefix) { + CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix); this.quotedStringContents.push({ - token : "invalid.illegal.csound-score", - regex : /[^"]*$/ + token: "invalid.illegal.csound-score", + regex: /[^"]*$/ }); - var start = this.$rules.start; - start.push( - { - token : "keyword.control.csound-score", - regex : /[abCdefiqstvxy]/ - }, { - token : "invalid.illegal.csound-score", - regex : /w/ - }, { - token : "constant.numeric.language.csound-score", - regex : /z/ - }, { - token : ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"], - regex : /([nNpP][pP])(\d+)/ - }, { - token : "keyword.other.csound-score", - regex : /[mn]/, - push : [ - { - token : "empty", - regex : /$/, - next : "pop" - }, - this.comments, - { - token : "entity.name.label.csound-score", - regex : /[A-Z_a-z]\w*/ - } - ] - }, { - token : "keyword.preprocessor.csound-score", - regex : /r\b/, - next : "repeat section" - }, - - this.numbers, - - { - token : "keyword.operator.csound-score", - regex : "[!+\\-*/^%&|<>#~.]" - }, - - this.pushRule({ - token : "punctuation.definition.string.begin.csound-score", - regex : /"/, - next : "quoted string" - }), - - this.pushRule({ - token : "punctuation.braced-loop.begin.csound-score", - regex : /{/, - next : "loop after left brace" - }) - ); - - this.addRules({ - "repeat section": [ + start.push({ + token: "keyword.control.csound-score", + regex: /[aBbCdefiqstvxy]/ + }, { + token: "invalid.illegal.csound-score", + regex: /w/ + }, { + token: "constant.numeric.language.csound-score", + regex: /z/ + }, { + token: ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"], + regex: /([nNpP][pP])(\d+)/ + }, { + token: "keyword.other.csound-score", + regex: /[mn]/, + push: [ { - token : "empty", - regex : /$/, - next : "start" + token: "empty", + regex: /$/, + next: "pop" }, this.comments, { - token : "constant.numeric.integer.decimal.csound-score", - regex : /\d+/, - next : "repeat section before label" + token: "entity.name.label.csound-score", + regex: /[A-Z_a-z]\w*/ + } + ] + }, { + token: "keyword.preprocessor.csound-score", + regex: /r\b/, + next: "repeat section" + }, this.numbers, { + token: "keyword.operator.csound-score", + regex: "[!+\\-*/^%&|<>#~.]" + }, this.pushRule({ + token: "punctuation.definition.string.begin.csound-score", + regex: /"/, + next: "quoted string" + }), this.pushRule({ + token: "punctuation.braced-loop.begin.csound-score", + regex: /{/, + next: "loop after left brace" + })); + this.addRules({ + "repeat section": [ + { + token: "empty", + regex: /$/, + next: "start" + }, + this.comments, + { + token: "constant.numeric.integer.decimal.csound-score", + regex: /\d+/, + next: "repeat section before label" } ], "repeat section before label": [ { - token : "empty", - regex : /$/, - next : "start" + token: "empty", + regex: /$/, + next: "start" }, this.comments, { - token : "entity.name.label.csound-score", - regex : /[A-Z_a-z]\w*/, - next : "start" + token: "entity.name.label.csound-score", + regex: /[A-Z_a-z]\w*/, + next: "start" } ], - "quoted string": [ this.popRule({ - token : "punctuation.definition.string.end.csound-score", - regex : /"/ + token: "punctuation.definition.string.end.csound-score", + regex: /"/ }), this.quotedStringContents, { defaultToken: "string.quoted.csound-score" } ], - "loop after left brace": [ this.popRule({ - token : "constant.numeric.integer.decimal.csound-score", - regex : /\d+/, - next : "loop after repeat count" + token: "constant.numeric.integer.decimal.csound-score", + regex: /\d+/, + next: "loop after repeat count" }), this.comments, { - token : "invalid.illegal.csound", - regex : /\S.*/ + token: "invalid.illegal.csound", + regex: /\S.*/ } ], "loop after repeat count": [ this.popRule({ - token : "entity.name.function.preprocessor.csound-score", - regex : /[A-Z_a-z]\w*\b/, - next : "loop after macro name" + token: "entity.name.function.preprocessor.csound-score", + regex: /[A-Z_a-z]\w*\b/, + next: "loop after macro name" }), this.comments, { - token : "invalid.illegal.csound", - regex : /\S.*/ + token: "invalid.illegal.csound", + regex: /\S.*/ } ], "loop after macro name": [ start, this.popRule({ - token : "punctuation.braced-loop.end.csound-score", - regex : /}/ + token: "punctuation.braced-loop.end.csound-score", + regex: /}/ }) ] }); - this.normalizeRules(); }; - oop.inherits(CsoundScoreHighlightRules, CsoundPreprocessorHighlightRules); - exports.CsoundScoreHighlightRules = CsoundScoreHighlightRules; + }); -define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuaHighlightRules = function() { - - var keywords = ( - "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ - "return|then|until|while|or|and|not" - ); - +var LuaHighlightRules = function () { + var keywords = ("break|do|else|elseif|end|for|function|if|in|local|repeat|" + + "return|then|until|while|or|and|not"); var builtinConstants = ("true|false|nil|_G|_VERSION"); - var functions = ( - "string|xpcall|package|tostring|print|os|unpack|require|"+ - "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ - "collectgarbage|getmetatable|module|rawset|math|debug|"+ - "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ - "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ - "load|error|loadfile|"+ - - "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ - "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ - "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ - "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ - "lines|write|close|flush|open|output|type|read|stderr|"+ - "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ - "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ - "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ - "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ - "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ - "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ - "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ - "status|wrap|create|running|"+ - "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ - "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" - ); - + "string|xpcall|package|tostring|print|os|unpack|require|" + + "getfenv|setmetatable|next|assert|tonumber|io|rawequal|" + + "collectgarbage|getmetatable|module|rawset|math|debug|" + + "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|" + + "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|" + + "load|error|loadfile|" + + "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|" + + "reverse|byte|format|gsub|lower|preload|loadlib|loaded|" + + "loaders|cpath|config|path|seeall|exit|setlocale|date|" + + "getenv|difftime|remove|time|clock|tmpname|rename|execute|" + + "lines|write|close|flush|open|output|type|read|stderr|" + + "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|" + + "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|" + + "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|" + + "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|" + + "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|" + + "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|" + + "foreachi|maxn|foreach|concat|sort|remove|resume|yield|" + + "status|wrap|create|running|" + + "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|" + + "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber"); var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); - var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); - var keywordMapper = this.createKeywordMapper({ "keyword": keywords, "support.function": functions, @@ -475,283 +423,497 @@ var LuaHighlightRules = function() { "constant.language": builtinConstants, "variable.language": "self" }, "identifier"); - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; - var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; var floatNumber = "(?:" + pointFloat + ")"; - this.$rules = { - "start" : [{ - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; + "start": [{ + stateName: "bracketedComment", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length - 2, currentState); + return "comment"; + }, + regex: /\-\-\[=*\[/, + next: [ + { + onMatch: function (value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return "comment"; + }, + regex: /\]=*\]/, + next: "start" + }, { + defaultToken: "comment" + } + ] }, - regex : /\-\-\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - - { - token : "comment", - regex : "\\-\\-.*$" - }, - { - stateName: "bracketedString", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length, currentState); - return "string.start"; + { + token: "comment", + regex: "\\-\\-.*$" }, - regex : /\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "string.end"; - }, - - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "string" - } - ] - }, - { - token : "string", // " string - regex : '"(?:[^\\\\]|\\\\.)*?"' - }, { - token : "string", // ' string - regex : "'(?:[^\\\\]|\\\\.)*?'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+|\\w+" - } ] + { + stateName: "bracketedString", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length, currentState); + return "string.start"; + }, + regex: /\[=*\[/, + next: [ + { + onMatch: function (value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return "string.end"; + }, + regex: /\]=*\]/, + next: "start" + }, { + defaultToken: "string" + } + ] + }, + { + token: "string", // " string + regex: '"(?:[^\\\\]|\\\\.)*?"' + }, { + token: "string", // ' string + regex: "'(?:[^\\\\]|\\\\.)*?'" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: "text", + regex: "\\s+|\\w+" + }] }; - this.normalizeRules(); }; - oop.inherits(LuaHighlightRules, TextHighlightRules); - exports.LuaHighlightRules = LuaHighlightRules; + }); -define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * TODO: python delimiters + */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PythonHighlightRules = function() { - - var keywords = ( - "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + +var PythonHighlightRules = function () { + var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield|async|await" - ); - - var builtinConstants = ( - "True|False|None|NotImplemented|Ellipsis|__debug__" - ); - - var builtinFunctions = ( - "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + + "raise|return|try|while|with|yield|async|await|nonlocal"); + var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); + var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|" + + "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|set|apply|delattr|help|next|setattr|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern" - ); + "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + + "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + + "ascii|breakpoint|bytes"); var keywordMapper = this.createKeywordMapper({ "invalid.deprecated": "debugger", "support.function": builtinFunctions, + "variable.language": "self|cls", "constant.language": builtinConstants, "keyword": keywords }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - + var strPre = "[uU]?"; + var strRawPre = "[rR]"; + var strFormatPre = "[fF]"; + var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var octInteger = "(?:0[oO]?[0-7]+)"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var binInteger = "(?:0[bB][01]+)"; var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - var exponent = "(?:[eE][+-]?\\d+)"; var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line ''' string end - regex : "'{3}", - next : "start" - }, { - defaultToken : "string" - } ], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "qstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "start" - }, { - defaultToken: "string" - }] + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "string", // multi line """ string start + regex: strPre + '"{3}', + next: "qqstring3" + }, { + token: "string", // " string + regex: strPre + '"(?=.)', + next: "qqstring" + }, { + token: "string", // multi line ''' string start + regex: strPre + "'{3}", + next: "qstring3" + }, { + token: "string", // ' string + regex: strPre + "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: strRawPre + '"{3}', + next: "rawqqstring3" + }, { + token: "string", + regex: strRawPre + '"(?=.)', + next: "rawqqstring" + }, { + token: "string", + regex: strRawPre + "'{3}", + next: "rawqstring3" + }, { + token: "string", + regex: strRawPre + "'(?=.)", + next: "rawqstring" + }, { + token: "string", + regex: strFormatPre + '"{3}', + next: "fqqstring3" + }, { + token: "string", + regex: strFormatPre + '"(?=.)', + next: "fqqstring" + }, { + token: "string", + regex: strFormatPre + "'{3}", + next: "fqstring3" + }, { + token: "string", + regex: strFormatPre + "'(?=.)", + next: "fqstring" + }, { + token: "string", + regex: strRawFormatPre + '"{3}', + next: "rfqqstring3" + }, { + token: "string", + regex: strRawFormatPre + '"(?=.)', + next: "rfqqstring" + }, { + token: "string", + regex: strRawFormatPre + "'{3}", + next: "rfqstring3" + }, { + token: "string", + regex: strRawFormatPre + "'(?=.)", + next: "rfqstring" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "punctuation", + regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" + }, { + token: "text", + regex: "\\s+" + }, { + include: "constants" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "qstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring3": [{ + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring3": [{ + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "fqqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "fqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring3": [{ + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring3": [{ + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rfqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring": [{ + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstringParRules": [{ + token: "paren.lparen", + regex: "[\\[\\(]" + }, { + token: "paren.rparen", + regex: "[\\]\\)]" + }, { + token: "string", + regex: "\\s+" + }, { + token: "string", + regex: "'[^']*'" + }, { + token: "string", + regex: '"[^"]*"' + }, { + token: "function.support", + regex: "(!s|!r|!a)" + }, { + include: "constants" + }, { + token: 'paren.rparen', + regex: "}", + next: 'pop' + }, { + token: 'paren.lparen', + regex: "{", + push: "fqstringParRules" + }], + "constants": [{ + token: "constant.numeric", // imaginary + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // long integer + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: ["punctuation", "function.support"], // method + regex: "(\\.)([a-zA-Z_]+)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] }; + this.normalizeRules(); }; - oop.inherits(PythonHighlightRules, TextHighlightRules); - exports.PythonHighlightRules = PythonHighlightRules; + }); -define("ace/mode/csound_orchestra_highlight_rules",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/lua_highlight_rules","ace/mode/python_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_orchestra_highlight_rules",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules","ace/mode/csound_score_highlight_rules","ace/mode/lua_highlight_rules","ace/mode/python_highlight_rules"], function(require, exports, module){"use strict"; var lang = require("../lib/lang"); var oop = require("../lib/oop"); - var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; - -var CsoundOrchestraHighlightRules = function() { - - CsoundPreprocessorHighlightRules.call(this); +var CsoundOrchestraHighlightRules = function (embeddedRulePrefix) { + CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix); var opcodes = [ "ATSadd", "ATSaddnz", @@ -854,12 +1016,13 @@ var CsoundOrchestraHighlightRules = function() { "MixerSend", "MixerSetLevel", "MixerSetLevel_i", + "OSCbundle", + "OSCcount", "OSCinit", "OSCinitM", "OSClisten", "OSCraw", "OSCsend", - "OSCsendA", "OSCsend_lo", "S", "STKBandedWG", @@ -897,19 +1060,28 @@ var CsoundOrchestraHighlightRules = function() { "adsynt", "adsynt2", "aftouch", + "allpole", "alpass", "alwayson", "ampdb", "ampdbfs", "ampmidi", + "ampmidicurve", "ampmidid", + "apoleparams", + "arduinoRead", + "arduinoReadF", + "arduinoStart", + "arduinoStop", "areson", "aresonk", "atone", "atonek", "atonex", + "autocorr", "babo", "balance", + "balance2", "bamboo", "barmodel", "bbcutm", @@ -917,14 +1089,16 @@ var CsoundOrchestraHighlightRules = function() { "betarand", "bexprnd", "bformdec1", + "bformdec2", "bformenc1", "binit", "biquad", "biquada", "birnd", + "bob", "bpf", + "bpfcos", "bqrez", - "buchla", "butbp", "butbr", "buthp", @@ -959,9 +1133,19 @@ var CsoundOrchestraHighlightRules = function() { "chnclear", "chnexport", "chnget", + "chngeta", + "chngeti", + "chngetk", + "chngetks", + "chngets", "chnmix", "chnparams", "chnset", + "chnseta", + "chnseti", + "chnsetk", + "chnsetks", + "chnsets", "chuap", "clear", "clfilt", @@ -970,6 +1154,13 @@ var CsoundOrchestraHighlightRules = function() { "clockon", "cmp", "cmplxprod", + "cntCreate", + "cntCycles", + "cntDelete", + "cntDelete_i", + "cntRead", + "cntReset", + "cntState", "comb", "combinv", "compilecsd", @@ -989,6 +1180,8 @@ var CsoundOrchestraHighlightRules = function() { "cosseg", "cossegb", "cossegr", + "count", + "count_i", "cps2pch", "cpsmidi", "cpsmidib", @@ -1014,6 +1207,11 @@ var CsoundOrchestraHighlightRules = function() { "ctrl21", "ctrl7", "ctrlinit", + "ctrlpreset", + "ctrlprint", + "ctrlprintpresets", + "ctrlsave", + "ctrlselect", "cuserrnd", "dam", "date", @@ -1026,6 +1224,7 @@ var CsoundOrchestraHighlightRules = function() { "dconv", "dct", "dctinv", + "deinterleave", "delay", "delay1", "delayk", @@ -1065,6 +1264,8 @@ var CsoundOrchestraHighlightRules = function() { "duserrnd", "dust", "dust2", + "elapsedcycles", + "elapsedtime", "envlpx", "envlpxr", "ephasor", @@ -1072,6 +1273,8 @@ var CsoundOrchestraHighlightRules = function() { "evalstr", "event", "event_i", + "eventcycles", + "eventtime", "exciter", "exitnow", "exp", @@ -1089,7 +1292,9 @@ var CsoundOrchestraHighlightRules = function() { "faustaudio", "faustcompile", "faustctl", + "faustdsp", "faustgen", + "faustplay", "fft", "fftinv", "ficlose", @@ -1116,6 +1321,7 @@ var CsoundOrchestraHighlightRules = function() { "fluidCCk", "fluidControl", "fluidEngine", + "fluidInfo", "fluidLoad", "fluidNote", "fluidOut", @@ -1151,9 +1357,11 @@ var CsoundOrchestraHighlightRules = function() { "fractalnoise", "framebuffer", "freeverb", + "ftaudio", "ftchnls", "ftconv", "ftcps", + "ftexists", "ftfree", "ftgen", "ftgenonce", @@ -1164,11 +1372,15 @@ var CsoundOrchestraHighlightRules = function() { "ftlptim", "ftmorf", "ftom", + "ftprint", "ftresize", "ftresizei", "ftsamplebank", "ftsave", "ftsavek", + "ftset", + "ftslice", + "ftslicei", "ftsr", "gain", "gainslider", @@ -1191,6 +1403,8 @@ var CsoundOrchestraHighlightRules = function() { "grain2", "grain3", "granule", + "gtadsr", + "gtf", "guiro", "harmon", "harmon2", @@ -1240,6 +1454,7 @@ var CsoundOrchestraHighlightRules = function() { "insremot", "int", "integ", + "interleave", "interp", "invalue", "inx", @@ -1430,10 +1645,15 @@ var CsoundOrchestraHighlightRules = function() { "la_k_upper_solve_mr", "la_k_vc_set", "la_k_vr_set", + "lag", + "lagud", + "lastcycle", "lenarray", "lfo", + "lfsr", "limit", "limit1", + "lincos", "line", "linen", "linenr", @@ -1468,10 +1688,14 @@ var CsoundOrchestraHighlightRules = function() { "lorenz", "loscil", "loscil3", + "loscil3phs", + "loscilphs", "loscilx", "lowpass2", "lowres", "lowresx", + "lpcanal", + "lpcfilter", "lpf18", "lpform", "lpfreson", @@ -1487,14 +1711,7 @@ var CsoundOrchestraHighlightRules = function() { "lpshold", "lpsholdp", "lpslot", - "lua_exec", - "lua_iaopcall", - "lua_iaopcall_off", - "lua_ikopcall", - "lua_ikopcall_off", - "lua_iopcall", - "lua_iopcall_off", - "lua_opdef", + "lufs", "mac", "maca", "madsr", @@ -1517,6 +1734,8 @@ var CsoundOrchestraHighlightRules = function() { "median", "mediank", "metro", + "metro2", + "metrobpm", "mfb", "midglobal", "midiarp", @@ -1538,6 +1757,7 @@ var CsoundOrchestraHighlightRules = function() { "midion", "midion2", "midiout", + "midiout_i", "midipgm", "midipitchbend", "midipolyaftertouch", @@ -1564,15 +1784,12 @@ var CsoundOrchestraHighlightRules = function() { "mp3in", "mp3len", "mp3nchnls", + "mp3out", "mp3scal", - "mp3scal_check", - "mp3scal_load", - "mp3scal_load2", - "mp3scal_play", - "mp3scal_play2", "mp3sr", "mpulse", "mrtmsg", + "ms2st", "mtof", "mton", "multitap", @@ -1582,6 +1799,7 @@ var CsoundOrchestraHighlightRules = function() { "mvclpf2", "mvclpf3", "mvclpf4", + "mvmfilter", "mxadsr", "nchnls_hw", "nestedap", @@ -1599,6 +1817,8 @@ var CsoundOrchestraHighlightRules = function() { "nsamp", "nstance", "nstrnum", + "nstrstr", + "ntof", "ntom", "ntrpol", "nxtpow2", @@ -1623,6 +1843,7 @@ var CsoundOrchestraHighlightRules = function() { "oscilx", "out", "out32", + "outall", "outc", "outch", "outh", @@ -1716,19 +1937,18 @@ var CsoundOrchestraHighlightRules = function() { "prepiano", "print", "print_type", + "printarray", "printf", "printf_i", "printk", "printk2", "printks", "printks2", + "println", "prints", + "printsk", "product", "pset", - "ptable", - "ptable3", - "ptablei", - "ptableiw", "ptablew", "ptrack", "puts", @@ -1745,6 +1965,7 @@ var CsoundOrchestraHighlightRules = function() { "pvsarp", "pvsbandp", "pvsbandr", + "pvsbandwidth", "pvsbin", "pvsblur", "pvsbuffer", @@ -1753,6 +1974,7 @@ var CsoundOrchestraHighlightRules = function() { "pvscale", "pvscent", "pvsceps", + "pvscfs", "pvscross", "pvsdemix", "pvsdiskin", @@ -1773,6 +1995,7 @@ var CsoundOrchestraHighlightRules = function() { "pvsinfo", "pvsinit", "pvslock", + "pvslpc", "pvsmaska", "pvsmix", "pvsmooth", @@ -1874,6 +2097,7 @@ var CsoundOrchestraHighlightRules = function() { "qnan", "r2c", "rand", + "randc", "randh", "randi", "random", @@ -1895,7 +2119,9 @@ var CsoundOrchestraHighlightRules = function() { "remoteport", "remove", "repluck", + "reshapearray", "reson", + "resonbnk", "resonk", "resonr", "resonx", @@ -1913,6 +2139,7 @@ var CsoundOrchestraHighlightRules = function() { "rms", "rnd", "rnd31", + "rndseed", "round", "rspline", "rtclock", @@ -1925,14 +2152,19 @@ var CsoundOrchestraHighlightRules = function() { "sc_phasor", "sc_trig", "scale", + "scale2", "scalearray", "scanhammer", + "scanmap", "scans", + "scansmap", "scantable", "scanu", + "scanu2", "schedkwhen", "schedkwhennamed", "schedule", + "schedulek", "schedwhen", "scoreline", "scoreline_i", @@ -1944,6 +2176,8 @@ var CsoundOrchestraHighlightRules = function() { "sensekey", "seqtime", "seqtime2", + "sequ", + "sequstate", "serialBegin", "serialEnd", "serialFlush", @@ -1973,14 +2207,15 @@ var CsoundOrchestraHighlightRules = function() { "shaker", "shiftin", "shiftout", - "signalflowgraph", "signum", "sin", "sinh", "sininv", "sinsyn", + "skf", "sleighbells", "slicearray", + "slicearray_i", "slider16", "slider16f", "slider16table", @@ -2004,7 +2239,6 @@ var CsoundOrchestraHighlightRules = function() { "sockrecv", "sockrecvs", "socksend", - "socksend_k", "socksends", "sorta", "sortd", @@ -2014,12 +2248,16 @@ var CsoundOrchestraHighlightRules = function() { "spat3di", "spat3dt", "spdist", + "spf", "splitrig", "sprintf", "sprintfk", "spsend", "sqrt", + "squinewave", + "st2ms", "statevar", + "sterrain", "stix", "strcat", "strcatk", @@ -2035,6 +2273,7 @@ var CsoundOrchestraHighlightRules = function() { "strget", "strindex", "strindexk", + "string2array", "strlen", "strlenk", "strlower", @@ -2042,6 +2281,7 @@ var CsoundOrchestraHighlightRules = function() { "strrindex", "strrindexk", "strset", + "strstrip", "strsub", "strsubk", "strtod", @@ -2056,12 +2296,14 @@ var CsoundOrchestraHighlightRules = function() { "sum", "sumarray", "svfilter", + "svn", "syncgrain", "syncloop", "syncphasor", "system", "system_i", "tab", + "tab2array", "tab2pvs", "tab_i", "tabifd", @@ -2077,7 +2319,6 @@ var CsoundOrchestraHighlightRules = function() { "tableigpw", "tableikt", "tableimix", - "tableiw", "tablekt", "tablemix", "tableng", @@ -2104,38 +2345,6 @@ var CsoundOrchestraHighlightRules = function() { "tanh", "taninv", "taninv2", - "tb0", - "tb0_init", - "tb1", - "tb10", - "tb10_init", - "tb11", - "tb11_init", - "tb12", - "tb12_init", - "tb13", - "tb13_init", - "tb14", - "tb14_init", - "tb15", - "tb15_init", - "tb1_init", - "tb2", - "tb2_init", - "tb3", - "tb3_init", - "tb4", - "tb4_init", - "tb5", - "tb5_init", - "tb6", - "tb6_init", - "tb7", - "tb7_init", - "tb8", - "tb8_init", - "tb9", - "tb9_init", "tbvcf", "tempest", "tempo", @@ -2159,8 +2368,16 @@ var CsoundOrchestraHighlightRules = function() { "trcross", "trfilter", "trhighest", + "trigExpseg", + "trigLinseg", + "trigexpseg", "trigger", + "trighold", + "triglinseg", + "trigphasor", "trigseq", + "trim", + "trim_i", "trirand", "trlowest", "trmix", @@ -2169,6 +2386,8 @@ var CsoundOrchestraHighlightRules = function() { "trsplit", "turnoff", "turnoff2", + "turnoff2_i", + "turnoff3", "turnon", "tvconv", "unirand", @@ -2192,6 +2411,7 @@ var CsoundOrchestraHighlightRules = function() { "vbapz", "vbapzmove", "vcella", + "vclpf", "vco", "vco2", "vco2ft", @@ -2240,6 +2460,7 @@ var CsoundOrchestraHighlightRules = function() { "vpow_i", "vpowv", "vpowv_i", + "vps", "vpvoc", "vrandh", "vrandi", @@ -2279,13 +2500,10 @@ var CsoundOrchestraHighlightRules = function() { "wrap", "writescratch", "wterrain", + "wterrain2", "xadsr", "xin", "xout", - "xscanmap", - "xscans", - "xscansmap", - "xscanu", "xtratim", "xyscale", "zacl", @@ -2311,22 +2529,47 @@ var CsoundOrchestraHighlightRules = function() { "zkwm" ]; var deprecatedOpcodes = [ + "OSCsendA", "array", + "beadsynt", + "beosc", "bformdec", "bformenc", + "buchla", "copy2ftab", "copy2ttab", + "getrowlin", "hrtfer", "ktableseg", "lentab", + "lua_exec", + "lua_iaopcall", + "lua_iaopcall_off", + "lua_ikopcall", + "lua_ikopcall_off", + "lua_iopcall", + "lua_iopcall_off", + "lua_opdef", "maxtab", "mintab", + "mp3scal_check", + "mp3scal_load", + "mp3scal_load2", + "mp3scal_play", + "mp3scal_play2", "pop", "pop_f", + "ptable", + "ptable3", + "ptablei", + "ptableiw", "push", "push_f", + "pvsgendy", "scalet", + "signalflowgraph", "sndload", + "socksend_k", "soundout", "soundouts", "specaddm", @@ -2339,212 +2582,223 @@ var CsoundOrchestraHighlightRules = function() { "specsum", "spectrum", "stack", + "sumTableFilter", "sumtab", + "systime", "tabgen", + "tableiw", "tabmap", "tabmap_i", + "tabrowlin", "tabslice", + "tb0", + "tb0_init", + "tb1", + "tb10", + "tb10_init", + "tb11", + "tb11_init", + "tb12", + "tb12_init", + "tb13", + "tb13_init", + "tb14", + "tb14_init", + "tb15", + "tb15_init", + "tb1_init", + "tb2", + "tb2_init", + "tb3", + "tb3_init", + "tb4", + "tb4_init", + "tb5", + "tb5_init", + "tb6", + "tb6_init", + "tb7", + "tb7_init", + "tb8", + "tb8_init", + "tb9", + "tb9_init", "vbap16", + "vbap1move", "vbap4", "vbap4move", "vbap8", "vbap8move", + "xscanmap", + "xscans", + "xscansmap", + "xscanu", "xyin" ]; - opcodes = lang.arrayToMap(opcodes); deprecatedOpcodes = lang.arrayToMap(deprecatedOpcodes); - this.lineContinuations = [ { - token : "constant.character.escape.line-continuation.csound", - regex : /\\$/ + token: "constant.character.escape.line-continuation.csound", + regex: /\\$/ }, this.pushRule({ - token : "constant.character.escape.line-continuation.csound", - regex : /\\/, - next : "line continuation" + token: "constant.character.escape.line-continuation.csound", + regex: /\\/, + next: "line continuation" }) ]; - this.comments.push(this.lineContinuations); - - this.quotedStringContents.push( - this.lineContinuations, - { - token : "invalid.illegal", - regex : /[^"\\]*$/ - } - ); - + this.quotedStringContents.push(this.lineContinuations, { + token: "invalid.illegal", + regex: /[^"\\]*$/ + }); var start = this.$rules.start; start.splice(1, 0, { - token : ["text.csound", "entity.name.label.csound", "entity.punctuation.label.csound", "text.csound"], - regex : /^([ \t]*)(\w+)(:)([ \t]+|$)/ + token: ["text.csound", "entity.name.label.csound", "entity.punctuation.label.csound", "text.csound"], + regex: /^([ \t]*)(\w+)(:)([ \t]+|$)/ }); - start.push( - this.pushRule({ - token : "keyword.function.csound", - regex : /\binstr\b/, - next : "instrument numbers and identifiers" - }), this.pushRule({ - token : "keyword.function.csound", - regex : /\bopcode\b/, - next : "after opcode keyword" - }), { - token : "keyword.other.csound", - regex : /\bend(?:in|op)\b/ - }, - - { - token : "variable.language.csound", - regex : /\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b/ - }, - - this.numbers, - - { - token : "keyword.operator.csound", - regex : "\\+=|-=|\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\|\\||[~¬]|[=!+\\-*/^%&|<>#?:]" - }, - - this.pushRule({ - token : "punctuation.definition.string.begin.csound", - regex : /"/, - next : "quoted string" - }), this.pushRule({ - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "braced string" - }), - - { - token : "keyword.control.csound", - regex : /\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\b/ - }, - - this.pushRule({ - token : "keyword.control.csound", - regex : /\b[ik]?goto\b/, - next : "goto before label" - }), this.pushRule({ - token : "keyword.control.csound", - regex : /\b(?:r(?:einit|igoto)|tigoto)\b/, - next : "goto before label" - }), this.pushRule({ - token : "keyword.control.csound", - regex : /\bc(?:g|in?|k|nk?)goto\b/, - next : ["goto before label", "goto before argument"] - }), this.pushRule({ - token : "keyword.control.csound", - regex : /\btimout\b/, - next : ["goto before label", "goto before argument", "goto before argument"] - }), this.pushRule({ - token : "keyword.control.csound", - regex : /\bloop_[gl][et]\b/, - next : ["goto before label", "goto before argument", "goto before argument", "goto before argument"] - }), - - this.pushRule({ - token : "support.function.csound", - regex : /\b(?:readscore|scoreline(?:_i)?)\b/, - next : "Csound score opcode" - }), this.pushRule({ - token : "support.function.csound", - regex : /\bpyl?run[it]?\b(?!$)/, - next : "Python opcode" - }), this.pushRule({ - token : "support.function.csound", - regex : /\blua_(?:exec|opdef)\b(?!$)/, - next : "Lua opcode" - }), - - { - token : "support.variable.csound", - regex : /\bp\d+\b/ - }, { - regex : /\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b/, onMatch: function(value, currentState, stack, line) { - var tokens = value.split(this.splitRegex); - var name = tokens[1]; - var type; - if (opcodes.hasOwnProperty(name)) - type = "support.function.csound"; - else if (deprecatedOpcodes.hasOwnProperty(name)) - type = "invalid.deprecated.csound"; - if (type) { - if (tokens[2]) { - return [ - {type: type, value: name}, - {type: "punctuation.type-annotation.csound", value: tokens[2]}, - {type: "type-annotation.storage.type.csound", value: tokens[3]} - ]; - } - return type; + start.push(this.pushRule({ + token: "keyword.function.csound", + regex: /\binstr\b/, + next: "instrument numbers and identifiers" + }), this.pushRule({ + token: "keyword.function.csound", + regex: /\bopcode\b/, + next: "after opcode keyword" + }), { + token: "keyword.other.csound", + regex: /\bend(?:in|op)\b/ + }, { + token: "variable.language.csound", + regex: /\b(?:0dbfs|A4|k(?:r|smps)|nchnls(?:_i)?|sr)\b/ + }, this.numbers, { + token: "keyword.operator.csound", + regex: "\\+=|-=|\\*=|/=|<<|>>|<=|>=|==|!=|&&|\\|\\||[~¬]|[=!+\\-*/^%&|<>#?:]" + }, this.pushRule({ + token: "punctuation.definition.string.begin.csound", + regex: /"/, + next: "quoted string" + }), this.pushRule({ + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: "braced string" + }), { + token: "keyword.control.csound", + regex: /\b(?:do|else(?:if)?|end(?:if|until)|fi|i(?:f|then)|kthen|od|r(?:ir)?eturn|then|until|while)\b/ + }, this.pushRule({ + token: "keyword.control.csound", + regex: /\b[ik]?goto\b/, + next: "goto before label" + }), this.pushRule({ + token: "keyword.control.csound", + regex: /\b(?:r(?:einit|igoto)|tigoto)\b/, + next: "goto before label" + }), this.pushRule({ + token: "keyword.control.csound", + regex: /\bc(?:g|in?|k|nk?)goto\b/, + next: ["goto before label", "goto before argument"] + }), this.pushRule({ + token: "keyword.control.csound", + regex: /\btimout\b/, + next: ["goto before label", "goto before argument", "goto before argument"] + }), this.pushRule({ + token: "keyword.control.csound", + regex: /\bloop_[gl][et]\b/, + next: ["goto before label", "goto before argument", "goto before argument", "goto before argument"] + }), this.pushRule({ + token: "support.function.csound", + regex: /\b(?:readscore|scoreline(?:_i)?)\b/, + next: "Csound score opcode" + }), this.pushRule({ + token: "support.function.csound", + regex: /\bpyl?run[it]?\b(?!$)/, + next: "Python opcode" + }), this.pushRule({ + token: "support.function.csound", + regex: /\blua_(?:exec|opdef)\b(?!$)/, + next: "Lua opcode" + }), { + token: "support.variable.csound", + regex: /\bp\d+\b/ + }, { + regex: /\b([A-Z_a-z]\w*)(?:(:)([A-Za-z]))?\b/, onMatch: function (value, currentState, stack, line) { + var tokens = value.split(this.splitRegex); + var name = tokens[1]; + var type; + if (opcodes.hasOwnProperty(name)) + type = "support.function.csound"; + else if (deprecatedOpcodes.hasOwnProperty(name)) + type = "invalid.deprecated.csound"; + if (type) { + if (tokens[2]) { + return [ + { type: type, value: name }, + { type: "punctuation.type-annotation.csound", value: tokens[2] }, + { type: "type-annotation.storage.type.csound", value: tokens[3] } + ]; } - return "text.csound"; + return type; } + return "text.csound"; } - ); - - this.$rules["macro parameter value list"].splice(2, 0, { - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "macro parameter value braced string" }); - + this.$rules["macro parameter value list"].splice(2, 0, { + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: "macro parameter value braced string" + }); + var scoreHighlightRules = new CsoundScoreHighlightRules("csound-score-"); this.addRules({ "macro parameter value braced string": [ { - token : "constant.character.escape.csound", - regex : /\\[#'()]/ + token: "constant.character.escape.csound", + regex: /\\[#'()]/ }, { - token : "invalid.illegal.csound.csound", - regex : /[#'()]/ + token: "invalid.illegal.csound.csound", + regex: /[#'()]/ }, { - token : "punctuation.definition.string.end.csound", - regex : /}}/, - next : "macro parameter value list" + token: "punctuation.definition.string.end.csound", + regex: /}}/, + next: "macro parameter value list" }, { defaultToken: "string.braced.csound" } ], - "instrument numbers and identifiers": [ this.comments, { - token : "entity.name.function.csound", - regex : /\d+|[A-Z_a-z]\w*/ + token: "entity.name.function.csound", + regex: /\d+|[A-Z_a-z]\w*/ }, this.popRule({ - token : "empty", - regex : /$/ + token: "empty", + regex: /$/ }) ], - "after opcode keyword": [ this.comments, this.popRule({ - token : "empty", - regex : /$/ + token: "empty", + regex: /$/ }), this.popRule({ - token : "entity.name.function.opcode.csound", - regex : /[A-Z_a-z]\w*/, - next : "opcode type signatures" + token: "entity.name.function.opcode.csound", + regex: /[A-Z_a-z]\w*/, + next: "opcode type signatures" }) ], "opcode type signatures": [ this.comments, this.popRule({ - token : "empty", - regex : /$/ + token: "empty", + regex: /$/ }), { - token : "storage.type.csound", - regex : /\b(?:0|[afijkKoOpPStV\[\]]+)/ + token: "storage.type.csound", + regex: /\b(?:0|[afijkKoOpPStV\[\]]+)/ } ], - "quoted string": [ this.popRule({ - token : "punctuation.definition.string.end.csound", - regex : /"/ + token: "punctuation.definition.string.end.csound", + regex: /"/ }), this.quotedStringContents, { @@ -2553,122 +2807,117 @@ var CsoundOrchestraHighlightRules = function() { ], "braced string": [ this.popRule({ - token : "punctuation.definition.string.end.csound", - regex : /}}/ + token: "punctuation.definition.string.end.csound", + regex: /}}/ }), this.bracedStringContents, { defaultToken: "string.braced.csound" } ], - "goto before argument": [ this.popRule({ - token : "text.csound", - regex : /,/ + token: "text.csound", + regex: /,/ }), start ], "goto before label": [ { - token : "text.csound", - regex : /\s+/ + token: "text.csound", + regex: /\s+/ }, this.comments, this.popRule({ - token : "entity.name.label.csound", - regex : /\w+/ + token: "entity.name.label.csound", + regex: /\w+/ }), this.popRule({ - token : "empty", - regex : /(?!\w)/ + token: "empty", + regex: /(?!\w)/ }) ], - "Csound score opcode": [ this.comments, { - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "csound-score-start" + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: scoreHighlightRules.embeddedRulePrefix + "start" }, this.popRule({ - token : "empty", - regex : /$/ + token: "empty", + regex: /$/ }) ], - "Python opcode": [ this.comments, { - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "python-start" + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: "python-start" }, this.popRule({ - token : "empty", - regex : /$/ + token: "empty", + regex: /$/ }) ], - "Lua opcode": [ this.comments, { - token : "punctuation.definition.string.begin.csound", - regex : /{{/, - next : "lua-start" + token: "punctuation.definition.string.begin.csound", + regex: /{{/, + next: "lua-start" }, this.popRule({ - token : "empty", - regex : /$/ + token: "empty", + regex: /$/ }) ], - "line continuation": [ this.popRule({ - token : "empty", - regex : /$/ + token: "empty", + regex: /$/ }), this.semicolonComments, { - token : "invalid.illegal.csound", - regex : /\S.*/ + token: "invalid.illegal.csound", + regex: /\S.*/ } ] }); - var rules = [ this.popRule({ - token : "punctuation.definition.string.end.csound", - regex : /}}/ + token: "punctuation.definition.string.end.csound", + regex: /}}/ }) ]; - this.embedRules(CsoundScoreHighlightRules, "csound-score-", rules); + this.embedRules(scoreHighlightRules.getRules(), scoreHighlightRules.embeddedRulePrefix, rules); this.embedRules(PythonHighlightRules, "python-", rules); this.embedRules(LuaHighlightRules, "lua-", rules); - this.normalizeRules(); }; - oop.inherits(CsoundOrchestraHighlightRules, CsoundPreprocessorHighlightRules); - exports.CsoundOrchestraHighlightRules = CsoundOrchestraHighlightRules; + }); -define("ace/mode/csound_orchestra",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_orchestra_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_orchestra",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_orchestra_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CsoundOrchestraHighlightRules = require("./csound_orchestra_highlight_rules").CsoundOrchestraHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CsoundOrchestraHighlightRules; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ";"; - this.blockComment = {start: "/*", end: "*/"}; - + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/csound_orchestra"; + this.snippetFileId = "ace/snippets/csound_orchestra"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/csound_orchestra"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-csound_score.js b/vendor/assets/javascripts/ace/mode-csound_score.js index 21bc4d9e..661a304d 100644 --- a/vendor/assets/javascripts/ace/mode-csound_score.js +++ b/vendor/assets/javascripts/ace/mode-csound_score.js @@ -1,188 +1,183 @@ -define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_preprocessor_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CsoundPreprocessorHighlightRules = function() { - +var CsoundPreprocessorHighlightRules = function (embeddedRulePrefix) { + this.embeddedRulePrefix = embeddedRulePrefix === undefined ? "" : embeddedRulePrefix; this.semicolonComments = { - token : "comment.line.semicolon.csound", - regex : ";.*$" + token: "comment.line.semicolon.csound", + regex: ";.*$" }; - this.comments = [ { - token : "punctuation.definition.comment.begin.csound", - regex : "/\\*", - push : [ + token: "punctuation.definition.comment.begin.csound", + regex: "/\\*", + push: [ { - token : "punctuation.definition.comment.end.csound", - regex : "\\*/", - next : "pop" + token: "punctuation.definition.comment.end.csound", + regex: "\\*/", + next: "pop" }, { defaultToken: "comment.block.csound" } ] }, { - token : "comment.line.double-slash.csound", - regex : "//.*$" + token: "comment.line.double-slash.csound", + regex: "//.*$" }, this.semicolonComments ]; - this.macroUses = [ { - token : ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"], - regex : /(\$[A-Z_a-z]\w*\.?)(\()/, - next : "macro parameter value list" + token: ["entity.name.function.preprocessor.csound", "punctuation.definition.macro-parameter-value-list.begin.csound"], + regex: /(\$[A-Z_a-z]\w*\.?)(\()/, + next: "macro parameter value list" }, { - token : "entity.name.function.preprocessor.csound", - regex : /\$[A-Z_a-z]\w*(?:\.|\b)/ + token: "entity.name.function.preprocessor.csound", + regex: /\$[A-Z_a-z]\w*(?:\.|\b)/ } ]; - this.numbers = [ { - token : "constant.numeric.float.csound", - regex : /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/ + token: "constant.numeric.float.csound", + regex: /(?:\d+[Ee][+-]?\d+)|(?:\d+\.\d*|\d*\.\d+)(?:[Ee][+-]?\d+)?/ }, { - token : ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"], - regex : /(0[Xx])([0-9A-Fa-f]+)/ + token: ["storage.type.number.csound", "constant.numeric.integer.hexadecimal.csound"], + regex: /(0[Xx])([0-9A-Fa-f]+)/ }, { - token : "constant.numeric.integer.decimal.csound", - regex : /\d+/ + token: "constant.numeric.integer.decimal.csound", + regex: /\d+/ } ]; - this.bracedStringContents = [ { - token : "constant.character.escape.csound", - regex : /\\(?:[\\abnrt"]|[0-7]{1,3})/ + token: "constant.character.escape.csound", + regex: /\\(?:[\\abnrt"]|[0-7]{1,3})/ }, { - token : "constant.character.placeholder.csound", - regex : /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/ + token: "constant.character.placeholder.csound", + regex: /%[#0\- +]*\d*(?:\.\d+)?[diuoxXfFeEgGaAcs]/ }, { - token : "constant.character.escape.csound", - regex : /%%/ + token: "constant.character.escape.csound", + regex: /%%/ } ]; - this.quotedStringContents = [ this.macroUses, this.bracedStringContents ]; - var start = [ this.comments, - { - token : "keyword.preprocessor.csound", - regex : /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/ + token: "keyword.preprocessor.csound", + regex: /#(?:e(?:nd(?:if)?|lse)\b|##)|@@?[ \t]*\d+/ }, { - token : "keyword.preprocessor.csound", - regex : /#include/, - push : [ + token: "keyword.preprocessor.csound", + regex: /#include/, + push: [ this.comments, { - token : "string.csound", - regex : /([^ \t])(?:.*?\1)/, - next : "pop" + token: "string.csound", + regex: /([^ \t])(?:.*?\1)/, + next: "pop" } ] }, { - token : "keyword.preprocessor.csound", - regex : /#[ \t]*define/, - next : "define directive" + token: "keyword.preprocessor.csound", + regex: /#includestr/, + push: [ + this.comments, + { + token: "string.csound", + regex: /([^ \t])(?:.*?\1)/, + next: "pop" + } + ] }, { - token : "keyword.preprocessor.csound", - regex : /#(?:ifn?def|undef)\b/, - next : "macro directive" + token: "keyword.preprocessor.csound", + regex: /#[ \t]*define/, + next: "define directive" + }, { + token: "keyword.preprocessor.csound", + regex: /#(?:ifn?def|undef)\b/, + next: "macro directive" }, - this.macroUses ]; - this.$rules = { "start": start, - "define directive": [ this.comments, { - token : "entity.name.function.preprocessor.csound", - regex : /[A-Z_a-z]\w*/ + token: "entity.name.function.preprocessor.csound", + regex: /[A-Z_a-z]\w*/ }, { - token : "punctuation.definition.macro-parameter-name-list.begin.csound", - regex : /\(/, - next : "macro parameter name list" + token: "punctuation.definition.macro-parameter-name-list.begin.csound", + regex: /\(/, + next: "macro parameter name list" }, { - token : "punctuation.definition.macro.begin.csound", - regex : /#/, - next : "macro body" + token: "punctuation.definition.macro.begin.csound", + regex: /#/, + next: "macro body" } ], "macro parameter name list": [ { - token : "variable.parameter.preprocessor.csound", - regex : /[A-Z_a-z]\w*/ + token: "variable.parameter.preprocessor.csound", + regex: /[A-Z_a-z]\w*/ }, { - token : "punctuation.definition.macro-parameter-name-list.end.csound", - regex : /\)/, - next : "define directive" + token: "punctuation.definition.macro-parameter-name-list.end.csound", + regex: /\)/, + next: "define directive" } ], "macro body": [ { - token : "constant.character.escape.csound", - regex : /\\#/ + token: "constant.character.escape.csound", + regex: /\\#/ }, { - token : "punctuation.definition.macro.end.csound", - regex : /#/, - next : "start" + token: "punctuation.definition.macro.end.csound", + regex: /#/, + next: "start" }, start ], - "macro directive": [ this.comments, { - token : "entity.name.function.preprocessor.csound", - regex : /[A-Z_a-z]\w*/, - next : "start" + token: "entity.name.function.preprocessor.csound", + regex: /[A-Z_a-z]\w*/, + next: "start" } ], - "macro parameter value list": [ { - token : "punctuation.definition.macro-parameter-value-list.end.csound", - regex : /\)/, - next : "start" + token: "punctuation.definition.macro-parameter-value-list.end.csound", + regex: /\)/, + next: "start" }, { - token : "punctuation.definition.string.begin.csound", - regex : /"/, - next : "macro parameter value quoted string" + token: "punctuation.definition.string.begin.csound", + regex: /"/, + next: "macro parameter value quoted string" }, this.pushRule({ - token : "punctuation.macro-parameter-value-parenthetical.begin.csound", - regex : /\(/, - next : "macro parameter value parenthetical" + token: "punctuation.macro-parameter-value-parenthetical.begin.csound", + regex: /\(/, + next: "macro parameter value parenthetical" }), { - token : "punctuation.macro-parameter-value-separator.csound", - regex : "[#']" + token: "punctuation.macro-parameter-value-separator.csound", + regex: "[#']" } ], "macro parameter value quoted string": [ { - token : "constant.character.escape.csound", - regex : /\\[#'()]/ + token: "constant.character.escape.csound", + regex: /\\[#'()]/ }, { - token : "invalid.illegal.csound", - regex : /[#'()]/ + token: "invalid.illegal.csound", + regex: /[#'()]/ }, { - token : "punctuation.definition.string.end.csound", - regex : /"/, - next : "macro parameter value list" + token: "punctuation.definition.string.end.csound", + regex: /"/, + next: "macro parameter value list" }, this.quotedStringContents, { @@ -191,35 +186,38 @@ var CsoundPreprocessorHighlightRules = function() { ], "macro parameter value parenthetical": [ { - token : "constant.character.escape.csound", - regex : /\\\)/ + token: "constant.character.escape.csound", + regex: /\\\)/ }, this.popRule({ - token : "punctuation.macro-parameter-value-parenthetical.end.csound", - regex : /\)/ + token: "punctuation.macro-parameter-value-parenthetical.end.csound", + regex: /\)/ }), this.pushRule({ - token : "punctuation.macro-parameter-value-parenthetical.begin.csound", - regex : /\(/, - next : "macro parameter value parenthetical" + token: "punctuation.macro-parameter-value-parenthetical.begin.csound", + regex: /\(/, + next: "macro parameter value parenthetical" }), start ] }; }; - oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules); - -(function() { - - this.pushRule = function(params) { +(function () { + this.pushRule = function (params) { + if (Array.isArray(params.next)) { + for (var i = 0; i < params.next.length; i++) { + params.next[i] = this.embeddedRulePrefix + params.next[i]; + } + } return { - regex : params.regex, onMatch: function(value, currentState, stack, line) { + regex: params.regex, onMatch: function (value, currentState, stack, line) { if (stack.length === 0) stack.push(currentState); if (Array.isArray(params.next)) { for (var i = 0; i < params.next.length; i++) { stack.push(params.next[i]); } - } else { + } + else { stack.push(params.next); } this.next = stack[stack.length - 1]; @@ -227,220 +225,185 @@ oop.inherits(CsoundPreprocessorHighlightRules, TextHighlightRules); }, get next() { return Array.isArray(params.next) ? params.next[params.next.length - 1] : params.next; }, set next(next) { - if (Array.isArray(params.next)) { - var oldNext = params.next[params.next.length - 1]; - var oldNextIndex = oldNext.length - 1; - var newNextIndex = next.length - 1; - if (newNextIndex > oldNextIndex) { - while (oldNextIndex >= 0 && newNextIndex >= 0) { - if (oldNext.charAt(oldNextIndex) !== next.charAt(newNextIndex)) { - var prefix = next.substr(0, newNextIndex); - for (var i = 0; i < params.next.length; i++) { - params.next[i] = prefix + params.next[i]; - } - break; - } - oldNextIndex--; - newNextIndex--; - } - } - } else { + if (!Array.isArray(params.next)) { params.next = next; } }, get token() { return params.token; } }; }; - - this.popRule = function(params) { + this.popRule = function (params) { + if (params.next) { + params.next = this.embeddedRulePrefix + params.next; + } return { - regex : params.regex, onMatch: function(value, currentState, stack, line) { + regex: params.regex, onMatch: function (value, currentState, stack, line) { stack.pop(); if (params.next) { stack.push(params.next); this.next = stack[stack.length - 1]; - } else { + } + else { this.next = stack.length > 1 ? stack[stack.length - 1] : stack.pop(); } return params.token; } }; }; - }).call(CsoundPreprocessorHighlightRules.prototype); - exports.CsoundPreprocessorHighlightRules = CsoundPreprocessorHighlightRules; + }); -define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_score_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/csound_preprocessor_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); - var CsoundPreprocessorHighlightRules = require("./csound_preprocessor_highlight_rules").CsoundPreprocessorHighlightRules; - -var CsoundScoreHighlightRules = function() { - - CsoundPreprocessorHighlightRules.call(this); - +var CsoundScoreHighlightRules = function (embeddedRulePrefix) { + CsoundPreprocessorHighlightRules.call(this, embeddedRulePrefix); this.quotedStringContents.push({ - token : "invalid.illegal.csound-score", - regex : /[^"]*$/ + token: "invalid.illegal.csound-score", + regex: /[^"]*$/ }); - var start = this.$rules.start; - start.push( - { - token : "keyword.control.csound-score", - regex : /[abCdefiqstvxy]/ - }, { - token : "invalid.illegal.csound-score", - regex : /w/ - }, { - token : "constant.numeric.language.csound-score", - regex : /z/ - }, { - token : ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"], - regex : /([nNpP][pP])(\d+)/ - }, { - token : "keyword.other.csound-score", - regex : /[mn]/, - push : [ - { - token : "empty", - regex : /$/, - next : "pop" - }, - this.comments, - { - token : "entity.name.label.csound-score", - regex : /[A-Z_a-z]\w*/ - } - ] - }, { - token : "keyword.preprocessor.csound-score", - regex : /r\b/, - next : "repeat section" - }, - - this.numbers, - - { - token : "keyword.operator.csound-score", - regex : "[!+\\-*/^%&|<>#~.]" - }, - - this.pushRule({ - token : "punctuation.definition.string.begin.csound-score", - regex : /"/, - next : "quoted string" - }), - - this.pushRule({ - token : "punctuation.braced-loop.begin.csound-score", - regex : /{/, - next : "loop after left brace" - }) - ); - - this.addRules({ - "repeat section": [ + start.push({ + token: "keyword.control.csound-score", + regex: /[aBbCdefiqstvxy]/ + }, { + token: "invalid.illegal.csound-score", + regex: /w/ + }, { + token: "constant.numeric.language.csound-score", + regex: /z/ + }, { + token: ["keyword.control.csound-score", "constant.numeric.integer.decimal.csound-score"], + regex: /([nNpP][pP])(\d+)/ + }, { + token: "keyword.other.csound-score", + regex: /[mn]/, + push: [ { - token : "empty", - regex : /$/, - next : "start" + token: "empty", + regex: /$/, + next: "pop" }, this.comments, { - token : "constant.numeric.integer.decimal.csound-score", - regex : /\d+/, - next : "repeat section before label" + token: "entity.name.label.csound-score", + regex: /[A-Z_a-z]\w*/ + } + ] + }, { + token: "keyword.preprocessor.csound-score", + regex: /r\b/, + next: "repeat section" + }, this.numbers, { + token: "keyword.operator.csound-score", + regex: "[!+\\-*/^%&|<>#~.]" + }, this.pushRule({ + token: "punctuation.definition.string.begin.csound-score", + regex: /"/, + next: "quoted string" + }), this.pushRule({ + token: "punctuation.braced-loop.begin.csound-score", + regex: /{/, + next: "loop after left brace" + })); + this.addRules({ + "repeat section": [ + { + token: "empty", + regex: /$/, + next: "start" + }, + this.comments, + { + token: "constant.numeric.integer.decimal.csound-score", + regex: /\d+/, + next: "repeat section before label" } ], "repeat section before label": [ { - token : "empty", - regex : /$/, - next : "start" + token: "empty", + regex: /$/, + next: "start" }, this.comments, { - token : "entity.name.label.csound-score", - regex : /[A-Z_a-z]\w*/, - next : "start" + token: "entity.name.label.csound-score", + regex: /[A-Z_a-z]\w*/, + next: "start" } ], - "quoted string": [ this.popRule({ - token : "punctuation.definition.string.end.csound-score", - regex : /"/ + token: "punctuation.definition.string.end.csound-score", + regex: /"/ }), this.quotedStringContents, { defaultToken: "string.quoted.csound-score" } ], - "loop after left brace": [ this.popRule({ - token : "constant.numeric.integer.decimal.csound-score", - regex : /\d+/, - next : "loop after repeat count" + token: "constant.numeric.integer.decimal.csound-score", + regex: /\d+/, + next: "loop after repeat count" }), this.comments, { - token : "invalid.illegal.csound", - regex : /\S.*/ + token: "invalid.illegal.csound", + regex: /\S.*/ } ], "loop after repeat count": [ this.popRule({ - token : "entity.name.function.preprocessor.csound-score", - regex : /[A-Z_a-z]\w*\b/, - next : "loop after macro name" + token: "entity.name.function.preprocessor.csound-score", + regex: /[A-Z_a-z]\w*\b/, + next: "loop after macro name" }), this.comments, { - token : "invalid.illegal.csound", - regex : /\S.*/ + token: "invalid.illegal.csound", + regex: /\S.*/ } ], "loop after macro name": [ start, this.popRule({ - token : "punctuation.braced-loop.end.csound-score", - regex : /}/ + token: "punctuation.braced-loop.end.csound-score", + regex: /}/ }) ] }); - this.normalizeRules(); }; - oop.inherits(CsoundScoreHighlightRules, CsoundPreprocessorHighlightRules); - exports.CsoundScoreHighlightRules = CsoundScoreHighlightRules; + }); -define("ace/mode/csound_score",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_score_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/csound_score",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/csound_score_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CsoundScoreHighlightRules = require("./csound_score_highlight_rules").CsoundScoreHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CsoundScoreHighlightRules; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ";"; - this.blockComment = {start: "/*", end: "*/"}; - + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/csound_score"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/csound_score"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-csp.js b/vendor/assets/javascripts/ace/mode-csp.js new file mode 100644 index 00000000..3a326e1c --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-csp.js @@ -0,0 +1,59 @@ +define("ace/mode/csp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + EXPLANATION + + This highlight rules were created to help developer spot typos when working + with Content-Security-Policy (CSP). See: + https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/ + */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CspHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "constant.language": "child-src|connect-src|default-src|font-src|frame-src|img-src|manifest-src|media-src|object-src" + + "|script-src|style-src|worker-src|base-uri|plugin-types|sandbox|disown-opener|form-action|frame-ancestors|report-uri" + + "|report-to|upgrade-insecure-requests|block-all-mixed-content|require-sri-for|reflected-xss|referrer|policy-uri", + "variable": "'none'|'self'|'unsafe-inline'|'unsafe-eval'|'strict-dynamic'|'unsafe-hashed-attributes'" + }, "identifier", true); + this.$rules = { + start: [{ + token: "string.link", + regex: /https?:[^;\s]*/ + }, { + token: "operator.punctuation", + regex: /;/ + }, { + token: keywordMapper, + regex: /[^\s;]+/ + }] + }; +}; +oop.inherits(CspHighlightRules, TextHighlightRules); +exports.CspHighlightRules = CspHighlightRules; + +}); + +define("ace/mode/csp",["require","exports","module","ace/mode/text","ace/mode/csp_highlight_rules","ace/lib/oop"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var TextMode = require("./text").Mode; +var CspHighlightRules = require("./csp_highlight_rules").CspHighlightRules; +var oop = require("../lib/oop"); +var Mode = function () { + this.HighlightRules = CspHighlightRules; +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/csp"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/csp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-css.js b/vendor/assets/javascripts/ace/mode-css.js index b7e97933..1ce109ae 100644 --- a/vendor/assets/javascripts/ace/mode-css.js +++ b/vendor/assets/javascripts/ace/mode-css.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,282 +18,261 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -311,113 +285,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -429,20 +383,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -456,116 +409,102 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -578,54 +517,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -634,8 +571,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -643,57 +579,51 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/css"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-curly.js b/vendor/assets/javascripts/ace/mode-curly.js index 7bcf063e..4792fd35 100644 --- a/vendor/assets/javascripts/ace/mode-curly.js +++ b/vendor/assets/javascripts/ace/mode-curly.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,117 +2225,97 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/curly_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/curly_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - - -var CurlyHighlightRules = function() { +var CurlyHighlightRules = function () { HtmlHighlightRules.call(this); - this.$rules["start"].unshift({ token: "variable", regex: "{{", push: "curly-start" }); - this.$rules["curly-start"] = [{ - token: "variable", - regex: "}}", - next: "pop" - }]; - + token: "variable", + regex: "}}", + next: "pop" + }]; this.normalizeRules(); }; - oop.inherits(CurlyHighlightRules, HtmlHighlightRules); - exports.CurlyHighlightRules = CurlyHighlightRules; }); -define("ace/mode/curly",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/matching_brace_outdent","ace/mode/folding/html","ace/mode/curly_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/curly",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/matching_brace_outdent","ace/mode/folding/html","ace/mode/curly_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var HtmlFoldMode = require("./folding/html").FoldMode; var CurlyHighlightRules = require("./curly_highlight_rules").CurlyHighlightRules; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); this.HighlightRules = CurlyHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new HtmlFoldMode(); }; oop.inherits(Mode, HtmlMode); - -(function() { +(function () { this.$id = "ace/mode/curly"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/curly"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-cuttlefish.js b/vendor/assets/javascripts/ace/mode-cuttlefish.js new file mode 100644 index 00000000..67e55165 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-cuttlefish.js @@ -0,0 +1,56 @@ +define("ace/mode/cuttlefish_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CuttlefishHighlightRules = function () { + this.$rules = { + start: [{ + token: ['text', 'comment'], + regex: /^([ \t]*)(#.*)$/ + }, { + token: ['text', 'keyword', 'text', 'string', 'text', 'comment'], + regex: /^([ \t]*)(include)([ \t]*)([A-Za-z0-9-\_\.\*\/]+)([ \t]*)(#.*)?$/ + }, { + token: ['text', 'keyword', 'text', 'operator', 'text', 'string', 'text', 'comment'], + regex: /^([ \t]*)([A-Za-z0-9-_]+(?:\.[A-Za-z0-9-_]+)*)([ \t]*)(=)([ \t]*)([^ \t#][^#]*?)([ \t]*)(#.*)?$/ + }, { + defaultToken: 'invalid' + }] + }; + this.normalizeRules(); +}; +CuttlefishHighlightRules.metaData = { + fileTypes: ['conf'], + keyEquivalent: '^~C', + name: 'Cuttlefish', + scopeName: 'source.conf' +}; +oop.inherits(CuttlefishHighlightRules, TextHighlightRules); +exports.CuttlefishHighlightRules = CuttlefishHighlightRules; + +}); + +define("ace/mode/cuttlefish",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cuttlefish_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CuttlefishHighlightRules = require("./cuttlefish_highlight_rules").CuttlefishHighlightRules; +var Mode = function () { + this.HighlightRules = CuttlefishHighlightRules; + this.foldingRules = null; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.blockComment = null; + this.$id = "ace/mode/cuttlefish"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/cuttlefish"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-d.js b/vendor/assets/javascripts/ace/mode-d.js index f2bae27f..8f4a38ca 100644 --- a/vendor/assets/javascripts/ace/mode-d.js +++ b/vendor/assets/javascripts/ace/mode-d.js @@ -1,262 +1,222 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/d_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/d_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DHighlightRules = function() { - - var keywords = ( - "this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|"+ - "typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters" - ); - - var keywordControls = ( - "break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|" + - "return|switch|while|catch|try|throw|finally|version|assert|unittest|with" - ); - - var types = ( - "auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|" + +var DHighlightRules = function () { + var keywords = ("this|super|import|module|body|mixin|__traits|invariant|alias|asm|delete|" + + "typeof|typeid|sizeof|cast|new|in|is|typedef|__vector|__parameters"); + var keywordControls = ("break|case|continue|default|do|else|for|foreach|foreach_reverse|goto|if|" + + "return|switch|while|catch|try|throw|finally|version|assert|unittest|with"); + var types = ("auto|bool|char|dchar|wchar|byte|ubyte|float|double|real|" + "cfloat|creal|cdouble|cent|ifloat|ireal|idouble|" + "int|long|short|void|uint|ulong|ushort|ucent|" + - "function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object" - ); - - var modifiers = ( - "abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|" + + "function|delegate|string|wstring|dstring|size_t|ptrdiff_t|hash_t|Object"); + var modifiers = ("abstract|align|debug|deprecated|export|extern|const|final|in|inout|out|" + "ref|immutable|lazy|nothrow|override|package|pragma|private|protected|" + - "public|pure|scope|shared|__gshared|synchronized|static|volatile" - ); - - var storages = ( - "class|struct|union|template|interface|enum|macro" - ); - - var stringEscapesSeq = { + "public|pure|scope|shared|__gshared|synchronized|static|volatile"); + var storages = ("class|struct|union|template|interface|enum|macro"); + var stringEscapesSeq = { token: "constant.language.escape", regex: "\\\\(?:(?:x[0-9A-F]{2})|(?:[0-7]{1,3})|(?:['\"\\?0abfnrtv\\\\])|" + "(?:u[0-9a-fA-F]{4})|(?:U[0-9a-fA-F]{8}))" }; - - var builtinConstants = ( - "null|true|false|"+ - "__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|"+ - "__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__" - ); - - var operators = ( - "/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|" + + var builtinConstants = ("null|true|false|" + + "__DATE__|__EOF__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__|" + + "__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__"); + var operators = ("/|/\\=|&|&\\=|&&|\\|\\|\\=|\\|\\||\\-|\\-\\=|\\-\\-|\\+|" + "\\+\\=|\\+\\+|\\<|\\<\\=|\\<\\<|\\<\\<\\=|\\<\\>|\\<\\>\\=|\\>|\\>\\=|\\>\\>\\=|" + "\\>\\>\\>\\=|\\>\\>|\\>\\>\\>|\\!|\\!\\=|\\!\\<\\>|\\!\\<\\>\\=|\\!\\<|\\!\\<\\=|" + "\\!\\>|\\!\\>\\=|\\?|\\$|\\=|\\=\\=|\\*|\\*\\=|%|%\\=|" + - "\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#" - ); - + "\\^|\\^\\=|\\^\\^|\\^\\^\\=|~|~\\=|\\=\\>|#"); var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.modifier" : modifiers, - "keyword.control" : keywordControls, - "keyword.type" : types, - "keyword": keywords, - "keyword.storage": storages, + "keyword.modifier": modifiers, + "keyword.control": keywordControls, + "keyword.type": types, + "keyword": keywords, + "keyword.storage": storages, "punctation": "\\.|\\,|;|\\.\\.|\\.\\.\\.", - "keyword.operator" : operators, + "keyword.operator": operators, "constant.language": builtinConstants }, "identifier"); - var identifierRe = "[a-zA-Z_\u00a1-\uffff][a-zA-Z\\d_\u00a1-\uffff]*\\b"; - this.$rules = { - "start" : [ - { //-------------------------------------------------------- COMMENTS - token : "comment", - regex : "\\/\\/.*$" + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "star-comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "star-comment" }, { token: "comment.shebang", regex: "^\\s*#!.*" }, { - token : "comment", - regex : "\\/\\+", + token: "comment", + regex: "\\/\\+", next: "plus-comment" - }, { //-------------------------------------------------------- STRINGS - onMatch: function(value, currentState, state) { + }, { + onMatch: function (value, currentState, state) { state.unshift(this.next, value.substr(2)); return "string"; }, regex: 'q"(?:[\\[\\(\\{\\<]+)', next: 'operator-heredoc-string' }, { - onMatch: function(value, currentState, state) { + onMatch: function (value, currentState, state) { state.unshift(this.next, value.substr(2)); return "string"; }, regex: 'q"(?:[a-zA-Z_]+)$', next: 'identifier-heredoc-string' }, { - token : "string", // multi line string start - regex : '[xr]?"', - next : "quote-string" + token: "string", // multi line string start + regex: '[xr]?"', + next: "quote-string" }, { - token : "string", // multi line string start - regex : '[xr]?`', - next : "backtick-string" + token: "string", // multi line string start + regex: '[xr]?`', + next: "backtick-string" + }, { + token: "string", // single line + regex: "[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?" }, { - token : "string", // single line - regex : "[xr]?['](?:(?:\\\\.)|(?:[^'\\\\]))*?['][cdw]?" - }, { //-------------------------------------------------------- RULES token: ["keyword", "text", "paren.lparen"], regex: /(asm)(\s*)({)/, next: "d-asm" }, { token: ["keyword", "text", "paren.lparen", "constant.language"], - regex: "(__traits)(\\s*)(\\()("+identifierRe+")" - }, { // import|module abc - token: ["keyword", "text", "variable.module"], - regex: "(import|module)(\\s+)((?:"+identifierRe+"\\.?)*)" - }, { // storage Name - token: ["keyword.storage", "text", "entity.name.type"], - regex: "("+storages+")(\\s*)("+identifierRe+")" - }, { // alias|typedef foo bar; - token: ["keyword", "text", "variable.storage", "text"], - regex: "(alias|typedef)(\\s*)("+identifierRe+")(\\s*)" - }, { //-------------------------------------------------------- OTHERS - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b" + regex: "(__traits)(\\s*)(\\()(" + identifierRe + ")" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b" + token: ["keyword", "text", "variable.module"], + regex: "(import|module)(\\s+)((?:" + identifierRe + "\\.?)*)" + }, { + token: ["keyword.storage", "text", "entity.name.type"], + regex: "(" + storages + ")(\\s*)(" + identifierRe + ")" + }, { + token: ["keyword", "text", "variable.storage", "text"], + regex: "(alias|typedef)(\\s*)(" + identifierRe + ")(\\s*)" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F_]+(l|ul|u|f|F|L|U|UL)?\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d[\\d_]*(?:(?:\\.[\\d_]*)?(?:[eE][+-]?[\\d_]+)?)?(l|ul|u|f|F|L|U|UL)?\\b" }, { token: "entity.other.attribute-name", - regex: "@"+identifierRe + regex: "@" + identifierRe }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" }, { - token : "keyword.operator", - regex : operators + token: "keyword.operator", + regex: operators }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\.|\\:" + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\.|\\:" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "star-comment" : [ + "star-comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { defaultToken: 'comment' } ], - "plus-comment" : [ + "plus-comment": [ { - token : "comment", // closing comment - regex : "\\+\\/", - next : "start" + token: "comment", // closing comment + regex: "\\+\\/", + next: "start" }, { defaultToken: 'comment' } ], - - "quote-string" : [ - stringEscapesSeq, - { - token : "string", - regex : '"[cdw]?', - next : "start" + "quote-string": [ + stringEscapesSeq, + { + token: "string", + regex: '"[cdw]?', + next: "start" }, { defaultToken: 'string' } ], - - "backtick-string" : [ - stringEscapesSeq, - { - token : "string", - regex : '`[cdw]?', - next : "start" + "backtick-string": [ + stringEscapesSeq, + { + token: "string", + regex: '`[cdw]?', + next: "start" }, { defaultToken: 'string' } ], - "operator-heredoc-string": [ { - onMatch: function(value, currentState, state) { - value = value.substring(value.length-2, value.length-1); - var map = {'>':'<',']':'[',')':'(','}':'{'}; - if(Object.keys(map).indexOf(value) != -1) + onMatch: function (value, currentState, state) { + value = value.substring(value.length - 2, value.length - 1); + var map = { '>': '<', ']': '[', ')': '(', '}': '{' }; + if (Object.keys(map).indexOf(value) != -1) value = map[value]; - if(value != state[1]) return "string"; + if (value != state[1]) + return "string"; state.shift(); state.shift(); - return "string"; }, regex: '(?:[\\]\\)}>]+)"', @@ -266,15 +226,14 @@ var DHighlightRules = function() { regex: '[^\\]\\)}>]+' } ], - "identifier-heredoc-string": [ { - onMatch: function(value, currentState, state) { - value = value.substring(0, value.length-1); - if(value != state[1]) return "string"; + onMatch: function (value, currentState, state) { + value = value.substring(0, value.length - 1); + if (value != state[1]) + return "string"; state.shift(); state.shift(); - return "string"; }, regex: '^(?:[A-Za-z_][a-zA-Z0-9]+)"', @@ -284,7 +243,6 @@ var DHighlightRules = function() { regex: '[^\\]\\)}>]+' } ], - "d-asm": [ { token: "paren.rparen", @@ -293,7 +251,7 @@ var DHighlightRules = function() { }, { token: 'keyword.instruction', regex: '[a-zA-Z]+', - next: 'd-asm-instruction' + next: 'd-asm-instruction' }, { token: "text", regex: "\\s+" @@ -308,7 +266,7 @@ var DHighlightRules = function() { regex: '[a-zA-Z]+' }, { token: 'string', - regex: '".*"' + regex: '"[^"]*"' }, { token: 'comment', regex: '//.*$' @@ -328,109 +286,82 @@ var DHighlightRules = function() { } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - DHighlightRules.metaData = { - comment: 'D language', - fileTypes: [ 'd', 'di' ], - firstLineMatch: '^#!.*\\b[glr]?dmd\\b.', - foldingStartMarker: '(?x)/\\*\\*(?!\\*)|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))', - foldingStopMarker: '(? indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/d",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/d_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/d",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/d_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var DHighlightRules = require("./d_highlight_rules").DHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = DHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/d"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/d"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-dart.js b/vendor/assets/javascripts/ace/mode-dart.js index f2054394..f9769af7 100644 --- a/vendor/assets/javascripts/ace/mode-dart.js +++ b/vendor/assets/javascripts/ace/mode-dart.js @@ -1,370 +1,300 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + +var cFunctions = exports.cFunctions = "hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen"; +var c_cppHighlightRules = function (extraKeywords) { + var keywordControls = ("break|case|continue|default|do|else|for|goto|if|_Pragma|" + + "return|switch|while|catch|operator|try|throw|using"); + var storageType = ("asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + + "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + + "class|wchar_t|template|char16_t|char32_t"); + var storageModifiers = ("const|extern|register|restrict|static|volatile|inline|private|" + "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, + "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local"); + var keywordOperators = ("and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + + "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace"); + var builtinConstants = ("NULL|true|false|TRUE|FALSE|nullptr"); + var keywordMapper = this.$keywords = this.createKeywordMapper(Object.assign({ + "keyword.control": keywordControls, + "storage.type": storageType, + "storage.modifier": storageModifiers, + "keyword.operator": keywordOperators, "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - + "constant.language": builtinConstants, + "support.function.C99.c": cFunctions + }, extraKeywords), "identifier"); var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ + + /(\d+\$)?/.source // field (argument #) + + /[#0\- +']*/.source // flags + + /[,;:_]?/.source // separator character (AltiVec) + + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type + this.$rules = { + "start": [ { - token : "comment", - regex : "//$", - next : "start" + token: "comment", + regex: "//$", + next: "start" }, { - token : "comment", - regex : "//", - next : "singleLineComment" + token: "comment", + regex: "//", + next: "singleLineComment" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" + token: "string", // character + regex: "'(?:" + escapeRe + "|.)?'" }, { - token : "string.start", - regex : '"', + token: "string.start", + regex: '"', stateName: "qqstring", next: [ { token: "string", regex: /\\\s*$/, next: "qqstring" }, { token: "constant.language.escape", regex: escapeRe }, { token: "constant.language.escape", regex: formatRe }, { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "string.start", - regex : 'R"\\(', + token: "string.start", + regex: 'R"\\(', stateName: "rawString", next: [ { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" + token: "keyword", // pre-compiler directives + regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b", + next: "directive" }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" + token: "keyword", // special case pre-compiler directive + regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" }, { - token : "support.function.C99.c", - regex : cFunctions + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" + token: "keyword.operator", + regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { defaultToken: "comment" } ], - "directive" : [ + "singleLineComment": [ { - token : "constant.other.multiline", - regex : /\\/ + token: "comment", + regex: /\\$/, + next: "singleLineComment" + }, { + token: "comment", + regex: /$/, + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ }, { - token : "constant.other.multiline", - regex : /.*\\/ + token: "constant.other.multiline", + regex: /.*\\/ }, { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" + token: "constant.other", + regex: "\\s*<.+?>", + next: "start" }, { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" + token: "constant.other", // single line + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next: "start" }, { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" + token: "constant.other", // single line + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; - oop.inherits(c_cppHighlightRules, TextHighlightRules); - exports.c_cppHighlightRules = c_cppHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -377,94 +307,82 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = c_cppHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start") { return ""; } @@ -476,40 +394,34 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/c_cpp"; + this.snippetFileId = "ace/snippets/c_cpp"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/dart_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/dart_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 958518BC-799F-477A-99F9-5B28EBF230F6) */ "use strict"; - var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DartHighlightRules = function() { - +var DartHighlightRules = function () { var constantLanguage = "true|false|null"; var variableLanguage = "this|super"; var keywordControl = "try|catch|finally|throw|rethrow|assert|break|case|continue|default|do|else|for|if|in|return|switch|while|new|deferred|async|await"; var keywordDeclaration = "abstract|class|extends|external|factory|implements|get|native|operator|set|typedef|with|enum"; var storageModifier = "static|final|const"; var storageType = "void|bool|num|int|double|dynamic|var|String"; - var keywordMapper = this.createKeywordMapper({ "constant.language.dart": constantLanguage, "variable.language.dart": variableLanguage, @@ -518,180 +430,189 @@ var DartHighlightRules = function() { "storage.modifier.dart": storageModifier, "storage.type.primitive.dart": storageType }, "identifier"); - - var stringfill = { - defaultToken : "string" - }; - - this.$rules = - { - "start": [ - { - token : "comment", - regex : /\/\/.*$/ - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, - { - token: ["meta.preprocessor.script.dart"], - regex: "^(#!.*)$" - }, - { - token: "keyword.other.import.dart", - regex: "(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)" - }, - { - token : ["keyword.other.import.dart", "text"], - regex : "(?:\\b)(prefix)(\\s*:)" - }, - { - regex: "\\bas\\b", - token: "keyword.cast.dart" - }, - { - regex: "\\?|:", - token: "keyword.control.ternary.dart" - }, - { - regex: "(?:\\b)(is\\!?)(?:\\b)", - token: ["keyword.operator.dart"] - }, - { - regex: "(<<|>>>?|~|\\^|\\||&)", - token: ["keyword.operator.bitwise.dart"] - }, - { - regex: "((?:&|\\^|\\||<<|>>>?)=)", - token: ["keyword.operator.assignment.bitwise.dart"] - }, - { - regex: "(===?|!==?|<=?|>=?)", - token: ["keyword.operator.comparison.dart"] - }, - { - regex: "((?:[+*/%-]|\\~)=)", - token: ["keyword.operator.assignment.arithmetic.dart"] - }, - { - regex: "=", - token: "keyword.operator.assignment.dart" - }, - { - token : "string", - regex : "'''", - next : "qdoc" - }, - { - token : "string", - regex : '"""', - next : "qqdoc" - }, - { - token : "string", - regex : "'", - next : "qstring" - }, - { - token : "string", - regex : '"', - next : "qqstring" - }, - { - regex: "(\\-\\-|\\+\\+)", - token: ["keyword.operator.increment-decrement.dart"] - }, - { - regex: "(\\-|\\+|\\*|\\/|\\~\\/|%)", - token: ["keyword.operator.arithmetic.dart"] - }, - { - regex: "(!|&&|\\|\\|)", - token: ["keyword.operator.logical.dart"] - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, - { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, - { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + var stringfill = [{ + token: "constant.language.escape", + regex: /\\./ }, { - defaultToken : "comment" - } - ], - "qdoc" : [ - { - token : "string", - regex : ".*?'''", - next : "start" - }, stringfill], - - "qqdoc" : [ - { - token : "string", - regex : '.*?"""', - next : "start" - }, stringfill], - - "qstring" : [ - { - token : "string", - regex : "[^\\\\']*(?:\\\\.[^\\\\']*)*'", - next : "start" - }, stringfill], - - "qqstring" : [ - { - token : "string", - regex : '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', - next : "start" - }, stringfill] + token: "text", + regex: /\$(?:\w+|{[^"'}]+})?/ + }, { + defaultToken: "string" + }]; + this.$rules = { + "start": [ + { + token: "comment", + regex: /\/\/.*$/ + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: /\/\*/, + next: "comment" + }, + { + token: ["meta.preprocessor.script.dart"], + regex: "^(#!.*)$" + }, + { + token: "keyword.other.import.dart", + regex: "(?:\\b)(?:library|import|export|part|of|show|hide)(?:\\b)" + }, + { + token: ["keyword.other.import.dart", "text"], + regex: "(?:\\b)(prefix)(\\s*:)" + }, + { + regex: "\\bas\\b", + token: "keyword.cast.dart" + }, + { + regex: "\\?|:", + token: "keyword.control.ternary.dart" + }, + { + regex: "(?:\\b)(is\\!?)(?:\\b)", + token: ["keyword.operator.dart"] + }, + { + regex: "(<<|>>>?|~|\\^|\\||&)", + token: ["keyword.operator.bitwise.dart"] + }, + { + regex: "((?:&|\\^|\\||<<|>>>?)=)", + token: ["keyword.operator.assignment.bitwise.dart"] + }, + { + regex: "(===?|!==?|<=?|>=?)", + token: ["keyword.operator.comparison.dart"] + }, + { + regex: "((?:[+*/%-]|\\~)=)", + token: ["keyword.operator.assignment.arithmetic.dart"] + }, + { + regex: "=", + token: "keyword.operator.assignment.dart" + }, + { + token: "string", + regex: "'''", + next: "qdoc" + }, + { + token: "string", + regex: '"""', + next: "qqdoc" + }, + { + token: "string", + regex: "'", + next: "qstring" + }, + { + token: "string", + regex: '"', + next: "qqstring" + }, + { + regex: "(\\-\\-|\\+\\+)", + token: ["keyword.operator.increment-decrement.dart"] + }, + { + regex: "(\\-|\\+|\\*|\\/|\\~\\/|%)", + token: ["keyword.operator.arithmetic.dart"] + }, + { + regex: "(!|&&|\\|\\|)", + token: ["keyword.operator.logical.dart"] + }, + { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, + { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, + { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "qdoc": [ + { + token: "string", + regex: "'''", + next: "start" + } + ].concat(stringfill), + "qqdoc": [ + { + token: "string", + regex: '"""', + next: "start" + } + ].concat(stringfill), + "qstring": [ + { + token: "string", + regex: "'|$", + next: "start" + } + ].concat(stringfill), + "qqstring": [ + { + token: "string", + regex: '"|$', + next: "start" + } + ].concat(stringfill) + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); -}; - oop.inherits(DartHighlightRules, TextHighlightRules); - exports.DartHighlightRules = DartHighlightRules; + }); -define("ace/mode/dart",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/dart_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/dart",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/dart_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var CMode = require("./c_cpp").Mode; var DartHighlightRules = require("./dart_highlight_rules").DartHighlightRules; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { CMode.call(this); this.HighlightRules = DartHighlightRules; this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, CMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/dart"; + this.snippetFileId = "ace/snippets/dart"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/dart"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-diff.js b/vendor/assets/javascripts/ace/mode-diff.js index ba0a71e4..ea60cee7 100644 --- a/vendor/assets/javascripts/ace/mode-diff.js +++ b/vendor/assets/javascripts/ace/mode-diff.js @@ -1,17 +1,13 @@ -define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/diff_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DiffHighlightRules = function() { - +var DiffHighlightRules = function () { this.$rules = { - "start" : [{ + "start": [{ regex: "^(?:\\*{15}|={67}|-{3}|\\+{3})$", token: "punctuation.definition.separator.diff", "name": "keyword" - }, { //diff.range.unified + }, { regex: "^(@@)(\\s*.+?\\s*)(@@)(.*)$", token: [ "constant", @@ -19,7 +15,7 @@ var DiffHighlightRules = function() { "constant", "comment.doc.tag" ] - }, { //diff.range.normal + }, { regex: "^(\\d+)([,\\d]+)(a|d|c)(\\d+)([,\\d]+)(.*)$", token: [ "constant.numeric", @@ -36,14 +32,14 @@ var DiffHighlightRules = function() { "constant.numeric", "meta.tag" ] - }, { // added + }, { regex: "^([!+>])(.*?)(\\s*)$", token: [ "support.constant", "text", "invalid" ] - }, { // removed + }, { regex: "^([<\\-])(.*?)(\\s*)$", token: [ "support.function", @@ -69,71 +65,65 @@ var DiffHighlightRules = function() { ] }; }; - oop.inherits(DiffHighlightRules, TextHighlightRules); - exports.DiffHighlightRules = DiffHighlightRules; + }); -define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/diff",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function(levels, flag) { - this.regExpList = levels; - this.flag = flag; - this.foldingStartMarker = RegExp("^(" + levels.join("|") + ")", this.flag); +var FoldMode = exports.FoldMode = function (levels, flag) { + this.regExpList = levels; + this.flag = flag; + this.foldingStartMarker = RegExp("^(" + levels.join("|") + ")", this.flag); }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.getFoldWidgetRange = function(session, foldStyle, row) { +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.getLine(row); - var start = {row: row, column: line.length}; - + var start = { row: row, column: line.length }; var regList = this.regExpList; for (var i = 1; i <= regList.length; i++) { var re = RegExp("^(" + regList.slice(0, i).join("|") + ")", this.flag); if (re.test(line)) break; } - - for (var l = session.getLength(); ++row < l; ) { + for (var l = session.getLength(); ++row < l;) { line = session.getLine(row); if (re.test(line)) break; } if (row == start.row + 1) return; - return Range.fromPoints(start, {row: row - 1, column: line.length}); + return new Range(start.row, start.column, row - 1, line.length); }; - }).call(FoldMode.prototype); }); -define("ace/mode/diff",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/diff_highlight_rules","ace/mode/folding/diff"], function(require, exports, module) { -"use strict"; - +define("ace/mode/diff",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/diff_highlight_rules","ace/mode/folding/diff"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HighlightRules = require("./diff_highlight_rules").DiffHighlightRules; var FoldMode = require("./folding/diff").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HighlightRules; - this.foldingRules = new FoldMode(["diff", "index", "\\+{3}", "@@|\\*{5}"], "i"); + this.foldingRules = new FoldMode(["diff", "@@|\\*{5}"], "i"); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.$id = "ace/mode/diff"; + this.snippetFileId = "ace/snippets/diff"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/diff"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-django.js b/vendor/assets/javascripts/ace/mode-django.js index 96f184df..5ee0ebb5 100644 --- a/vendor/assets/javascripts/ace/mode-django.js +++ b/vendor/assets/javascripts/ace/mode-django.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,101 +2225,81 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/django",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); +define("ace/mode/django",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DjangoHighlightRules = function(){ +var DjangoHighlightRules = function () { this.$rules = { 'start': [{ - token: "string", - regex: '".*?"' - }, { - token: "string", - regex: "'.*?'" - }, { - token: "constant", - regex: '[0-9]+' - }, { - token: "variable", - regex: "[-_a-zA-Z0-9:]+" - }], + token: "string", + regex: '".*?"' + }, { + token: "string", + regex: "'.*?'" + }, { + token: "constant", + regex: '[0-9]+' + }, { + token: "variable", + regex: "[-_a-zA-Z0-9:]+" + }], 'tag': [{ - token: "entity.name.function", - regex: "[a-zA-Z][_a-zA-Z0-9]*", - next: "start" - }] + token: "entity.name.function", + regex: "[a-zA-Z][_a-zA-Z0-9]*", + next: "start" + }] }; }; - oop.inherits(DjangoHighlightRules, TextHighlightRules); - -var DjangoHtmlHighlightRules = function() { +var DjangoHtmlHighlightRules = function () { this.$rules = new HtmlHighlightRules().getRules(); - for (var i in this.$rules) { this.$rules[i].unshift({ token: "comment.line", @@ -2545,21 +2331,26 @@ var DjangoHtmlHighlightRules = function() { token: "constant.language", regex: "\\}\\}", next: "start" - }]); + }]); } }; - oop.inherits(DjangoHtmlHighlightRules, HtmlHighlightRules); - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); this.HighlightRules = DjangoHtmlHighlightRules; }; oop.inherits(Mode, HtmlMode); - -(function() { +(function () { this.$id = "ace/mode/django"; + this.snippetFileId = "ace/snippets/django"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/django"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-dockerfile.js b/vendor/assets/javascripts/ace/mode-dockerfile.js index d544b3ad..dc2eb409 100644 --- a/vendor/assets/javascripts/ace/mode-dockerfile.js +++ b/vendor/assets/javascripts/ace/mode-dockerfile.js @@ -1,305 +1,264 @@ -define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set|function|declare|readonly' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { +var reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' + + 'esac|fi|for|if|in|then|until|while|' + + '&|;|export|local|read|typeset|unset|' + + 'elif|select|set|function|declare|readonly'); +var languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' + + 'cd|command|compgen|complete|continue|' + + 'dirs|disown|echo|enable|eval|exec|' + + 'exit|fc|fg|getopts|hash|help|history|' + + 'jobs|kill|let|logout|popd|printf|pushd|' + + 'pwd|return|set|shift|shopt|source|' + + 'suspend|test|times|trap|type|ulimit|' + + 'umask|unalias|wait'); +var ShHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "keyword": reservedKeywords, "support.function.builtin": languageConstructs, "invalid.deprecated": "debugger" }, "identifier"); - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; var fileDescriptor = "(?:&" + intPart + ")"; - var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; var variable = "(?:" + variableName + "(?==))"; - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - var func = "(?:" + variableName + "\\s*\\(\\))"; - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string.start", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$`"\\]|$)/ + "start": [{ + token: "constant", + regex: /\\./ }, { - include : "variables" + token: ["text", "comment"], + regex: /(^|\s)(#.*)$/ }, { - token : "keyword.operator", - regex : /`/ // TODO highlight ` + token: "string.start", + regex: '"', + push: [{ + token: "constant.language.escape", + regex: /\\(?:[$`"\\]|$)/ + }, { + include: "variables" + }, { + token: "keyword.operator", + regex: /`/ // TODO highlight ` + }, { + token: "string.end", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }] }, { - token : "string.end", - regex : '"', + token: "string", + regex: "\\$'", + push: [{ + token: "constant.language.escape", + regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex: "<<<", + token: "keyword.operator" + }, { + stateName: "heredoc", + regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch: function (value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + { type: "constant", value: tokens[1] }, + { type: "text", value: tokens[2] }, + { type: "string", value: tokens[3] }, + { type: "support.class", value: tokens[4] }, + { type: "string", value: tokens[5] } + ]; + }, + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: ["keyword", "text", "text", "text", "variable"], + regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token: "variable.language", + regex: builtinVariable + }, { + token: "variable", + regex: variable + }, { + include: "variables" + }, { + token: "support.function", + regex: func + }, { + token: "support.function", + regex: fileDescriptor + }, { + token: "string", // ' string + start: "'", end: "'" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token: "punctuation.operator", + regex: ";" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]]" + }, { + token: "paren.rparen", + regex: "[\\)\\}]", next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string", - regex : "\\$'", - push : [{ - token : "constant.language.escape", - regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "string", - regex : "'", - next: "pop" - }, { - defaultToken: "string" - }] - }, { - regex : "<<<", - token : "keyword.operator" - }, { - stateName: "heredoc", - regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[4]); - return [ - {type:"constant", value: tokens[1]}, - {type:"text", value: tokens[2]}, - {type:"string", value: tokens[3]}, - {type:"support.class", value: tokens[4]}, - {type:"string", value: tokens[5]} - ]; - }, - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^\t+" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : ["keyword", "text", "text", "text", "variable"], - regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - include : "variables" - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" - }, { - token : "punctuation.operator", - regex : ";" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "paren.rparen", - regex : "[\\)\\}]", - next : "pop" - }], + }], variables: [{ - token : "variable", - regex : /(\$)(\w+)/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\()/, - push : "start" - }, { - token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], - regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, - push : "start" - }, { - token : "variable", - regex : /\$[*@#?\-$!0_]/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\{)/, - push : "start" - }] + token: "variable", + regex: /(\$)(\w+)/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\()/, + push: "start" + }, { + token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push: "start" + }, { + token: "variable", + regex: /\$[*@#?\-$!0_]/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\{)/, + push: "start" + }] }; - this.normalizeRules(); }; - oop.inherits(ShHighlightRules, TextHighlightRules); - exports.ShHighlightRules = ShHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -312,93 +271,80 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; var Range = require("../range").Range; var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ShHighlightRules; this.foldingRules = new CStyleFoldMode(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - - +(function () { this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } } - return indent; }; - var outdents = { "pass": 1, "return": 1, @@ -406,49 +352,38 @@ oop.inherits(Mode, TextMode); "break": 1, "continue": 1 }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { if (input !== "\r\n" && input !== "\r" && input !== "\n") return false; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens) return false; do { var last = tokens.pop(); } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - if (!last) return false; - return (last.type == "keyword" && outdents[last.value]); }; - - this.autoOutdent = function(state, doc, row) { - + this.autoOutdent = function (state, doc, row) { row += 1; var indent = this.$getIndent(doc.getLine(row)); var tab = doc.getTabString(); if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); }; - this.$id = "ace/mode/sh"; + this.snippetFileId = "ace/snippets/sh"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/dockerfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/sh_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/dockerfile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/sh_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; - -var DockerfileHighlightRules = function() { +var DockerfileHighlightRules = function () { ShHighlightRules.call(this); - var startRules = this.$rules.start; for (var i = 0; i < startRules.length; i++) { if (startRules[i].token == "variable.language") { @@ -460,33 +395,33 @@ var DockerfileHighlightRules = function() { break; } } - }; - oop.inherits(DockerfileHighlightRules, ShHighlightRules); - exports.DockerfileHighlightRules = DockerfileHighlightRules; + }); -define("ace/mode/dockerfile",["require","exports","module","ace/lib/oop","ace/mode/sh","ace/mode/dockerfile_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/dockerfile",["require","exports","module","ace/lib/oop","ace/mode/sh","ace/mode/dockerfile_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var ShMode = require("./sh").Mode; var DockerfileHighlightRules = require("./dockerfile_highlight_rules").DockerfileHighlightRules; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { ShMode.call(this); - this.HighlightRules = DockerfileHighlightRules; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, ShMode); - -(function() { +(function () { this.$id = "ace/mode/dockerfile"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/dockerfile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-dot.js b/vendor/assets/javascripts/ace/mode-dot.js index ae5b8504..169d344c 100644 --- a/vendor/assets/javascripts/ace/mode-dot.js +++ b/vendor/assets/javascripts/ace/mode-dot.js @@ -1,152 +1,122 @@ -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/dot_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/dot_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - -var DotHighlightRules = function() { - - var keywords = lang.arrayToMap( - ("strict|node|edge|graph|digraph|subgraph").split("|") - ); - - var attributes = lang.arrayToMap( - ("damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z").split("|") - ); - - this.$rules = { - "start" : [ +var DotHighlightRules = function () { + var keywords = lang.arrayToMap(("strict|node|edge|graph|digraph|subgraph").split("|")); + var attributes = lang.arrayToMap(("damping|k|url|area|arrowhead|arrowsize|arrowtail|aspect|bb|bgcolor|center|charset|clusterrank|color|colorscheme|comment|compound|concentrate|constraint|decorate|defaultdist|dim|dimen|dir|diredgeconstraints|distortion|dpi|edgeurl|edgehref|edgetarget|edgetooltip|epsilon|esep|fillcolor|fixedsize|fontcolor|fontname|fontnames|fontpath|fontsize|forcelabels|gradientangle|group|headurl|head_lp|headclip|headhref|headlabel|headport|headtarget|headtooltip|height|href|id|image|imagepath|imagescale|label|labelurl|label_scheme|labelangle|labeldistance|labelfloat|labelfontcolor|labelfontname|labelfontsize|labelhref|labeljust|labelloc|labeltarget|labeltooltip|landscape|layer|layerlistsep|layers|layerselect|layersep|layout|len|levels|levelsgap|lhead|lheight|lp|ltail|lwidth|margin|maxiter|mclimit|mindist|minlen|mode|model|mosek|nodesep|nojustify|normalize|nslimit|nslimit1|ordering|orientation|outputorder|overlap|overlap_scaling|pack|packmode|pad|page|pagedir|pencolor|penwidth|peripheries|pin|pos|quadtree|quantum|rank|rankdir|ranksep|ratio|rects|regular|remincross|repulsiveforce|resolution|root|rotate|rotation|samehead|sametail|samplepoints|scale|searchsize|sep|shape|shapefile|showboxes|sides|size|skew|smoothing|sortv|splines|start|style|stylesheet|tailurl|tail_lp|tailclip|tailhref|taillabel|tailport|tailtarget|tailtooltip|target|tooltip|truecolor|vertices|viewport|voro_margin|weight|width|xlabel|xlp|z").split("|")); + this.$rules = { + "start": [ { - token : "comment", - regex : /\/\/.*$/ + token: "comment", + regex: /\/\/.*$/ }, { - token : "comment", - regex : /#.*$/ + token: "comment", + regex: /#.*$/ }, { - token : "comment", // multi line comment - merge : true, - regex : /\/\*/, - next : "comment" + token: "comment", // multi line comment + merge: true, + regex: /\/\*/, + next: "comment" }, { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", - regex : /[+\-]?\d+(?:(?:\.\d*)?(?:[eE][+\-]?\d+)?)?\b/ + token: "constant.numeric", + regex: /[+\-]?\d+(?:(?:\.\d*)?(?:[eE][+\-]?\d+)?)?\b/ }, { - token : "keyword.operator", - regex : /\+|=|\->/ + token: "keyword.operator", + regex: /\+|=|\->/ }, { - token : "punctuation.operator", - regex : /,|;/ + token: "punctuation.operator", + regex: /,|;/ }, { - token : "paren.lparen", - regex : /[\[{]/ + token: "paren.lparen", + regex: /[\[{]/ }, { - token : "paren.rparen", - regex : /[\]}]/ + token: "paren.rparen", + regex: /[\]}]/ }, { token: "comment", regex: /^#!.*$/ }, { - token: function(value) { + token: function (value) { if (keywords.hasOwnProperty(value.toLowerCase())) { return "keyword"; } @@ -158,143 +128,117 @@ var DotHighlightRules = function() { } }, regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" } ], - "qqstring" : [ + "comment": [ { - token : "string", - regex : '[^"\\\\]+', - merge : true + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - token : "string", - regex : "\\\\$", - next : "qqstring", - merge : true - }, { - token : "string", - regex : '"|$', - next : "start", - merge : true + defaultToken: "comment" } ], - "qstring" : [ + "qqstring": [ { - token : "string", - regex : "[^'\\\\]+", - merge : true + token: "string", + regex: '[^"\\\\]+', + merge: true }, { - token : "string", - regex : "\\\\$", - next : "qstring", - merge : true + token: "string", + regex: "\\\\$", + next: "qqstring", + merge: true }, { - token : "string", - regex : "'|$", - next : "start", - merge : true + token: "string", + regex: '"|$', + next: "start", + merge: true + } + ], + "qstring": [ + { + token: "string", + regex: "[^'\\\\]+", + merge: true + }, { + token: "string", + regex: "\\\\$", + next: "qstring", + merge: true + }, { + token: "string", + regex: "'|$", + next: "start", + merge: true } ] - }; + }; }; - oop.inherits(DotHighlightRules, TextHighlightRules); - exports.DotHighlightRules = DotHighlightRules; }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -307,104 +251,98 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/dot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matching_brace_outdent","ace/mode/dot_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/dot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matching_brace_outdent","ace/mode/dot_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var DotHighlightRules = require("./dot_highlight_rules").DotHighlightRules; var DotFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = DotHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new DotFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ["//", "#"]; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/dot"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/dot"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-drools.js b/vendor/assets/javascripts/ace/mode-drools.js index 1492c12e..a0959d54 100644 --- a/vendor/assets/javascripts/ace/mode-drools.js +++ b/vendor/assets/javascripts/ace/mode-drools.js @@ -1,187 +1,308 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaHighlightRules = function() { - var keywords = ( - "abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "const|float|native|super|while" - ); - +var JavaHighlightRules = function () { + var identifierRe = "[a-zA-Z_$][a-zA-Z0-9_$]*"; + var keywords = ("abstract|continue|for|new|switch|" + + "assert|default|goto|package|synchronized|" + + "boolean|do|if|private|this|" + + "break|double|implements|protected|throw|" + + "byte|else|import|public|throws|" + + "case|enum|instanceof|return|transient|" + + "catch|extends|int|short|try|" + + "char|final|interface|static|void|" + + "class|finally|long|strictfp|volatile|" + + "const|float|native|super|while|" + + "var|exports|opens|requires|uses|yield|" + + "module|permits|(?:non\\-)?sealed|var|" + + "provides|to|when|" + + "open|record|transitive|with"); var buildinConstants = ("null|Infinity|NaN|undefined"); - - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - + var langClasses = ("AbstractMethodError|AssertionError|ClassCircularityError|" + + "ClassFormatError|Deprecated|EnumConstantNotPresentException|" + + "ExceptionInInitializerError|IllegalAccessError|" + + "IllegalThreadStateException|InstantiationError|InternalError|" + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|" + + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|" + + "SuppressWarnings|TypeNotPresentException|UnknownError|" + + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|" + + "InstantiationException|IndexOutOfBoundsException|" + + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|" + + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|" + + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|" + + "InterruptedException|NoSuchMethodException|IllegalAccessException|" + + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|" + + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|" + + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|" + + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|" + + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|" + + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|" + + "StackOverflowError|OutOfMemoryError|VirtualMachineError|" + + "ArrayStoreException|ClassCastException|LinkageError|" + + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|" + + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|" + + "Cloneable|Class|CharSequence|Comparable|String|Object"); var keywordMapper = this.createKeywordMapper({ "variable.language": "this", - "keyword": keywords, "constant.language": buildinConstants, "support.function": langClasses }, "identifier"); - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment", + regex: "\\/\\/.*$" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, + { include: "multiline-strings" }, + { include: "strings" }, + { include: "constants" }, + { + regex: "(open(?:\\s+))?module(?=\\s*\\w)", + token: "keyword", + next: [{ + regex: "{", + token: "paren.lparen", + next: [{ + regex: "}", + token: "paren.rparen", + next: "start" + }, { + regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b", + token: "keyword" + }] + }, { + token: "text", + regex: "\\s+" + }, { + token: "identifier", + regex: "\\w+" + }, { + token: "punctuation.operator", + regex: "." + }, { + token: "text", + regex: "\\s+" + }, { + regex: "", // exit if there is anything else + next: "start" + }] + }, + { include: "statements" } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + defaultToken: "comment" } ], - "comment" : [ + "strings": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: ["punctuation", "string"], + regex: /(\.)(")/, + push: [ + { + token: "lparen", + regex: /\\\{/, + push: [ + { + token: "text", + regex: /$/, + next: "start" + }, { + token: "rparen", + regex: /}/, + next: "pop" + }, { + include: "strings" + }, { + include: "constants" + }, { + include: "statements" + } + ] + }, { + token: "string", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + } + ] }, { - defaultToken : "comment" + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + } + ], + "multiline-strings": [ + { + token: ["punctuation", "string"], + regex: /(\.)(""")/, + push: [ + { + token: "string", + regex: '"""', + next: "pop" + }, { + token: "lparen", + regex: /\\\{/, + push: [ + { + token: "text", + regex: /$/, + next: "start" + }, { + token: "rparen", + regex: /}/, + next: "pop" + }, { + include: "multiline-strings" + }, { + include: "strings" + }, { + include: "constants" + }, { + include: "statements" + } + ] + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + defaultToken: "string" + } + ] + }, + { + token: "string", + regex: '"""', + push: [ + { + token: "string", + regex: '"""', + next: "pop" + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + defaultToken: "string" + } + ] + } + ], + "constants": [ + { + token: "constant.numeric", // hex + regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token: "constant.numeric", // float + regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + } + ], + "statements": [ + { + token: ["keyword", "text", "identifier"], + regex: "(record)(\\s+)(" + identifierRe + ")\\b" + }, + { + token: "keyword", + regex: "(?:" + keywords + ")\\b" + }, { + token: "storage.type.annotation", + regex: "@" + identifierRe + "\\b" + }, { + token: "entity.name.function", + regex: identifierRe + "(?=\\()" + }, { + token: keywordMapper, // TODO: Unicode escape sequences + regex: identifierRe + "\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); }; - oop.inherits(JavaHighlightRules, TextHighlightRules); - exports.JavaHighlightRules = JavaHighlightRules; + }); -define("ace/mode/drools_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/java_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/drools_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/java_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; var packageIdentifierRe = "[a-zA-Z\\$_\u00a1-\uffff][\\.a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var DroolsHighlightRules = function() { - +var DroolsHighlightRules = function () { var keywords = ("date|effective|expires|lock|on|active|no|loop|auto|focus" + "|activation|group|agenda|ruleflow|duration|timer|calendars|refract|direct" + "|dialect|salience|enabled|attributes|extends|template" + @@ -191,222 +312,201 @@ var DroolsHighlightRules = function() { "|int|long|float|double|this|void|class|new|case|final|if|else|for|while|do" + "|default|try|catch|finally|switch|synchronized|return|throw|break|continue|assert" + "|modify|static|public|protected|private|abstract|native|transient|volatile" + - "|strictfp|throws|interface|enum|implements|type|window|trait|no-loop|str" - ); - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - + "|strictfp|throws|interface|enum|implements|type|window|trait|no-loop|str"); + var langClasses = ("AbstractMethodError|AssertionError|ClassCircularityError|" + + "ClassFormatError|Deprecated|EnumConstantNotPresentException|" + + "ExceptionInInitializerError|IllegalAccessError|" + + "IllegalThreadStateException|InstantiationError|InternalError|" + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|" + + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|" + + "SuppressWarnings|TypeNotPresentException|UnknownError|" + + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|" + + "InstantiationException|IndexOutOfBoundsException|" + + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|" + + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|" + + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|" + + "InterruptedException|NoSuchMethodException|IllegalAccessException|" + + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|" + + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|" + + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|" + + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|" + + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|" + + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|" + + "StackOverflowError|OutOfMemoryError|VirtualMachineError|" + + "ArrayStoreException|ClassCastException|LinkageError|" + + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|" + + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|" + + "Cloneable|Class|CharSequence|Comparable|String|Object"); var keywordMapper = this.createKeywordMapper({ "variable.language": "this", "keyword": keywords, "constant.language": "null", - "support.class" : langClasses, - "support.function" : "retract|update|modify|insert" + "support.class": langClasses, + "support.function": "retract|update|modify|insert" }, "identifier"); - - var stringRules = function() { - return [{ - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }]; - }; - - - var basicPreRules = function(blockCommentRules) { + var stringRules = function () { return [{ - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : blockCommentRules - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }]; - }; - - var blockCommentRules = function(returnRule) { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }]; + }; + var basicPreRules = function (blockCommentRules) { + return [{ + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: blockCommentRules + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }]; + }; + var blockCommentRules = function (returnRule) { return [ { - token : "comment.block", // closing comment - regex : "\\*\\/", - next : returnRule + token: "comment.block", // closing comment + regex: "\\*\\/", + next: returnRule }, { - defaultToken : "comment.block" + defaultToken: "comment.block" } ]; - }; - - var basicPostRules = function() { + }; + var basicPostRules = function () { return [{ - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }]; - }; - - + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }]; + }; this.$rules = { - "start" : [].concat(basicPreRules("block.comment"), [ - { - token : "entity.name.type", - regex : "@[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : ["keyword","text","entity.name.type"], - regex : "(package)(\\s+)(" + packageIdentifierRe +")" - }, { - token : ["keyword","text","keyword","text","entity.name.type"], - regex : "(import)(\\s+)(function)(\\s+)(" + packageIdentifierRe +")" - }, { - token : ["keyword","text","entity.name.type"], - regex : "(import)(\\s+)(" + packageIdentifierRe +")" - }, { - token : ["keyword","text","entity.name.type","text","variable"], - regex : "(global)(\\s+)(" + packageIdentifierRe +")(\\s+)(" + identifierRe +")" - }, { - token : ["keyword","text","keyword","text","entity.name.type"], - regex : "(declare)(\\s+)(trait)(\\s+)(" + identifierRe +")" - }, { - token : ["keyword","text","entity.name.type"], - regex : "(declare)(\\s+)(" + identifierRe +")" - }, { - token : ["keyword","text","entity.name.type"], - regex : "(extends)(\\s+)(" + packageIdentifierRe +")" - }, { - token : ["keyword","text"], - regex : "(rule)(\\s+)", - next : "asset.name" - }], - stringRules(), - [{ - token : ["variable.other","text","text"], - regex : "(" + identifierRe + ")(\\s*)(:)" - }, { - token : ["keyword","text"], - regex : "(query)(\\s+)", - next : "asset.name" - }, { - token : ["keyword","text"], - regex : "(when)(\\s*)" - }, { - token : ["keyword","text"], - regex : "(then)(\\s*)", - next : "java-start" - }, { - token : "paren.lparen", - regex : /[\[({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }], basicPostRules()), - "block.comment" : blockCommentRules("start"), - "asset.name" : [ + "start": [].concat(basicPreRules("block.comment"), [ { - token : "entity.name", - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "entity.name.type", + regex: "@[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "entity.name", - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: ["keyword", "text", "entity.name.type"], + regex: "(package)(\\s+)(" + packageIdentifierRe + ")" }, { - token : "entity.name", - regex : identifierRe + token: ["keyword", "text", "keyword", "text", "entity.name.type"], + regex: "(import)(\\s+)(function)(\\s+)(" + packageIdentifierRe + ")" + }, { + token: ["keyword", "text", "entity.name.type"], + regex: "(import)(\\s+)(" + packageIdentifierRe + ")" + }, { + token: ["keyword", "text", "entity.name.type", "text", "variable"], + regex: "(global)(\\s+)(" + packageIdentifierRe + ")(\\s+)(" + identifierRe + ")" + }, { + token: ["keyword", "text", "keyword", "text", "entity.name.type"], + regex: "(declare)(\\s+)(trait)(\\s+)(" + identifierRe + ")" + }, { + token: ["keyword", "text", "entity.name.type"], + regex: "(declare)(\\s+)(" + identifierRe + ")" + }, { + token: ["keyword", "text", "entity.name.type"], + regex: "(extends)(\\s+)(" + packageIdentifierRe + ")" + }, { + token: ["keyword", "text"], + regex: "(rule)(\\s+)", + next: "asset.name" + } + ], stringRules(), [{ + token: ["variable.other", "text", "text"], + regex: "(" + identifierRe + ")(\\s*)(:)" + }, { + token: ["keyword", "text"], + regex: "(query)(\\s+)", + next: "asset.name" + }, { + token: ["keyword", "text"], + regex: "(when)(\\s*)" + }, { + token: ["keyword", "text"], + regex: "(then)(\\s*)", + next: "java-start" + }, { + token: "paren.lparen", + regex: /[\[({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + }], basicPostRules()), + "block.comment": blockCommentRules("start"), + "asset.name": [ + { + token: "entity.name", + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "entity.name", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "entity.name", + regex: identifierRe }, { regex: "", token: "empty", next: "start" - }] + } + ] }; - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.embedRules(JavaHighlightRules, "java-", [ - { - token : "support.function", - regex: "\\b(insert|modify|retract|update)\\b" - }, { - token : "keyword", - regex: "\\bend\\b", - next : "start" - }]); - + { + token: "support.function", + regex: "\\b(insert|modify|retract|update)\\b" + }, { + token: "keyword", + regex: "\\bend\\b", + next: "start" + } + ]); }; - oop.inherits(DroolsHighlightRules, TextHighlightRules); - exports.DroolsHighlightRules = DroolsHighlightRules; + }); -define("ace/mode/folding/drools",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/drools",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; var TokenIterator = require("../../token_iterator").TokenIterator; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.foldingStartMarker = /\b(rule|declare|query|when|then)\b/; +(function () { + this.foldingStartMarker = /\b(rule|declare|query|when|then)\b/; this.foldingStopMarker = /\bend\b/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.getLine(row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) { - var position = {row: row, column: line.length}; + var position = { row: row, column: line.length }; var iterator = new TokenIterator(session, position.row, position.column); var seek = "end"; var token = iterator.getCurrentToken(); @@ -414,8 +514,8 @@ oop.inherits(FoldMode, BaseFoldMode); seek = "then"; } while (token) { - if (token.value == seek) { - return Range.fromPoints(position ,{ + if (token.value == seek) { + return Range.fromPoints(position, { row: iterator.getCurrentTokenRow(), column: iterator.getCurrentTokenColumn() }); @@ -423,35 +523,35 @@ oop.inherits(FoldMode, BaseFoldMode); token = iterator.stepForward(); } } - } }; - }).call(FoldMode.prototype); }); -define("ace/mode/drools",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/drools_highlight_rules","ace/mode/folding/drools"], function(require, exports, module) { -"use strict"; - +define("ace/mode/drools",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/drools_highlight_rules","ace/mode/folding/drools"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var DroolsHighlightRules = require("./drools_highlight_rules").DroolsHighlightRules; var DroolsFoldMode = require("./folding/drools").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = DroolsHighlightRules; this.foldingRules = new DroolsFoldMode(); this.$behaviour = this.$defaultBehaviour; - }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; this.$id = "ace/mode/drools"; + this.snippetFileId = "ace/snippets/drools"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/drools"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-edifact.js b/vendor/assets/javascripts/ace/mode-edifact.js new file mode 100644 index 00000000..e61957f0 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-edifact.js @@ -0,0 +1,130 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +define("ace/mode/edifact_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var EdifactHighlightRules = function () { + var header = ("UNH"); + var segment = ("ADR|AGR|AJT|ALC|ALI|APP|APR|ARD|ARR|ASI|ATT|AUT|" + + "BAS|BGM|BII|BUS|" + + "CAV|CCD|CCI|CDI|CDS|CDV|CED|CIN|CLA|CLI|CMP|CNI|CNT|COD|COM|COT|CPI|CPS|CPT|CST|CTA|CUX|" + + "DAM|DFN|DGS|DII|DIM|DLI|DLM|DMS|DOC|DRD|DSG|DSI|DTM|" + + "EDT|EFI|ELM|ELU|ELV|EMP|EQA|EQD|EQN|ERC|ERP|EVE|FCA|FII|FNS|FNT|FOR|FSQ|FTX|" + + "GDS|GEI|GID|GIN|GIR|GOR|GPO|GRU|HAN|HYN|ICD|IDE|IFD|IHC|IMD|IND|INP|INV|IRQ|" + + "LAN|LIN|LOC|MEA|MEM|MKS|MOA|MSG|MTD|NAD|NAT|" + + "PAC|PAI|PAS|PCC|PCD|PCI|PDI|PER|PGI|PIA|PNA|POC|PRC|PRI|PRV|PSD|PTY|PYT|" + + "QRS|QTY|QUA|QVR|" + + "RCS|REL|RFF|RJL|RNG|ROD|RSL|RTE|" + + "SAL|SCC|SCD|SEG|SEL|SEQ|SFI|SGP|SGU|SPR|SPS|STA|STC|STG|STS|" + + "TAX|TCC|TDT|TEM|TMD|TMP|TOD|TPL|TRU|TSR|" + + "UNB|UNZ|UNT|UGH|UGT|UNS|" + + "VLI"); + var header = ("UNH"); + var buildinConstants = ("null|Infinity|NaN|undefined"); + var langClasses = (""); + var keywords = ("BY|SE|ON|INV|JP|UNOA"); + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "entity.name.segment": segment, + "entity.name.header": header, + "constant.language": buildinConstants, + "support.function": langClasses + }, "identifier"); + this.$rules = { + "start": [ + { + token: "punctuation.operator", + regex: "\\+.\\+" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+" + }, { + token: "punctuation.operator", + regex: "\\:|'" + }, { + token: "identifier", + regex: "\\:D\\:" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +EdifactHighlightRules.metaData = { fileTypes: ['edi'], + keyEquivalent: '^~E', + name: 'Edifact', + scopeName: 'source.edifact' }; +oop.inherits(EdifactHighlightRules, TextHighlightRules); +exports.EdifactHighlightRules = EdifactHighlightRules; + +}); + +define("ace/mode/edifact",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/edifact_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var EdifactHighlightRules = require("./edifact_highlight_rules").EdifactHighlightRules; +var Mode = function () { + this.HighlightRules = EdifactHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/edifact"; + this.snippetFileId = "ace/snippets/edifact"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/edifact"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-eiffel.js b/vendor/assets/javascripts/ace/mode-eiffel.js index c113f78f..25914580 100644 --- a/vendor/assets/javascripts/ace/mode-eiffel.js +++ b/vendor/assets/javascripts/ace/mode-eiffel.js @@ -1,25 +1,17 @@ -define("ace/mode/eiffel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/eiffel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var EiffelHighlightRules = function() { +var EiffelHighlightRules = function () { var keywords = "across|agent|alias|all|attached|as|assign|attribute|check|" + "class|convert|create|debug|deferred|detachable|do|else|elseif|end|" + "ensure|expanded|export|external|feature|from|frozen|if|inherit|" + "inspect|invariant|like|local|loop|not|note|obsolete|old|once|" + "Precursor|redefine|rename|require|rescue|retry|select|separate|" + "some|then|undefine|until|variant|when"; - var operatorKeywords = "and|implies|or|xor"; - var languageConstants = "Void"; - var booleanConstants = "True|False"; - var languageVariables = "Current|Result"; - var keywordMapper = this.createKeywordMapper({ "constant.language": languageConstants, "constant.language.boolean": booleanConstants, @@ -27,102 +19,102 @@ var EiffelHighlightRules = function() { "keyword.operator": operatorKeywords, "keyword": keywords }, "identifier", true); - var simpleString = /(?:[^"%\b\f\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)+?/; - this.$rules = { "start": [{ - token : "string.quoted.other", // Aligned-verbatim-strings (verbatim option not supported) - regex : /"\[/, + token: "string.quoted.other", // Aligned-verbatim-strings (verbatim option not supported) + regex: /"\[/, next: "aligned_verbatim_string" }, { - token : "string.quoted.other", // Non-aligned-verbatim-strings (verbatim option not supported) - regex : /"\{/, + token: "string.quoted.other", // Non-aligned-verbatim-strings (verbatim option not supported) + regex: /"\{/, next: "non-aligned_verbatim_string" }, { - token : "string.quoted.double", - regex : /"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/ + token: "string.quoted.double", + regex: /"(?:[^%\b\f\n\r\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)*?"/ }, { - token : "comment.line.double-dash", - regex : /--.*/ + token: "comment.line.double-dash", + regex: /--.*/ }, { - token : "constant.character", - regex : /'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/ + token: "constant.character", + regex: /'(?:[^%\b\f\n\r\t\v]|%[A-DFHLNQR-V%'"()<>]|%\/(?:0[xX][\da-fA-F](?:_*[\da-fA-F])*|0[cC][0-7](?:_*[0-7])*|0[bB][01](?:_*[01])*|\d(?:_*\d)*)\/)'/ }, { - token : "constant.numeric", // hexa | octal | bin - regex : /\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/ + token: "constant.numeric", // hexa | octal | bin + regex: /\b0(?:[xX][\da-fA-F](?:_*[\da-fA-F])*|[cC][0-7](?:_*[0-7])*|[bB][01](?:_*[01])*)\b/ }, { - token : "constant.numeric", - regex : /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/ + token: "constant.numeric", + regex: /(?:\d(?:_*\d)*)?\.(?:(?:\d(?:_*\d)*)?[eE][+-]?)?\d(?:_*\d)*|\d(?:_*\d)*\.?/ }, { - token : "paren.lparen", - regex : /[\[({]|<<|\|\(/ + token: "paren.lparen", + regex: /[\[({]|<<|\|\(/ }, { - token : "paren.rparen", - regex : /[\])}]|>>|\|\)/ + token: "paren.rparen", + regex: /[\])}]|>>|\|\)/ }, { - token : "keyword.operator", // punctuation - regex : /:=|->|\.(?=\w)|[;,:?]/ + token: "keyword.operator", // punctuation + regex: /:=|->|\.(?=\w)|[;,:?]/ }, { - token : "keyword.operator", - regex : /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/ + token: "keyword.operator", + regex: /\\\\|\|\.\.\||\.\.|\/[~\/]?|[><\/]=?|[-+*^=~]/ }, { - token : function (v) { + token: function (v) { var result = keywordMapper(v); if (result === "identifier" && v === v.toUpperCase()) { - result = "entity.name.type"; + result = "entity.name.type"; } return result; }, - regex : /[a-zA-Z][a-zA-Z\d_]*\b/ + regex: /[a-zA-Z][a-zA-Z\d_]*\b/ }, { - token : "text", - regex : /\s+/ + token: "text", + regex: /\s+/ } ], - "aligned_verbatim_string" : [{ - token : "string", - regex : /]"/, - next : "start" + "aligned_verbatim_string": [{ + token: "string", + regex: /]"/, + next: "start" }, { - token : "string", - regex : simpleString + token: "string", + regex: simpleString } ], - "non-aligned_verbatim_string" : [{ - token : "string.quoted.other", - regex : /}"/, - next : "start" + "non-aligned_verbatim_string": [{ + token: "string.quoted.other", + regex: /}"/, + next: "start" }, { - token : "string.quoted.other", - regex : simpleString + token: "string.quoted.other", + regex: simpleString } - ]}; + ] + }; }; - oop.inherits(EiffelHighlightRules, TextHighlightRules); - exports.EiffelHighlightRules = EiffelHighlightRules; + }); -define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var EiffelHighlightRules = require("./eiffel_highlight_rules").EiffelHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = EiffelHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; this.$id = "ace/mode/eiffel"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/eiffel"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-ejs.js b/vendor/assets/javascripts/ace/mode-ejs.js index 558fc82c..887597e8 100644 --- a/vendor/assets/javascripts/ace/mode-ejs.js +++ b/vendor/assets/javascripts/ace/mode-ejs.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,260 +18,317 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -284,142 +336,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -434,9 +486,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -452,13 +504,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -491,13 +543,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -507,44 +593,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -559,40 +663,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -600,7 +724,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -610,14 +735,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -1133,54 +1192,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -1188,39 +1245,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -1232,108 +1285,98 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1346,113 +1389,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1464,20 +1487,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1491,36 +1513,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1529,8 +1559,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1538,75 +1567,57 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,110 +2225,105 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" + token: "constant.other.symbol.ruby", // symbol + regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" }; - -var qString = exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" +exports.qString = { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }; - -var qqString = exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' +exports.qqString = { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }; - -var tString = exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" +exports.tString = { + token: "string", // backtick string + regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" }; - var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" +}; +var constantNumericBinary = exports.constantNumericBinary = { + token: "constant.numeric", + regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ +}; +var constantNumericDecimal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ +}; +var constantNumericOctal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ +}; +var constantNumericRational = exports.constantNumericRational = { + token: "constant.numeric", //rational + complex + regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ +}; +var constantNumericComplex = exports.constantNumericComplex = { + token: "constant.numeric", //simple complex numbers + regex: /\b([\d]i)\b/ }; - var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + complex + regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" }; - var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" + token: "variable.instance", // instance variable + regex: "@{1,2}[a-zA-Z_\\d]+" }; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + +var RubyHighlightRules = function () { + var builtinFunctions = ("abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + @@ -2551,25 +2352,15 @@ var RubyHighlightRules = function() { "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + + "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + + "private_class_method|remove_method|undef_method"); + var keywords = ("alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - + "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"); + var buildinConstants = ("true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + + "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"); + var builtinVariables = ("$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + + "$!|root_url|flash|session|cookies|params|request|response|logger|self"); var keywordMapper = this.$keywords = this.createKeywordMapper({ "keyword": keywords, "constant.language": buildinConstants, @@ -2577,341 +2368,766 @@ var RubyHighlightRules = function() { "support.function": builtinFunctions, "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? }, "identifier"); - + var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; + var closeParen = { + "(": ")", + "[": "]", + "{": "}", + "<": ">", + "^": "^", + "|": "|", + "%": "%" + }; this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "comment", // multi line comment - regex : "^=begin(?:$|\\s.*$)", - next : "comment" + token: "comment.multiline", // multi line comment + regex: "^=begin(?=$|\\s.*$)", + next: "comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: /[/](?=.*\/)/, + next: "regex" }, - [{ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren.lparen"; + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(")/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(')/, + push: [{ + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "string.end", + regex: /'/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithoutInterpolation"; + return this.token; } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1) - return "paren.end"; + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithInterpolation"; + return this.token; } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.start", - regex : /"/, - push : [{ - token : "constant.language.escape", - regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ }, { - token : "paren.start", - regex : /#{/, - push : "start" + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithoutInterpolation"; + return this.token; + } }, { - token : "string.end", - regex : /"/, - next : "pop" + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithInterpolation"; + return this.token; + } }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ - }, { - token : "paren.start", - regex : /#{/, - push : "start" - }, { - token : "string.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : /'/, - push : [{ - token : "constant.language.escape", - regex : /\\['\\]/ - }, { - token : "string.end", - regex : /'/, - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "string.regexp", + regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "rState"; + return this.token; + } + }], { - token : "text", // namespaces aren't symbols - regex : "::" - }, { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" - }, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" + token: "punctuation", // namespaces aren't symbols + regex: "::" }, - + instanceVariable, + { + token: "variable.global", // global variable + regex: "[$][a-zA-Z_\\d]+" + }, { + token: "support.class", // class name + regex: "[A-Z][a-zA-Z_\\d]*" + }, { + token: ["punctuation.operator", "support.function"], + regex: /(\.)([a-zA-Z_\d]+)(?=\()/ + }, { + token: ["punctuation.operator", "identifier"], + regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ + }, { + token: "string.character", + regex: "\\B\\?(?:" + escapedChars + "|\\S)" + }, { + token: "punctuation.operator", + regex: /\?(?=.+:)/ + }, + constantNumericRational, + constantNumericComplex, constantOtherSymbol, constantNumericHex, constantNumericFloat, - + constantNumericBinary, + constantNumericDecimal, + constantNumericOctal, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "punctuation.separator.key-value", - regex : "=>" + token: "punctuation.separator.key-value", + regex: "=>" }, { stateName: "heredoc", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + onMatch: function (value, currentState, stack) { + var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; var tokens = value.split(this.splitRegex); stack.push(next, tokens[3]); return [ - {type:"constant", value: tokens[1]}, - {type:"string", value: tokens[2]}, - {type:"support.class", value: tokens[3]}, - {type:"string", value: tokens[4]} + { type: "constant", value: tokens[1] }, + { type: "string", value: tokens[2] }, + { type: "support.class", value: tokens[3] }, + { type: "string", value: tokens[4] } ]; }, - regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", + regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", rules: { heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] + token: "string", + regex: "^ +" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] } }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { + regex: "$", + token: "empty", + next: function (currentState, stack) { if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") return stack[0]; return currentState; } }, { - token : "string.character", - regex : "\\B\\?." + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]", + onMatch: function (value, currentState, stack) { + this.next = ''; + if (value == "}" && stack.length > 1 && stack[1] != "start") { + stack.shift(); + this.next = stack.shift(); + } + return this.token; + } }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "text", + regex: "\\s+" }, { - token : "text", - regex : "\\s+" + token: "punctuation.operator", + regex: /[?:,;.]/ } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "^=end(?:$|\\s.*$)", - next : "start" + token: "comment.multiline", // closing comment + regex: "^=end(?=$|\\s.*$)", + next: "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + token: "comment", // comment spanning whole line + regex: ".+" + } + ], + "qStateWithInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "qStateWithoutInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "sStateWithoutInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "sStateWithInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "rState": [{ + token: "string.regexp", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.language.escape"; + } + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.regexp", + regex: /\// + }, { + token: "string.regexp", + regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { + if (stack.length && val[0] === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.language.escape"; + } + }, + { include: "regex" }, + { + defaultToken: "string.regexp" + }], + "regex": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "constant.language.escape", + regex: /\\[AGbBzZ]/ + }, { + token: "constant.language.escape", + regex: /\\g<[a-zA-Z0-9]*>/ + }, { + token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], + regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ + }, { + token: ["constant.language.escape", "invalid", "constant.language.escape"], + regex: /(\\p{\^?)([^/]*)(})/ + }, { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: /[/][imxouesn]*/, + next: "start" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "regexp.keyword", + regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + push: "regex_character_class" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: /&?&?\[\^?/, + push: "regex_character_class" + }, { + token: "constant.language.escape", + regex: "]", + next: "pop" + }, { + token: "constant.language.escape", + regex: "-" + }, { + defaultToken: "string.regexp.characterclass" } ] }; - this.normalizeRules(); }; - oop.inherits(RubyHighlightRules, TextHighlightRules); - exports.RubyHighlightRules = RubyHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var TokenIterator = require("../../token_iterator").TokenIterator; +var FoldMode = exports.FoldMode = function () { +}; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } +(function () { + this.indentKeywords = { + "class": 1, + "def": 1, + "module": 1, + "do": 1, + "unless": 1, + "if": 1, + "while": 1, + "for": 1, + "until": 1, + "begin": 1, + "else": 0, + "elsif": 0, + "rescue": 0, + "ensure": 0, + "when": 0, + "end": -1, + "case": 1, + "=begin": 1, + "=end": -1 }; - this.getFoldWidget = function(session, foldStyle, row) { + this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; + this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart && !isEnd) { + var match = line.match(this.foldingStartMarker); + if (match[1]) { + if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { + if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { + return; + } + if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { + return; + } + } + if (match[1] == "when") { + if (/\sthen\s/.test(line) === true) { + return; + } + } + if (session.getTokenAt(row, match.index + 2).type === "keyword") + return "start"; + } + else if (match[3]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "start"; + } + else { return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; + } + if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) + return ""; + var match = line.match(this.foldingStopMarker); + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return "end"; + } + else if (match[1]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "end"; + } + else + return "end"; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.doc.getLine(row); + var match = this.foldingStartMarker.exec(line); + if (match) { + if (match[1] || match[3]) + return this.rubyBlock(session, row, match.index + 2); + return this.openingBracketBlock(session, "{", row, match.index); + } + var match = this.foldingStopMarker.exec(line); + if (match) { + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return this.rubyBlock(session, row, match.index + 1); + } + if (match[1] === "=end") { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return this.rubyBlock(session, row, match.index + 1); + } + return this.closingBracketBlock(session, "}", row, match.index + match[0].length); + } + }; + this.rubyBlock = function (session, row, column, tokenRange) { + var stream = new TokenIterator(session, row, column); + var token = stream.getCurrentToken(); + if (!token || (token.type != "keyword" && token.type != "comment.multiline")) + return; + var val = token.value; + var line = session.getLine(row); + switch (token.value) { + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + return; + } + var dir = this.indentKeywords[val]; + break; + case "when": + if (/\sthen\s/.test(line)) { + return; + } + case "elsif": + case "rescue": + case "ensure": + var dir = 1; + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line)) { + return; + } + var dir = 1; + break; + default: + var dir = this.indentKeywords[val]; + break; + } + var stack = [val]; + if (!dir) + return; + var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; + var startRow = row; + var ranges = []; + ranges.push(stream.getCurrentTokenRange()); + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + if (token.type == "comment.multiline") { + while (token = stream.step()) { + if (token.type !== "comment.multiline") + continue; + if (dir == 1) { + startColumn = 6; + if (token.value == "=end") { + break; + } + } + else { + if (token.value == "=begin") { + break; + } + } } } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; + else { + while (token = stream.step()) { + var ignore = false; + if (token.type !== "keyword") + continue; + var level = dir * this.indentKeywords[token.value]; + line = session.getLine(stream.getCurrentTokenRow()); + switch (token.value) { + case "do": + for (var i = stream.$tokenIndex - 1; i >= 0; i--) { + var prevToken = stream.$rowTokens[i]; + if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { + level = 0; + break; + } + } + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + level = 0; + ignore = true; + } + break; + case "when": + if (/\sthen\s/.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + } + if (level > 0) { + stack.unshift(token.value); + } + else if (level <= 0 && ignore === false) { + stack.shift(); + if (!stack.length) { + if ((val == "while" || val == "until" || val == "for") && token.value != "do") { + break; + } + if (token.value == "do" && dir == -1 && level != 0) + break; + if (token.value != "do") + break; + } + if (level === 0) { + stack.unshift(token.value); + } + } + } + } + if (!token) + return null; + if (tokenRange) { + ranges.push(stream.getCurrentTokenRange()); + return ranges; + } + var row = stream.getCurrentTokenRow(); + if (dir === -1) { + if (token.type === "comment.multiline") { + var endColumn = 6; + } + else { + var endColumn = session.getLine(row).length; + } + return new Range(row, endColumn, startRow - 1, startColumn); + } else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; + return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); }; - }).call(FoldMode.prototype); }); -define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var FoldMode = require("./folding/ruby").FoldMode; +var Mode = function () { this.HighlightRules = RubyHighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new FoldMode(); + this.indentKeywords = this.foldingRules.indentKeywords; }; oop.inherits(Mode, TextMode); - -(function() { - - +(function () { this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else|when)\s*/); + var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); if (match || startingClassOrMethod || startingDoBlock || startingConditional) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { - return /^\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input); + this.checkOutdent = function (state, line, input) { + return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, session, row) { + this.autoOutdent = function (state, session, row) { var line = session.getLine(row); if (/}/.test(line)) return this.$outdent.autoOutdent(session, row); @@ -2921,67 +3137,64 @@ oop.inherits(Mode, TextMode); var tab = session.getTabString(); if (prevIndent.length <= indent.length) { if (indent.slice(-tab.length) == tab) - session.remove(new Range(row, indent.length-tab.length, row, indent.length)); + session.remove(new Range(row, indent.length - tab.length, row, indent.length)); } }; - + this.getMatching = function (session, row, column) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; + } + var startToken = session.getTokenAt(row, column); + if (startToken && startToken.value in this.indentKeywords) + return this.foldingRules.rubyBlock(session, row, column, true); + }; this.$id = "ace/mode/ruby"; + this.snippetFileId = "ace/snippets/ruby"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ejs",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/javascript_highlight_rules","ace/lib/oop","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var EjsHighlightRules = function(start, end) { +var EjsHighlightRules = function (start, end) { HtmlHighlightRules.call(this); - if (!start) start = "(?:<%|<\\?|{{)"; if (!end) end = "(?:%>|\\?>|}})"; - for (var i in this.$rules) { this.$rules[i].unshift({ - token : "markup.list.meta.tag", - regex : start + "(?![>}])[-=]?", - push : "ejs-start" + token: "markup.list.meta.tag", + regex: start + "(?![>}])[-=]?", + push: "ejs-start" }); } - - this.embedRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "ejs-", [{ - token : "markup.list.meta.tag", - regex : "-?" + end, - next : "pop" - }, { - token: "comment", - regex: "//.*?" + end, - next: "pop" - }]); - + this.embedRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "ejs-", [{ + token: "markup.list.meta.tag", + regex: "-?" + end, + next: "pop" + }, { + token: "comment", + regex: "//.*?" + end, + next: "pop" + }]); this.normalizeRules(); }; - - oop.inherits(EjsHighlightRules, HtmlHighlightRules); - exports.EjsHighlightRules = EjsHighlightRules; - - var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var JavaScriptMode = require("./javascript").Mode; var CssMode = require("./css").Mode; var RubyMode = require("./ruby").Mode; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); - this.HighlightRules = EjsHighlightRules; + this.HighlightRules = EjsHighlightRules; this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode, @@ -2989,11 +3202,16 @@ var Mode = function() { }); }; oop.inherits(Mode, HtmlMode); - -(function() { - +(function () { this.$id = "ace/mode/ejs"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/ejs"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-elixir.js b/vendor/assets/javascripts/ace/mode-elixir.js index 855375ab..6a8b377e 100644 --- a/vendor/assets/javascripts/ace/mode-elixir.js +++ b/vendor/assets/javascripts/ace/mode-elixir.js @@ -1,444 +1,389 @@ -define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.githubusercontent.com/elixir-lang/elixir-tmbundle/master/Syntaxes/Elixir.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ElixirHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'meta.module.elixir', - 'keyword.control.module.elixir', - 'meta.module.elixir', - 'entity.name.type.module.elixir' ], - regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc (?:~[a-z])?"""', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc ~[A-Z]"""', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*"""', - next: 'pop' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*\'\'\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc ~[A-Z]\'\'\'', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*\'\'\'', - next: 'pop' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.false', - regex: '@(?:module|type)?doc false', - comment: '@doc false is treated as documentation' }, - { token: 'comment.documentation.string', - regex: '@(?:module|type)?doc "', - push: - [ { token: 'comment.documentation.string', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.string' } ], - comment: '@doc with string is treated as documentation' }, - { token: 'keyword.control.elixir', - regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' }, - { token: 'punctuation.definition.constant.elixir', - regex: ':\'', - push: - [ { token: 'punctuation.definition.constant.elixir', +var ElixirHighlightRules = function () { + this.$rules = { start: [{ token: ['meta.module.elixir', + 'keyword.control.module.elixir', + 'meta.module.elixir', + 'entity.name.type.module.elixir'], + regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc (?:~[a-z])?"""', + push: [{ token: 'comment.documentation.heredoc', + regex: '\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.heredoc' }], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc ~[A-Z]"""', + push: [{ token: 'comment.documentation.heredoc', + regex: '\\s*"""', + next: 'pop' }, + { defaultToken: 'comment.documentation.heredoc' }], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'', + push: [{ token: 'comment.documentation.heredoc', + regex: '\\s*\'\'\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.heredoc' }], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc ~[A-Z]\'\'\'', + push: [{ token: 'comment.documentation.heredoc', + regex: '\\s*\'\'\'', + next: 'pop' }, + { defaultToken: 'comment.documentation.heredoc' }], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.false', + regex: '@(?:module|type)?doc false', + comment: '@doc false is treated as documentation' }, + { token: 'comment.documentation.string', + regex: '@(?:module|type)?doc "', + push: [{ token: 'comment.documentation.string', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.string' }], + comment: '@doc with string is treated as documentation' }, + { token: 'keyword.control.elixir', + regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' }, + { token: 'punctuation.definition.constant.elixir', + regex: ':\'', + push: [{ token: 'punctuation.definition.constant.elixir', + regex: '\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'constant.other.symbol.single-quoted.elixir' }] }, + { token: 'punctuation.definition.constant.elixir', + regex: ':"', + push: [{ token: 'punctuation.definition.constant.elixir', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'constant.other.symbol.double-quoted.elixir' }] }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '(?:\'\'\')', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>\'\'\')', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*\'\'\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' }], + comment: 'Single-quoted heredocs' }, + { token: 'punctuation.definition.string.begin.elixir', regex: '\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] }, - { token: 'punctuation.definition.constant.elixir', - regex: ':"', - push: - [ { token: 'punctuation.definition.constant.elixir', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'support.function.variable.quoted.single.elixir' }], + comment: 'single quoted string (allows for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '(?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>""")', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.heredoc.elixir' }], + comment: 'Double-quoted heredocs' }, + { token: 'punctuation.definition.string.begin.elixir', regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '(?:\'\'\')', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>\'\'\')', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*\'\'\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ], - comment: 'Single-quoted heredocs' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'support.function.variable.quoted.single.elixir' } ], - comment: 'single quoted string (allows for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '(?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.heredoc.elixir' } ], - comment: 'Double-quoted heredocs' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.elixir' } ], - comment: 'double quoted string (allows for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z](?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '~[a-z](?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.heredoc.elixir' } ], - comment: 'Double-quoted heredocs sigils' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\{', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\}[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\[', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\][a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\<', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\>[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\(', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\)[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z][^\\w]', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '[^\\w][a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z](?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '~[A-Z](?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'Double-quoted heredocs sigils' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\{', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\}[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\[', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\][a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\<', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\>[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\(', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\)[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z][^\\w]', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '[^\\w][a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'], - regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)', - comment: 'symbols' }, - { token: 'punctuation.definition.constant.elixir', - regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)', - comment: 'symbols' }, - { token: - [ 'punctuation.definition.comment.elixir', - 'comment.line.number-sign.elixir' ], - regex: '(#)(.*)' }, - { token: 'constant.numeric.elixir', - regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?=?' }, - { token: 'keyword.operator.bitwise.elixir', - regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' }, - { token: 'keyword.operator.logical.elixir', - regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b', - originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' }, - { token: 'keyword.operator.arithmetic.elixir', - regex: '\\*|\\+|\\-|/' }, - { token: 'keyword.operator.other.elixir', - regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' }, - { token: 'keyword.operator.assignment.elixir', regex: '=' }, - { token: 'punctuation.separator.other.elixir', regex: ':' }, - { token: 'punctuation.separator.statement.elixir', - regex: '\\;' }, - { token: 'punctuation.separator.object.elixir', regex: ',' }, - { token: 'punctuation.separator.method.elixir', regex: '\\.' }, - { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' }, - { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' }, - { token: 'punctuation.section.function.elixir', - regex: '\\(|\\)' } ], - '#escaped_char': - [ { token: 'constant.character.escape.elixir', - regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' } ], - '#interpolated_elixir': - [ { token: - [ 'source.elixir.embedded.source', - 'source.elixir.embedded.source.empty' ], - regex: '(#\\{)(\\})' }, - { todo: - { token: 'punctuation.section.embedded.elixir', - regex: '#\\{', - push: - [ { token: 'punctuation.section.embedded.elixir', - regex: '\\}', - next: 'pop' }, - { include: '#nest_curly_and_self' }, - { include: '$self' }, - { defaultToken: 'source.elixir.embedded.source' } ] } } ], - '#nest_curly_and_self': - [ { token: 'punctuation.section.scope.elixir', - regex: '\\{', - push: - [ { token: 'punctuation.section.scope.elixir', - regex: '\\}', - next: 'pop' }, - { include: '#nest_curly_and_self' } ] }, - { include: '$self' } ], - '#regex_sub': - [ { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { token: - [ 'punctuation.definition.arbitrary-repitition.elixir', - 'string.regexp.arbitrary-repitition.elixir', - 'string.regexp.arbitrary-repitition.elixir', - 'punctuation.definition.arbitrary-repitition.elixir' ], - regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' }, - { token: 'punctuation.definition.character-class.elixir', - regex: '\\[(?:\\^?\\])?', - push: - [ { token: 'punctuation.definition.character-class.elixir', - regex: '\\]', - next: 'pop' }, - { include: '#escaped_char' }, - { defaultToken: 'string.regexp.character-class.elixir' } ] }, - { token: 'punctuation.definition.group.elixir', - regex: '\\(', - push: - [ { token: 'punctuation.definition.group.elixir', - regex: '\\)', - next: 'pop' }, - { include: '#regex_sub' }, - { defaultToken: 'string.regexp.group.elixir' } ] }, - { token: - [ 'punctuation.definition.comment.elixir', - 'comment.line.number-sign.elixir' ], - regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)', - originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$', - comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] }; - + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.elixir' }], + comment: 'double quoted string (allows for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z](?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '~[a-z](?>""")', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.heredoc.elixir' }], + comment: 'Double-quoted heredocs sigils' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\{', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\}[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\[', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\][a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\<', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\>[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\(', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\)[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z][^\\w]', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '[^\\w][a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z](?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '~[A-Z](?>""")', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'Double-quoted heredocs sigils' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\{', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\}[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\[', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\][a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\<', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\>[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\(', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\)[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z][^\\w]', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '[^\\w][a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'], + regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)', + comment: 'symbols' }, + { token: 'punctuation.definition.constant.elixir', + regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)', + comment: 'symbols' }, + { token: ['punctuation.definition.comment.elixir', + 'comment.line.number-sign.elixir'], + regex: '(#)(.*)' }, + { token: 'constant.numeric.elixir', + regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?=?' }, + { token: 'keyword.operator.bitwise.elixir', + regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' }, + { token: 'keyword.operator.logical.elixir', + regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b', + originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' }, + { token: 'keyword.operator.arithmetic.elixir', + regex: '\\*|\\+|\\-|/' }, + { token: 'keyword.operator.other.elixir', + regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' }, + { token: 'keyword.operator.assignment.elixir', regex: '=' }, + { token: 'punctuation.separator.other.elixir', regex: ':' }, + { token: 'punctuation.separator.statement.elixir', + regex: '\\;' }, + { token: 'punctuation.separator.object.elixir', regex: ',' }, + { token: 'punctuation.separator.method.elixir', regex: '\\.' }, + { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' }, + { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' }, + { token: 'punctuation.section.function.elixir', + regex: '\\(|\\)' }], + '#escaped_char': [{ token: 'constant.character.escape.elixir', + regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' }], + '#interpolated_elixir': [{ token: ['source.elixir.embedded.source', + 'source.elixir.embedded.source.empty'], + regex: '(#\\{)(\\})' }, + { todo: { token: 'punctuation.section.embedded.elixir', + regex: '#\\{', + push: [{ token: 'punctuation.section.embedded.elixir', + regex: '\\}', + next: 'pop' }, + { include: '#nest_curly_and_self' }, + { include: '$self' }, + { defaultToken: 'source.elixir.embedded.source' }] } }], + '#nest_curly_and_self': [{ token: 'punctuation.section.scope.elixir', + regex: '\\{', + push: [{ token: 'punctuation.section.scope.elixir', + regex: '\\}', + next: 'pop' }, + { include: '#nest_curly_and_self' }] }, + { include: '$self' }], + '#regex_sub': [{ include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { token: ['punctuation.definition.arbitrary-repitition.elixir', + 'string.regexp.arbitrary-repitition.elixir', + 'string.regexp.arbitrary-repitition.elixir', + 'punctuation.definition.arbitrary-repitition.elixir'], + regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' }, + { token: 'punctuation.definition.character-class.elixir', + regex: '\\[(?:\\^?\\])?', + push: [{ token: 'punctuation.definition.character-class.elixir', + regex: '\\]', + next: 'pop' }, + { include: '#escaped_char' }, + { defaultToken: 'string.regexp.character-class.elixir' }] }, + { token: 'punctuation.definition.group.elixir', + regex: '\\(', + push: [{ token: 'punctuation.definition.group.elixir', + regex: '\\)', + next: 'pop' }, + { include: '#regex_sub' }, + { defaultToken: 'string.regexp.group.elixir' }] }, + { token: ['punctuation.definition.comment.elixir', + 'comment.line.number-sign.elixir'], + regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)', + originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$', + comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' }] }; this.normalizeRules(); }; - ElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.', - fileTypes: [ 'ex', 'exs' ], - firstLineMatch: '^#!/.*\\belixir', - foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$', - foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)', - keyEquivalent: '^~E', - name: 'Elixir', - scopeName: 'source.elixir' }; - - + fileTypes: ['ex', 'exs'], + firstLineMatch: '^#!/.*\\belixir', + foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$', + foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)', + keyEquivalent: '^~E', + name: 'Elixir', + scopeName: 'source.elixir' }; oop.inherits(ElixirHighlightRules, TextHighlightRules); - exports.ElixirHighlightRules = ElixirHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -447,48 +392,52 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { +define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ElixirHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "#"; this.$id = "ace/mode/elixir"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/elixir"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-elm.js b/vendor/assets/javascripts/ace/mode-elm.js index 91b746fc..d8a11cb8 100644 --- a/vendor/assets/javascripts/ace/mode-elm.js +++ b/vendor/assets/javascripts/ace/mode-elm.js @@ -1,222 +1,191 @@ -define("ace/mode/elm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/elm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){// TODO check with https://github.com/deadfoxygrandpa/Elm.tmLanguage "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ElmHighlightRules = function() { +var ElmHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ - "keyword": "as|case|class|data|default|deriving|do|else|export|foreign|" + + "keyword": "as|case|class|data|default|deriving|do|else|export|foreign|" + "hiding|jsevent|if|import|in|infix|infixl|infixr|instance|let|" + "module|newtype|of|open|then|type|where|_|port|\u03BB" }, "identifier"); - var escapeRe = /\\(\d+|['"\\&trnbvf])/; - var smallRe = /[a-z_]/.source; var largeRe = /[A-Z]/.source; var idRe = /[a-z_A-Z0-9']/.source; - this.$rules = { start: [{ - token: "string.start", - regex: '"', - next: "string" - }, { - token: "string.character", - regex: "'(?:" + escapeRe.source + "|.)'?" - }, { - regex: /0(?:[xX][0-9A-Fa-f]+|[oO][0-7]+)|\d+(\.\d+)?([eE][-+]?\d*)?/, - token: "constant.numeric" - }, { - token: "comment", - regex: "--.*" - }, { - token : "keyword", - regex : /\.\.|\||:|=|\\|"|->|<-|\u2192/ - }, { - token : "keyword.operator", - regex : /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]+/ - }, { - token : "operator.punctuation", - regex : /[,;`]/ - }, { - regex : largeRe + idRe + "+\\.?", - token : function(value) { - if (value[value.length - 1] == ".") - return "entity.name.function"; - return "constant.language"; - } - }, { - regex : "^" + smallRe + idRe + "+", - token : function(value) { - return "constant.language"; - } - }, { - token : keywordMapper, - regex : "[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b" - }, { - regex: "{-#?", - token: "comment.start", - onMatch: function(value, currentState, stack) { - this.next = value.length == 2 ? "blockComment" : "docComment"; - return this.token; - } - }, { - token: "variable.language", - regex: /\[markdown\|/, - next: "markdown" - }, { - token: "paren.lparen", - regex: /[\[({]/ - }, { - token: "paren.rparen", - regex: /[\])}]/ - } ], + token: "string.start", + regex: '"', + next: "string" + }, { + token: "string.character", + regex: "'(?:" + escapeRe.source + "|.)'?" + }, { + regex: /0(?:[xX][0-9A-Fa-f]+|[oO][0-7]+)|\d+(\.\d+)?([eE][-+]?\d*)?/, + token: "constant.numeric" + }, { + token: "comment", + regex: "--.*" + }, { + token: "keyword", + regex: /\.\.|\||:|=|\\|"|->|<-|\u2192/ + }, { + token: "keyword.operator", + regex: /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]+/ + }, { + token: "operator.punctuation", + regex: /[,;`]/ + }, { + regex: largeRe + idRe + "+\\.?", + token: function (value) { + if (value[value.length - 1] == ".") + return "entity.name.function"; + return "constant.language"; + } + }, { + regex: "^" + smallRe + idRe + "+", + token: function (value) { + return "constant.language"; + } + }, { + token: keywordMapper, + regex: "[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b" + }, { + regex: "{-#?", + token: "comment.start", + onMatch: function (value, currentState, stack) { + this.next = value.length == 2 ? "blockComment" : "docComment"; + return this.token; + } + }, { + token: "variable.language", + regex: /\[markdown\|/, + next: "markdown" + }, { + token: "paren.lparen", + regex: /[\[({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + }], markdown: [{ - regex: /\|\]/, - next: "start" - }, { - defaultToken : "string" - }], + regex: /\|\]/, + next: "start" + }, { + defaultToken: "string" + }], blockComment: [{ - regex: "{-", - token: "comment.start", - push: "blockComment" - }, { - regex: "-}", - token: "comment.end", - next: "pop" - }, { - defaultToken: "comment" - }], + regex: "{-", + token: "comment.start", + push: "blockComment" + }, { + regex: "-}", + token: "comment.end", + next: "pop" + }, { + defaultToken: "comment" + }], docComment: [{ - regex: "{-", - token: "comment.start", - push: "docComment" - }, { - regex: "-}", - token: "comment.end", - next: "pop" - }, { - defaultToken: "doc.comment" - }], + regex: "{-", + token: "comment.start", + push: "docComment" + }, { + regex: "-}", + token: "comment.end", + next: "pop" + }, { + defaultToken: "doc.comment" + }], string: [{ - token: "constant.language.escape", - regex: escapeRe - }, { - token: "text", - regex: /\\(\s|$)/, - next: "stringGap" - }, { - token: "string.end", - regex: '"', - next: "start" - }, { - defaultToken: "string" - }], + token: "constant.language.escape", + regex: escapeRe + }, { + token: "text", + regex: /\\(\s|$)/, + next: "stringGap" + }, { + token: "string.end", + regex: '"', + next: "start" + }, { + defaultToken: "string" + }], stringGap: [{ - token: "text", - regex: /\\/, - next: "string" - }, { - token: "error", - regex: "", - next: "start" - }] + token: "text", + regex: /\\/, + next: "string" + }, { + token: "error", + regex: "", + next: "start" + }] }; - this.normalizeRules(); }; - oop.inherits(ElmHighlightRules, TextHighlightRules); - exports.ElmHighlightRules = ElmHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -229,71 +198,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/elm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elm_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/elm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elm_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HighlightRules = require("./elm_highlight_rules").ElmHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; - this.blockComment = {start: "{-", end: "-}", nestable: true}; + this.blockComment = { start: "{-", end: "-}", nestable: true }; this.$id = "ace/mode/elm"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/elm"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-erlang.js b/vendor/assets/javascripts/ace/mode-erlang.js index f570e24a..0b8681d5 100644 --- a/vendor/assets/javascripts/ace/mode-erlang.js +++ b/vendor/assets/javascripts/ace/mode-erlang.js @@ -1,925 +1,752 @@ -define("ace/mode/erlang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/erlang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from tm bundles\erlang.tmbundle\Syntaxes\Erlang.plist (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ErlangHighlightRules = function() { - - this.$rules = { start: - [ { include: '#module-directive' }, - { include: '#import-export-directive' }, - { include: '#behaviour-directive' }, - { include: '#record-directive' }, - { include: '#define-directive' }, - { include: '#macro-directive' }, - { include: '#directive' }, - { include: '#function' }, - { include: '#everything-else' } ], - '#atom': - [ { token: 'punctuation.definition.symbol.begin.erlang', - regex: '\'', - push: - [ { token: 'punctuation.definition.symbol.end.erlang', +var ErlangHighlightRules = function () { + this.$rules = { start: [{ include: '#module-directive' }, + { include: '#import-export-directive' }, + { include: '#behaviour-directive' }, + { include: '#record-directive' }, + { include: '#define-directive' }, + { include: '#macro-directive' }, + { include: '#directive' }, + { include: '#function' }, + { include: '#everything-else' }], + '#atom': [{ token: 'punctuation.definition.symbol.begin.erlang', regex: '\'', - next: 'pop' }, - { token: - [ 'punctuation.definition.escape.erlang', - 'constant.other.symbol.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.other.symbol.escape.erlang', - 'constant.other.symbol.escape.erlang' ], - regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.atom.erlang', regex: '\\\\\\^?.?' }, - { defaultToken: 'constant.other.symbol.quoted.single.erlang' } ] }, - { token: 'constant.other.symbol.unquoted.erlang', - regex: '[a-z][a-zA-Z\\d@_]*' } ], - '#behaviour-directive': - [ { token: - [ 'meta.directive.behaviour.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.behaviour.erlang', - 'keyword.control.directive.behaviour.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.behaviour.erlang', - 'entity.name.type.class.behaviour.definition.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.behaviour.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' } ], - '#binary': - [ { token: 'punctuation.definition.binary.begin.erlang', - regex: '<<', - push: - [ { token: 'punctuation.definition.binary.end.erlang', - regex: '>>', - next: 'pop' }, - { token: - [ 'punctuation.separator.binary.erlang', - 'punctuation.separator.value-size.erlang' ], - regex: '(,)|(:)' }, - { include: '#internal-type-specifiers' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.binary.erlang' } ] } ], - '#character': - [ { token: - [ 'punctuation.definition.character.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'constant.character.escape.erlang' ], - regex: '(\\$)(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.character.erlang', - regex: '\\$\\\\\\^?.?' }, - { token: - [ 'punctuation.definition.character.erlang', - 'constant.character.erlang' ], - regex: '(\\$)(\\S)' }, - { token: 'invalid.illegal.character.erlang', regex: '\\$.?' } ], - '#comment': - [ { token: 'punctuation.definition.comment.erlang', - regex: '%.*$', - push_: - [ { token: 'comment.line.percentage.erlang', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.percentage.erlang' } ] } ], - '#define-directive': - [ { token: - [ 'meta.directive.define.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.define.erlang', - 'keyword.control.directive.define.erlang', - 'meta.directive.define.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.define.erlang', - 'entity.name.function.macro.definition.erlang', - 'meta.directive.define.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.define.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.define.erlang' } ] }, - { token: 'meta.directive.define.erlang', - regex: '(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.define.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { token: - [ 'text', - 'punctuation.section.directive.begin.erlang', - 'text', - 'keyword.control.directive.define.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang', - 'text', - 'entity.name.function.macro.definition.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'text', - 'punctuation.separator.parameters.erlang' ], - regex: '(\\))(\\s*)(,)', - next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.define.erlang', - regex: '\\|\\||\\||:|;|,|\\.|->' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.define.erlang' } ] } ], - '#directive': - [ { token: - [ 'meta.directive.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.erlang', - 'keyword.control.directive.erlang', - 'meta.directive.erlang', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\)?)(\\s*)(\\.)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.directive.erlang' } ] }, - { token: - [ 'meta.directive.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.erlang', - 'keyword.control.directive.erlang', - 'meta.directive.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)' } ], - '#everything-else': - [ { include: '#comment' }, - { include: '#record-usage' }, - { include: '#macro-usage' }, - { include: '#expression' }, - { include: '#keyword' }, - { include: '#textual-operator' }, - { include: '#function-call' }, - { include: '#tuple' }, - { include: '#list' }, - { include: '#binary' }, - { include: '#parenthesized-expression' }, - { include: '#character' }, - { include: '#number' }, - { include: '#atom' }, - { include: '#string' }, - { include: '#symbolic-operator' }, - { include: '#variable' } ], - '#expression': - [ { token: 'keyword.control.if.erlang', - regex: '\\bif\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.if.erlang' } ] }, - { token: 'keyword.control.case.erlang', - regex: '\\bcase\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.case.erlang' } ] }, - { token: 'keyword.control.receive.erlang', - regex: '\\breceive\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.receive.erlang' } ] }, - { token: - [ 'keyword.control.fun.erlang', - 'text', - 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.erlang', - 'text', - 'punctuation.separator.function-arity.erlang' ], - regex: '\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)' }, - { token: 'keyword.control.fun.erlang', - regex: '\\bfun\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { token: 'text', + push: [{ token: 'punctuation.definition.symbol.end.erlang', + regex: '\'', + next: 'pop' }, + { token: ['punctuation.definition.escape.erlang', + 'constant.other.symbol.escape.erlang', + 'punctuation.definition.escape.erlang', + 'constant.other.symbol.escape.erlang', + 'constant.other.symbol.escape.erlang'], + regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, + { token: 'invalid.illegal.atom.erlang', regex: '\\\\\\^?.?' }, + { defaultToken: 'constant.other.symbol.quoted.single.erlang' }] }, + { token: 'constant.other.symbol.unquoted.erlang', + regex: '[a-z][a-zA-Z\\d@_]*' }], + '#behaviour-directive': [{ token: ['meta.directive.behaviour.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.behaviour.erlang', + 'keyword.control.directive.behaviour.erlang', + 'meta.directive.behaviour.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.behaviour.erlang', + 'entity.name.type.class.behaviour.definition.erlang', + 'meta.directive.behaviour.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.behaviour.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '^(\\s*)(-)(\\s*)(behaviour)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' }], + '#binary': [{ token: 'punctuation.definition.binary.begin.erlang', + regex: '<<', + push: [{ token: 'punctuation.definition.binary.end.erlang', + regex: '>>', + next: 'pop' }, + { token: ['punctuation.separator.binary.erlang', + 'punctuation.separator.value-size.erlang'], + regex: '(,)|(:)' }, + { include: '#internal-type-specifiers' }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.binary.erlang' }] }], + '#character': [{ token: ['punctuation.definition.character.erlang', + 'punctuation.definition.escape.erlang', + 'constant.character.escape.erlang', + 'punctuation.definition.escape.erlang', + 'constant.character.escape.erlang', + 'constant.character.escape.erlang'], + regex: '(\\$)(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, + { token: 'invalid.illegal.character.erlang', + regex: '\\$\\\\\\^?.?' }, + { token: ['punctuation.definition.character.erlang', + 'constant.character.erlang'], + regex: '(\\$)(\\S)' }, + { token: 'invalid.illegal.character.erlang', regex: '\\$.?' }], + '#comment': [{ token: 'punctuation.definition.comment.erlang', + regex: '%.*$', + push_: [{ token: 'comment.line.percentage.erlang', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.percentage.erlang' }] }], + '#define-directive': [{ token: ['meta.directive.define.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.define.erlang', + 'keyword.control.directive.define.erlang', + 'meta.directive.define.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.define.erlang', + 'entity.name.function.macro.definition.erlang', + 'meta.directive.define.erlang', + 'punctuation.separator.parameters.erlang'], + regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(,)', + push: [{ token: ['punctuation.definition.parameters.end.erlang', + 'meta.directive.define.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '(\\))(\\s*)(\\.)', + next: 'pop' }, + { include: '#everything-else' }, + { defaultToken: 'meta.directive.define.erlang' }] }, + { token: 'meta.directive.define.erlang', + regex: '(?=^\\s*-\\s*define\\s*\\(\\s*[a-zA-Z\\d@_]+\\s*\\()', + push: [{ token: ['punctuation.definition.parameters.end.erlang', + 'meta.directive.define.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '(\\))(\\s*)(\\.)', + next: 'pop' }, + { token: ['text', + 'punctuation.section.directive.begin.erlang', + 'text', + 'keyword.control.directive.define.erlang', + 'text', + 'punctuation.definition.parameters.begin.erlang', + 'text', + 'entity.name.function.macro.definition.erlang', + 'text', + 'punctuation.definition.parameters.begin.erlang'], + regex: '^(\\s*)(-)(\\s*)(define)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\()', + push: [{ token: ['punctuation.definition.parameters.end.erlang', + 'text', + 'punctuation.separator.parameters.erlang'], + regex: '(\\))(\\s*)(,)', + next: 'pop' }, + { token: 'punctuation.separator.parameters.erlang', regex: ',' }, + { include: '#everything-else' }] }, + { token: 'punctuation.separator.define.erlang', + regex: '\\|\\||\\||:|;|,|\\.|->' }, + { include: '#everything-else' }, + { defaultToken: 'meta.directive.define.erlang' }] }], + '#directive': [{ token: ['meta.directive.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.erlang', + 'keyword.control.directive.erlang', + 'meta.directive.erlang', + 'punctuation.definition.parameters.begin.erlang'], + regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\(?)', + push: [{ token: ['punctuation.definition.parameters.end.erlang', + 'meta.directive.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '(\\)?)(\\s*)(\\.)', + next: 'pop' }, + { include: '#everything-else' }, + { defaultToken: 'meta.directive.erlang' }] }, + { token: ['meta.directive.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.erlang', + 'keyword.control.directive.erlang', + 'meta.directive.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '^(\\s*)(-)(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\.)' }], + '#everything-else': [{ include: '#comment' }, + { include: '#record-usage' }, + { include: '#macro-usage' }, + { include: '#expression' }, + { include: '#keyword' }, + { include: '#textual-operator' }, + { include: '#function-call' }, + { include: '#tuple' }, + { include: '#list' }, + { include: '#binary' }, + { include: '#parenthesized-expression' }, + { include: '#character' }, + { include: '#number' }, + { include: '#atom' }, + { include: '#string' }, + { include: '#symbolic-operator' }, + { include: '#variable' }], + '#expression': [{ token: 'keyword.control.if.erlang', + regex: '\\bif\\b', + push: [{ token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.if.erlang' }] }, + { token: 'keyword.control.case.erlang', + regex: '\\bcase\\b', + push: [{ token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.case.erlang' }] }, + { token: 'keyword.control.receive.erlang', + regex: '\\breceive\\b', + push: [{ token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.receive.erlang' }] }, + { token: ['keyword.control.fun.erlang', + 'text', + 'entity.name.type.class.module.erlang', + 'text', + 'punctuation.separator.module-function.erlang', + 'text', + 'entity.name.function.erlang', + 'text', + 'punctuation.separator.function-arity.erlang'], + regex: '\\b(fun)(\\s*)(?:([a-z][a-zA-Z\\d@_]*)(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*)(\\s*)(/)' }, + { token: 'keyword.control.fun.erlang', + regex: '\\bfun\\b', + push: [{ token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { token: 'text', + regex: '(?=\\()', + push: [{ token: 'punctuation.separator.clauses.erlang', + regex: ';|(?=\\bend\\b)', + next: 'pop' }, + { include: '#internal-function-parts' }] }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.fun.erlang' }] }, + { token: 'keyword.control.try.erlang', + regex: '\\btry\\b', + push: [{ token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.try.erlang' }] }, + { token: 'keyword.control.begin.erlang', + regex: '\\bbegin\\b', + push: [{ token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#internal-expression-punctuation' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.begin.erlang' }] }, + { token: 'keyword.control.query.erlang', + regex: '\\bquery\\b', + push: [{ token: 'keyword.control.end.erlang', + regex: '\\bend\\b', + next: 'pop' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.query.erlang' }] }], + '#function': [{ token: ['meta.function.erlang', + 'entity.name.function.definition.erlang', + 'meta.function.erlang'], + regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()', + push: [{ token: 'punctuation.terminator.function.erlang', + regex: '\\.', + next: 'pop' }, + { token: ['text', 'entity.name.function.erlang', 'text'], + regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()' }, + { token: 'text', + regex: '(?=\\()', + push: [{ token: 'punctuation.separator.clauses.erlang', + regex: ';|(?=\\.)', + next: 'pop' }, + { include: '#parenthesized-expression' }, + { include: '#internal-function-parts' }] }, + { include: '#everything-else' }, + { defaultToken: 'meta.function.erlang' }] }], + '#function-call': [{ token: 'meta.function-call.erlang', + regex: '(?=(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*\\())', + push: [{ token: 'punctuation.definition.parameters.end.erlang', + regex: '\\)', + next: 'pop' }, + { token: ['entity.name.type.class.module.erlang', + 'text', + 'punctuation.separator.module-function.erlang', + 'text', + 'entity.name.function.guard.erlang', + 'text', + 'punctuation.definition.parameters.begin.erlang'], + regex: '(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()', + push: [{ token: 'text', regex: '(?=\\))', next: 'pop' }, + { token: 'punctuation.separator.parameters.erlang', regex: ',' }, + { include: '#everything-else' }] }, + { token: ['entity.name.type.class.module.erlang', + 'text', + 'punctuation.separator.module-function.erlang', + 'text', + 'entity.name.function.erlang', + 'text', + 'punctuation.definition.parameters.begin.erlang'], + regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\()', + push: [{ token: 'text', regex: '(?=\\))', next: 'pop' }, + { token: 'punctuation.separator.parameters.erlang', regex: ',' }, + { include: '#everything-else' }] }, + { defaultToken: 'meta.function-call.erlang' }] }], + '#import-export-directive': [{ token: ['meta.directive.import.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.import.erlang', + 'keyword.control.directive.import.erlang', + 'meta.directive.import.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.import.erlang', + 'entity.name.type.class.module.erlang', + 'meta.directive.import.erlang', + 'punctuation.separator.parameters.erlang'], + regex: '^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', + push: [{ token: ['punctuation.definition.parameters.end.erlang', + 'meta.directive.import.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '(\\))(\\s*)(\\.)', + next: 'pop' }, + { include: '#internal-function-list' }, + { defaultToken: 'meta.directive.import.erlang' }] }, + { token: ['meta.directive.export.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.export.erlang', + 'keyword.control.directive.export.erlang', + 'meta.directive.export.erlang', + 'punctuation.definition.parameters.begin.erlang'], + regex: '^(\\s*)(-)(\\s*)(export)(\\s*)(\\()', + push: [{ token: ['punctuation.definition.parameters.end.erlang', + 'meta.directive.export.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '(\\))(\\s*)(\\.)', + next: 'pop' }, + { include: '#internal-function-list' }, + { defaultToken: 'meta.directive.export.erlang' }] }], + '#internal-expression-punctuation': [{ token: ['punctuation.separator.clause-head-body.erlang', + 'punctuation.separator.clauses.erlang', + 'punctuation.separator.expressions.erlang'], + regex: '(->)|(;)|(,)' }], + '#internal-function-list': [{ token: 'punctuation.definition.list.begin.erlang', + regex: '\\[', + push: [{ token: 'punctuation.definition.list.end.erlang', + regex: '\\]', + next: 'pop' }, + { token: ['entity.name.function.erlang', + 'text', + 'punctuation.separator.function-arity.erlang'], + regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(/)', + push: [{ token: 'punctuation.separator.list.erlang', + regex: ',|(?=\\])', + next: 'pop' }, + { include: '#everything-else' }] }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.list.function.erlang' }] }], + '#internal-function-parts': [{ token: 'text', regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clauses.erlang', - regex: ';|(?=\\bend\\b)', - next: 'pop' }, - { include: '#internal-function-parts' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.fun.erlang' } ] }, - { token: 'keyword.control.try.erlang', - regex: '\\btry\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.try.erlang' } ] }, - { token: 'keyword.control.begin.erlang', - regex: '\\bbegin\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#internal-expression-punctuation' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.begin.erlang' } ] }, - { token: 'keyword.control.query.erlang', - regex: '\\bquery\\b', - push: - [ { token: 'keyword.control.end.erlang', - regex: '\\bend\\b', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.query.erlang' } ] } ], - '#function': - [ { token: - [ 'meta.function.erlang', - 'entity.name.function.definition.erlang', - 'meta.function.erlang' ], - regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()', - push: - [ { token: 'punctuation.terminator.function.erlang', - regex: '\\.', - next: 'pop' }, - { token: [ 'text', 'entity.name.function.erlang', 'text' ], - regex: '^(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(?=\\()' }, - { token: 'text', - regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clauses.erlang', - regex: ';|(?=\\.)', - next: 'pop' }, - { include: '#parenthesized-expression' }, - { include: '#internal-function-parts' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.function.erlang' } ] } ], - '#function-call': - [ { token: 'meta.function-call.erlang', - regex: '(?=(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*(?:\\(|:\\s*(?:[a-z][a-zA-Z\\d@_]*|\'[^\']*\')\\s*\\())', - push: - [ { token: 'punctuation.definition.parameters.end.erlang', - regex: '\\)', - next: 'pop' }, - { token: - [ 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.guard.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '(?:(erlang)(\\s*)(:)(\\s*))?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)(\\s*)(\\()', - push: - [ { token: 'text', regex: '(?=\\))', next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: - [ 'entity.name.type.class.module.erlang', - 'text', - 'punctuation.separator.module-function.erlang', - 'text', - 'entity.name.function.erlang', - 'text', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(:)(\\s*))?([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\()', - push: - [ { token: 'text', regex: '(?=\\))', next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { defaultToken: 'meta.function-call.erlang' } ] } ], - '#import-export-directive': - [ { token: - [ 'meta.directive.import.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.import.erlang', - 'keyword.control.directive.import.erlang', - 'meta.directive.import.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.import.erlang', - 'entity.name.type.class.module.erlang', - 'meta.directive.import.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(import)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.import.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-function-list' }, - { defaultToken: 'meta.directive.import.erlang' } ] }, - { token: - [ 'meta.directive.export.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.export.erlang', - 'keyword.control.directive.export.erlang', - 'meta.directive.export.erlang', - 'punctuation.definition.parameters.begin.erlang' ], - regex: '^(\\s*)(-)(\\s*)(export)(\\s*)(\\()', - push: - [ { token: - [ 'punctuation.definition.parameters.end.erlang', - 'meta.directive.export.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-function-list' }, - { defaultToken: 'meta.directive.export.erlang' } ] } ], - '#internal-expression-punctuation': - [ { token: - [ 'punctuation.separator.clause-head-body.erlang', - 'punctuation.separator.clauses.erlang', - 'punctuation.separator.expressions.erlang' ], - regex: '(->)|(;)|(,)' } ], - '#internal-function-list': - [ { token: 'punctuation.definition.list.begin.erlang', - regex: '\\[', - push: - [ { token: 'punctuation.definition.list.end.erlang', - regex: '\\]', - next: 'pop' }, - { token: - [ 'entity.name.function.erlang', - 'text', - 'punctuation.separator.function-arity.erlang' ], - regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(/)', - push: - [ { token: 'punctuation.separator.list.erlang', - regex: ',|(?=\\])', - next: 'pop' }, - { include: '#everything-else' } ] }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.list.function.erlang' } ] } ], - '#internal-function-parts': - [ { token: 'text', - regex: '(?=\\()', - push: - [ { token: 'punctuation.separator.clause-head-body.erlang', - regex: '->', - next: 'pop' }, - { token: 'punctuation.definition.parameters.begin.erlang', + push: [{ token: 'punctuation.separator.clause-head-body.erlang', + regex: '->', + next: 'pop' }, + { token: 'punctuation.definition.parameters.begin.erlang', + regex: '\\(', + push: [{ token: 'punctuation.definition.parameters.end.erlang', + regex: '\\)', + next: 'pop' }, + { token: 'punctuation.separator.parameters.erlang', regex: ',' }, + { include: '#everything-else' }] }, + { token: 'punctuation.separator.guards.erlang', regex: ',|;' }, + { include: '#everything-else' }] }, + { token: 'punctuation.separator.expressions.erlang', + regex: ',' }, + { include: '#everything-else' }], + '#internal-record-body': [{ token: 'punctuation.definition.class.record.begin.erlang', + regex: '\\{', + push: [{ token: 'meta.structure.record.erlang', + regex: '(?=\\})', + next: 'pop' }, + { token: ['variable.other.field.erlang', + 'variable.language.omitted.field.erlang', + 'text', + 'keyword.operator.assignment.erlang'], + regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')|(_))(\\s*)(=|::)', + push: [{ token: 'punctuation.separator.class.record.erlang', + regex: ',|(?=\\})', + next: 'pop' }, + { include: '#everything-else' }] }, + { token: ['variable.other.field.erlang', + 'text', + 'punctuation.separator.class.record.erlang'], + regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)((?:,)?)' }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.record.erlang' }] }], + '#internal-type-specifiers': [{ token: 'punctuation.separator.value-type.erlang', + regex: '/', + push: [{ token: 'text', regex: '(?=,|:|>>)', next: 'pop' }, + { token: ['storage.type.erlang', + 'storage.modifier.signedness.erlang', + 'storage.modifier.endianness.erlang', + 'storage.modifier.unit.erlang', + 'punctuation.separator.type-specifiers.erlang'], + regex: '(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)' }] }], + '#keyword': [{ token: 'keyword.control.erlang', + regex: '\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b' }], + '#list': [{ token: 'punctuation.definition.list.begin.erlang', + regex: '\\[', + push: [{ token: 'punctuation.definition.list.end.erlang', + regex: '\\]', + next: 'pop' }, + { token: 'punctuation.separator.list.erlang', + regex: '\\||\\|\\||,' }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.list.erlang' }] }], + '#macro-directive': [{ token: ['meta.directive.ifdef.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.ifdef.erlang', + 'keyword.control.directive.ifdef.erlang', + 'meta.directive.ifdef.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.ifdef.erlang', + 'entity.name.function.macro.erlang', + 'meta.directive.ifdef.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.ifdef.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, + { token: ['meta.directive.ifndef.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.ifndef.erlang', + 'keyword.control.directive.ifndef.erlang', + 'meta.directive.ifndef.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.ifndef.erlang', + 'entity.name.function.macro.erlang', + 'meta.directive.ifndef.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.ifndef.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, + { token: ['meta.directive.undef.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.undef.erlang', + 'keyword.control.directive.undef.erlang', + 'meta.directive.undef.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.undef.erlang', + 'entity.name.function.macro.erlang', + 'meta.directive.undef.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.undef.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }], + '#macro-usage': [{ token: ['keyword.operator.macro.erlang', + 'meta.macro-usage.erlang', + 'entity.name.function.macro.erlang'], + regex: '(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)' }], + '#module-directive': [{ token: ['meta.directive.module.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.module.erlang', + 'keyword.control.directive.module.erlang', + 'meta.directive.module.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.module.erlang', + 'entity.name.type.class.module.definition.erlang', + 'meta.directive.module.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.module.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' }], + '#number': [{ token: 'text', + regex: '(?=\\d)', + push: [{ token: 'text', regex: '(?!\\d)', next: 'pop' }, + { token: ['constant.numeric.float.erlang', + 'punctuation.separator.integer-float.erlang', + 'constant.numeric.float.erlang', + 'punctuation.separator.float-exponent.erlang'], + regex: '(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)' }, + { token: ['constant.numeric.integer.binary.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.binary.erlang'], + regex: '(2)(#)([0-1]+)' }, + { token: ['constant.numeric.integer.base-3.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-3.erlang'], + regex: '(3)(#)([0-2]+)' }, + { token: ['constant.numeric.integer.base-4.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-4.erlang'], + regex: '(4)(#)([0-3]+)' }, + { token: ['constant.numeric.integer.base-5.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-5.erlang'], + regex: '(5)(#)([0-4]+)' }, + { token: ['constant.numeric.integer.base-6.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-6.erlang'], + regex: '(6)(#)([0-5]+)' }, + { token: ['constant.numeric.integer.base-7.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-7.erlang'], + regex: '(7)(#)([0-6]+)' }, + { token: ['constant.numeric.integer.octal.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.octal.erlang'], + regex: '(8)(#)([0-7]+)' }, + { token: ['constant.numeric.integer.base-9.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-9.erlang'], + regex: '(9)(#)([0-8]+)' }, + { token: ['constant.numeric.integer.decimal.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.decimal.erlang'], + regex: '(10)(#)(\\d+)' }, + { token: ['constant.numeric.integer.base-11.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-11.erlang'], + regex: '(11)(#)([\\daA]+)' }, + { token: ['constant.numeric.integer.base-12.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-12.erlang'], + regex: '(12)(#)([\\da-bA-B]+)' }, + { token: ['constant.numeric.integer.base-13.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-13.erlang'], + regex: '(13)(#)([\\da-cA-C]+)' }, + { token: ['constant.numeric.integer.base-14.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-14.erlang'], + regex: '(14)(#)([\\da-dA-D]+)' }, + { token: ['constant.numeric.integer.base-15.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-15.erlang'], + regex: '(15)(#)([\\da-eA-E]+)' }, + { token: ['constant.numeric.integer.hexadecimal.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.hexadecimal.erlang'], + regex: '(16)(#)([\\da-fA-F]+)' }, + { token: ['constant.numeric.integer.base-17.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-17.erlang'], + regex: '(17)(#)([\\da-gA-G]+)' }, + { token: ['constant.numeric.integer.base-18.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-18.erlang'], + regex: '(18)(#)([\\da-hA-H]+)' }, + { token: ['constant.numeric.integer.base-19.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-19.erlang'], + regex: '(19)(#)([\\da-iA-I]+)' }, + { token: ['constant.numeric.integer.base-20.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-20.erlang'], + regex: '(20)(#)([\\da-jA-J]+)' }, + { token: ['constant.numeric.integer.base-21.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-21.erlang'], + regex: '(21)(#)([\\da-kA-K]+)' }, + { token: ['constant.numeric.integer.base-22.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-22.erlang'], + regex: '(22)(#)([\\da-lA-L]+)' }, + { token: ['constant.numeric.integer.base-23.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-23.erlang'], + regex: '(23)(#)([\\da-mA-M]+)' }, + { token: ['constant.numeric.integer.base-24.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-24.erlang'], + regex: '(24)(#)([\\da-nA-N]+)' }, + { token: ['constant.numeric.integer.base-25.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-25.erlang'], + regex: '(25)(#)([\\da-oA-O]+)' }, + { token: ['constant.numeric.integer.base-26.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-26.erlang'], + regex: '(26)(#)([\\da-pA-P]+)' }, + { token: ['constant.numeric.integer.base-27.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-27.erlang'], + regex: '(27)(#)([\\da-qA-Q]+)' }, + { token: ['constant.numeric.integer.base-28.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-28.erlang'], + regex: '(28)(#)([\\da-rA-R]+)' }, + { token: ['constant.numeric.integer.base-29.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-29.erlang'], + regex: '(29)(#)([\\da-sA-S]+)' }, + { token: ['constant.numeric.integer.base-30.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-30.erlang'], + regex: '(30)(#)([\\da-tA-T]+)' }, + { token: ['constant.numeric.integer.base-31.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-31.erlang'], + regex: '(31)(#)([\\da-uA-U]+)' }, + { token: ['constant.numeric.integer.base-32.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-32.erlang'], + regex: '(32)(#)([\\da-vA-V]+)' }, + { token: ['constant.numeric.integer.base-33.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-33.erlang'], + regex: '(33)(#)([\\da-wA-W]+)' }, + { token: ['constant.numeric.integer.base-34.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-34.erlang'], + regex: '(34)(#)([\\da-xA-X]+)' }, + { token: ['constant.numeric.integer.base-35.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-35.erlang'], + regex: '(35)(#)([\\da-yA-Y]+)' }, + { token: ['constant.numeric.integer.base-36.erlang', + 'punctuation.separator.base-integer.erlang', + 'constant.numeric.integer.base-36.erlang'], + regex: '(36)(#)([\\da-zA-Z]+)' }, + { token: 'invalid.illegal.integer.erlang', + regex: '\\d+#[\\da-zA-Z]+' }, + { token: 'constant.numeric.integer.decimal.erlang', + regex: '\\d+' }] }], + '#parenthesized-expression': [{ token: 'punctuation.section.expression.begin.erlang', regex: '\\(', - push: - [ { token: 'punctuation.definition.parameters.end.erlang', - regex: '\\)', - next: 'pop' }, - { token: 'punctuation.separator.parameters.erlang', regex: ',' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.guards.erlang', regex: ',|;' }, - { include: '#everything-else' } ] }, - { token: 'punctuation.separator.expressions.erlang', - regex: ',' }, - { include: '#everything-else' } ], - '#internal-record-body': - [ { token: 'punctuation.definition.class.record.begin.erlang', - regex: '\\{', - push: - [ { token: 'meta.structure.record.erlang', - regex: '(?=\\})', - next: 'pop' }, - { token: - [ 'variable.other.field.erlang', - 'variable.language.omitted.field.erlang', - 'text', - 'keyword.operator.assignment.erlang' ], - regex: '(?:([a-z][a-zA-Z\\d@_]*|\'[^\']*\')|(_))(\\s*)(=|::)', - push: - [ { token: 'punctuation.separator.class.record.erlang', - regex: ',|(?=\\})', - next: 'pop' }, - { include: '#everything-else' } ] }, - { token: - [ 'variable.other.field.erlang', - 'text', - 'punctuation.separator.class.record.erlang' ], - regex: '([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)((?:,)?)' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.record.erlang' } ] } ], - '#internal-type-specifiers': - [ { token: 'punctuation.separator.value-type.erlang', - regex: '/', - push: - [ { token: 'text', regex: '(?=,|:|>>)', next: 'pop' }, - { token: - [ 'storage.type.erlang', - 'storage.modifier.signedness.erlang', - 'storage.modifier.endianness.erlang', - 'storage.modifier.unit.erlang', - 'punctuation.separator.type-specifiers.erlang' ], - regex: '(integer|float|binary|bytes|bitstring|bits)|(signed|unsigned)|(big|little|native)|(unit)|(-)' } ] } ], - '#keyword': - [ { token: 'keyword.control.erlang', - regex: '\\b(?:after|begin|case|catch|cond|end|fun|if|let|of|query|try|receive|when)\\b' } ], - '#list': - [ { token: 'punctuation.definition.list.begin.erlang', - regex: '\\[', - push: - [ { token: 'punctuation.definition.list.end.erlang', - regex: '\\]', - next: 'pop' }, - { token: 'punctuation.separator.list.erlang', - regex: '\\||\\|\\||,' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.list.erlang' } ] } ], - '#macro-directive': - [ { token: - [ 'meta.directive.ifdef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.ifdef.erlang', - 'keyword.control.directive.ifdef.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.ifdef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.ifdef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, - { token: - [ 'meta.directive.ifndef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.ifndef.erlang', - 'keyword.control.directive.ifndef.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.ifndef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.ifndef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, - { token: - [ 'meta.directive.undef.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.undef.erlang', - 'keyword.control.directive.undef.erlang', - 'meta.directive.undef.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.undef.erlang', - 'entity.name.function.macro.erlang', - 'meta.directive.undef.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.undef.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' } ], - '#macro-usage': - [ { token: - [ 'keyword.operator.macro.erlang', - 'meta.macro-usage.erlang', - 'entity.name.function.macro.erlang' ], - regex: '(\\?\\??)(\\s*)([a-zA-Z\\d@_]+)' } ], - '#module-directive': - [ { token: - [ 'meta.directive.module.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.module.erlang', - 'keyword.control.directive.module.erlang', - 'meta.directive.module.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.module.erlang', - 'entity.name.type.class.module.definition.erlang', - 'meta.directive.module.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.module.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(module)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*)(\\s*)(\\))(\\s*)(\\.)' } ], - '#number': - [ { token: 'text', - regex: '(?=\\d)', - push: - [ { token: 'text', regex: '(?!\\d)', next: 'pop' }, - { token: - [ 'constant.numeric.float.erlang', - 'punctuation.separator.integer-float.erlang', - 'constant.numeric.float.erlang', - 'punctuation.separator.float-exponent.erlang' ], - regex: '(\\d+)(\\.)(\\d+)((?:[eE][\\+\\-]?\\d+)?)' }, - { token: - [ 'constant.numeric.integer.binary.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.binary.erlang' ], - regex: '(2)(#)([0-1]+)' }, - { token: - [ 'constant.numeric.integer.base-3.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-3.erlang' ], - regex: '(3)(#)([0-2]+)' }, - { token: - [ 'constant.numeric.integer.base-4.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-4.erlang' ], - regex: '(4)(#)([0-3]+)' }, - { token: - [ 'constant.numeric.integer.base-5.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-5.erlang' ], - regex: '(5)(#)([0-4]+)' }, - { token: - [ 'constant.numeric.integer.base-6.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-6.erlang' ], - regex: '(6)(#)([0-5]+)' }, - { token: - [ 'constant.numeric.integer.base-7.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-7.erlang' ], - regex: '(7)(#)([0-6]+)' }, - { token: - [ 'constant.numeric.integer.octal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.octal.erlang' ], - regex: '(8)(#)([0-7]+)' }, - { token: - [ 'constant.numeric.integer.base-9.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-9.erlang' ], - regex: '(9)(#)([0-8]+)' }, - { token: - [ 'constant.numeric.integer.decimal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.decimal.erlang' ], - regex: '(10)(#)(\\d+)' }, - { token: - [ 'constant.numeric.integer.base-11.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-11.erlang' ], - regex: '(11)(#)([\\daA]+)' }, - { token: - [ 'constant.numeric.integer.base-12.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-12.erlang' ], - regex: '(12)(#)([\\da-bA-B]+)' }, - { token: - [ 'constant.numeric.integer.base-13.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-13.erlang' ], - regex: '(13)(#)([\\da-cA-C]+)' }, - { token: - [ 'constant.numeric.integer.base-14.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-14.erlang' ], - regex: '(14)(#)([\\da-dA-D]+)' }, - { token: - [ 'constant.numeric.integer.base-15.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-15.erlang' ], - regex: '(15)(#)([\\da-eA-E]+)' }, - { token: - [ 'constant.numeric.integer.hexadecimal.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.hexadecimal.erlang' ], - regex: '(16)(#)([\\da-fA-F]+)' }, - { token: - [ 'constant.numeric.integer.base-17.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-17.erlang' ], - regex: '(17)(#)([\\da-gA-G]+)' }, - { token: - [ 'constant.numeric.integer.base-18.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-18.erlang' ], - regex: '(18)(#)([\\da-hA-H]+)' }, - { token: - [ 'constant.numeric.integer.base-19.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-19.erlang' ], - regex: '(19)(#)([\\da-iA-I]+)' }, - { token: - [ 'constant.numeric.integer.base-20.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-20.erlang' ], - regex: '(20)(#)([\\da-jA-J]+)' }, - { token: - [ 'constant.numeric.integer.base-21.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-21.erlang' ], - regex: '(21)(#)([\\da-kA-K]+)' }, - { token: - [ 'constant.numeric.integer.base-22.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-22.erlang' ], - regex: '(22)(#)([\\da-lA-L]+)' }, - { token: - [ 'constant.numeric.integer.base-23.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-23.erlang' ], - regex: '(23)(#)([\\da-mA-M]+)' }, - { token: - [ 'constant.numeric.integer.base-24.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-24.erlang' ], - regex: '(24)(#)([\\da-nA-N]+)' }, - { token: - [ 'constant.numeric.integer.base-25.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-25.erlang' ], - regex: '(25)(#)([\\da-oA-O]+)' }, - { token: - [ 'constant.numeric.integer.base-26.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-26.erlang' ], - regex: '(26)(#)([\\da-pA-P]+)' }, - { token: - [ 'constant.numeric.integer.base-27.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-27.erlang' ], - regex: '(27)(#)([\\da-qA-Q]+)' }, - { token: - [ 'constant.numeric.integer.base-28.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-28.erlang' ], - regex: '(28)(#)([\\da-rA-R]+)' }, - { token: - [ 'constant.numeric.integer.base-29.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-29.erlang' ], - regex: '(29)(#)([\\da-sA-S]+)' }, - { token: - [ 'constant.numeric.integer.base-30.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-30.erlang' ], - regex: '(30)(#)([\\da-tA-T]+)' }, - { token: - [ 'constant.numeric.integer.base-31.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-31.erlang' ], - regex: '(31)(#)([\\da-uA-U]+)' }, - { token: - [ 'constant.numeric.integer.base-32.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-32.erlang' ], - regex: '(32)(#)([\\da-vA-V]+)' }, - { token: - [ 'constant.numeric.integer.base-33.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-33.erlang' ], - regex: '(33)(#)([\\da-wA-W]+)' }, - { token: - [ 'constant.numeric.integer.base-34.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-34.erlang' ], - regex: '(34)(#)([\\da-xA-X]+)' }, - { token: - [ 'constant.numeric.integer.base-35.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-35.erlang' ], - regex: '(35)(#)([\\da-yA-Y]+)' }, - { token: - [ 'constant.numeric.integer.base-36.erlang', - 'punctuation.separator.base-integer.erlang', - 'constant.numeric.integer.base-36.erlang' ], - regex: '(36)(#)([\\da-zA-Z]+)' }, - { token: 'invalid.illegal.integer.erlang', - regex: '\\d+#[\\da-zA-Z]+' }, - { token: 'constant.numeric.integer.decimal.erlang', - regex: '\\d+' } ] } ], - '#parenthesized-expression': - [ { token: 'punctuation.section.expression.begin.erlang', - regex: '\\(', - push: - [ { token: 'punctuation.section.expression.end.erlang', - regex: '\\)', - next: 'pop' }, - { include: '#everything-else' }, - { defaultToken: 'meta.expression.parenthesized' } ] } ], - '#record-directive': - [ { token: - [ 'meta.directive.record.erlang', - 'punctuation.section.directive.begin.erlang', - 'meta.directive.record.erlang', - 'keyword.control.directive.import.erlang', - 'meta.directive.record.erlang', - 'punctuation.definition.parameters.begin.erlang', - 'meta.directive.record.erlang', - 'entity.name.type.class.record.definition.erlang', - 'meta.directive.record.erlang', - 'punctuation.separator.parameters.erlang' ], - regex: '^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', - push: - [ { token: - [ 'punctuation.definition.class.record.end.erlang', - 'meta.directive.record.erlang', - 'punctuation.definition.parameters.end.erlang', - 'meta.directive.record.erlang', - 'punctuation.section.directive.end.erlang' ], - regex: '(\\})(\\s*)(\\))(\\s*)(\\.)', - next: 'pop' }, - { include: '#internal-record-body' }, - { defaultToken: 'meta.directive.record.erlang' } ] } ], - '#record-usage': - [ { token: - [ 'keyword.operator.record.erlang', - 'meta.record-usage.erlang', - 'entity.name.type.class.record.erlang', - 'meta.record-usage.erlang', - 'punctuation.separator.record-field.erlang', - 'meta.record-usage.erlang', - 'variable.other.field.erlang' ], - regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')' }, - { token: - [ 'keyword.operator.record.erlang', - 'meta.record-usage.erlang', - 'entity.name.type.class.record.erlang' ], - regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')', - push: - [ { token: 'punctuation.definition.class.record.end.erlang', - regex: '\\}', - next: 'pop' }, - { include: '#internal-record-body' }, - { defaultToken: 'meta.record-usage.erlang' } ] } ], - '#string': - [ { token: 'punctuation.definition.string.begin.erlang', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.erlang', + push: [{ token: 'punctuation.section.expression.end.erlang', + regex: '\\)', + next: 'pop' }, + { include: '#everything-else' }, + { defaultToken: 'meta.expression.parenthesized' }] }], + '#record-directive': [{ token: ['meta.directive.record.erlang', + 'punctuation.section.directive.begin.erlang', + 'meta.directive.record.erlang', + 'keyword.control.directive.import.erlang', + 'meta.directive.record.erlang', + 'punctuation.definition.parameters.begin.erlang', + 'meta.directive.record.erlang', + 'entity.name.type.class.record.definition.erlang', + 'meta.directive.record.erlang', + 'punctuation.separator.parameters.erlang'], + regex: '^(\\s*)(-)(\\s*)(record)(\\s*)(\\()(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(,)', + push: [{ token: ['punctuation.definition.class.record.end.erlang', + 'meta.directive.record.erlang', + 'punctuation.definition.parameters.end.erlang', + 'meta.directive.record.erlang', + 'punctuation.section.directive.end.erlang'], + regex: '(\\})(\\s*)(\\))(\\s*)(\\.)', + next: 'pop' }, + { include: '#internal-record-body' }, + { defaultToken: 'meta.directive.record.erlang' }] }], + '#record-usage': [{ token: ['keyword.operator.record.erlang', + 'meta.record-usage.erlang', + 'entity.name.type.class.record.erlang', + 'meta.record-usage.erlang', + 'punctuation.separator.record-field.erlang', + 'meta.record-usage.erlang', + 'variable.other.field.erlang'], + regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')(\\s*)(\\.)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')' }, + { token: ['keyword.operator.record.erlang', + 'meta.record-usage.erlang', + 'entity.name.type.class.record.erlang'], + regex: '(#)(\\s*)([a-z][a-zA-Z\\d@_]*|\'[^\']*\')', + push: [{ token: 'punctuation.definition.class.record.end.erlang', + regex: '\\}', + next: 'pop' }, + { include: '#internal-record-body' }, + { defaultToken: 'meta.record-usage.erlang' }] }], + '#string': [{ token: 'punctuation.definition.string.begin.erlang', regex: '"', - next: 'pop' }, - { token: - [ 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'punctuation.definition.escape.erlang', - 'constant.character.escape.erlang', - 'constant.character.escape.erlang' ], - regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, - { token: 'invalid.illegal.string.erlang', regex: '\\\\\\^?.?' }, - { token: - [ 'punctuation.definition.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'constant.other.placeholder.erlang' ], - regex: '(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])' }, - { token: - [ 'punctuation.definition.placeholder.erlang', - 'punctuation.separator.placeholder-parts.erlang', - 'constant.other.placeholder.erlang', - 'constant.other.placeholder.erlang' ], - regex: '(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])' }, - { token: 'invalid.illegal.string.erlang', regex: '~.?' }, - { defaultToken: 'string.quoted.double.erlang' } ] } ], - '#symbolic-operator': - [ { token: 'keyword.operator.symbolic.erlang', - regex: '\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::' } ], - '#textual-operator': - [ { token: 'keyword.operator.textual.erlang', - regex: '\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b' } ], - '#tuple': - [ { token: 'punctuation.definition.tuple.begin.erlang', - regex: '\\{', - push: - [ { token: 'punctuation.definition.tuple.end.erlang', - regex: '\\}', - next: 'pop' }, - { token: 'punctuation.separator.tuple.erlang', regex: ',' }, - { include: '#everything-else' }, - { defaultToken: 'meta.structure.tuple.erlang' } ] } ], - '#variable': - [ { token: [ 'variable.other.erlang', 'variable.language.omitted.erlang' ], - regex: '(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)' } ] }; - + push: [{ token: 'punctuation.definition.string.end.erlang', + regex: '"', + next: 'pop' }, + { token: ['punctuation.definition.escape.erlang', + 'constant.character.escape.erlang', + 'punctuation.definition.escape.erlang', + 'constant.character.escape.erlang', + 'constant.character.escape.erlang'], + regex: '(\\\\)(?:([bdefnrstv\\\\\'"])|(\\^)([@-_])|([0-7]{1,3}))' }, + { token: 'invalid.illegal.string.erlang', regex: '\\\\\\^?.?' }, + { token: ['punctuation.definition.placeholder.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'constant.other.placeholder.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'constant.other.placeholder.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'constant.other.placeholder.erlang', + 'constant.other.placeholder.erlang'], + regex: '(~)(?:((?:\\-)?)(\\d+)|(\\*))?(?:(\\.)(?:(\\d+)|(\\*)))?(?:(\\.)(?:(\\*)|(.)))?([~cfegswpWPBX#bx\\+ni])' }, + { token: ['punctuation.definition.placeholder.erlang', + 'punctuation.separator.placeholder-parts.erlang', + 'constant.other.placeholder.erlang', + 'constant.other.placeholder.erlang'], + regex: '(~)((?:\\*)?)((?:\\d+)?)([~du\\-#fsacl])' }, + { token: 'invalid.illegal.string.erlang', regex: '~.?' }, + { defaultToken: 'string.quoted.double.erlang' }] }], + '#symbolic-operator': [{ token: 'keyword.operator.symbolic.erlang', + regex: '\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::' }], + '#textual-operator': [{ token: 'keyword.operator.textual.erlang', + regex: '\\b(?:andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b' }], + '#tuple': [{ token: 'punctuation.definition.tuple.begin.erlang', + regex: '\\{', + push: [{ token: 'punctuation.definition.tuple.end.erlang', + regex: '\\}', + next: 'pop' }, + { token: 'punctuation.separator.tuple.erlang', regex: ',' }, + { include: '#everything-else' }, + { defaultToken: 'meta.structure.tuple.erlang' }] }], + '#variable': [{ token: ['variable.other.erlang', 'variable.language.omitted.erlang'], + regex: '(_[a-zA-Z\\d@_]+|[A-Z][a-zA-Z\\d@_]*)|(_)' }] }; this.normalizeRules(); }; - ErlangHighlightRules.metaData = { comment: 'The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp', - fileTypes: [ 'erl', 'hrl' ], - keyEquivalent: '^~E', - name: 'Erlang', - scopeName: 'source.erlang' }; - - + fileTypes: ['erl', 'hrl'], + keyEquivalent: '^~E', + name: 'Erlang', + scopeName: 'source.erlang' }; oop.inherits(ErlangHighlightRules, TextHighlightRules); - exports.ErlangHighlightRules = ErlangHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -932,71 +759,78 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/erlang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/erlang_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/erlang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/erlang_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ErlangHighlightRules = require("./erlang_highlight_rules").ErlangHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ErlangHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "%"; this.blockComment = null; this.$id = "ace/mode/erlang"; + this.snippetFileId = "ace/snippets/erlang"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/erlang"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-flix.js b/vendor/assets/javascripts/ace/mode-flix.js new file mode 100644 index 00000000..62836f13 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-flix.js @@ -0,0 +1,164 @@ +define("ace/mode/flix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var FlixHighlightRules = function () { + var keywords = ("use|checked_cast|checked_ecast|unchecked_cast|masked_cast|as|discard|from|" + + "into|inject|project|solve|query|where|select|force|import|region|red|deref"); + var controlKeywords = ("choose|debug|do|for|forA|forM|foreach|yield|if|else|case|" + + "match|typematch|try|catch|resume|spawn|par|branch|jumpto"); + var operators = "not|and|or|fix"; + var declarations = "eff|def|law|enum|case|type|alias|class|instance|mod|let"; + var modifiers = "with|without|opaque|lazy|lawful|pub|override|sealed|static"; + var primitives = "Unit|Bool|Char|Float32|Float64|Int8|Int16|Int32|Int64|BigInt|String"; + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "keyword.control": controlKeywords, + "keyword.operator": operators, + "storage.type": declarations, + "storage.modifier": modifiers, + "support.type": primitives + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment.line", + regex: "\\/\\/.*$" + }, { + token: "comment.block", + regex: "\\/\\*", + next: "comment" + }, { + token: "string", + regex: '"', + next: "string" + }, { + token: "string.regexp", + regex: 'regex"', + next: "regex" + }, { + token: "constant.character", + regex: "'", + next: "char" + }, { + token: "constant.numeric", // hex + regex: "0x[a-fA-F0-9](_*[a-fA-F0-9])*(i8|i16|i32|i64|ii)?\\b" + }, { + token: "constant.numeric", // float + regex: "[0-9](_*[0-9])*\\.[0-9](_*[0-9])*(f32|f64)?\\b" + }, { + token: "constant.numeric", // integer + regex: "[0-9](_*[0-9])*(i8|i16|i32|i64|ii)?\\b" + }, { + token: "constant.language.boolean", + regex: "(true|false)\\b" + }, { + token: "constant.language", + regex: "null\\b" + }, { + token: "keyword.operator", + regex: "\\->|~>|<\\-|=>" + }, { + token: "storage.modifier", + regex: "@(Deprecated|Experimental|Internal|ParallelWhenPure|Parallel|LazyWhenPure|Lazy|Skip|Test)\\b" + }, { + token: "keyword", // hole + regex: "(\\?\\?\\?|\\?[a-zA-Z0-9]+)" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment.block", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment.block" + } + ], + "string": [ + { + token: "constant.character.escape", // unicode + regex: "\\\\(u[0-9a-fA-F]{4})" + }, { + token: "constant.character.escape", + regex: '\\\\.' + }, { + token: "string", + regex: '"', + next: "start" + }, { + token: "string", + regex: '[^"\\\\]+' + } + ], + "regex": [ + { + token: "constant.character.escape", // unicode + regex: "\\\\(u[0-9a-fA-F]{4})" + }, { + token: "constant.character.escape", + regex: '\\\\.' + }, { + token: "string.regexp", + regex: '"', + next: "start" + }, { + token: "string.regexp", + regex: '[^"\\\\]+' + } + ], + "char": [ + { + token: "constant.character.escape", // unicode + regex: "\\\\(u[0-9a-fA-F]{4})" + }, { + token: "constant.character.escape", + regex: '\\\\.' + }, { + token: "constant.character", + regex: "'", + next: "start" + }, { + token: "constant.character", + regex: "[^'\\\\]+" + } + ] + }; +}; +oop.inherits(FlixHighlightRules, TextHighlightRules); +exports.FlixHighlightRules = FlixHighlightRules; + +}); + +define("ace/mode/flix",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/flix_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var FlixHighlightRules = require("./flix_highlight_rules").FlixHighlightRules; +var Mode = function () { + this.HighlightRules = FlixHighlightRules; +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/flix"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/flix"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-forth.js b/vendor/assets/javascripts/ace/mode-forth.js index 94a49ff0..f4c447eb 100644 --- a/vendor/assets/javascripts/ace/mode-forth.js +++ b/vendor/assets/javascripts/ace/mode-forth.js @@ -1,213 +1,170 @@ -define("ace/mode/forth_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/forth_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.github.com/vze26m98/Forth.tmbundle/master/Syntaxes/Forth.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ForthHighlightRules = function() { - - this.$rules = { start: [ { include: '#forth' } ], - '#comment': - [ { token: 'comment.line.double-dash.forth', - regex: '(?:^|\\s)--\\s.*$', - comment: 'line comments for iForth' }, - { token: 'comment.line.backslash.forth', - regex: '(?:^|\\s)\\\\[\\s\\S]*$', - comment: 'ANSI line comment' }, - { token: 'comment.line.backslash-g.forth', - regex: '(?:^|\\s)\\\\[Gg] .*$', - comment: 'gForth line comment' }, - { token: 'comment.block.forth', - regex: '(?:^|\\s)\\(\\*(?=\\s|$)', - push: - [ { token: 'comment.block.forth', - regex: '(?:^|\\s)\\*\\)(?=\\s|$)', - next: 'pop' }, - { defaultToken: 'comment.block.forth' } ], - comment: 'multiline comments for iForth' }, - { token: 'comment.block.documentation.forth', - regex: '\\bDOC\\b', - caseInsensitive: true, - push: - [ { token: 'comment.block.documentation.forth', - regex: '\\bENDDOC\\b', +var ForthHighlightRules = function () { + this.$rules = { start: [{ include: '#forth' }], + '#comment': [{ token: 'comment.line.double-dash.forth', + regex: '(?:^|\\s)--\\s.*$', + comment: 'line comments for iForth' }, + { token: 'comment.line.backslash.forth', + regex: '(?:^|\\s)\\\\[\\s\\S]*$', + comment: 'ANSI line comment' }, + { token: 'comment.line.backslash-g.forth', + regex: '(?:^|\\s)\\\\[Gg] .*$', + comment: 'gForth line comment' }, + { token: 'comment.block.forth', + regex: '(?:^|\\s)\\(\\*(?=\\s|$)', + push: [{ token: 'comment.block.forth', + regex: '(?:^|\\s)\\*\\)(?=\\s|$)', + next: 'pop' }, + { defaultToken: 'comment.block.forth' }], + comment: 'multiline comments for iForth' }, + { token: 'comment.block.documentation.forth', + regex: '\\bDOC\\b', caseInsensitive: true, - next: 'pop' }, - { defaultToken: 'comment.block.documentation.forth' } ], - comment: 'documentation comments for iForth' }, - { token: 'comment.line.parentheses.forth', - regex: '(?:^|\\s)\\.?\\( [^)]*\\)', - comment: 'ANSI line comment' } ], - '#constant': - [ { token: 'constant.language.forth', - regex: '(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)', - caseInsensitive: true}, - { token: 'constant.numeric.forth', - regex: '(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)'}, - { token: 'constant.character.forth', - regex: '(?:^|\\s)(?:[&^]\\S|(?:"|\')\\S(?:"|\'))(?=\\s|$)'}], - '#forth': - [ { include: '#constant' }, - { include: '#comment' }, - { include: '#string' }, - { include: '#word' }, - { include: '#variable' }, - { include: '#storage' }, - { include: '#word-def' } ], - '#storage': - [ { token: 'storage.type.forth', - regex: '(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)', - caseInsensitive: true}], - '#string': - [ { token: 'string.quoted.double.forth', - regex: '(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")', - caseInsensitive: true}, - { token: 'string.unquoted.forth', - regex: '(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)', - caseInsensitive: true}], - '#variable': - [ { token: 'variable.language.forth', - regex: '\\b(?:I|J)\\b', - caseInsensitive: true } ], - '#word': - [ { token: 'keyword.control.immediate.forth', - regex: '(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.immediate.forth', - regex: '(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT\'S|])(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.control.compile-only.forth', - regex: '(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.compile-only.forth', - regex: '(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\[\'\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]||DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.non-immediate.forth', - regex: '(?:^|\\s)(?:\'|||CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)', - caseInsensitive: true}, - { token: 'keyword.other.warning.forth', - regex: '(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)', - caseInsensitive: true}], - '#word-def': - [ { token: - [ 'keyword.other.compile-only.forth', - 'keyword.other.compile-only.forth', - 'meta.block.forth', - 'entity.name.function.forth' ], - regex: '(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)', - caseInsensitive: true, - push: - [ { token: 'keyword.other.compile-only.forth', - regex: ';(?:CODE)?', + push: [{ token: 'comment.block.documentation.forth', + regex: '\\bENDDOC\\b', + caseInsensitive: true, + next: 'pop' }, + { defaultToken: 'comment.block.documentation.forth' }], + comment: 'documentation comments for iForth' }, + { token: 'comment.line.parentheses.forth', + regex: '(?:^|\\s)\\.?\\( [^)]*\\)', + comment: 'ANSI line comment' }], + '#constant': [{ token: 'constant.language.forth', + regex: '(?:^|\\s)(?:TRUE|FALSE|BL|PI|CELL|C/L|R/O|W/O|R/W)(?=\\s|$)', + caseInsensitive: true }, + { token: 'constant.numeric.forth', + regex: '(?:^|\\s)[$#%]?[-+]?[0-9]+(?:\\.[0-9]*e-?[0-9]+|\\.?[0-9a-fA-F]*)(?=\\s|$)' }, + { token: 'constant.character.forth', + regex: '(?:^|\\s)(?:[&^]\\S|(?:"|\')\\S(?:"|\'))(?=\\s|$)' }], + '#forth': [{ include: '#constant' }, + { include: '#comment' }, + { include: '#string' }, + { include: '#word' }, + { include: '#variable' }, + { include: '#storage' }, + { include: '#word-def' }], + '#storage': [{ token: 'storage.type.forth', + regex: '(?:^|\\s)(?:2CONSTANT|2VARIABLE|ALIAS|CONSTANT|CREATE-INTERPRET/COMPILE[:]?|CREATE|DEFER|FCONSTANT|FIELD|FVARIABLE|USER|VALUE|VARIABLE|VOCABULARY)(?=\\s|$)', + caseInsensitive: true }], + '#string': [{ token: 'string.quoted.double.forth', + regex: '(ABORT" |BREAK" |\\." |C" |0"|S\\\\?" )([^"]+")', + caseInsensitive: true }, + { token: 'string.unquoted.forth', + regex: '(?:INCLUDE|NEEDS|REQUIRE|USE)[ ]\\S+(?=\\s|$)', + caseInsensitive: true }], + '#variable': [{ token: 'variable.language.forth', + regex: '\\b(?:I|J)\\b', + caseInsensitive: true }], + '#word': [{ token: 'keyword.control.immediate.forth', + regex: '(?:^|\\s)\\[(?:\\?DO|\\+LOOP|AGAIN|BEGIN|DEFINED|DO|ELSE|ENDIF|FOR|IF|IFDEF|IFUNDEF|LOOP|NEXT|REPEAT|THEN|UNTIL|WHILE)\\](?=\\s|$)', + caseInsensitive: true }, + { token: 'keyword.other.immediate.forth', + regex: '(?:^|\\s)(?:COMPILE-ONLY|IMMEDIATE|IS|RESTRICT|TO|WHAT\'S|])(?=\\s|$)', + caseInsensitive: true }, + { token: 'keyword.control.compile-only.forth', + regex: '(?:^|\\s)(?:-DO|\\-LOOP|\\?DO|\\?LEAVE|\\+DO|\\+LOOP|ABORT\\"|AGAIN|AHEAD|BEGIN|CASE|DO|ELSE|ENDCASE|ENDIF|ENDOF|ENDTRY\\-IFERROR|ENDTRY|FOR|IF|IFERROR|LEAVE|LOOP|NEXT|RECOVER|REPEAT|RESTORE|THEN|TRY|U\\-DO|U\\+DO|UNTIL|WHILE)(?=\\s|$)', + caseInsensitive: true }, + { token: 'keyword.other.compile-only.forth', + regex: '(?:^|\\s)(?:\\?DUP-0=-IF|\\?DUP-IF|\\)|\\[|\\[\'\\]|\\[CHAR\\]|\\[COMPILE\\]|\\[IS\\]|\\[TO\\]||DEFERS|DOES>|INTERPRETATION>|OF|POSTPONE)(?=\\s|$)', + caseInsensitive: true }, + { token: 'keyword.other.non-immediate.forth', + regex: '(?:^|\\s)(?:\'|||CHAR|END-STRUCT|INCLUDE[D]?|LOAD|NEEDS|REQUIRE[D]?|REVISION|SEE|STRUCT|THRU|USE)(?=\\s|$)', + caseInsensitive: true }, + { token: 'keyword.other.warning.forth', + regex: '(?:^|\\s)(?:~~|BREAK:|BREAK"|DBG)(?=\\s|$)', + caseInsensitive: true }], + '#word-def': [{ token: ['keyword.other.compile-only.forth', + 'keyword.other.compile-only.forth', + 'meta.block.forth', + 'entity.name.function.forth'], + regex: '(:NONAME)|(^:|\\s:)(\\s)(\\S+)(?=\\s|$)', caseInsensitive: true, - next: 'pop' }, - { include: '#constant' }, - { include: '#comment' }, - { include: '#string' }, - { include: '#word' }, - { include: '#variable' }, - { include: '#storage' }, - { defaultToken: 'meta.block.forth' } ] } ] }; - + push: [{ token: 'keyword.other.compile-only.forth', + regex: ';(?:CODE)?', + caseInsensitive: true, + next: 'pop' }, + { include: '#constant' }, + { include: '#comment' }, + { include: '#string' }, + { include: '#word' }, + { include: '#variable' }, + { include: '#storage' }, + { defaultToken: 'meta.block.forth' }] }] }; this.normalizeRules(); }; - -ForthHighlightRules.metaData = { fileTypes: [ 'frt', 'fs', 'ldr', 'fth', '4th' ], - foldingStartMarker: '/\\*\\*|\\{\\s*$', - foldingStopMarker: '\\*\\*/|^\\s*\\}', - keyEquivalent: '^~F', - name: 'Forth', - scopeName: 'source.forth' }; - - +ForthHighlightRules.metaData = { fileTypes: ['frt', 'fs', 'ldr', 'fth', '4th'], + foldingStartMarker: '/\\*\\*|\\{\\s*$', + foldingStopMarker: '\\*\\*/|^\\s*\\}', + keyEquivalent: '^~F', + name: 'Forth', + scopeName: 'source.forth' }; oop.inherits(ForthHighlightRules, TextHighlightRules); - exports.ForthHighlightRules = ForthHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -220,71 +177,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/forth",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/forth_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/forth",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/forth_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ForthHighlightRules = require("./forth_highlight_rules").ForthHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ForthHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; this.blockComment = null; this.$id = "ace/mode/forth"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/forth"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-fortran.js b/vendor/assets/javascripts/ace/mode-fortran.js index 1fe54242..eaf7b915 100644 --- a/vendor/assets/javascripts/ace/mode-fortran.js +++ b/vendor/assets/javascripts/ace/mode-fortran.js @@ -1,68 +1,47 @@ -define("ace/mode/fortran_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/fortran_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* Derived from Python highlighing rules */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var FortranHighlightRules = function() { - - var keywords = ( - "call|case|contains|continue|cycle|do|else|elseif|end|enddo|endif|function|"+ - "if|implicit|in|include|inout|intent|module|none|only|out|print|program|return|"+ +var FortranHighlightRules = function () { + var keywords = ("call|case|contains|continue|cycle|do|else|elseif|end|enddo|endif|function|" + + "if|implicit|in|include|inout|intent|module|none|only|out|print|program|return|" + "select|status|stop|subroutine|" + - "return|then|use|while|write|"+ - "CALL|CASE|CONTAINS|CONTINUE|CYCLE|DO|ELSE|ELSEIF|END|ENDDO|ENDIF|FUNCTION|"+ - "IF|IMPLICIT|IN|INCLUDE|INOUT|INTENT|MODULE|NONE|ONLY|OUT|PRINT|PROGRAM|RETURN|"+ + "return|then|use|while|write|" + + "CALL|CASE|CONTAINS|CONTINUE|CYCLE|DO|ELSE|ELSEIF|END|ENDDO|ENDIF|FUNCTION|" + + "IF|IMPLICIT|IN|INCLUDE|INOUT|INTENT|MODULE|NONE|ONLY|OUT|PRINT|PROGRAM|RETURN|" + "SELECT|STATUS|STOP|SUBROUTINE|" + - "RETURN|THEN|USE|WHILE|WRITE" - ); - - var keywordOperators = ( - "and|or|not|eq|ne|gt|ge|lt|le|" + - "AND|OR|NOT|EQ|NE|GT|GE|LT|LE" - ); - - var builtinConstants = ( - "true|false|TRUE|FALSE" - ); - - var builtinFunctions = ( - "abs|achar|acos|acosh|adjustl|adjustr|aimag|aint|all|allocate|"+ - "anint|any|asin|asinh|associated|atan|atan2|atanh|"+ - "bessel_j0|bessel_j1|bessel_jn|bessel_y0|bessel_y1|bessel_yn|"+ - "bge|bgt|bit_size|ble|blt|btest|ceiling|char|cmplx|conjg|cos|cosh|"+ - "count|cpu_time|cshift|date_and_time|dble|deallocate|digits|dim|dot_product|dprod|"+ - "dshiftl|dshiftr|dsqrt|eoshift|epsilon|erf|erfc|erfc_scaled|exp|float|floor|"+ - "format|fraction|gamma|input|len|lge|lgt|lle|llt|log|log10|maskl|maskr|matmul|max|maxloc|maxval|"+ - "merge|min|minloc|minval|mod|modulo|nint|not|norm2|null|nullify|pack|parity|popcnt|poppar|"+ - "precision|present|product|radix|random_number|random_seed|range|repeat|reshape|round|"+ - "rrspacing|same_type_as|scale|scan|selected_char_kind|selected_int_kind|selected_real_kind|"+ - "set_exponent|shape|shifta|shiftl|shiftr|sign|sin|sinh|size|sngl|spacing|spread|"+ + "RETURN|THEN|USE|WHILE|WRITE"); + var keywordOperators = ("and|or|not|eq|ne|gt|ge|lt|le|" + + "AND|OR|NOT|EQ|NE|GT|GE|LT|LE"); + var builtinConstants = ("true|false|TRUE|FALSE"); + var builtinFunctions = ("abs|achar|acos|acosh|adjustl|adjustr|aimag|aint|all|allocate|" + + "anint|any|asin|asinh|associated|atan|atan2|atanh|" + + "bessel_j0|bessel_j1|bessel_jn|bessel_y0|bessel_y1|bessel_yn|" + + "bge|bgt|bit_size|ble|blt|btest|ceiling|char|cmplx|conjg|cos|cosh|" + + "count|cpu_time|cshift|date_and_time|dble|deallocate|digits|dim|dot_product|dprod|" + + "dshiftl|dshiftr|dsqrt|eoshift|epsilon|erf|erfc|erfc_scaled|exp|float|floor|" + + "format|fraction|gamma|input|len|lge|lgt|lle|llt|log|log10|maskl|maskr|matmul|max|maxloc|maxval|" + + "merge|min|minloc|minval|mod|modulo|nint|not|norm2|null|nullify|pack|parity|popcnt|poppar|" + + "precision|present|product|radix|random_number|random_seed|range|repeat|reshape|round|" + + "rrspacing|same_type_as|scale|scan|selected_char_kind|selected_int_kind|selected_real_kind|" + + "set_exponent|shape|shifta|shiftl|shiftr|sign|sin|sinh|size|sngl|spacing|spread|" + "sqrt|sum|system_clock|tan|tanh|tiny|trailz|transfer|transpose|trim|ubound|unpack|verify|" + - "ABS|ACHAR|ACOS|ACOSH|ADJUSTL|ADJUSTR|AIMAG|AINT|ALL|ALLOCATE|"+ - "ANINT|ANY|ASIN|ASINH|ASSOCIATED|ATAN|ATAN2|ATANH|"+ - "BESSEL_J0|BESSEL_J1|BESSEL_JN|BESSEL_Y0|BESSEL_Y1|BESSEL_YN|"+ - "BGE|BGT|BIT_SIZE|BLE|BLT|BTEST|CEILING|CHAR|CMPLX|CONJG|COS|COSH|"+ - "COUNT|CPU_TIME|CSHIFT|DATE_AND_TIME|DBLE|DEALLOCATE|DIGITS|DIM|DOT_PRODUCT|DPROD|"+ - "DSHIFTL|DSHIFTR|DSQRT|EOSHIFT|EPSILON|ERF|ERFC|ERFC_SCALED|EXP|FLOAT|FLOOR|"+ - "FORMAT|FRACTION|GAMMA|INPUT|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|MASKL|MASKR|MATMUL|MAX|MAXLOC|MAXVAL|"+ - "MERGE|MIN|MINLOC|MINVAL|MOD|MODULO|NINT|NOT|NORM2|NULL|NULLIFY|PACK|PARITY|POPCNT|POPPAR|"+ - "PRECISION|PRESENT|PRODUCT|RADIX|RANDOM_NUMBER|RANDOM_SEED|RANGE|REPEAT|RESHAPE|ROUND|"+ - "RRSPACING|SAME_TYPE_AS|SCALE|SCAN|SELECTED_CHAR_KIND|SELECTED_INT_KIND|SELECTED_REAL_KIND|"+ - "SET_EXPONENT|SHAPE|SHIFTA|SHIFTL|SHIFTR|SIGN|SIN|SINH|SIZE|SNGL|SPACING|SPREAD|"+ - "SQRT|SUM|SYSTEM_CLOCK|TAN|TANH|TINY|TRAILZ|TRANSFER|TRANSPOSE|TRIM|UBOUND|UNPACK|VERIFY" - ); - - var storageType = ( - "logical|character|integer|real|type|" + - "LOGICAL|CHARACTER|INTEGER|REAL|TYPE" - ); - - var storageModifiers = ( - "allocatable|dimension|intent|parameter|pointer|target|private|public|" + - "ALLOCATABLE|DIMENSION|INTENT|PARAMETER|POINTER|TARGET|PRIVATE|PUBLIC" - ); - + "ABS|ACHAR|ACOS|ACOSH|ADJUSTL|ADJUSTR|AIMAG|AINT|ALL|ALLOCATE|" + + "ANINT|ANY|ASIN|ASINH|ASSOCIATED|ATAN|ATAN2|ATANH|" + + "BESSEL_J0|BESSEL_J1|BESSEL_JN|BESSEL_Y0|BESSEL_Y1|BESSEL_YN|" + + "BGE|BGT|BIT_SIZE|BLE|BLT|BTEST|CEILING|CHAR|CMPLX|CONJG|COS|COSH|" + + "COUNT|CPU_TIME|CSHIFT|DATE_AND_TIME|DBLE|DEALLOCATE|DIGITS|DIM|DOT_PRODUCT|DPROD|" + + "DSHIFTL|DSHIFTR|DSQRT|EOSHIFT|EPSILON|ERF|ERFC|ERFC_SCALED|EXP|FLOAT|FLOOR|" + + "FORMAT|FRACTION|GAMMA|INPUT|LEN|LGE|LGT|LLE|LLT|LOG|LOG10|MASKL|MASKR|MATMUL|MAX|MAXLOC|MAXVAL|" + + "MERGE|MIN|MINLOC|MINVAL|MOD|MODULO|NINT|NOT|NORM2|NULL|NULLIFY|PACK|PARITY|POPCNT|POPPAR|" + + "PRECISION|PRESENT|PRODUCT|RADIX|RANDOM_NUMBER|RANDOM_SEED|RANGE|REPEAT|RESHAPE|ROUND|" + + "RRSPACING|SAME_TYPE_AS|SCALE|SCAN|SELECTED_CHAR_KIND|SELECTED_INT_KIND|SELECTED_REAL_KIND|" + + "SET_EXPONENT|SHAPE|SHIFTA|SHIFTL|SHIFTR|SIGN|SIN|SINH|SIZE|SNGL|SPACING|SPREAD|" + + "SQRT|SUM|SYSTEM_CLOCK|TAN|TANH|TINY|TRAILZ|TRANSFER|TRANSPOSE|TRIM|UBOUND|UNPACK|VERIFY"); + var storageType = ("logical|character|integer|real|type|" + + "LOGICAL|CHARACTER|INTEGER|REAL|TYPE"); + var storageModifiers = ("allocatable|dimension|intent|parameter|pointer|target|private|public|" + + "ALLOCATABLE|DIMENSION|INTENT|PARAMETER|POINTER|TARGET|PRIVATE|PUBLIC"); var keywordMapper = this.createKeywordMapper({ "invalid.deprecated": "debugger", "support.function": builtinFunctions, @@ -70,219 +49,189 @@ var FortranHighlightRules = function() { "keyword": keywords, "keyword.operator": keywordOperators, "storage.type": storageType, - "storage.modifier" : storageModifiers + "storage.modifier": storageModifiers }, "identifier"); - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var octInteger = "(?:0[oO]?[0-7]+)"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var binInteger = "(?:0[bB][01]+)"; var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - var exponent = "(?:[eE][+-]?\\d+)"; var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; this.$rules = { - "start" : [ { - token : "comment", - regex : "!.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|define|undef|INCLUDE|IMPORT|DEFINE|UNDEF)\\b" - }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|ifdef|else|elseif|ifndef|ENDIF|IFDEF|ELSE|ELSEIF|IFNDEF)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "qstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "start" - }, { - defaultToken: "string" - }] + "start": [{ + token: "comment", + regex: "!.*$" + }, { + token: "string", // multi line """ string start + regex: strPre + '"{3}', + next: "qqstring3" + }, { + token: "string", // " string + regex: strPre + '"(?=.)', + next: "qqstring" + }, { + token: "string", // multi line ''' string start + regex: strPre + "'{3}", + next: "qstring3" + }, { + token: "string", // ' string + regex: strPre + "'(?=.)", + next: "qstring" + }, { + token: "constant.numeric", // imaginary + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // long integer + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: "keyword", // pre-compiler directives + regex: "#\\s*(?:include|import|define|undef|INCLUDE|IMPORT|DEFINE|UNDEF)\\b" + }, { + token: "keyword", // special case pre-compiler directive + regex: "#\\s*(?:endif|ifdef|else|elseif|ifndef|ENDIF|IFDEF|ELSE|ELSEIF|IFNDEF)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: "text", + regex: "\\s+" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "qstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }] }; }; - oop.inherits(FortranHighlightRules, TextHighlightRules); - exports.FortranHighlightRules = FortranHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -295,91 +244,81 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/fortran",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fortran_highlight_rules","ace/mode/folding/cstyle","ace/range"], function(require, exports, module) { +define("ace/mode/fortran",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fortran_highlight_rules","ace/mode/folding/cstyle","ace/range"], function(require, exports, module){/* Derived from Python rules */ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var FortranHighlightRules = require("./fortran_highlight_rules").FortranHighlightRules; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var Range = require("../range").Range; - -var Mode = function() { +var Mode = function () { this.HighlightRules = FortranHighlightRules; this.foldingRules = new CStyleFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "!"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } } - return indent; }; - var outdents = { "return": 1, "break": 1, @@ -388,36 +327,35 @@ oop.inherits(Mode, TextMode); "BREAK": 1, "CONTINUE": 1 }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { if (input !== "\r\n" && input !== "\r" && input !== "\n") return false; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens) return false; do { var last = tokens.pop(); } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - if (!last) return false; - return (last.type == "keyword" && outdents[last.value]); }; - - this.autoOutdent = function(state, doc, row) { - + this.autoOutdent = function (state, doc, row) { row += 1; var indent = this.$getIndent(doc.getLine(row)); var tab = doc.getTabString(); if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); }; - this.$id = "ace/mode/fortran"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/fortran"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-fsharp.js b/vendor/assets/javascripts/ace/mode-fsharp.js new file mode 100644 index 00000000..de705f40 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-fsharp.js @@ -0,0 +1,277 @@ +define("ace/mode/fsharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var FSharpHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "variable": "this", + "keyword": 'abstract|assert|base|begin|class|default|delegate|done|downcast|downto|elif\ +|else|exception|extern|false|finally|function|global|inherit|inline|interface|internal|lazy|match\ +|member|module|mutable|namespace|open|or|override|private|public|rec|return|return!|select|static\ +|struct|then|to|true|try|typeof|upcast|use|use!|val|void|when|while|with|yield|yield!|__SOURCE_DIRECTORY__\ +|as|asr|land|lor|lsl|lsr|lxor|mod|sig|atomic|break|checked|component|const|constraint|constructor|continue\ +|eager|event|external|fixed|functor|include|method|mixin|object|parallel|process|protected|pure|sealed|tailcall\ +|trait|virtual|volatile|and|do|end|for|fun|if|in|let|let!|new|not|null|of|endif', + "constant": "true|false" + }, "identifier"); + var floatNumber = "(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))"; + this.$rules = { + "start": [ + { + token: "variable.classes", + regex: '\\[\\<[.]*\\>\\]' + }, + { + token: "comment", + regex: '//.*$' + }, + { + token: "comment.start", + regex: /\(\*(?!\))/, + push: "blockComment" + }, + { + token: "string", + regex: "'.'" + }, + { + token: "string", + regex: '"""', + next: [{ + token: "constant.language.escape", + regex: /\\./, + next: "qqstring" + }, { + token: "string", + regex: '"""', + next: "start" + }, { + defaultToken: "string" + }] + }, + { + token: "string", + regex: '"', + next: [{ + token: "constant.language.escape", + regex: /\\./, + next: "qqstring" + }, { + token: "string", + regex: '"', + next: "start" + }, { + defaultToken: "string" + }] + }, + { + token: ["verbatim.string", "string"], + regex: '(@?)(")', + stateName: "qqstring", + next: [{ + token: "constant.language.escape", + regex: '""' + }, { + token: "string", + regex: '"', + next: "start" + }, { + defaultToken: "string" + }] + }, + { + token: "constant.float", + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, + { + token: "constant.float", + regex: floatNumber + }, + { + token: "constant.integer", + regex: "(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b" + }, + { + token: ["keyword.type", "variable"], + regex: "(type\\s)([a-zA-Z0-9_$\-]*\\b)" + }, + { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "keyword.operator", + regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|\\(\\*\\)" + }, + { + token: "paren.lparen", + regex: "[[({]" + }, + { + token: "paren.rparen", + regex: "[\\])}]" + } + ], + blockComment: [{ + regex: /\(\*\)/, + token: "comment" + }, { + regex: /\(\*(?!\))/, + token: "comment.start", + push: "blockComment" + }, { + regex: /\*\)/, + token: "comment.end", + next: "pop" + }, { + defaultToken: "comment" + }] + }; + this.normalizeRules(); +}; +oop.inherits(FSharpHighlightRules, TextHighlightRules); +exports.FSharpHighlightRules = FSharpHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/fsharp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fsharp_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var FSharpHighlightRules = require("./fsharp_highlight_rules").FSharpHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = FSharpHighlightRules; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "(*", end: "*)", nestable: true }; + this.$id = "ace/mode/fsharp"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/fsharp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-fsl.js b/vendor/assets/javascripts/ace/mode-fsl.js new file mode 100644 index 00000000..9e31401a --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-fsl.js @@ -0,0 +1,226 @@ +define("ace/mode/fsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var FSLHighlightRules = function () { + this.$rules = { + start: [{ + token: "punctuation.definition.comment.mn", + regex: /\/\*/, + push: [{ + token: "punctuation.definition.comment.mn", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.fsl" + }] + }, { + token: "comment.line.fsl", + regex: /\/\//, + push: [{ + token: "comment.line.fsl", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.line.fsl" + }] + }, { + token: "entity.name.function", + regex: /\${/, + push: [{ + token: "entity.name.function", + regex: /}/, + next: "pop" + }, { + defaultToken: "keyword.other" + }], + comment: "js outcalls" + }, { + token: "constant.numeric", + regex: /[0-9]*\.[0-9]*\.[0-9]*/, + comment: "semver" + }, { + token: "constant.language.fslLanguage", + regex: "(?:" + + "graph_layout|machine_name|machine_author|machine_license|machine_comment|machine_language" + + "|machine_version|machine_reference|npm_name|graph_layout|on_init|on_halt|on_end|on_terminate|on_finalize|on_transition" + + "|on_action|on_stochastic_action|on_legal|on_main|on_forced|on_validation|on_validation_failure|on_transition_refused|on_forced_transition_refused" + + "|on_action_refused|on_enter|on_exit|start_states|end_states|terminal_states|final_states|fsl_version" + + ")\\s*:" + }, { + token: "keyword.control.transition.fslArrow", + regex: /<->|<-|->|<=>|=>|<=|<~>|~>|<~|<-=>|<=->|<-~>|<~->|<=~>|<~=>/ + }, { + token: "constant.numeric.fslProbability", + regex: /[0-9]+%/, + comment: "edge probability annotation" + }, { + token: "constant.character.fslAction", + regex: /\'[^']*\'/, + comment: "action annotation" + }, { + token: "string.quoted.double.fslLabel.doublequoted", + regex: /\"[^"]*\"/, + comment: "fsl label annotation" + }, { + token: "entity.name.tag.fslLabel.atom", + regex: /[a-zA-Z0-9_.+&()#@!?,]/, + comment: "fsl label annotation" + }] + }; + this.normalizeRules(); +}; +FSLHighlightRules.metaData = { + fileTypes: ["fsl", "fsl_state"], + name: "FSL", + scopeName: "source.fsl" +}; +oop.inherits(FSLHighlightRules, TextHighlightRules); +exports.FSLHighlightRules = FSLHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/fsl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/fsl_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var FSLHighlightRules = require("./fsl_highlight_rules").FSLHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = FSLHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/fsl"; + this.snippetFileId = "ace/snippets/fsl"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/fsl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-ftl.js b/vendor/assets/javascripts/ace/mode-ftl.js index 2fce9266..437cee1b 100644 --- a/vendor/assets/javascripts/ace/mode-ftl.js +++ b/vendor/assets/javascripts/ace/mode-ftl.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,260 +18,317 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -284,142 +336,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -434,9 +486,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -452,13 +504,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -491,13 +543,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -507,44 +593,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -559,40 +663,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -600,7 +724,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -610,14 +735,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/ftl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ftl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var FtlLangHighlightRules = function () { - var stringBuiltIns = "\\?|substring|cap_first|uncap_first|capitalize|chop_linebreak|date|time|datetime|" + "ends_with|html|groups|index_of|j_string|js_string|json_string|last_index_of|length|lower_case|" + "left_pad|right_pad|contains|matches|number|replace|rtf|url|split|starts_with|string|trim|" @@ -1020,163 +1110,149 @@ var FtlLangHighlightRules = function () { + "eval|has_content|interpret|is_[a-z_]+|namespacenew"; var allBuiltIns = stringBuiltIns + numberBuiltIns + dateBuiltIns + seqBuiltIns + hashBuiltIns + xmlBuiltIns + expertBuiltIns; - var deprecatedBuiltIns = "default|exists|if_exists|web_safe"; - var variables = "data_model|error|globals|lang|locale|locals|main|namespace|node|current_node|" + "now|output_encoding|template_name|url_escaping_charset|vars|version"; - var operators = "gt|gte|lt|lte|as|in|using"; - var reserved = "true|false"; - var attributes = "encoding|parse|locale|number_format|date_format|time_format|datetime_format|time_zone|" + "url_escaping_charset|classic_compatible|strip_whitespace|strip_text|strict_syntax|ns_prefixes|" + "attributes"; - this.$rules = { - "start" : [{ - token : "constant.character.entity", - regex : /&[^;]+;/ - }, { - token : "support.function", - regex : "\\?("+allBuiltIns+")" - }, { - token : "support.function.deprecated", - regex : "\\?("+deprecatedBuiltIns+")" - }, { - token : "language.variable", - regex : "\\.(?:"+variables+")" - }, { - token : "constant.language", - regex : "\\b("+reserved+")\\b" - }, { - token : "keyword.operator", - regex : "\\b(?:"+operators+")\\b" - }, { - token : "entity.other.attribute-name", - regex : attributes - }, { - token : "string", // - regex : /['"]/, - next : "qstring" - }, { - token : function(value) { - if (value.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")) { - return "constant.numeric"; - } else { - return "variable"; - } - }, - regex : /[\w.+\-]+/ - }, { - token : "keyword.operator", - regex : "!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - }], - - "qstring" : [{ - token : "constant.character.escape", - regex : '\\\\[nrtvef\\\\"$]' - }, { - token : "string", - regex : /['"]/, - next : "start" - }, { - defaultToken : "string" - }] + "start": [{ + token: "constant.character.entity", + regex: /&[^;]+;/ + }, { + token: "support.function", + regex: "\\?(" + allBuiltIns + ")" + }, { + token: "support.function.deprecated", + regex: "\\?(" + deprecatedBuiltIns + ")" + }, { + token: "language.variable", + regex: "\\.(?:" + variables + ")" + }, { + token: "constant.language", + regex: "\\b(" + reserved + ")\\b" + }, { + token: "keyword.operator", + regex: "\\b(?:" + operators + ")\\b" + }, { + token: "entity.other.attribute-name", + regex: attributes + }, { + token: "string", // + regex: /['"]/, + next: "qstring" + }, { + token: function (value) { + if (value.match("^[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?$")) { + return "constant.numeric"; + } + else { + return "variable"; + } + }, + regex: /[\w.+\-]+/ + }, { + token: "keyword.operator", + regex: "!|\\.|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }], + "qstring": [{ + token: "constant.character.escape", + regex: '\\\\[nrtvef\\\\"$]' + }, { + token: "string", + regex: /['"]/, + next: "start" + }, { + defaultToken: "string" + }] }; }; - oop.inherits(FtlLangHighlightRules, TextHighlightRules); - -var FtlHighlightRules = function() { +var FtlHighlightRules = function () { HtmlHighlightRules.call(this); - var directives = "assign|attempt|break|case|compress|default|elseif|else|escape|fallback|function|flush|" + "ftl|global|if|import|include|list|local|lt|macro|nested|noescape|noparse|nt|recover|recurse|return|rt|" + "setting|stop|switch|t|visit"; - var startRules = [ { - token : "comment", - regex : "<#--", - next : "ftl-dcomment" + token: "comment", + regex: "<#--", + next: "ftl-dcomment" }, { - token : "string.interpolated", - regex : "\\${", - push : "ftl-start" + token: "string.interpolated", + regex: "\\${", + push: "ftl-start" }, { - token : "keyword.function", - regex : "", - next : "pop" + token: "keyword", + regex: "/?>", + next: "pop" }, { - token : "string.interpolated", - regex : "}", - next : "pop" + token: "string.interpolated", + regex: "}", + next: "pop" } ]; - for (var key in this.$rules) this.$rules[key].unshift.apply(this.$rules[key], startRules); - this.embedRules(FtlLangHighlightRules, "ftl-", endRules, ["start"]); - this.addRules({ - "ftl-dcomment" : [{ - token : "comment", - regex : "-->", - next : "pop" - }, { - defaultToken : "comment" - }] + "ftl-dcomment": [{ + token: "comment", + regex: "-->", + next: "pop" + }, { + defaultToken: "comment" + }] }); - this.normalizeRules(); }; - oop.inherits(FtlHighlightRules, HtmlHighlightRules); - exports.FtlHighlightRules = FtlHighlightRules; + }); -define("ace/mode/ftl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ftl_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ftl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ftl_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var FtlHighlightRules = require("./ftl_highlight_rules").FtlHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = FtlHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.$id = "ace/mode/ftl"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/ftl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-gcode.js b/vendor/assets/javascripts/ace/mode-gcode.js index ba80f881..0a54df01 100644 --- a/vendor/assets/javascripts/ace/mode-gcode.js +++ b/vendor/assets/javascripts/ace/mode-gcode.js @@ -1,86 +1,74 @@ -define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var GcodeHighlightRules = function() { - - var keywords = ( - "IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL" - ); - - var builtinConstants = ( - "PI" - ); - - var builtinFunctions = ( - "ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN" - ); - var keywordMapper = this.createKeywordMapper({ - "support.function": builtinFunctions, - "keyword": keywords, - "constant.language": builtinConstants - }, "identifier", true); - - this.$rules = { - "start" : [ { - token : "comment", - regex : "\\(.*\\)" +define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var GcodeHighlightRules = function () { + var keywords = ("IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL"); + var builtinConstants = ("PI"); + var builtinFunctions = ("ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN"); + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants + }, "identifier", true); + this.$rules = { + "start": [{ + token: "comment", + regex: "\\(.*\\)" }, { - token : "comment", // block number - regex : "([N])([0-9]+)" + token: "comment", // block number + regex: "([N])([0-9]+)" }, { - token : "string", // " string - regex : "([G])([0-9]+\\.?[0-9]?)" + token: "string", // " string + regex: "([G])([0-9]+\\.?[0-9]?)" }, { - token : "string", // ' string - regex : "([M])([0-9]+\\.?[0-9]?)" + token: "string", // ' string + regex: "([M])([0-9]+\\.?[0-9]?)" }, { - token : "constant.numeric", // float - regex : "([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)" + token: "constant.numeric", // float + regex: "([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)" }, { - token : keywordMapper, - regex : "[A-Z]" + token: keywordMapper, + regex: "[A-Z]" }, { - token : "keyword.operator", - regex : "EQ|LT|GT|NE|GE|LE|OR|XOR" + token: "keyword.operator", + regex: "EQ|LT|GT|NE|GE|LE|OR|XOR" }, { - token : "paren.lparen", - regex : "[\\[]" + token: "paren.lparen", + regex: "[\\[]" }, { - token : "paren.rparen", - regex : "[\\]]" + token: "paren.rparen", + regex: "[\\]]" }, { - token : "text", - regex : "\\s+" - } ] - }; + token: "text", + regex: "\\s+" + }] }; +}; +oop.inherits(GcodeHighlightRules, TextHighlightRules); +exports.GcodeHighlightRules = GcodeHighlightRules; - oop.inherits(GcodeHighlightRules, TextHighlightRules); - - exports.GcodeHighlightRules = GcodeHighlightRules; }); -define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"], function(require, exports, module) { - "use strict"; +define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GcodeHighlightRules = require("./gcode_highlight_rules").GcodeHighlightRules; +var Range = require("../range").Range; +var Mode = function () { + this.HighlightRules = GcodeHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/gcode"; +}).call(Mode.prototype); +exports.Mode = Mode; - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var GcodeHighlightRules = require("./gcode_highlight_rules").GcodeHighlightRules; - var Range = require("../range").Range; - - var Mode = function() { - this.HighlightRules = GcodeHighlightRules; - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function() { - this.$id = "ace/mode/gcode"; - }).call(Mode.prototype); - - exports.Mode = Mode; - -}); +}); (function() { + window.require(["ace/mode/gcode"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-gherkin.js b/vendor/assets/javascripts/ace/mode-gherkin.js index 680804bc..f127c6db 100644 --- a/vendor/assets/javascripts/ace/mode-gherkin.js +++ b/vendor/assets/javascripts/ace/mode-gherkin.js @@ -1,163 +1,154 @@ -define("ace/mode/gherkin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); +define("ace/mode/gherkin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - -var GherkinHighlightRules = function() { +var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; +var GherkinHighlightRules = function () { var languages = [{ - name: "en", - labels: "Feature|Background|Scenario(?: Outline)?|Examples", - keywords: "Given|When|Then|And|But" - }]; - - var labels = languages.map(function(l) { + name: "en", + labels: "Feature|Background|Scenario(?: Outline)?|Examples", + keywords: "Given|When|Then|And|But" + } + ]; + var labels = languages.map(function (l) { return l.labels; }).join("|"); - var keywords = languages.map(function(l) { + var keywords = languages.map(function (l) { return l.keywords; }).join("|"); this.$rules = { - start : [{ - token: "constant.numeric", - regex: "(?:(?:[1-9]\\d*)|(?:0))" - }, { - token : "comment", - regex : "#.*$" - }, { - token : "keyword", - regex : "(?:" + labels + "):|(?:" + keywords + ")\\b" - }, { - token : "keyword", - regex : "\\*" - }, { - token : "string", // multi line """ string start - regex : '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : '"', - next : "qqstring" - }, { - token : "text", - regex : "^\\s*(?=@[\\w])", - next : [{ - token : "text", - regex : "\\s+" + start: [{ + token: "constant.numeric", + regex: "(?:(?:[1-9]\\d*)|(?:0))" }, { - token : "variable.parameter", - regex : "@[\\w]+" + token: "comment", + regex: "#.*$" }, { - token : "empty", - regex : "", - next : "start" + token: "keyword", + regex: "(?:" + labels + "):|(?:" + keywords + ")\\b" + }, { + token: "keyword", + regex: "\\*" + }, { + token: "string", // multi line """ string start + regex: '"{3}', + next: "qqstring3" + }, { + token: "string", // " string + regex: '"', + next: "qqstring" + }, { + token: "text", + regex: "^\\s*(?=@[\\w])", + next: [{ + token: "text", + regex: "\\s+" + }, { + token: "variable.parameter", + regex: "@[\\w]+" + }, { + token: "empty", + regex: "", + next: "start" + }] + }, { + token: "comment", + regex: "<[^>]+>" + }, { + token: "comment", + regex: "\\|(?=.)", + next: "table-item" + }, { + token: "comment", + regex: "\\|$", + next: "start" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "table-item": [{ + token: "comment", + regex: /$/, + next: "start" + }, { + token: "comment", + regex: /\|/ + }, { + token: "string", + regex: /\\./ + }, { + defaultToken: "string" }] - }, { - token : "comment", - regex : "<[^>]+>" - }, { - token : "comment", - regex : "\\|(?=.)", - next : "table-item" - }, { - token : "comment", - regex : "\\|$", - next : "start" - }], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - }], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "table-item" : [{ - token : "comment", - regex : /$/, - next : "start" - }, { - token : "comment", - regex : /\|/ - }, { - token : "string", - regex : /\\./ - }, { - defaultToken : "string" - }] }; this.normalizeRules(); }; - oop.inherits(GherkinHighlightRules, TextHighlightRules); - exports.GherkinHighlightRules = GherkinHighlightRules; + }); -define("ace/mode/gherkin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gherkin_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); +define("ace/mode/gherkin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gherkin_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var GherkinHighlightRules = require("./gherkin_highlight_rules").GherkinHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = GherkinHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "#"; this.$id = "ace/mode/gherkin"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var space2 = " "; - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - console.log(state); - - if(line.match("[ ]*\\|")) { + if (line.match("[ ]*\\|")) { indent += "| "; } - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - - if (state == "start") { if (line.match("Scenario:|Feature:|Scenario Outline:|Background:")) { indent += space2; - } else if(line.match("(Given|Then).+(:)$|Examples:")) { + } + else if (line.match("(Given|Then).+(:)$|Examples:")) { indent += space2; - } else if(line.match("\\*.+")) { + } + else if (line.match("\\*.+")) { indent += "* "; - } + } } - - return indent; }; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/gherkin"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-gitignore.js b/vendor/assets/javascripts/ace/mode-gitignore.js index 2f280501..48c19237 100644 --- a/vendor/assets/javascripts/ace/mode-gitignore.js +++ b/vendor/assets/javascripts/ace/mode-gitignore.js @@ -1,52 +1,49 @@ -define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GitignoreHighlightRules = function() { +var GitignoreHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : /^\s*#.*$/ + token: "comment", + regex: /^\s*#.*$/ }, { - token : "keyword", // negated patterns - regex : /^\s*!.*$/ + token: "keyword", // negated patterns + regex: /^\s*!.*$/ } ] }; - this.normalizeRules(); }; - GitignoreHighlightRules.metaData = { fileTypes: ['gitignore'], name: 'Gitignore' }; - oop.inherits(GitignoreHighlightRules, TextHighlightRules); - exports.GitignoreHighlightRules = GitignoreHighlightRules; + }); -define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var GitignoreHighlightRules = require("./gitignore_highlight_rules").GitignoreHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = GitignoreHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "#"; this.$id = "ace/mode/gitignore"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/gitignore"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-glsl.js b/vendor/assets/javascripts/ace/mode-glsl.js index c9a1996d..f3bc4a5d 100644 --- a/vendor/assets/javascripts/ace/mode-glsl.js +++ b/vendor/assets/javascripts/ace/mode-glsl.js @@ -1,370 +1,300 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + +var cFunctions = exports.cFunctions = "hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen"; +var c_cppHighlightRules = function (extraKeywords) { + var keywordControls = ("break|case|continue|default|do|else|for|goto|if|_Pragma|" + + "return|switch|while|catch|operator|try|throw|using"); + var storageType = ("asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + + "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + + "class|wchar_t|template|char16_t|char32_t"); + var storageModifiers = ("const|extern|register|restrict|static|volatile|inline|private|" + "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, + "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local"); + var keywordOperators = ("and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + + "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace"); + var builtinConstants = ("NULL|true|false|TRUE|FALSE|nullptr"); + var keywordMapper = this.$keywords = this.createKeywordMapper(Object.assign({ + "keyword.control": keywordControls, + "storage.type": storageType, + "storage.modifier": storageModifiers, + "keyword.operator": keywordOperators, "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - + "constant.language": builtinConstants, + "support.function.C99.c": cFunctions + }, extraKeywords), "identifier"); var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ + + /(\d+\$)?/.source // field (argument #) + + /[#0\- +']*/.source // flags + + /[,;:_]?/.source // separator character (AltiVec) + + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type + this.$rules = { + "start": [ { - token : "comment", - regex : "//$", - next : "start" + token: "comment", + regex: "//$", + next: "start" }, { - token : "comment", - regex : "//", - next : "singleLineComment" + token: "comment", + regex: "//", + next: "singleLineComment" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" + token: "string", // character + regex: "'(?:" + escapeRe + "|.)?'" }, { - token : "string.start", - regex : '"', + token: "string.start", + regex: '"', stateName: "qqstring", next: [ { token: "string", regex: /\\\s*$/, next: "qqstring" }, { token: "constant.language.escape", regex: escapeRe }, { token: "constant.language.escape", regex: formatRe }, { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "string.start", - regex : 'R"\\(', + token: "string.start", + regex: 'R"\\(', stateName: "rawString", next: [ { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" + token: "keyword", // pre-compiler directives + regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b", + next: "directive" }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" + token: "keyword", // special case pre-compiler directive + regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" }, { - token : "support.function.C99.c", - regex : cFunctions + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" + token: "keyword.operator", + regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { defaultToken: "comment" } ], - "directive" : [ + "singleLineComment": [ { - token : "constant.other.multiline", - regex : /\\/ + token: "comment", + regex: /\\$/, + next: "singleLineComment" + }, { + token: "comment", + regex: /$/, + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ }, { - token : "constant.other.multiline", - regex : /.*\\/ + token: "constant.other.multiline", + regex: /.*\\/ }, { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" + token: "constant.other", + regex: "\\s*<.+?>", + next: "start" }, { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" + token: "constant.other", // single line + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next: "start" }, { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" + token: "constant.other", // single line + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; - oop.inherits(c_cppHighlightRules, TextHighlightRules); - exports.c_cppHighlightRules = c_cppHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -377,94 +307,82 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = c_cppHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start") { return ""; } @@ -476,42 +394,31 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/c_cpp"; + this.snippetFileId = "ace/snippets/c_cpp"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/glsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/c_cpp_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/glsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/c_cpp_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; - -var glslHighlightRules = function() { - - var keywords = ( - "attribute|const|uniform|varying|break|continue|do|for|while|" + +var glslHighlightRules = function () { + var keywords = ("attribute|const|uniform|varying|break|continue|do|for|while|" + "if|else|in|out|inout|float|int|void|bool|true|false|" + "lowp|mediump|highp|precision|invariant|discard|return|mat2|mat3|" + "mat4|vec2|vec3|vec4|ivec2|ivec3|ivec4|bvec2|bvec3|bvec4|sampler2D|" + - "samplerCube|struct" - ); - - var buildinConstants = ( - "radians|degrees|sin|cos|tan|asin|acos|atan|pow|" + + "samplerCube|struct"); + var buildinConstants = ("radians|degrees|sin|cos|tan|asin|acos|atan|pow|" + "exp|log|exp2|log2|sqrt|inversesqrt|abs|sign|floor|ceil|fract|mod|" + "min|max|clamp|mix|step|smoothstep|length|distance|dot|cross|" + "normalize|faceforward|reflect|refract|matrixCompMult|lessThan|" + @@ -523,50 +430,46 @@ var glslHighlightRules = function() { "gl_MaxTextureImageUnits|gl_MaxFragmentUniformVectors|gl_MaxDrawBuffers|" + "gl_DepthRangeParameters|gl_DepthRange|" + "gl_Position|gl_PointSize|" + - "gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData" - ); - + "gl_FragCoord|gl_FrontFacing|gl_PointCoord|gl_FragColor|gl_FragData"); var keywordMapper = this.createKeywordMapper({ "variable.language": "this", "keyword": keywords, "constant.language": buildinConstants }, "identifier"); - this.$rules = new c_cppHighlightRules().$rules; - this.$rules.start.forEach(function(rule) { + this.$rules.start.forEach(function (rule) { if (typeof rule.token == "function") rule.token = keywordMapper; }); }; - oop.inherits(glslHighlightRules, c_cppHighlightRules); - exports.glslHighlightRules = glslHighlightRules; + }); -define("ace/mode/glsl",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/glsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/glsl",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/glsl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var CMode = require("./c_cpp").Mode; var glslHighlightRules = require("./glsl_highlight_rules").glslHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = glslHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, CMode); - -(function() { +(function () { this.$id = "ace/mode/glsl"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/glsl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-gobstones.js b/vendor/assets/javascripts/ace/mode-gobstones.js index 9af1dc7d..09c77819 100644 --- a/vendor/assets/javascripts/ace/mode-gobstones.js +++ b/vendor/assets/javascripts/ace/mode-gobstones.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,168 +851,303 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/gobstones_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/gobstones_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GobstonesHighlightRules = function() { - - var keywords = ( - "program|procedure|function|interactive|if|then|else|switch|repeat|while|foreach|in|not|div|mod|Skip|return" - ); - - var buildinConstants = ( - "False|True" - ); - - - var langClasses = ( - "Poner|Sacar|Mover|IrAlBorde|VaciarTablero|" + - "nroBolitas|hayBolitas|puedeMover|siguiente|previo|opuesto|minBool|maxBool|" + - "minDir|maxDir|minColor|maxColor" - ); - - var supportType = ( - "Verde|Rojo|Azul|Negro|Norte|Sur|Este|Oeste" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses, - "support.type": supportType - }, "identifier"); - +var GobstonesHighlightRules = function () { + var definitions = { + standard: "program|procedure|function|interactive|return|let", + type: "type|is|variant|record|field|case" + }; + var control = { + commands: { + repetitions: "repeat|while|foreach|in", + alternatives: "if|elseif|else|switch" + }, + expressions: { + alternatives: "choose|when|otherwise|matching|select|on" + } + }; + var values = { + colors: "Verde|Rojo|Azul|Negro", + cardinals: "Norte|Sur|Este|Oeste", + booleans: "True|False", + numbers: /([-]?)([0-9]+)\b/, + strings: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }; + var primitives = { + commands: "Poner|Sacar|Mover|IrAlBorde|VaciarTablero|BOOM", + expressions: "nroBolitas|hayBolitas|puedeMover|" + + "siguiente|previo|opuesto|" + + "minBool|maxBool|minDir|maxDir|minColor|maxColor|" + + "primero|sinElPrimero|esVacía|" + + "boom", + keys: "K_A|K_B|K_C|K_D|K_E|K_F|K_G|K_G|K_H|K_I|K_J|K_K|K_L|K_M|K_N|K_Ñ|" + + "K_O|K_P|K_Q|K_R|K_S|K_T|K_U|K_V|K_W|K_X|K_Y|K_Z|" + + "K_0|K_1|K_2|K_3|K_4|K_5|K_6|K_7|K_8|K_9|" + + "K_F1|K_F2|K_F3|K_F4|K_F5|K_F6|K_F7|K_F8|K_F9|K_F10|K_F11|K_12|" + + "K_UP|K_DOWN|K_LEFT|K_RIGHT|K_RETURN|K_BACKSPACE|K_TAB|K_SPACE|K_ESCAPE" + + "K_CTRL_A|K_CTRL_B|K_CTRL_C|K_CTRL_D|K_CTRL_E|K_CTRL_F|K_CTRL_G|K_CTRL_G|" + + "K_CTRL_H|K_CTRL_I|K_CTRL_J|K_CTRL_K|K_CTRL_L|K_CTRL_M|K_CTRL_N|K_CTRL_Ñ|" + + "K_CTRL_O|K_CTRL_P|K_CTRL_Q|K_CTRL_R|K_CTRL_S|K_CTRL_T|K_CTRL_U|K_CTRL_V|" + + "K_CTRL_W|K_CTRL_X|K_CTRL_Y|K_CTRL_Z|" + + "K_CTRL_0|K_CTRL_1|K_CTRL_2|K_CTRL_3|K_CTRL_4|K_CTRL_5|K_CTRL_6|K_CTRL_7|K_CTRL_8|K_CTRL_9|" + + "K_CTRL_F1|K_CTRL_F2|K_CTRL_F3|K_CTRL_F4|K_CTRL_F5|K_CTRL_F6|K_CTRL_F7|" + + "K_CTRL_F8|K_CTRL_F9|K_CTRL_F10|K_CTRL_F11|K_CTRL_F12|" + + "K_CTRL_UP|K_CTRL_DOWN|K_CTRL_LEFT|K_CTRL_RIGHT|K_CTRL_RETURN|" + + "K_CTRL_BACKSPACE|K_CTRL_TAB|K_CTRL_SPACE|K_CTRL_ESCAPE" + + "K_ALT_A|K_ALT_B|K_ALT_C|K_ALT_D|K_ALT_E|K_ALT_F|K_ALT_G|K_ALT_G|K_ALT_H|" + + "K_ALT_I|K_ALT_J|K_ALT_K|K_ALT_L|K_ALT_M|K_ALT_N|K_ALT_Ñ|K_ALT_O|K_ALT_P|" + + "K_ALT_Q|K_ALT_R|K_ALT_S|K_ALT_T|K_ALT_U|K_ALT_V|K_ALT_W|K_ALT_X|K_ALT_Y|K_ALT_Z|" + + "K_ALT_0|K_ALT_1|K_ALT_2|K_ALT_3|K_ALT_4|K_ALT_5|K_ALT_6|K_ALT_7|K_ALT_8|K_ALT_9|" + + "K_ALT_F1|K_ALT_F2|K_ALT_F3|K_ALT_F4|K_ALT_F5|K_ALT_F6|K_ALT_F7|K_ALT_F8|" + + "K_ALT_F9|K_ALT_F10|K_ALT_F11|K_ALT_F12|" + + "K_ALT_UP|K_ALT_DOWN|K_ALT_LEFT|K_ALT_RIGHT|K_ALT_RETURN|K_ALT_BACKSPACE|" + + "K_ALT_TAB|K_ALT_SPACE|K_ALT_ESCAPE" + + "K_SHIFT_A|K_SHIFT_B|K_SHIFT_C|K_SHIFT_D|K_SHIFT_E|K_SHIFT_F|K_SHIFT_G|" + + "K_SHIFT_G|K_SHIFT_H|K_SHIFT_I|K_SHIFT_J|K_SHIFT_K|K_SHIFT_L|K_SHIFT_M|" + + "K_SHIFT_N|K_SHIFT_Ñ|K_SHIFT_O|K_SHIFT_P|K_SHIFT_Q|K_SHIFT_R|K_SHIFT_S|" + + "K_SHIFT_T|K_SHIFT_U|K_SHIFT_V|K_SHIFT_W|K_SHIFT_X|K_SHIFT_Y|K_SHIFT_Z|" + + "K_SHIFT_0|K_SHIFT_1|K_SHIFT_2|K_SHIFT_3|K_SHIFT_4|K_SHIFT_5|K_SHIFT_6|" + + "K_SHIFT_7|K_SHIFT_8|K_SHIFT_9|" + + "K_SHIFT_F1|K_SHIFT_F2|K_SHIFT_F3|K_SHIFT_F4|K_SHIFT_F5|K_SHIFT_F6|" + + "K_SHIFT_F7|K_SHIFT_F8|K_SHIFT_F9|K_SHIFT_F10|K_SHIFT_F11|K_SHIFT_F12|" + + "K_SHIFT_UP|K_SHIFT_DOWN|K_SHIFT_LEFT|K_SHIFT_RIGHT|K_SHIFT_RETURN|" + + "K_SHIFT_BACKSPACE|K_SHIFT_TAB|K_SHIFT_SPACE|K_SHIFT_ESCAPE" + + "K_CTRL_ALT_A|K_CTRL_ALT_B|K_CTRL_ALT_C|K_CTRL_ALT_D|K_CTRL_ALT_E|" + + "K_CTRL_ALT_F|K_CTRL_ALT_G|K_CTRL_ALT_G|K_CTRL_ALT_H|K_CTRL_ALT_I|" + + "K_CTRL_ALT_J|K_CTRL_ALT_K|K_CTRL_ALT_L|K_CTRL_ALT_M|K_CTRL_ALT_N|" + + "K_CTRL_ALT_Ñ|K_CTRL_ALT_O|K_CTRL_ALT_P|K_CTRL_ALT_Q|K_CTRL_ALT_R|" + + "K_CTRL_ALT_S|K_CTRL_ALT_T|K_CTRL_ALT_U|K_CTRL_ALT_V|K_CTRL_ALT_W|" + + "K_CTRL_ALT_X|K_CTRL_ALT_Y|K_CTRL_ALT_Z|" + + "K_CTRL_ALT_0|K_CTRL_ALT_1|K_CTRL_ALT_2|K_CTRL_ALT_3|K_CTRL_ALT_4|" + + "K_CTRL_ALT_5|K_CTRL_ALT_6|K_CTRL_ALT_7|K_CTRL_ALT_8|K_CTRL_ALT_9|" + + "K_CTRL_ALT_F1|K_CTRL_ALT_F2|K_CTRL_ALT_F3|K_CTRL_ALT_F4|K_CTRL_ALT_F5|" + + "K_CTRL_ALT_F6|K_CTRL_ALT_F7|K_CTRL_ALT_F8|K_CTRL_ALT_F9|K_CTRL_ALT_F10|" + + "K_CTRL_ALT_F11|K_CTRL_ALT_F12|" + + "K_CTRL_ALT_UP|K_CTRL_ALT_DOWN|K_CTRL_ALT_LEFT|K_CTRL_ALT_RIGHT|" + + "K_CTRL_ALT_RETURN|K_CTRL_ALT_BACKSPACE|K_CTRL_ALT_TAB|K_CTRL_ALT_SPACE|K_CTRL_ALT_ESCAPE" + + "K_CTRL_SHIFT_A|K_CTRL_SHIFT_B|K_CTRL_SHIFT_C|K_CTRL_SHIFT_D|K_CTRL_SHIFT_E|" + + "K_CTRL_SHIFT_F|K_CTRL_SHIFT_G|K_CTRL_SHIFT_G|K_CTRL_SHIFT_H|K_CTRL_SHIFT_I|" + + "K_CTRL_SHIFT_J|K_CTRL_SHIFT_K|K_CTRL_SHIFT_L|K_CTRL_SHIFT_M|K_CTRL_SHIFT_N|" + + "K_CTRL_SHIFT_Ñ|K_CTRL_SHIFT_O|K_CTRL_SHIFT_P|K_CTRL_SHIFT_Q|K_CTRL_SHIFT_R|" + + "K_CTRL_SHIFT_S|K_CTRL_SHIFT_T|K_CTRL_SHIFT_U|K_CTRL_SHIFT_V|K_CTRL_SHIFT_W|" + + "K_CTRL_SHIFT_X|K_CTRL_SHIFT_Y|K_CTRL_SHIFT_Z|" + + "K_CTRL_SHIFT_0|K_CTRL_SHIFT_1|K_CTRL_SHIFT_2|K_CTRL_SHIFT_3|K_CTRL_SHIFT_4|" + + "K_CTRL_SHIFT_5|K_CTRL_SHIFT_6|K_CTRL_SHIFT_7|K_CTRL_SHIFT_8|K_CTRL_SHIFT_9|" + + "K_CTRL_SHIFT_F1|K_CTRL_SHIFT_F2|K_CTRL_SHIFT_F3|K_CTRL_SHIFT_F4|" + + "K_CTRL_SHIFT_F5|K_CTRL_SHIFT_F6|K_CTRL_SHIFT_F7|K_CTRL_SHIFT_F8|" + + "K_CTRL_SHIFT_9|K_CTRL_SHIFT_10|K_CTRL_SHIFT_11|K_CTRL_SHIFT_12|" + + "K_CTRL_SHIFT_UP|K_CTRL_SHIFT_DOWN|K_CTRL_SHIFT_LEFT|K_CTRL_SHIFT_RIGHT|" + + "K_CTRL_SHIFT_RETURN|K_CTRL_SHIFT_BACKSPACE|K_CTRL_SHIFT_TAB|" + + "K_CTRL_SHIFT_SPACE|K_CTRL_SHIFT_ESCAPE" + + "K_ALT_SHIFT_A|K_ALT_SHIFT_B|K_ALT_SHIFT_C|K_ALT_SHIFT_D|K_ALT_SHIFT_E|" + + "K_ALT_SHIFT_F|K_ALT_SHIFT_G|K_ALT_SHIFT_G|K_ALT_SHIFT_H|K_ALT_SHIFT_I|" + + "K_ALT_SHIFT_J|K_ALT_SHIFT_K|K_ALT_SHIFT_L|K_ALT_SHIFT_M|K_ALT_SHIFT_N|" + + "K_ALT_SHIFT_Ñ|K_ALT_SHIFT_O|K_ALT_SHIFT_P|K_ALT_SHIFT_Q|K_ALT_SHIFT_R|" + + "K_ALT_SHIFT_S|K_ALT_SHIFT_T|K_ALT_SHIFT_U|K_ALT_SHIFT_V|K_ALT_SHIFT_W|" + + "K_ALT_SHIFT_X|K_ALT_SHIFT_Y|K_ALT_SHIFT_Z|" + + "K_ALT_SHIFT_0|K_ALT_SHIFT_1|K_ALT_SHIFT_2|K_ALT_SHIFT_3|K_ALT_SHIFT_4|" + + "K_ALT_SHIFT_5|K_ALT_SHIFT_6|K_ALT_SHIFT_7|K_ALT_SHIFT_8|K_ALT_SHIFT_9|" + + "K_ALT_SHIFT_F1|K_ALT_SHIFT_F2|K_ALT_SHIFT_F3|K_ALT_SHIFT_F4|" + + "K_ALT_SHIFT_F5|K_ALT_SHIFT_F6|K_ALT_SHIFT_F7|K_ALT_SHIFT_F8|" + + "K_ALT_SHIFT_9|K_ALT_SHIFT_10|K_ALT_SHIFT_11|K_ALT_SHIFT_12|" + + "K_ALT_SHIFT_UP|K_ALT_SHIFT_DOWN|K_ALT_SHIFT_LEFT|K_ALT_SHIFT_RIGHT|" + + "K_ALT_SHIFT_RETURN|K_ALT_SHIFT_BACKSPACE|K_ALT_SHIFT_TAB|K_ALT_SHIFT_SPACE|" + + "K_ALT_SHIFT_ESCAPE" + + "K_CTRL_ALT_SHIFT_A|K_CTRL_ALT_SHIFT_B|K_CTRL_ALT_SHIFT_C|K_CTRL_ALT_SHIFT_D|" + + "K_CTRL_ALT_SHIFT_E|K_CTRL_ALT_SHIFT_F|K_CTRL_ALT_SHIFT_G|K_CTRL_ALT_SHIFT_G|" + + "K_CTRL_ALT_SHIFT_H|K_CTRL_ALT_SHIFT_I|K_CTRL_ALT_SHIFT_J|K_CTRL_ALT_SHIFT_K|" + + "K_CTRL_ALT_SHIFT_L|K_CTRL_ALT_SHIFT_M|K_CTRL_ALT_SHIFT_N|K_CTRL_ALT_SHIFT_Ñ|" + + "K_CTRL_ALT_SHIFT_O|K_CTRL_ALT_SHIFT_P|K_CTRL_ALT_SHIFT_Q|K_CTRL_ALT_SHIFT_R|" + + "K_CTRL_ALT_SHIFT_S|K_CTRL_ALT_SHIFT_T|K_CTRL_ALT_SHIFT_U|K_CTRL_ALT_SHIFT_V|" + + "K_CTRL_ALT_SHIFT_W|K_CTRL_ALT_SHIFT_X|K_CTRL_ALT_SHIFT_Y|K_CTRL_ALT_SHIFT_Z|" + + "K_CTRL_ALT_SHIFT_0|K_CTRL_ALT_SHIFT_1|K_CTRL_ALT_SHIFT_2|K_CTRL_ALT_SHIFT_3|" + + "K_CTRL_ALT_SHIFT_4|K_CTRL_ALT_SHIFT_5|K_CTRL_ALT_SHIFT_6|K_CTRL_ALT_SHIFT_7|" + + "K_CTRL_ALT_SHIFT_8|K_CTRL_ALT_SHIFT_9|" + + "K_CTRL_ALT_SHIFT_F1|K_CTRL_ALT_SHIFT_F2|K_CTRL_ALT_SHIFT_F3|K_CTRL_ALT_SHIFT_F4|" + + "K_CTRL_ALT_SHIFT_F5|K_CTRL_ALT_SHIFT_F6|K_CTRL_ALT_SHIFT_F7|K_CTRL_ALT_SHIFT_F8|" + + "K_CTRL_ALT_SHIFT_F9|K_CTRL_ALT_SHIFT_F10|K_CTRL_ALT_SHIFT_F11|K_CTRL_ALT_SHIFT_F12|" + + "K_CTRL_ALT_SHIFT_UP|K_CTRL_ALT_SHIFT_DOWN|K_CTRL_ALT_SHIFT_LEFT|K_CTRL_ALT_SHIFT_RIGHT|" + + "K_CTRL_ALT_SHIFT_RETURN|K_CTRL_ALT_SHIFT_BACKSPACE|K_CTRL_ALT_SHIFT_TAB|" + + "K_CTRL_ALT_SHIFT_SPACE|K_CTRL_ALT_SHIFT_ESCAPE" + }; + var operations = { + commands: ":=", + expressions: { + numeric: "\\+|\\-|\\*|\\^|div|mod", + comparison: ">=|<=|==|\\/=|>|<", + boolean: "\\|\\||&&|not", + other: "\\+\\+|<\\-|\\[|\\]|\\_|\\->" + } + }; + var comments = { + line: { + double_slash: "\\/\\/.*$", + double_dash: "\\-\\-.*$", + number_sign: "#.*$" + }, + block: { start: "\\/\\*", end: "\\*\\/" }, + block_alt: { start: "\\{\\-", end: "\\-\\}" } + }; this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment.line.double-slash.gobstones", + regex: comments.line.double_slash }, { - token : "comment", - regex : "\\-\\-.*$" + token: "comment.line.double-dash.gobstones", + regex: comments.line.double_dash }, { - token : "comment", - regex : "#.*$" + token: "comment.line.number-sign.gobstones", + regex: comments.line.number_sign }, - DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token : "constant.language.boolean", - regex : "(?:True|False)\\b" - }, { - token : "keyword.operator", - regex : ":=|\\.\\.|,|;|\\|\\||\\/\\/|\\+|\\-|\\^|\\*|>|<|>=|=>|==|&&" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + token: "comment.block.dash-asterisc.gobstones", + regex: comments.block.start, + next: "block_comment_end" + }, + { + token: "comment.block.brace-dash.gobstones", + regex: comments.block_alt.start, + next: "block_comment_alt_end" + }, + { + token: "constant.numeric.gobstones", + regex: values.numbers + }, + { + token: "string.quoted.double.gobstones", + regex: values.strings + }, + { + token: "keyword.operator.other.gobstones", + regex: operations.expressions.other + }, + { + token: "keyword.operator.numeric.gobstones", + regex: operations.expressions.numeric + }, + { + token: "keyword.operator.compare.gobstones", + regex: operations.expressions.comparison + }, + { + token: "keyword.operator.boolean.gobstones", + regex: operations.expressions.boolean + }, + { + token: this.createKeywordMapper({ + "storage.type.definitions.gobstones": definitions.standard, + "storage.type.types.gobstones": definitions.type, + "keyword.control.commands.repetitions.gobstones": control.commands.repetitions, + "keyword.control.commands.alternatives.gobstones": control.commands.alternatives, + "keyword.control.expressions.alternatives.gobstones": control.expressions.alternatives, + "constant.language.colors.gobstones": values.colors, + "constant.language.cardinals.gobstones": values.cardinals, + "constant.language.boolean.gobstones": values.booleans, + "support.function.gobstones": primitives.commands, + "support.variable.gobstones": primitives.expressions, + "variable.language.gobstones": primitives.keys + }, "identifier.gobstones"), + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "comma.gobstones", + regex: "," + }, + { + token: "semicolon.gobstones", + regex: ";" + }, + { + token: "lparen", + regex: "[[({]" + }, + { + token: "rparen", + regex: "[\\])}]" + }, + { + token: "text", + regex: "\\s+" } ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + "block_comment_end": [{ + token: "comment.block.dash-asterisc.gobstones", + regex: comments.block.end, + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment.block.dash-asterisc.gobstones" + } + ], + "block_comment_alt_end": [{ + token: "comment.block.brace-dash.gobstones", + regex: comments.block_alt.end, + next: "start" + }, { + defaultToken: "comment.block.brace-dash.gobstones" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); }; - oop.inherits(GobstonesHighlightRules, TextHighlightRules); - exports.GobstonesHighlightRules = GobstonesHighlightRules; + }); -define("ace/mode/gobstones",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/gobstones_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/gobstones",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/gobstones_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JavaScriptMode = require("./javascript").Mode; var GobstonesHighlightRules = require("./gobstones_highlight_rules").GobstonesHighlightRules; - -var Mode = function() { +var Mode = function () { JavaScriptMode.call(this); this.HighlightRules = GobstonesHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { +(function () { + this.createWorker = function () { return null; }; - this.$id = "ace/mode/gobstones"; + this.snippetFileId = "ace/snippets/gobstones"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/gobstones"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-golang.js b/vendor/assets/javascripts/ace/mode-golang.js index c1fcfe5e..f2b61226 100644 --- a/vendor/assets/javascripts/ace/mode-golang.js +++ b/vendor/assets/javascripts/ace/mode-golang.js @@ -1,296 +1,238 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { - var oop = require("../lib/oop"); - var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var GolangHighlightRules = function() { - var keywords = ( - "else|break|case|return|goto|if|const|select|" + - "continue|struct|default|switch|for|range|" + - "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + - "select|type|var" - ); - var builtinTypes = ( - "string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + - "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error" - ); - var builtinFunctions = ( - "new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append" - ); - var builtinConstants = ("nil|true|false|iota"); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": builtinConstants, - "support.function": builtinFunctions, - "support.type": builtinTypes - }, ""); - - var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); - - this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment.start", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : /"(?:[^"\\]|\\.)*?"/ - }, { - token : "string", // raw - regex : '`', - next : "bqstring" - }, { - token : "constant.numeric", // rune - regex : "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : ["keyword", "text", "entity.name.function"], - regex : "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" - }, { - token : function(val) { - if (val[val.length - 1] == "(") { - return [{ +define("ace/mode/golang_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var GolangHighlightRules = function () { + var keywords = ("else|break|case|return|goto|if|const|select|" + + "continue|struct|default|switch|for|range|" + + "func|import|package|chan|defer|fallthrough|go|interface|map|range|" + + "select|type|var"); + var builtinTypes = ("string|uint8|uint16|uint32|uint64|int8|int16|int32|int64|float32|" + + "float64|complex64|complex128|byte|rune|uint|int|uintptr|bool|error"); + var builtinFunctions = ("new|close|cap|copy|panic|panicln|print|println|len|make|delete|real|recover|imag|append"); + var builtinConstants = ("nil|true|false|iota"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": builtinConstants, + "support.function": builtinFunctions, + "support.type": builtinTypes + }, ""); + var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment.start", // multi line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "string", // single line + regex: /"(?:[^"\\]|\\.)*?"/ + }, { + token: "string", // raw + regex: '`', + next: "bqstring" + }, { + token: "constant.numeric", // rune + regex: "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + stringEscapeRe.replace('"', '') + ")'" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(func)(\\s+)([a-zA-Z_$][a-zA-Z0-9_$]*)\\b" + }, { + token: function (val) { + if (val[val.length - 1] == "(") { + return [{ type: keywordMapper(val.slice(0, -1)) || "support.function", value: val.slice(0, -1) }, { type: "paren.lparen", value: val.slice(-1) }]; - } - - return keywordMapper(val) || "identifier"; - }, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment.end", - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "bqstring" : [ - { - token : "string", - regex : '`', - next : "start" - }, { - defaultToken : "string" - } - ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + } + return keywordMapper(val) || "identifier"; + }, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "bqstring": [ + { + token: "string", + regex: '`', + next: "start" + }, { + defaultToken: "string" + } + ] }; - oop.inherits(GolangHighlightRules, TextHighlightRules); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(GolangHighlightRules, TextHighlightRules); +exports.GolangHighlightRules = GolangHighlightRules; - exports.GolangHighlightRules = GolangHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -303,104 +245,97 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { - -var oop = require("../lib/oop"); +define("ace/mode/golang",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/golang_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var GolangHighlightRules = require("./golang_highlight_rules").GolangHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = GolangHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new CStyleFoldMode(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; - };//end getNextLineIndent - - this.checkOutdent = function(state, line, input) { + }; //end getNextLineIndent + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/golang"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/golang"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-graphqlschema.js b/vendor/assets/javascripts/ace/mode-graphqlschema.js index a5ea6f37..6d3bdd69 100644 --- a/vendor/assets/javascripts/ace/mode-graphqlschema.js +++ b/vendor/assets/javascripts/ace/mode-graphqlschema.js @@ -1,131 +1,95 @@ -define("ace/mode/graphqlschema_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/graphqlschema_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GraphQLSchemaHighlightRules = function() { - - var keywords = ( - "type|interface|union|enum|schema|input|implements|extends|scalar" - ); - - var dataTypes = ( - "Int|Float|String|ID|Boolean" - ); - +var GraphQLSchemaHighlightRules = function () { + var keywords = ("type|interface|union|enum|schema|input|implements|extends|scalar"); + var dataTypes = ("Int|Float|String|ID|Boolean"); var keywordMapper = this.createKeywordMapper({ "keyword": keywords, "storage.type": dataTypes }, "identifier"); - this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - } ] + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] }; this.normalizeRules(); }; - oop.inherits(GraphQLSchemaHighlightRules, TextHighlightRules); - exports.GraphQLSchemaHighlightRules = GraphQLSchemaHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -138,69 +102,73 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/graphqlschema",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/graphqlschema_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/graphqlschema",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/graphqlschema_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var GraphQLSchemaHighlightRules = require("./graphqlschema_highlight_rules").GraphQLSchemaHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = GraphQLSchemaHighlightRules; this.foldingRules = new FoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "#"; this.$id = "ace/mode/graphqlschema"; + this.snippetFileId = "ace/snippets/graphqlschema"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/graphqlschema"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-groovy.js b/vendor/assets/javascripts/ace/mode-groovy.js index 3c913cb0..b8ad3871 100644 --- a/vendor/assets/javascripts/ace/mode-groovy.js +++ b/vendor/assets/javascripts/ace/mode-groovy.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,50 +851,79 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/groovy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; +}); + +define("ace/mode/groovy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var GroovyHighlightRules = function() { - - var keywords = ( - "assert|with|abstract|continue|for|new|switch|" + +var GroovyHighlightRules = function () { + var keywords = ("assert|with|abstract|continue|for|new|switch|" + "assert|default|goto|package|synchronized|" + "boolean|do|if|private|this|" + "break|double|implements|protected|throw|" + @@ -807,174 +932,164 @@ var GroovyHighlightRules = function() { "catch|extends|int|short|try|" + "char|final|interface|static|void|" + "class|finally|long|strictfp|volatile|" + - "def|float|native|super|while" - ); - - var buildinConstants = ( - "null|Infinity|NaN|undefined" - ); - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - + "def|float|native|super|while"); + var buildinConstants = ("null|Infinity|NaN|undefined"); + var langClasses = ("AbstractMethodError|AssertionError|ClassCircularityError|" + + "ClassFormatError|Deprecated|EnumConstantNotPresentException|" + + "ExceptionInInitializerError|IllegalAccessError|" + + "IllegalThreadStateException|InstantiationError|InternalError|" + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|" + + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|" + + "SuppressWarnings|TypeNotPresentException|UnknownError|" + + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|" + + "InstantiationException|IndexOutOfBoundsException|" + + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|" + + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|" + + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|" + + "InterruptedException|NoSuchMethodException|IllegalAccessException|" + + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|" + + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|" + + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|" + + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|" + + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|" + + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|" + + "StackOverflowError|OutOfMemoryError|VirtualMachineError|" + + "ArrayStoreException|ClassCastException|LinkageError|" + + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|" + + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|" + + "Cloneable|Class|CharSequence|Comparable|String|Object"); var keywordMapper = this.createKeywordMapper({ "variable.language": "this", "keyword": keywords, "support.function": langClasses, "constant.language": buildinConstants }, "identifier"); - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment", + regex: "\\/\\/.*$" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" }, { - token : "string", - regex : '"""', - next : "qqstring" + token: "string", + regex: '"""', + next: "qqstring" }, { - token : "string", - regex : "'''", - next : "qstring" + token: "string", + regex: "'''", + next: "qstring" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: "keyword.operator", + regex: "\\?:|\\?\\.|\\*\\.|<=>|=~|==~|\\.@|\\*\\.@|\\.&|as|in|is|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" }, { - token : "lparen", - regex : "[[({]" + token: "lparen", + regex: "[[({]" }, { - token : "rparen", - regex : "[\\])}]" + token: "rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - "qqstring" : [ + "qqstring": [ { - token : "constant.language.escape", - regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/ + token: "constant.language.escape", + regex: /\\(?:u[0-9A-Fa-f]{4}|.|$)/ }, { - token : "constant.language.escape", - regex : /\$[\w\d]+/ + token: "constant.language.escape", + regex: /\$[\w\d]+/ }, { - token : "constant.language.escape", - regex : /\$\{[^"\}]+\}?/ + token: "constant.language.escape", + regex: /\$\{[^"\}]+\}?/ }, { - token : "string", - regex : '"{3,5}', - next : "start" + token: "string", + regex: '"{3,5}', + next: "start" }, { - token : "string", - regex : '.+?' + token: "string", + regex: '.+?' } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : /\\(?:u[0-9A-Fa-f]{4}|.|$)/ + token: "constant.language.escape", + regex: /\\(?:u[0-9A-Fa-f]{4}|.|$)/ }, { - token : "string", - regex : "'{3,5}", - next : "start" + token: "string", + regex: "'{3,5}", + next: "start" }, { - token : "string", - regex : ".+?" + token: "string", + regex: ".+?" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - oop.inherits(GroovyHighlightRules, TextHighlightRules); - exports.GroovyHighlightRules = GroovyHighlightRules; + }); -define("ace/mode/groovy",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/groovy_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/groovy",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/groovy_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JavaScriptMode = require("./javascript").Mode; var GroovyHighlightRules = require("./groovy_highlight_rules").GroovyHighlightRules; - -var Mode = function() { +var Mode = function () { JavaScriptMode.call(this); this.HighlightRules = GroovyHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { +(function () { + this.createWorker = function (session) { return null; }; - this.$id = "ace/mode/groovy"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/groovy"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-haml.js b/vendor/assets/javascripts/ace/mode-haml.js index 7aee8606..cadcb5a1 100644 --- a/vendor/assets/javascripts/ace/mode-haml.js +++ b/vendor/assets/javascripts/ace/mode-haml.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,260 +18,317 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -284,142 +336,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -434,9 +486,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -452,13 +504,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -491,13 +543,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -507,44 +593,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -559,40 +663,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -600,7 +724,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -610,14 +735,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" + token: "constant.other.symbol.ruby", // symbol + regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" }; - -var qString = exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" +exports.qString = { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }; - -var qqString = exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' +exports.qqString = { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }; - -var tString = exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" +exports.tString = { + token: "string", // backtick string + regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" }; - var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" +}; +var constantNumericBinary = exports.constantNumericBinary = { + token: "constant.numeric", + regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ +}; +var constantNumericDecimal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ +}; +var constantNumericOctal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ +}; +var constantNumericRational = exports.constantNumericRational = { + token: "constant.numeric", //rational + complex + regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ +}; +var constantNumericComplex = exports.constantNumericComplex = { + token: "constant.numeric", //simple complex numbers + regex: /\b([\d]i)\b/ }; - var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + complex + regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" }; - var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" + token: "variable.instance", // instance variable + regex: "@{1,2}[a-zA-Z_\\d]+" }; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + +var RubyHighlightRules = function () { + var builtinFunctions = ("abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + @@ -1070,25 +1173,15 @@ var RubyHighlightRules = function() { "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + + "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + + "private_class_method|remove_method|undef_method"); + var keywords = ("alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - + "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"); + var buildinConstants = ("true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + + "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"); + var builtinVariables = ("$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + + "$!|root_url|flash|session|cookies|params|request|response|logger|self"); var keywordMapper = this.$keywords = this.createKeywordMapper({ "keyword": keywords, "constant.language": buildinConstants, @@ -1096,213 +1189,489 @@ var RubyHighlightRules = function() { "support.function": builtinFunctions, "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? }, "identifier"); - + var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; + var closeParen = { + "(": ")", + "[": "]", + "{": "}", + "<": ">", + "^": "^", + "|": "|", + "%": "%" + }; this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "comment", // multi line comment - regex : "^=begin(?:$|\\s.*$)", - next : "comment" + token: "comment.multiline", // multi line comment + regex: "^=begin(?=$|\\s.*$)", + next: "comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: /[/](?=.*\/)/, + next: "regex" }, - [{ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren.lparen"; + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(")/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(')/, + push: [{ + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "string.end", + regex: /'/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithoutInterpolation"; + return this.token; } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1) - return "paren.end"; + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithInterpolation"; + return this.token; } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.start", - regex : /"/, - push : [{ - token : "constant.language.escape", - regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ }, { - token : "paren.start", - regex : /#{/, - push : "start" + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithoutInterpolation"; + return this.token; + } }, { - token : "string.end", - regex : /"/, - next : "pop" + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithInterpolation"; + return this.token; + } }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ - }, { - token : "paren.start", - regex : /#{/, - push : "start" - }, { - token : "string.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : /'/, - push : [{ - token : "constant.language.escape", - regex : /\\['\\]/ - }, { - token : "string.end", - regex : /'/, - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "string.regexp", + regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "rState"; + return this.token; + } + }], { - token : "text", // namespaces aren't symbols - regex : "::" - }, { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" - }, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" + token: "punctuation", // namespaces aren't symbols + regex: "::" }, - + instanceVariable, + { + token: "variable.global", // global variable + regex: "[$][a-zA-Z_\\d]+" + }, { + token: "support.class", // class name + regex: "[A-Z][a-zA-Z_\\d]*" + }, { + token: ["punctuation.operator", "support.function"], + regex: /(\.)([a-zA-Z_\d]+)(?=\()/ + }, { + token: ["punctuation.operator", "identifier"], + regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ + }, { + token: "string.character", + regex: "\\B\\?(?:" + escapedChars + "|\\S)" + }, { + token: "punctuation.operator", + regex: /\?(?=.+:)/ + }, + constantNumericRational, + constantNumericComplex, constantOtherSymbol, constantNumericHex, constantNumericFloat, - + constantNumericBinary, + constantNumericDecimal, + constantNumericOctal, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "punctuation.separator.key-value", - regex : "=>" + token: "punctuation.separator.key-value", + regex: "=>" }, { stateName: "heredoc", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + onMatch: function (value, currentState, stack) { + var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; var tokens = value.split(this.splitRegex); stack.push(next, tokens[3]); return [ - {type:"constant", value: tokens[1]}, - {type:"string", value: tokens[2]}, - {type:"support.class", value: tokens[3]}, - {type:"string", value: tokens[4]} + { type: "constant", value: tokens[1] }, + { type: "string", value: tokens[2] }, + { type: "support.class", value: tokens[3] }, + { type: "string", value: tokens[4] } ]; }, - regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", + regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", rules: { heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] + token: "string", + regex: "^ +" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] } }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { + regex: "$", + token: "empty", + next: function (currentState, stack) { if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") return stack[0]; return currentState; } }, { - token : "string.character", - regex : "\\B\\?." + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]", + onMatch: function (value, currentState, stack) { + this.next = ''; + if (value == "}" && stack.length > 1 && stack[1] != "start") { + stack.shift(); + this.next = stack.shift(); + } + return this.token; + } }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "text", + regex: "\\s+" }, { - token : "text", - regex : "\\s+" + token: "punctuation.operator", + regex: /[?:,;.]/ } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "^=end(?:$|\\s.*$)", - next : "start" + token: "comment.multiline", // closing comment + regex: "^=end(?=$|\\s.*$)", + next: "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + token: "comment", // comment spanning whole line + regex: ".+" + } + ], + "qStateWithInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "qStateWithoutInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "sStateWithoutInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "sStateWithInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "rState": [{ + token: "string.regexp", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.language.escape"; + } + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.regexp", + regex: /\// + }, { + token: "string.regexp", + regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { + if (stack.length && val[0] === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.language.escape"; + } + }, + { include: "regex" }, + { + defaultToken: "string.regexp" + }], + "regex": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "constant.language.escape", + regex: /\\[AGbBzZ]/ + }, { + token: "constant.language.escape", + regex: /\\g<[a-zA-Z0-9]*>/ + }, { + token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], + regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ + }, { + token: ["constant.language.escape", "invalid", "constant.language.escape"], + regex: /(\\p{\^?)([^/]*)(})/ + }, { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: /[/][imxouesn]*/, + next: "start" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "regexp.keyword", + regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + push: "regex_character_class" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: /&?&?\[\^?/, + push: "regex_character_class" + }, { + token: "constant.language.escape", + regex: "]", + next: "pop" + }, { + token: "constant.language.escape", + regex: "-" + }, { + defaultToken: "string.regexp.characterclass" } ] }; - this.normalizeRules(); }; - oop.inherits(RubyHighlightRules, TextHighlightRules); - exports.RubyHighlightRules = RubyHighlightRules; + }); -define("ace/mode/haml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/haml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var RubyExports = require("./ruby_highlight_rules"); var RubyHighlightRules = RubyExports.RubyHighlightRules; - -var HamlHighlightRules = function() { +var HamlHighlightRules = function () { HtmlHighlightRules.call(this); - this.$rules = { "start": [ { @@ -1390,27 +1759,27 @@ var HamlHighlightRules = function() { RubyExports.qqString, RubyExports.tString, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" + token: "support.class", // class name + regex: "[A-Z][a-zA-Z_\\d]+" }, { - token : new RubyHighlightRules().getKeywords(), - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: new RubyHighlightRules().getKeywords(), + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : ["keyword", "text", "text"], - regex : "(?:do|\\{)(?: \\|[^|]+\\|)?$", - next : "start" + token: ["keyword", "text", "text"], + regex: "(?:do|\\{)(?: \\|[^|]+\\|)?$", + next: "start" }, { - token : ["text"], - regex : "^$", - next : "start" + token: ["text"], + regex: "^$", + next: "start" }, { - token : ["text"], - regex : "^(?!.*\\|\\s*$)", - next : "start" + token: ["text"], + regex: "^(?!.*\\|\\s*$)", + next: "start" } ], "comment": [ @@ -1424,73 +1793,62 @@ var HamlHighlightRules = function() { regex: /\s+.*/ } ] - }; - this.normalizeRules(); }; - oop.inherits(HamlHighlightRules, HtmlHighlightRules); - exports.HamlHighlightRules = HamlHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -1499,49 +1857,53 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/haml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haml_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { +define("ace/mode/haml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haml_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HamlHighlightRules = require("./haml_highlight_rules").HamlHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HamlHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.$id = "ace/mode/haml"; + this.snippetFileId = "ace/snippets/haml"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/haml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-handlebars.js b/vendor/assets/javascripts/ace/mode-handlebars.js index 2c6bacac..124c6623 100644 --- a/vendor/assets/javascripts/ace/mode-handlebars.js +++ b/vendor/assets/javascripts/ace/mode-handlebars.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,175 +2225,154 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/handlebars_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { +define("ace/mode/handlebars_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module){/* global define */ "use strict"; - var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - function pop2(currentState, stack) { stack.splice(0, 3); return stack.shift() || "start"; } -var HandlebarsHighlightRules = function() { +var HandlebarsHighlightRules = function () { HtmlHighlightRules.call(this); var hbs = { - regex : "(?={{)", - push : "handlebars" + regex: "(?={{)", + push: "handlebars" }; for (var key in this.$rules) { this.$rules[key].unshift(hbs); } this.$rules.handlebars = [{ - token : "comment.start", - regex : "{{!--", - push : [{ - token : "comment.end", - regex : "--}}", - next : pop2 + token: "comment.start", + regex: "{{!--", + push: [{ + token: "comment.end", + regex: "--}}", + next: pop2 + }, { + defaultToken: "comment" + }] }, { - defaultToken : "comment" - }] - }, { - token : "comment.start", - regex : "{{!", - push : [{ - token : "comment.end", - regex : "}}", - next : pop2 + token: "comment.start", + regex: "{{!", + push: [{ + token: "comment.end", + regex: "}}", + next: pop2 + }, { + defaultToken: "comment" + }] }, { - defaultToken : "comment" - }] - }, { - token : "support.function", // unescaped variable - regex : "{{{", - push : [{ - token : "support.function", - regex : "}}}", - next : pop2 + token: "support.function", // unescaped variable + regex: "{{{", + push: [{ + token: "support.function", + regex: "}}}", + next: pop2 + }, { + token: "variable.parameter", + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" + }] }, { - token : "variable.parameter", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }] - }, { - token : "storage.type.start", // begin section - regex : "{{[#\\^/&]?", - push : [{ - token : "storage.type.end", - regex : "}}", - next : pop2 - }, { - token : "variable.parameter", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" - }] - }]; - + token: "storage.type.start", // begin section + regex: "{{[#\\^/&]?", + push: [{ + token: "storage.type.end", + regex: "}}", + next: pop2 + }, { + token: "variable.parameter", + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" + }] + }]; this.normalizeRules(); }; - oop.inherits(HandlebarsHighlightRules, HtmlHighlightRules); - exports.HandlebarsHighlightRules = HandlebarsHighlightRules; + }); -define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/html",["require","exports","module","ace/lib/oop","ace/mode/behaviour/xml"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var XmlBehaviour = require("../behaviour/xml").XmlBehaviour; - var HtmlBehaviour = function () { - XmlBehaviour.call(this); - }; - oop.inherits(HtmlBehaviour, XmlBehaviour); - exports.HtmlBehaviour = HtmlBehaviour; + }); -define("ace/mode/handlebars",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/handlebars_highlight_rules","ace/mode/behaviour/html","ace/mode/folding/html"], function(require, exports, module) { - "use strict"; - +define("ace/mode/handlebars",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/handlebars_highlight_rules","ace/mode/behaviour/html","ace/mode/folding/html"], function(require, exports, module){/* global define */ +"use strict"; var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var HandlebarsHighlightRules = require("./handlebars_highlight_rules").HandlebarsHighlightRules; var HtmlBehaviour = require("./behaviour/html").HtmlBehaviour; var HtmlFoldMode = require("./folding/html").FoldMode; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); this.HighlightRules = HandlebarsHighlightRules; this.$behaviour = new HtmlBehaviour(); }; - oop.inherits(Mode, HtmlMode); - -(function() { - this.blockComment = {start: "{{!--", end: "--}}"}; +(function () { + this.blockComment = { start: "{{!--", end: "--}}" }; this.$id = "ace/mode/handlebars"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/handlebars"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-haskell.js b/vendor/assets/javascripts/ace/mode-haskell.js index f7b29f88..749f8916 100644 --- a/vendor/assets/javascripts/ace/mode-haskell.js +++ b/vendor/assets/javascripts/ace/mode-haskell.js @@ -1,295 +1,240 @@ -define("ace/mode/haskell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/haskell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from tm bundles\haskell.tmbundle\Syntaxes\Haskell.plist (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var HaskellHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'punctuation.definition.entity.haskell', - 'keyword.operator.function.infix.haskell', - 'punctuation.definition.entity.haskell' ], - regex: '(`)([a-zA-Z_\']*?)(`)', - comment: 'In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10]).' }, - { token: 'constant.language.unit.haskell', regex: '\\(\\)' }, - { token: 'constant.language.empty-list.haskell', - regex: '\\[\\]' }, - { token: 'keyword.other.haskell', - regex: '\\b(module|signature)\\b', - push: - [ { token: 'keyword.other.haskell', regex: '\\bwhere\\b', next: 'pop' }, - { include: '#module_name' }, - { include: '#module_exports' }, - { token: 'invalid', regex: '[a-z]+' }, - { defaultToken: 'meta.declaration.module.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\bclass\\b', - push: - [ { token: 'keyword.other.haskell', - regex: '\\bwhere\\b', - next: 'pop' }, - { token: 'support.class.prelude.haskell', - regex: '\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b' }, - { token: 'entity.other.inherited-class.haskell', - regex: '[A-Z][A-Za-z_\']*' }, - { token: 'variable.other.generic-type.haskell', - regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, - { defaultToken: 'meta.declaration.class.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\binstance\\b', - push: - [ { token: 'keyword.other.haskell', - regex: '\\bwhere\\b|$', - next: 'pop' }, - { include: '#type_signature' }, - { defaultToken: 'meta.declaration.instance.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: 'import', - push: - [ { token: 'meta.import.haskell', regex: '$|;|^', next: 'pop' }, - { token: 'keyword.other.haskell', regex: 'qualified|as|hiding' }, - { include: '#module_name' }, - { include: '#module_exports' }, - { defaultToken: 'meta.import.haskell' } ] }, - { token: [ 'keyword.other.haskell', 'meta.deriving.haskell' ], - regex: '(deriving)(\\s*\\()', - push: - [ { token: 'meta.deriving.haskell', regex: '\\)', next: 'pop' }, - { token: 'entity.other.inherited-class.haskell', - regex: '\\b[A-Z][a-zA-Z_\']*' }, - { defaultToken: 'meta.deriving.haskell' } ] }, - { token: 'keyword.other.haskell', - regex: '\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b' }, - { token: 'keyword.operator.haskell', regex: '\\binfix[lr]?\\b' }, - { token: 'keyword.control.haskell', - regex: '\\b(?:do|if|then|else)\\b' }, - { token: 'constant.numeric.float.haskell', - regex: '\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b', - comment: 'Floats are always decimal' }, - { token: 'constant.numeric.haskell', - regex: '\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b' }, - { token: - [ 'meta.preprocessor.c', - 'punctuation.definition.preprocessor.c', - 'meta.preprocessor.c' ], - regex: '^(\\s*)(#)(\\s*\\w+)', - comment: 'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.' }, - { include: '#pragma' }, - { token: 'punctuation.definition.string.begin.haskell', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.haskell', +var HaskellHighlightRules = function () { + this.$rules = { start: [{ token: ['punctuation.definition.entity.haskell', + 'keyword.operator.function.infix.haskell', + 'punctuation.definition.entity.haskell'], + regex: '(`)([a-zA-Z_\']*?)(`)', + comment: 'In case this regex seems unusual for an infix operator, note that Haskell allows any ordinary function application (elem 4 [1..10]) to be rewritten as an infix expression (4 `elem` [1..10]).' }, + { token: 'constant.language.unit.haskell', regex: '\\(\\)' }, + { token: 'constant.language.empty-list.haskell', + regex: '\\[\\]' }, + { token: 'keyword.other.haskell', + regex: '\\b(module|signature)\\b', + push: [{ token: 'keyword.other.haskell', regex: '\\bwhere\\b', next: 'pop' }, + { include: '#module_name' }, + { include: '#module_exports' }, + { token: 'invalid', regex: '[a-z]+' }, + { defaultToken: 'meta.declaration.module.haskell' }] }, + { token: 'keyword.other.haskell', + regex: '\\bclass\\b', + push: [{ token: 'keyword.other.haskell', + regex: '\\bwhere\\b', + next: 'pop' }, + { token: 'support.class.prelude.haskell', + regex: '\\b(?:Monad|Functor|Eq|Ord|Read|Show|Num|(?:Frac|Ra)tional|Enum|Bounded|Real(?:Frac|Float)?|Integral|Floating)\\b' }, + { token: 'entity.other.inherited-class.haskell', + regex: '[A-Z][A-Za-z_\']*' }, + { token: 'variable.other.generic-type.haskell', + regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, + { defaultToken: 'meta.declaration.class.haskell' }] }, + { token: 'keyword.other.haskell', + regex: '\\binstance\\b', + push: [{ token: 'keyword.other.haskell', + regex: '\\bwhere\\b|$', + next: 'pop' }, + { include: '#type_signature' }, + { defaultToken: 'meta.declaration.instance.haskell' }] }, + { token: 'keyword.other.haskell', + regex: 'import', + push: [{ token: 'meta.import.haskell', regex: '$|;|^', next: 'pop' }, + { token: 'keyword.other.haskell', regex: 'qualified|as|hiding' }, + { include: '#module_name' }, + { include: '#module_exports' }, + { defaultToken: 'meta.import.haskell' }] }, + { token: ['keyword.other.haskell', 'meta.deriving.haskell'], + regex: '(deriving)(\\s*\\()', + push: [{ token: 'meta.deriving.haskell', regex: '\\)', next: 'pop' }, + { token: 'entity.other.inherited-class.haskell', + regex: '\\b[A-Z][a-zA-Z_\']*' }, + { defaultToken: 'meta.deriving.haskell' }] }, + { token: 'keyword.other.haskell', + regex: '\\b(?:deriving|where|data|type|case|of|let|in|newtype|default)\\b' }, + { token: 'keyword.operator.haskell', regex: '\\binfix[lr]?\\b' }, + { token: 'keyword.control.haskell', + regex: '\\b(?:do|if|then|else)\\b' }, + { token: 'constant.numeric.float.haskell', + regex: '\\b(?:[0-9]+\\.[0-9]+(?:[eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b', + comment: 'Floats are always decimal' }, + { token: 'constant.numeric.haskell', + regex: '\\b(?:[0-9]+|0(?:[xX][0-9a-fA-F]+|[oO][0-7]+))\\b' }, + { token: ['meta.preprocessor.c', + 'punctuation.definition.preprocessor.c', + 'meta.preprocessor.c'], + regex: '^(\\s*)(#)(\\s*\\w+)', + comment: 'In addition to Haskell\'s "native" syntax, GHC permits the C preprocessor to be run on a source file.' }, + { include: '#pragma' }, + { token: 'punctuation.definition.string.begin.haskell', regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.haskell', - regex: '\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&])' }, - { token: 'constant.character.escape.octal.haskell', - regex: '\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+' }, - { token: 'constant.character.escape.control.haskell', - regex: '\\^[A-Z@\\[\\]\\\\\\^_]' }, - { defaultToken: 'string.quoted.double.haskell' } ] }, - { token: - [ 'punctuation.definition.string.begin.haskell', - 'string.quoted.single.haskell', - 'constant.character.escape.haskell', - 'constant.character.escape.octal.haskell', - 'constant.character.escape.hexadecimal.haskell', - 'constant.character.escape.control.haskell', - 'punctuation.definition.string.end.haskell' ], - regex: '(\')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(\')' }, - { token: - [ 'meta.function.type-declaration.haskell', - 'entity.name.function.haskell', - 'meta.function.type-declaration.haskell', - 'keyword.other.double-colon.haskell' ], - regex: '^(\\s*)([a-z_][a-zA-Z0-9_\']*|\\([|!%$+\\-.,=]+\\))(\\s*)(::)', - push: - [ { token: 'meta.function.type-declaration.haskell', - regex: '$', - next: 'pop' }, - { include: '#type_signature' }, - { defaultToken: 'meta.function.type-declaration.haskell' } ] }, - { token: 'support.constant.haskell', - regex: '\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b' }, - { token: 'constant.other.haskell', regex: '\\b[A-Z]\\w*\\b' }, - { include: '#comments' }, - { token: 'support.function.prelude.haskell', - regex: '\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b' }, - { include: '#infix_op' }, - { token: 'keyword.operator.haskell', - regex: '[|!%$?~+:\\-.=\\\\]+', - comment: 'In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.' }, - { token: 'punctuation.separator.comma.haskell', regex: ',' } ], - '#block_comment': - [ { token: 'punctuation.definition.comment.haskell', - regex: '\\{-(?!#)', - push: - [ { include: '#block_comment' }, - { token: 'punctuation.definition.comment.haskell', - regex: '-\\}', - next: 'pop' }, - { defaultToken: 'comment.block.haskell' } ] } ], - '#comments': - [ { token: 'punctuation.definition.comment.haskell', - regex: '--.*', - push_: - [ { token: 'comment.line.double-dash.haskell', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-dash.haskell' } ] }, - { include: '#block_comment' } ], - '#infix_op': - [ { token: 'entity.name.function.infix.haskell', - regex: '\\([|!%$+:\\-.=]+\\)|\\(,+\\)' } ], - '#module_exports': - [ { token: 'meta.declaration.exports.haskell', - regex: '\\(', - push: - [ { token: 'meta.declaration.exports.haskell.end', - regex: '\\)', - next: 'pop' }, - { token: 'entity.name.function.haskell', - regex: '\\b[a-z][a-zA-Z_\']*' }, - { token: 'storage.type.haskell', regex: '\\b[A-Z][A-Za-z_\']*' }, - { token: 'punctuation.separator.comma.haskell', regex: ',' }, - { include: '#infix_op' }, - { token: 'meta.other.unknown.haskell', - regex: '\\(.*?\\)', - comment: 'So named because I don\'t know what to call this.' }, - { defaultToken: 'meta.declaration.exports.haskell.end' } ] } ], - '#module_name': - [ { token: 'support.other.module.haskell', - regex: '[A-Z][A-Za-z._\']*' } ], - '#pragma': - [ { token: 'meta.preprocessor.haskell', - regex: '\\{-#', - push: - [ { token: 'meta.preprocessor.haskell', - regex: '#-\\}', - next: 'pop' }, - { token: 'keyword.other.preprocessor.haskell', - regex: '\\b(?:LANGUAGE|UNPACK|INLINE)\\b' }, - { defaultToken: 'meta.preprocessor.haskell' } ] } ], - '#type_signature': - [ { token: - [ 'meta.class-constraint.haskell', - 'entity.other.inherited-class.haskell', - 'meta.class-constraint.haskell', - 'variable.other.generic-type.haskell', - 'meta.class-constraint.haskell', - 'keyword.other.big-arrow.haskell' ], - regex: '(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_\']*)(\\)\\s*)(=>)' }, - { include: '#pragma' }, - { token: 'keyword.other.arrow.haskell', regex: '->' }, - { token: 'keyword.other.big-arrow.haskell', regex: '=>' }, - { token: 'support.type.prelude.haskell', - regex: '\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b' }, - { token: 'variable.other.generic-type.haskell', - regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, - { token: 'storage.type.haskell', - regex: '\\b[A-Z][a-zA-Z0-9_\']*\\b' }, - { token: 'support.constant.unit.haskell', regex: '\\(\\)' }, - { include: '#comments' } ] }; - + push: [{ token: 'punctuation.definition.string.end.haskell', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.haskell', + regex: '\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&])' }, + { token: 'constant.character.escape.octal.haskell', + regex: '\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+' }, + { token: 'constant.character.escape.control.haskell', + regex: '\\^[A-Z@\\[\\]\\\\\\^_]' }, + { defaultToken: 'string.quoted.double.haskell' }] }, + { token: ['punctuation.definition.string.begin.haskell', + 'string.quoted.single.haskell', + 'constant.character.escape.haskell', + 'constant.character.escape.octal.haskell', + 'constant.character.escape.hexadecimal.haskell', + 'constant.character.escape.control.haskell', + 'punctuation.definition.string.end.haskell'], + regex: '(\')(?:([\\ -\\[\\]-~])|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\"\'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))(\')' }, + { token: ['meta.function.type-declaration.haskell', + 'entity.name.function.haskell', + 'meta.function.type-declaration.haskell', + 'keyword.other.double-colon.haskell'], + regex: '^(\\s*)([a-z_][a-zA-Z0-9_\']*|\\([|!%$+\\-.,=]+\\))(\\s*)(::)', + push: [{ token: 'meta.function.type-declaration.haskell', + regex: '$', + next: 'pop' }, + { include: '#type_signature' }, + { defaultToken: 'meta.function.type-declaration.haskell' }] }, + { token: 'support.constant.haskell', + regex: '\\b(?:Just|Nothing|Left|Right|True|False|LT|EQ|GT|\\(\\)|\\[\\])\\b' }, + { token: 'constant.other.haskell', regex: '\\b[A-Z]\\w*\\b' }, + { include: '#comments' }, + { token: 'support.function.prelude.haskell', + regex: '\\b(?:abs|acos|acosh|all|and|any|appendFile|applyM|asTypeOf|asin|asinh|atan|atan2|atanh|break|catch|ceiling|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|div|divMod|drop|dropWhile|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromEnum|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|head|id|init|interact|ioError|isDenormalized|isIEEE|isInfinite|isNaN|isNegativeZero|iterate|last|lcm|length|lex|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|odd|or|otherwise|pi|pred|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|read|readFile|readIO|readList|readLn|readParen|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showList|showParen|showString|shows|showsPrec|significand|signum|sin|sinh|snd|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|toEnum|toInteger|toRational|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b' }, + { include: '#infix_op' }, + { token: 'keyword.operator.haskell', + regex: '[|!%$?~+:\\-.=\\\\]+', + comment: 'In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.' }, + { token: 'punctuation.separator.comma.haskell', regex: ',' }], + '#block_comment': [{ token: 'punctuation.definition.comment.haskell', + regex: '\\{-(?!#)', + push: [{ include: '#block_comment' }, + { token: 'punctuation.definition.comment.haskell', + regex: '-\\}', + next: 'pop' }, + { defaultToken: 'comment.block.haskell' }] }], + '#comments': [{ token: 'punctuation.definition.comment.haskell', + regex: '--.*', + push_: [{ token: 'comment.line.double-dash.haskell', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-dash.haskell' }] }, + { include: '#block_comment' }], + '#infix_op': [{ token: 'entity.name.function.infix.haskell', + regex: '\\([|!%$+:\\-.=]+\\)|\\(,+\\)' }], + '#module_exports': [{ token: 'meta.declaration.exports.haskell', + regex: '\\(', + push: [{ token: 'meta.declaration.exports.haskell.end', + regex: '\\)', + next: 'pop' }, + { token: 'entity.name.function.haskell', + regex: '\\b[a-z][a-zA-Z_\']*' }, + { token: 'storage.type.haskell', regex: '\\b[A-Z][A-Za-z_\']*' }, + { token: 'punctuation.separator.comma.haskell', regex: ',' }, + { include: '#infix_op' }, + { token: 'meta.other.unknown.haskell', + regex: '\\(.*?\\)', + comment: 'So named because I don\'t know what to call this.' }, + { defaultToken: 'meta.declaration.exports.haskell.end' }] }], + '#module_name': [{ token: 'support.other.module.haskell', + regex: '[A-Z][A-Za-z._\']*' }], + '#pragma': [{ token: 'meta.preprocessor.haskell', + regex: '\\{-#', + push: [{ token: 'meta.preprocessor.haskell', + regex: '#-\\}', + next: 'pop' }, + { token: 'keyword.other.preprocessor.haskell', + regex: '\\b(?:LANGUAGE|UNPACK|INLINE)\\b' }, + { defaultToken: 'meta.preprocessor.haskell' }] }], + '#type_signature': [{ token: ['meta.class-constraint.haskell', + 'entity.other.inherited-class.haskell', + 'meta.class-constraint.haskell', + 'variable.other.generic-type.haskell', + 'meta.class-constraint.haskell', + 'keyword.other.big-arrow.haskell'], + regex: '(\\(\\s*)([A-Z][A-Za-z]*)(\\s+)([a-z][A-Za-z_\']*)(\\)\\s*)(=>)' }, + { include: '#pragma' }, + { token: 'keyword.other.arrow.haskell', regex: '->' }, + { token: 'keyword.other.big-arrow.haskell', regex: '=>' }, + { token: 'support.type.prelude.haskell', + regex: '\\b(?:Int(?:eger)?|Maybe|Either|Bool|Float|Double|Char|String|Ordering|ShowS|ReadS|FilePath|IO(?:Error)?)\\b' }, + { token: 'variable.other.generic-type.haskell', + regex: '\\b[a-z][a-zA-Z0-9_\']*\\b' }, + { token: 'storage.type.haskell', + regex: '\\b[A-Z][a-zA-Z0-9_\']*\\b' }, + { token: 'support.constant.unit.haskell', regex: '\\(\\)' }, + { include: '#comments' }] }; this.normalizeRules(); }; - -HaskellHighlightRules.metaData = { fileTypes: [ 'hs' ], - keyEquivalent: '^~H', - name: 'Haskell', - scopeName: 'source.haskell' }; - - +HaskellHighlightRules.metaData = { fileTypes: ['hs'], + keyEquivalent: '^~H', + name: 'Haskell', + scopeName: 'source.haskell' }; oop.inherits(HaskellHighlightRules, TextHighlightRules); - exports.HaskellHighlightRules = HaskellHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -302,71 +247,78 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/haskell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/haskell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HaskellHighlightRules = require("./haskell_highlight_rules").HaskellHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HaskellHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; this.blockComment = null; this.$id = "ace/mode/haskell"; + this.snippetFileId = "ace/snippets/haskell"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/haskell"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-haskell_cabal.js b/vendor/assets/javascripts/ace/mode-haskell_cabal.js index 7b447140..bac03616 100644 --- a/vendor/assets/javascripts/ace/mode-haskell_cabal.js +++ b/vendor/assets/javascripts/ace/mode-haskell_cabal.js @@ -1,134 +1,135 @@ -define("ace/mode/haskell_cabal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/haskell_cabal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/** + * Haskell Cabal files highlighter (https://www.haskell.org/cabal/users-guide/developing-packages.html) + **/ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CabalHighlightRules = function() { +var CabalHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "^\\s*--.*$" + token: "comment", + regex: "^\\s*--.*$" }, { token: ["keyword"], regex: /^(\s*\w.*?)(:(?:\s+|$))/ }, { - token : "constant.numeric", // float - regex : /[\d_]+(?:(?:[\.\d_]*)?)/ + token: "constant.numeric", // float + regex: /[\d_]+(?:(?:[\.\d_]*)?)/ }, { - token : "constant.language.boolean", - regex : "(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" + token: "constant.language.boolean", + regex: "(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" }, { - token : "markup.heading", - regex : /^(\w.*)$/ + token: "markup.heading", + regex: /^(\w.*)$/ } - ]}; - + ] + }; }; - oop.inherits(CabalHighlightRules, TextHighlightRules); - exports.CabalHighlightRules = CabalHighlightRules; + }); -define("ace/mode/folding/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { +define("ace/mode/folding/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){/* +* Folding mode for Cabal files (Haskell): allow folding each seaction, including +* the initial general section. +*/ "use strict"; - var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.isHeading = function (session,row) { - var heading = "markup.heading"; - var token = session.getTokens(row)[0]; - return row==0 || (token && token.type.lastIndexOf(heading, 0) === 0); - }; - - this.getFoldWidget = function(session, foldStyle, row) { - if (this.isHeading(session,row)){ - return "start"; - } else if (foldStyle === "markbeginend" && !(/^\s*$/.test(session.getLine(row)))){ - var maxRow = session.getLength(); - while (++row < maxRow) { - if (!(/^\s*$/.test(session.getLine(row)))){ - break; - } +(function () { + this.isHeading = function (session, row) { + var heading = "markup.heading"; + var token = session.getTokens(row)[0]; + return row == 0 || (token && token.type.lastIndexOf(heading, 0) === 0); + }; + this.getFoldWidget = function (session, foldStyle, row) { + if (this.isHeading(session, row)) { + return "start"; } - if (row==maxRow || this.isHeading(session,row)){ - return "end"; - } - } - return ""; - }; - - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - if (this.isHeading(session,row)) { - while (++row < maxRow) { - if (this.isHeading(session,row)){ - row--; - break; - } - } - - endRow = row; - if (endRow > startRow) { - while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) - endRow--; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - } else if (this.getFoldWidget(session, foldStyle, row)==="end"){ - var endRow = row; - var endColumn = session.getLine(endRow).length; - while (--row>=0){ - if (this.isHeading(session,row)){ - break; - } + else if (foldStyle === "markbeginend" && !(/^\s*$/.test(session.getLine(row)))) { + var maxRow = session.getLength(); + while (++row < maxRow) { + if (!(/^\s*$/.test(session.getLine(row)))) { + break; + } + } + if (row == maxRow || this.isHeading(session, row)) { + return "end"; + } } + return ""; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.getLine(row); var startColumn = line.length; - return new Range(row, startColumn, endRow, endColumn); - } + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (this.isHeading(session, row)) { + while (++row < maxRow) { + if (this.isHeading(session, row)) { + row--; + break; + } + } + endRow = row; + if (endRow > startRow) { + while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) + endRow--; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + } + else if (this.getFoldWidget(session, foldStyle, row) === "end") { + var endRow = row; + var endColumn = session.getLine(endRow).length; + while (--row >= 0) { + if (this.isHeading(session, row)) { + break; + } + } + var line = session.getLine(row); + var startColumn = line.length; + return new Range(row, startColumn, endRow, endColumn); + } }; - }).call(FoldMode.prototype); }); -define("ace/mode/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_cabal_highlight_rules","ace/mode/folding/haskell_cabal"], function(require, exports, module) { +define("ace/mode/haskell_cabal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haskell_cabal_highlight_rules","ace/mode/folding/haskell_cabal"], function(require, exports, module){/** +* Haskell Cabal files mode (https://www.haskell.org/cabal/users-guide/developing-packages.html) +**/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CabalHighlightRules = require("./haskell_cabal_highlight_rules").CabalHighlightRules; var FoldMode = require("./folding/haskell_cabal").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CabalHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; this.blockComment = null; this.$id = "ace/mode/haskell_cabal"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/haskell_cabal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-haxe.js b/vendor/assets/javascripts/ace/mode-haxe.js index 916bbd2a..701ff1ce 100644 --- a/vendor/assets/javascripts/ace/mode-haxe.js +++ b/vendor/assets/javascripts/ace/mode-haxe.js @@ -1,269 +1,210 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/haxe_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/haxe_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); - var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var HaxeHighlightRules = function() { - - var keywords = ( - "break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std" - ); - - var buildinConstants = ( - "null|true|false" - ); - +var HaxeHighlightRules = function () { + var keywords = ("break|case|cast|catch|class|continue|default|else|enum|extends|for|function|if|implements|import|in|inline|interface|new|override|package|private|public|return|static|super|switch|this|throw|trace|try|typedef|untyped|var|while|Array|Void|Bool|Int|UInt|Float|Dynamic|String|List|Hash|IntHash|Error|Unknown|Type|Std"); + var buildinConstants = ("null|true|false"); var keywordMapper = this.createKeywordMapper({ "variable.language": "this", "keyword": keywords, "constant.language": buildinConstants }, "identifier"); - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment", + regex: "\\/\\/.*$" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." }, { - token : "paren.lparen", - regex : "[[({<]" + token: "paren.lparen", + regex: "[[({<]" }, { - token : "paren.rparen", - regex : "[\\])}>]" + token: "paren.rparen", + regex: "[\\])}>]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - oop.inherits(HaxeHighlightRules, TextHighlightRules); - exports.HaxeHighlightRules = HaxeHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -276,104 +217,97 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/haxe",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haxe_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/haxe",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/haxe_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HaxeHighlightRules = require("./haxe_highlight_rules").HaxeHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HaxeHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/haxe"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/haxe"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-hjson.js b/vendor/assets/javascripts/ace/mode-hjson.js index 624ba6a4..82ed2d37 100644 --- a/vendor/assets/javascripts/ace/mode-hjson.js +++ b/vendor/assets/javascripts/ace/mode-hjson.js @@ -1,172 +1,167 @@ -define("ace/mode/hjson_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/hjson_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from Hjson.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var HjsonHighlightRules = function() { - +var HjsonHighlightRules = function () { this.$rules = { start: [{ - include: "#comments" - }, { - include: "#rootObject" - }, { - include: "#value" - }], - "#array": [{ - token: "paren.lparen", - regex: /\[/, - push: [{ - token: "paren.rparen", - regex: /\]/, - next: "pop" + include: "#comments" + }, { + include: "#rootObject" }, { include: "#value" + }], + "#array": [{ + token: "paren.lparen", + regex: /\[/, + push: [{ + token: "paren.rparen", + regex: /\]/, + next: "pop" + }, { + include: "#value" + }, { + include: "#comments" + }, { + token: "text", + regex: /,|$/ + }, { + token: "invalid.illegal", + regex: /[^\s\]]/ + }, { + defaultToken: "array" + }] + }], + "#comments": [{ + token: [ + "comment.punctuation", + "comment.line" + ], + regex: /(#)(.*$)/ + }, { + token: "comment.punctuation", + regex: /\/\*/, + push: [{ + token: "comment.punctuation", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block" + }] + }, { + token: [ + "comment.punctuation", + "comment.line" + ], + regex: /(\/\/)(.*$)/ + }], + "#constant": [{ + token: "constant", + regex: /\b(?:true|false|null)\b/ + }], + "#keyname": [{ + token: "keyword", + regex: /(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*(?=:)/ + }], + "#mstring": [{ + token: "string", + regex: /'''/, + push: [{ + token: "string", + regex: /'''/, + next: "pop" + }, { + defaultToken: "string" + }] + }], + "#number": [{ + token: "constant.numeric", + regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/, + comment: "handles integer and decimal numbers" + }], + "#object": [{ + token: "paren.lparen", + regex: /\{/, + push: [{ + token: "paren.rparen", + regex: /\}/, + next: "pop" + }, { + include: "#keyname" + }, { + include: "#value" + }, { + token: "text", + regex: /:/ + }, { + token: "text", + regex: /,/ + }, { + defaultToken: "paren" + }] + }], + "#rootObject": [{ + token: "paren", + regex: /(?=\s*(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*:)/, + push: [{ + token: "paren.rparen", + regex: /---none---/, + next: "pop" + }, { + include: "#keyname" + }, { + include: "#value" + }, { + token: "text", + regex: /:/ + }, { + token: "text", + regex: /,/ + }, { + defaultToken: "paren" + }] + }], + "#string": [{ + token: "string", + regex: /"/, + push: [{ + token: "string", + regex: /"/, + next: "pop" + }, { + token: "constant.language.escape", + regex: /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/ + }, { + token: "invalid.illegal", + regex: /\\./ + }, { + defaultToken: "string" + }] + }], + "#ustring": [{ + token: "string", + regex: /\b[^:,0-9\-\{\[\}\]\s].*$/ + }], + "#value": [{ + include: "#constant" + }, { + include: "#number" + }, { + include: "#string" + }, { + include: "#array" + }, { + include: "#object" }, { include: "#comments" }, { - token: "text", - regex: /,|$/ + include: "#mstring" }, { - token: "invalid.illegal", - regex: /[^\s\]]/ - }, { - defaultToken: "array" + include: "#ustring" }] - }], - "#comments": [{ - token: [ - "comment.punctuation", - "comment.line" - ], - regex: /(#)(.*$)/ - }, { - token: "comment.punctuation", - regex: /\/\*/, - push: [{ - token: "comment.punctuation", - regex: /\*\//, - next: "pop" - }, { - defaultToken: "comment.block" - }] - }, { - token: [ - "comment.punctuation", - "comment.line" - ], - regex: /(\/\/)(.*$)/ - }], - "#constant": [{ - token: "constant", - regex: /\b(?:true|false|null)\b/ - }], - "#keyname": [{ - token: "keyword", - regex: /(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*(?=:)/ - }], - "#mstring": [{ - token: "string", - regex: /'''/, - push: [{ - token: "string", - regex: /'''/, - next: "pop" - }, { - defaultToken: "string" - }] - }], - "#number": [{ - token: "constant.numeric", - regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/, - comment: "handles integer and decimal numbers" - }], - "#object": [{ - token: "paren.lparen", - regex: /\{/, - push: [{ - token: "paren.rparen", - regex: /\}/, - next: "pop" - }, { - include: "#keyname" - }, { - include: "#value" - }, { - token: "text", - regex: /:/ - }, { - token: "text", - regex: /,/ - }, { - defaultToken: "paren" - }] - }], - "#rootObject": [{ - token: "paren", - regex: /(?=\s*(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*:)/, - push: [{ - token: "paren.rparen", - regex: /---none---/, - next: "pop" - }, { - include: "#keyname" - }, { - include: "#value" - }, { - token: "text", - regex: /:/ - }, { - token: "text", - regex: /,/ - }, { - defaultToken: "paren" - }] - }], - "#string": [{ - token: "string", - regex: /"/, - push: [{ - token: "string", - regex: /"/, - next: "pop" - }, { - token: "constant.language.escape", - regex: /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/ - }, { - token: "invalid.illegal", - regex: /\\./ - }, { - defaultToken: "string" - }] - }], - "#ustring": [{ - token: "string", - regex: /\b[^:,0-9\-\{\[\}\]\s].*$/ - }], - "#value": [{ - include: "#constant" - }, { - include: "#number" - }, { - include: "#string" - }, { - include: "#array" - }, { - include: "#object" - }, { - include: "#comments" - }, { - include: "#mstring" - }, { - include: "#ustring" - }] }; - this.normalizeRules(); }; - HjsonHighlightRules.metaData = { fileTypes: ["hjson"], foldingStartMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [{\\[] # the start of an object or array\n (?! # but not followed by\n .* # whatever\n [}\\]] # and the close of an object or array\n ,? # an optional comma\n \\s* # some optional space\n $ # at the end of the line\n )\n | # ...or...\n [{\\[] # the start of an object or array\n \\s* # some optional space\n $ # at the end of the line\n )", @@ -175,96 +170,70 @@ HjsonHighlightRules.metaData = { name: "Hjson", scopeName: "source.hjson" }; - - oop.inherits(HjsonHighlightRules, TextHighlightRules); - exports.HjsonHighlightRules = HjsonHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -277,70 +246,73 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/hjson",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/hjson_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/hjson",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/hjson_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HjsonHighlightRules = require("./hjson_highlight_rules").HjsonHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HjsonHighlightRules; this.foldingRules = new FoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/hjson"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/hjson"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-html.js b/vendor/assets/javascripts/ace/mode-html.js index 851d5df1..40a5105d 100644 --- a/vendor/assets/javascripts/ace/mode-html.js +++ b/vendor/assets/javascripts/ace/mode-html.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,62 +2225,55 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/html"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-html_elixir.js b/vendor/assets/javascripts/ace/mode-html_elixir.js index 31abfb48..29cd4071 100644 --- a/vendor/assets/javascripts/ace/mode-html_elixir.js +++ b/vendor/assets/javascripts/ace/mode-html_elixir.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,260 +18,317 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -284,142 +336,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -434,9 +486,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -452,13 +504,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -491,13 +543,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -507,44 +593,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -559,40 +663,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -600,7 +724,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -610,14 +735,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.githubusercontent.com/elixir-lang/elixir-tmbundle/master/Syntaxes/Elixir.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ElixirHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'meta.module.elixir', - 'keyword.control.module.elixir', - 'meta.module.elixir', - 'entity.name.type.module.elixir' ], - regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc (?:~[a-z])?"""', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc ~[A-Z]"""', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*"""', - next: 'pop' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*\'\'\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.heredoc', - regex: '@(?:module|type)?doc ~[A-Z]\'\'\'', - push: - [ { token: 'comment.documentation.heredoc', - regex: '\\s*\'\'\'', - next: 'pop' }, - { defaultToken: 'comment.documentation.heredoc' } ], - comment: '@doc with heredocs is treated as documentation' }, - { token: 'comment.documentation.false', - regex: '@(?:module|type)?doc false', - comment: '@doc false is treated as documentation' }, - { token: 'comment.documentation.string', - regex: '@(?:module|type)?doc "', - push: - [ { token: 'comment.documentation.string', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'comment.documentation.string' } ], - comment: '@doc with string is treated as documentation' }, - { token: 'keyword.control.elixir', - regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' }, - { token: 'punctuation.definition.constant.elixir', - regex: ':\'', - push: - [ { token: 'punctuation.definition.constant.elixir', +var ElixirHighlightRules = function () { + this.$rules = { start: [{ token: ['meta.module.elixir', + 'keyword.control.module.elixir', + 'meta.module.elixir', + 'entity.name.type.module.elixir'], + regex: '^(\\s*)(defmodule)(\\s+)((?:[A-Z]\\w*\\s*\\.\\s*)*[A-Z]\\w*)' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc (?:~[a-z])?"""', + push: [{ token: 'comment.documentation.heredoc', + regex: '\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.heredoc' }], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc ~[A-Z]"""', + push: [{ token: 'comment.documentation.heredoc', + regex: '\\s*"""', + next: 'pop' }, + { defaultToken: 'comment.documentation.heredoc' }], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc (?:~[a-z])?\'\'\'', + push: [{ token: 'comment.documentation.heredoc', + regex: '\\s*\'\'\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.heredoc' }], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.heredoc', + regex: '@(?:module|type)?doc ~[A-Z]\'\'\'', + push: [{ token: 'comment.documentation.heredoc', + regex: '\\s*\'\'\'', + next: 'pop' }, + { defaultToken: 'comment.documentation.heredoc' }], + comment: '@doc with heredocs is treated as documentation' }, + { token: 'comment.documentation.false', + regex: '@(?:module|type)?doc false', + comment: '@doc false is treated as documentation' }, + { token: 'comment.documentation.string', + regex: '@(?:module|type)?doc "', + push: [{ token: 'comment.documentation.string', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'comment.documentation.string' }], + comment: '@doc with string is treated as documentation' }, + { token: 'keyword.control.elixir', + regex: '\\b(?:do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defmacrop?|defdelegate|defcallback|defmacrocallback|defexception|defoverridable|exit|after|rescue|catch|else|raise|throw|import|require|alias|use|quote|unquote|super)\\b(?![?!])', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?_?\\h)*|\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?|0b[01]+|0o[0-7]+)\\b' }, + { token: 'punctuation.definition.constant.elixir', + regex: ':\'', + push: [{ token: 'punctuation.definition.constant.elixir', + regex: '\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'constant.other.symbol.single-quoted.elixir' }] }, + { token: 'punctuation.definition.constant.elixir', + regex: ':"', + push: [{ token: 'punctuation.definition.constant.elixir', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'constant.other.symbol.double-quoted.elixir' }] }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '(?:\'\'\')', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>\'\'\')', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*\'\'\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' }], + comment: 'Single-quoted heredocs' }, + { token: 'punctuation.definition.string.begin.elixir', regex: '\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'constant.other.symbol.single-quoted.elixir' } ] }, - { token: 'punctuation.definition.constant.elixir', - regex: ':"', - push: - [ { token: 'punctuation.definition.constant.elixir', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\'', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'support.function.variable.quoted.single.elixir' }], + comment: 'single quoted string (allows for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '(?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>""")', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.heredoc.elixir' }], + comment: 'Double-quoted heredocs' }, + { token: 'punctuation.definition.string.begin.elixir', regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'constant.other.symbol.double-quoted.elixir' } ] }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '(?:\'\'\')', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>\'\'\')', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*\'\'\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'support.function.variable.quoted.single.heredoc.elixir' } ], - comment: 'Single-quoted heredocs' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\'', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'support.function.variable.quoted.single.elixir' } ], - comment: 'single quoted string (allows for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '(?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.heredoc.elixir' } ], - comment: 'Double-quoted heredocs' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '"', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.elixir' } ], - comment: 'double quoted string (allows for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z](?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '~[a-z](?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.quoted.double.heredoc.elixir' } ], - comment: 'Double-quoted heredocs sigils' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\{', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\}[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\[', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\][a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\<', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\>[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z]\\(', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\)[a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[a-z][^\\w]', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '[^\\w][a-z]*', - next: 'pop' }, - { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { include: '#escaped_char' }, - { defaultToken: 'string.interpolated.elixir' } ], - comment: 'sigil (allow for interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z](?:""")', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '~[A-Z](?>""")', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '^\\s*"""', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'Double-quoted heredocs sigils' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\{', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\}[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\[', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\][a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\<', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\>[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z]\\(', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '\\)[a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: 'punctuation.definition.string.begin.elixir', - regex: '~[A-Z][^\\w]', - push: - [ { token: 'punctuation.definition.string.end.elixir', - regex: '[^\\w][a-z]*', - next: 'pop' }, - { defaultToken: 'string.quoted.other.literal.upper.elixir' } ], - comment: 'sigil (without interpolation)' }, - { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'], - regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)', - comment: 'symbols' }, - { token: 'punctuation.definition.constant.elixir', - regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)', - comment: 'symbols' }, - { token: - [ 'punctuation.definition.comment.elixir', - 'comment.line.number-sign.elixir' ], - regex: '(#)(.*)' }, - { token: 'constant.numeric.elixir', - regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?=?' }, - { token: 'keyword.operator.bitwise.elixir', - regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' }, - { token: 'keyword.operator.logical.elixir', - regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b', - originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' }, - { token: 'keyword.operator.arithmetic.elixir', - regex: '\\*|\\+|\\-|/' }, - { token: 'keyword.operator.other.elixir', - regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' }, - { token: 'keyword.operator.assignment.elixir', regex: '=' }, - { token: 'punctuation.separator.other.elixir', regex: ':' }, - { token: 'punctuation.separator.statement.elixir', - regex: '\\;' }, - { token: 'punctuation.separator.object.elixir', regex: ',' }, - { token: 'punctuation.separator.method.elixir', regex: '\\.' }, - { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' }, - { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' }, - { token: 'punctuation.section.function.elixir', - regex: '\\(|\\)' } ], - '#escaped_char': - [ { token: 'constant.character.escape.elixir', - regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' } ], - '#interpolated_elixir': - [ { token: - [ 'source.elixir.embedded.source', - 'source.elixir.embedded.source.empty' ], - regex: '(#\\{)(\\})' }, - { todo: - { token: 'punctuation.section.embedded.elixir', - regex: '#\\{', - push: - [ { token: 'punctuation.section.embedded.elixir', - regex: '\\}', - next: 'pop' }, - { include: '#nest_curly_and_self' }, - { include: '$self' }, - { defaultToken: 'source.elixir.embedded.source' } ] } } ], - '#nest_curly_and_self': - [ { token: 'punctuation.section.scope.elixir', - regex: '\\{', - push: - [ { token: 'punctuation.section.scope.elixir', - regex: '\\}', - next: 'pop' }, - { include: '#nest_curly_and_self' } ] }, - { include: '$self' } ], - '#regex_sub': - [ { include: '#interpolated_elixir' }, - { include: '#escaped_char' }, - { token: - [ 'punctuation.definition.arbitrary-repitition.elixir', - 'string.regexp.arbitrary-repitition.elixir', - 'string.regexp.arbitrary-repitition.elixir', - 'punctuation.definition.arbitrary-repitition.elixir' ], - regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' }, - { token: 'punctuation.definition.character-class.elixir', - regex: '\\[(?:\\^?\\])?', - push: - [ { token: 'punctuation.definition.character-class.elixir', - regex: '\\]', - next: 'pop' }, - { include: '#escaped_char' }, - { defaultToken: 'string.regexp.character-class.elixir' } ] }, - { token: 'punctuation.definition.group.elixir', - regex: '\\(', - push: - [ { token: 'punctuation.definition.group.elixir', - regex: '\\)', - next: 'pop' }, - { include: '#regex_sub' }, - { defaultToken: 'string.regexp.group.elixir' } ] }, - { token: - [ 'punctuation.definition.comment.elixir', - 'comment.line.number-sign.elixir' ], - regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)', - originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$', - comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' } ] }; - + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '"', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.elixir' }], + comment: 'double quoted string (allows for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z](?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '~[a-z](?>""")', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.quoted.double.heredoc.elixir' }], + comment: 'Double-quoted heredocs sigils' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\{', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\}[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\[', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\][a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\<', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\>[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z]\\(', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\)[a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[a-z][^\\w]', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '[^\\w][a-z]*', + next: 'pop' }, + { include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { include: '#escaped_char' }, + { defaultToken: 'string.interpolated.elixir' }], + comment: 'sigil (allow for interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z](?:""")', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '~[A-Z](?>""")', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '^\\s*"""', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'Double-quoted heredocs sigils' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\{', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\}[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\[', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\][a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\<', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\>[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z]\\(', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '\\)[a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: 'punctuation.definition.string.begin.elixir', + regex: '~[A-Z][^\\w]', + push: [{ token: 'punctuation.definition.string.end.elixir', + regex: '[^\\w][a-z]*', + next: 'pop' }, + { defaultToken: 'string.quoted.other.literal.upper.elixir' }], + comment: 'sigil (without interpolation)' }, + { token: ['punctuation.definition.constant.elixir', 'constant.other.symbol.elixir'], + regex: '(:)([a-zA-Z_][\\w@]*(?:[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(?:\\^\\^)?)', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|~|~=|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)', + comment: 'symbols' }, + { token: 'punctuation.definition.constant.elixir', + regex: '(?:[a-zA-Z_][\\w@]*(?:[?!])?):(?!:)', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)', + comment: 'symbols' }, + { token: ['punctuation.definition.comment.elixir', + 'comment.line.number-sign.elixir'], + regex: '(#)(.*)' }, + { token: 'constant.numeric.elixir', + regex: '\\?(?:\\\\(?:x[\\da-fA-F]{1,2}(?![\\da-fA-F])\\b|[^xMC])|[^\\s\\\\])', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?=?' }, + { token: 'keyword.operator.bitwise.elixir', + regex: '\\|{3}|&{3}|\\^{3}|<{3}|>{3}|~{3}' }, + { token: 'keyword.operator.logical.elixir', + regex: '!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b', + originalRegex: '(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b' }, + { token: 'keyword.operator.arithmetic.elixir', + regex: '\\*|\\+|\\-|/' }, + { token: 'keyword.operator.other.elixir', + regex: '\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|\\|>|~|=>' }, + { token: 'keyword.operator.assignment.elixir', regex: '=' }, + { token: 'punctuation.separator.other.elixir', regex: ':' }, + { token: 'punctuation.separator.statement.elixir', + regex: '\\;' }, + { token: 'punctuation.separator.object.elixir', regex: ',' }, + { token: 'punctuation.separator.method.elixir', regex: '\\.' }, + { token: 'punctuation.section.scope.elixir', regex: '\\{|\\}' }, + { token: 'punctuation.section.array.elixir', regex: '\\[|\\]' }, + { token: 'punctuation.section.function.elixir', + regex: '\\(|\\)' }], + '#escaped_char': [{ token: 'constant.character.escape.elixir', + regex: '\\\\(?:x[\\da-fA-F]{1,2}|.)' }], + '#interpolated_elixir': [{ token: ['source.elixir.embedded.source', + 'source.elixir.embedded.source.empty'], + regex: '(#\\{)(\\})' }, + { todo: { token: 'punctuation.section.embedded.elixir', + regex: '#\\{', + push: [{ token: 'punctuation.section.embedded.elixir', + regex: '\\}', + next: 'pop' }, + { include: '#nest_curly_and_self' }, + { include: '$self' }, + { defaultToken: 'source.elixir.embedded.source' }] } }], + '#nest_curly_and_self': [{ token: 'punctuation.section.scope.elixir', + regex: '\\{', + push: [{ token: 'punctuation.section.scope.elixir', + regex: '\\}', + next: 'pop' }, + { include: '#nest_curly_and_self' }] }, + { include: '$self' }], + '#regex_sub': [{ include: '#interpolated_elixir' }, + { include: '#escaped_char' }, + { token: ['punctuation.definition.arbitrary-repitition.elixir', + 'string.regexp.arbitrary-repitition.elixir', + 'string.regexp.arbitrary-repitition.elixir', + 'punctuation.definition.arbitrary-repitition.elixir'], + regex: '(\\{)(\\d+)((?:,\\d+)?)(\\})' }, + { token: 'punctuation.definition.character-class.elixir', + regex: '\\[(?:\\^?\\])?', + push: [{ token: 'punctuation.definition.character-class.elixir', + regex: '\\]', + next: 'pop' }, + { include: '#escaped_char' }, + { defaultToken: 'string.regexp.character-class.elixir' }] }, + { token: 'punctuation.definition.group.elixir', + regex: '\\(', + push: [{ token: 'punctuation.definition.group.elixir', + regex: '\\)', + next: 'pop' }, + { include: '#regex_sub' }, + { defaultToken: 'string.regexp.group.elixir' }] }, + { token: ['punctuation.definition.comment.elixir', + 'comment.line.number-sign.elixir'], + regex: '(?:^|\\s)(#)(\\s[[a-zA-Z0-9,. \\t?!-][^\\x00-\\x7F]]*$)', + originalRegex: '(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$', + comment: 'We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.' }] }; this.normalizeRules(); }; - ElixirHighlightRules.metaData = { comment: 'Textmate bundle for Elixir Programming Language.', - fileTypes: [ 'ex', 'exs' ], - firstLineMatch: '^#!/.*\\belixir', - foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$', - foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)', - keyEquivalent: '^~E', - name: 'Elixir', - scopeName: 'source.elixir' }; - - + fileTypes: ['ex', 'exs'], + firstLineMatch: '^#!/.*\\belixir', + foldingStartMarker: '(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$', + foldingStopMarker: '^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)', + keyEquivalent: '^~E', + name: 'Elixir', + scopeName: 'source.elixir' }; oop.inherits(ElixirHighlightRules, TextHighlightRules); - exports.ElixirHighlightRules = ElixirHighlightRules; + }); -define("ace/mode/html_elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/elixir_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; - - var HtmlElixirHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - regex: "<%%|%%>", - token: "constant.language.escape" - }, { - token : "comment.start.eex", - regex : "<%#", - push : [{ - token : "comment.end.eex", +define("ace/mode/html_elixir_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/elixir_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; +var HtmlElixirHighlightRules = function () { + HtmlHighlightRules.call(this); + var startRules = [ + { + regex: "<%%|%%>", + token: "constant.language.escape" + }, { + token: "comment.start.eex", + regex: "<%#", + push: [{ + token: "comment.end.eex", regex: "%>", next: "pop", - defaultToken:"comment" + defaultToken: "comment" }] - }, { - token : "support.elixir_tag", - regex : "<%+(?!>)[-=]?", - push : "elixir-start" - } - ]; + }, { + token: "support.elixir_tag", + regex: "<%+(?!>)[-=]?", + push: "elixir-start" + } + ]; + var endRules = [ + { + token: "support.elixir_tag", + regex: "%>", + next: "pop" + }, { + token: "comment", + regex: "#(?:[^%]|%[^>])*" + } + ]; + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + this.embedRules(ElixirHighlightRules, "elixir-", endRules, ["start"]); + this.normalizeRules(); +}; +oop.inherits(HtmlElixirHighlightRules, HtmlHighlightRules); +exports.HtmlElixirHighlightRules = HtmlElixirHighlightRules; - var endRules = [ - { - token : "support.elixir_tag", - regex : "%>", - next : "pop" - }, { - token: "comment", - regex: "#(?:[^%]|%[^>])*" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(ElixirHighlightRules, "elixir-", endRules, ["start"]); - - this.normalizeRules(); - }; - - - oop.inherits(HtmlElixirHighlightRules, HtmlHighlightRules); - - exports.HtmlElixirHighlightRules = HtmlElixirHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -1573,54 +1575,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -1628,39 +1628,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -1672,108 +1668,98 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1786,113 +1772,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1904,20 +1870,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1931,36 +1896,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1969,8 +1942,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1978,75 +1950,57 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -2057,26 +2011,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -2089,8 +2038,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -2101,7 +2049,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -2112,14 +2059,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -2127,63 +2078,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -2359,174 +2266,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2550,7 +2320,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2608,161 +2377,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2774,21 +2533,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2796,57 +2552,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2859,122 +2608,100 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -2983,64 +2710,58 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { +define("ace/mode/elixir",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/elixir_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ElixirHighlightRules = require("./elixir_highlight_rules").ElixirHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ElixirHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "#"; this.$id = "ace/mode/elixir"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/html_elixir",["require","exports","module","ace/lib/oop","ace/mode/html_elixir_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/elixir"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_elixir",["require","exports","module","ace/lib/oop","ace/mode/html_elixir_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/elixir"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlElixirHighlightRules = require("./html_elixir_highlight_rules").HtmlElixirHighlightRules; var HtmlMode = require("./html").Mode; var JavaScriptMode = require("./javascript").Mode; var CssMode = require("./css").Mode; var ElixirMode = require("./elixir").Mode; - -var Mode = function() { - HtmlMode.call(this); +var Mode = function () { + HtmlMode.call(this); this.HighlightRules = HtmlElixirHighlightRules; this.createModeDelegates({ "js-": JavaScriptMode, @@ -3049,11 +2770,16 @@ var Mode = function() { }); }; oop.inherits(Mode, HtmlMode); - -(function() { - +(function () { this.$id = "ace/mode/html_elixir"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/html_elixir"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-html_ruby.js b/vendor/assets/javascripts/ace/mode-html_ruby.js index 23b9c876..96a0eba3 100644 --- a/vendor/assets/javascripts/ace/mode-html_ruby.js +++ b/vendor/assets/javascripts/ace/mode-html_ruby.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,260 +18,317 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -284,142 +336,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -434,9 +486,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -452,13 +504,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -491,13 +543,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -507,44 +593,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -559,40 +663,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -600,7 +724,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -610,14 +735,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" + token: "constant.other.symbol.ruby", // symbol + regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" }; - -var qString = exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" +exports.qString = { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }; - -var qqString = exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' +exports.qqString = { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }; - -var tString = exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" +exports.tString = { + token: "string", // backtick string + regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" }; - var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" +}; +var constantNumericBinary = exports.constantNumericBinary = { + token: "constant.numeric", + regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ +}; +var constantNumericDecimal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ +}; +var constantNumericOctal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ +}; +var constantNumericRational = exports.constantNumericRational = { + token: "constant.numeric", //rational + complex + regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ +}; +var constantNumericComplex = exports.constantNumericComplex = { + token: "constant.numeric", //simple complex numbers + regex: /\b([\d]i)\b/ }; - var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + complex + regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" }; - var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" + token: "variable.instance", // instance variable + regex: "@{1,2}[a-zA-Z_\\d]+" }; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + +var RubyHighlightRules = function () { + var builtinFunctions = ("abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + @@ -1070,25 +1173,15 @@ var RubyHighlightRules = function() { "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + + "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + + "private_class_method|remove_method|undef_method"); + var keywords = ("alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - + "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"); + var buildinConstants = ("true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + + "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"); + var builtinVariables = ("$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + + "$!|root_url|flash|session|cookies|params|request|response|logger|self"); var keywordMapper = this.$keywords = this.createKeywordMapper({ "keyword": keywords, "constant.language": buildinConstants, @@ -1096,380 +1189,615 @@ var RubyHighlightRules = function() { "support.function": builtinFunctions, "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? }, "identifier"); - + var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; + var closeParen = { + "(": ")", + "[": "]", + "{": "}", + "<": ">", + "^": "^", + "|": "|", + "%": "%" + }; this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "comment", // multi line comment - regex : "^=begin(?:$|\\s.*$)", - next : "comment" + token: "comment.multiline", // multi line comment + regex: "^=begin(?=$|\\s.*$)", + next: "comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: /[/](?=.*\/)/, + next: "regex" }, - [{ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren.lparen"; + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(")/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(')/, + push: [{ + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "string.end", + regex: /'/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithoutInterpolation"; + return this.token; } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1) - return "paren.end"; + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithInterpolation"; + return this.token; } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.start", - regex : /"/, - push : [{ - token : "constant.language.escape", - regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ }, { - token : "paren.start", - regex : /#{/, - push : "start" + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithoutInterpolation"; + return this.token; + } }, { - token : "string.end", - regex : /"/, - next : "pop" + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithInterpolation"; + return this.token; + } }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ - }, { - token : "paren.start", - regex : /#{/, - push : "start" - }, { - token : "string.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : /'/, - push : [{ - token : "constant.language.escape", - regex : /\\['\\]/ - }, { - token : "string.end", - regex : /'/, - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "string.regexp", + regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "rState"; + return this.token; + } + }], { - token : "text", // namespaces aren't symbols - regex : "::" - }, { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" - }, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" + token: "punctuation", // namespaces aren't symbols + regex: "::" }, - + instanceVariable, + { + token: "variable.global", // global variable + regex: "[$][a-zA-Z_\\d]+" + }, { + token: "support.class", // class name + regex: "[A-Z][a-zA-Z_\\d]*" + }, { + token: ["punctuation.operator", "support.function"], + regex: /(\.)([a-zA-Z_\d]+)(?=\()/ + }, { + token: ["punctuation.operator", "identifier"], + regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ + }, { + token: "string.character", + regex: "\\B\\?(?:" + escapedChars + "|\\S)" + }, { + token: "punctuation.operator", + regex: /\?(?=.+:)/ + }, + constantNumericRational, + constantNumericComplex, constantOtherSymbol, constantNumericHex, constantNumericFloat, - + constantNumericBinary, + constantNumericDecimal, + constantNumericOctal, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "punctuation.separator.key-value", - regex : "=>" + token: "punctuation.separator.key-value", + regex: "=>" }, { stateName: "heredoc", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + onMatch: function (value, currentState, stack) { + var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; var tokens = value.split(this.splitRegex); stack.push(next, tokens[3]); return [ - {type:"constant", value: tokens[1]}, - {type:"string", value: tokens[2]}, - {type:"support.class", value: tokens[3]}, - {type:"string", value: tokens[4]} + { type: "constant", value: tokens[1] }, + { type: "string", value: tokens[2] }, + { type: "support.class", value: tokens[3] }, + { type: "string", value: tokens[4] } ]; }, - regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", + regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", rules: { heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] + token: "string", + regex: "^ +" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] } }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { + regex: "$", + token: "empty", + next: function (currentState, stack) { if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") return stack[0]; return currentState; } }, { - token : "string.character", - regex : "\\B\\?." + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]", + onMatch: function (value, currentState, stack) { + this.next = ''; + if (value == "}" && stack.length > 1 && stack[1] != "start") { + stack.shift(); + this.next = stack.shift(); + } + return this.token; + } }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "text", + regex: "\\s+" }, { - token : "text", - regex : "\\s+" + token: "punctuation.operator", + regex: /[?:,;.]/ } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "^=end(?:$|\\s.*$)", - next : "start" + token: "comment.multiline", // closing comment + regex: "^=end(?=$|\\s.*$)", + next: "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + token: "comment", // comment spanning whole line + regex: ".+" + } + ], + "qStateWithInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "qStateWithoutInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "sStateWithoutInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "sStateWithInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "rState": [{ + token: "string.regexp", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.language.escape"; + } + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.regexp", + regex: /\// + }, { + token: "string.regexp", + regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { + if (stack.length && val[0] === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.language.escape"; + } + }, + { include: "regex" }, + { + defaultToken: "string.regexp" + }], + "regex": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "constant.language.escape", + regex: /\\[AGbBzZ]/ + }, { + token: "constant.language.escape", + regex: /\\g<[a-zA-Z0-9]*>/ + }, { + token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], + regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ + }, { + token: ["constant.language.escape", "invalid", "constant.language.escape"], + regex: /(\\p{\^?)([^/]*)(})/ + }, { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: /[/][imxouesn]*/, + next: "start" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "regexp.keyword", + regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + push: "regex_character_class" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: /&?&?\[\^?/, + push: "regex_character_class" + }, { + token: "constant.language.escape", + regex: "]", + next: "pop" + }, { + token: "constant.language.escape", + regex: "-" + }, { + defaultToken: "string.regexp.characterclass" } ] }; - this.normalizeRules(); }; - oop.inherits(RubyHighlightRules, TextHighlightRules); - exports.RubyHighlightRules = RubyHighlightRules; + }); -define("ace/mode/html_ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; - - var HtmlRubyHighlightRules = function() { - HtmlHighlightRules.call(this); - - var startRules = [ - { - regex: "<%%|%%>", - token: "constant.language.escape" - }, { - token : "comment.start.erb", - regex : "<%#", - push : [{ - token : "comment.end.erb", +define("ace/mode/html_ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/ruby_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; +var HtmlRubyHighlightRules = function () { + HtmlHighlightRules.call(this); + var startRules = [ + { + regex: "<%%|%%>", + token: "constant.language.escape" + }, { + token: "comment.start.erb", + regex: "<%#", + push: [{ + token: "comment.end.erb", regex: "%>", next: "pop", - defaultToken:"comment" + defaultToken: "comment" }] - }, { - token : "support.ruby_tag", - regex : "<%+(?!>)[-=]?", - push : "ruby-start" - } - ]; + }, { + token: "support.ruby_tag", + regex: "<%+(?!>)[-=]?", + push: "ruby-start" + } + ]; + var endRules = [ + { + token: "support.ruby_tag", + regex: "%>", + next: "pop" + }, { + token: "comment", + regex: "#(?:[^%]|%[^>])*" + } + ]; + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + this.embedRules(RubyHighlightRules, "ruby-", endRules, ["start"]); + this.normalizeRules(); +}; +oop.inherits(HtmlRubyHighlightRules, HtmlHighlightRules); +exports.HtmlRubyHighlightRules = HtmlRubyHighlightRules; - var endRules = [ - { - token : "support.ruby_tag", - regex : "%>", - next : "pop" - }, { - token: "comment", - regex: "#(?:[^%]|%[^>])*" - } - ]; - - for (var key in this.$rules) - this.$rules[key].unshift.apply(this.$rules[key], startRules); - - this.embedRules(RubyHighlightRules, "ruby-", endRules, ["start"]); - - this.normalizeRules(); - }; - - - oop.inherits(HtmlRubyHighlightRules, HtmlHighlightRules); - - exports.HtmlRubyHighlightRules = HtmlRubyHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -1482,54 +1810,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -1537,39 +1863,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -1581,108 +1903,98 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1695,113 +2007,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1813,20 +2105,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1840,36 +2131,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1878,8 +2177,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1887,75 +2185,57 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1966,26 +2246,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1998,8 +2273,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -2010,7 +2284,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -2021,14 +2294,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -2036,63 +2313,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -2268,174 +2501,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2459,7 +2555,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2517,161 +2612,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2683,21 +2768,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2705,57 +2787,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2768,205 +2843,336 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var TokenIterator = require("../../token_iterator").TokenIterator; +var FoldMode = exports.FoldMode = function () { +}; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } +(function () { + this.indentKeywords = { + "class": 1, + "def": 1, + "module": 1, + "do": 1, + "unless": 1, + "if": 1, + "while": 1, + "for": 1, + "until": 1, + "begin": 1, + "else": 0, + "elsif": 0, + "rescue": 0, + "ensure": 0, + "when": 0, + "end": -1, + "case": 1, + "=begin": 1, + "=end": -1 }; - this.getFoldWidget = function(session, foldStyle, row) { + this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; + this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart && !isEnd) { + var match = line.match(this.foldingStartMarker); + if (match[1]) { + if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { + if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { + return; + } + if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { + return; + } + } + if (match[1] == "when") { + if (/\sthen\s/.test(line) === true) { + return; + } + } + if (session.getTokenAt(row, match.index + 2).type === "keyword") + return "start"; + } + else if (match[3]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "start"; + } + else { return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; + } + if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) + return ""; + var match = line.match(this.foldingStopMarker); + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return "end"; + } + else if (match[1]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "end"; + } + else + return "end"; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.doc.getLine(row); + var match = this.foldingStartMarker.exec(line); + if (match) { + if (match[1] || match[3]) + return this.rubyBlock(session, row, match.index + 2); + return this.openingBracketBlock(session, "{", row, match.index); + } + var match = this.foldingStopMarker.exec(line); + if (match) { + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return this.rubyBlock(session, row, match.index + 1); + } + if (match[1] === "=end") { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return this.rubyBlock(session, row, match.index + 1); + } + return this.closingBracketBlock(session, "}", row, match.index + match[0].length); + } + }; + this.rubyBlock = function (session, row, column, tokenRange) { + var stream = new TokenIterator(session, row, column); + var token = stream.getCurrentToken(); + if (!token || (token.type != "keyword" && token.type != "comment.multiline")) + return; + var val = token.value; + var line = session.getLine(row); + switch (token.value) { + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + return; + } + var dir = this.indentKeywords[val]; + break; + case "when": + if (/\sthen\s/.test(line)) { + return; + } + case "elsif": + case "rescue": + case "ensure": + var dir = 1; + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line)) { + return; + } + var dir = 1; + break; + default: + var dir = this.indentKeywords[val]; + break; + } + var stack = [val]; + if (!dir) + return; + var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; + var startRow = row; + var ranges = []; + ranges.push(stream.getCurrentTokenRange()); + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + if (token.type == "comment.multiline") { + while (token = stream.step()) { + if (token.type !== "comment.multiline") + continue; + if (dir == 1) { + startColumn = 6; + if (token.value == "=end") { + break; + } + } + else { + if (token.value == "=begin") { + break; + } + } } } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; + else { + while (token = stream.step()) { + var ignore = false; + if (token.type !== "keyword") + continue; + var level = dir * this.indentKeywords[token.value]; + line = session.getLine(stream.getCurrentTokenRow()); + switch (token.value) { + case "do": + for (var i = stream.$tokenIndex - 1; i >= 0; i--) { + var prevToken = stream.$rowTokens[i]; + if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { + level = 0; + break; + } + } + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + level = 0; + ignore = true; + } + break; + case "when": + if (/\sthen\s/.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + } + if (level > 0) { + stack.unshift(token.value); + } + else if (level <= 0 && ignore === false) { + stack.shift(); + if (!stack.length) { + if ((val == "while" || val == "until" || val == "for") && token.value != "do") { + break; + } + if (token.value == "do" && dir == -1 && level != 0) + break; + if (token.value != "do") + break; + } + if (level === 0) { + stack.unshift(token.value); + } + } + } + } + if (!token) + return null; + if (tokenRange) { + ranges.push(stream.getCurrentTokenRange()); + return ranges; + } + var row = stream.getCurrentTokenRow(); + if (dir === -1) { + if (token.type === "comment.multiline") { + var endColumn = 6; + } + else { + var endColumn = session.getLine(row).length; + } + return new Range(row, endColumn, startRow - 1, startColumn); + } else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; + return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); }; - }).call(FoldMode.prototype); }); -define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var FoldMode = require("./folding/ruby").FoldMode; +var Mode = function () { this.HighlightRules = RubyHighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new FoldMode(); + this.indentKeywords = this.foldingRules.indentKeywords; }; oop.inherits(Mode, TextMode); - -(function() { - - +(function () { this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else|when)\s*/); + var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); if (match || startingClassOrMethod || startingDoBlock || startingConditional) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { - return /^\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input); + this.checkOutdent = function (state, line, input) { + return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, session, row) { + this.autoOutdent = function (state, session, row) { var line = session.getLine(row); if (/}/.test(line)) return this.$outdent.autoOutdent(session, row); @@ -2976,29 +3182,36 @@ oop.inherits(Mode, TextMode); var tab = session.getTabString(); if (prevIndent.length <= indent.length) { if (indent.slice(-tab.length) == tab) - session.remove(new Range(row, indent.length-tab.length, row, indent.length)); + session.remove(new Range(row, indent.length - tab.length, row, indent.length)); } }; - + this.getMatching = function (session, row, column) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; + } + var startToken = session.getTokenAt(row, column); + if (startToken && startToken.value in this.indentKeywords) + return this.foldingRules.rubyBlock(session, row, column, true); + }; this.$id = "ace/mode/ruby"; + this.snippetFileId = "ace/snippets/ruby"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/html_ruby",["require","exports","module","ace/lib/oop","ace/mode/html_ruby_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_ruby",["require","exports","module","ace/lib/oop","ace/mode/html_ruby_highlight_rules","ace/mode/html","ace/mode/javascript","ace/mode/css","ace/mode/ruby"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlRubyHighlightRules = require("./html_ruby_highlight_rules").HtmlRubyHighlightRules; var HtmlMode = require("./html").Mode; var JavaScriptMode = require("./javascript").Mode; var CssMode = require("./css").Mode; var RubyMode = require("./ruby").Mode; - -var Mode = function() { - HtmlMode.call(this); - this.HighlightRules = HtmlRubyHighlightRules; +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = HtmlRubyHighlightRules; this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode, @@ -3006,11 +3219,16 @@ var Mode = function() { }); }; oop.inherits(Mode, HtmlMode); - -(function() { - +(function () { this.$id = "ace/mode/html_ruby"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/html_ruby"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-ini.js b/vendor/assets/javascripts/ace/mode-ini.js index d2b3ff2c..54a48e50 100644 --- a/vendor/assets/javascripts/ace/mode-ini.js +++ b/vendor/assets/javascripts/ace/mode-ini.js @@ -1,114 +1,97 @@ -define("ace/mode/ini_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/ini_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from tool\tm bundles\ini.tmbundle\Syntaxes\Ini.plist (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var escapeRe = "\\\\(?:[\\\\0abtrn;#=:]|x[a-fA-F\\d]{4})"; - -var IniHighlightRules = function() { +var IniHighlightRules = function () { this.$rules = { start: [{ - token: 'punctuation.definition.comment.ini', - regex: '#.*', - push_: [{ - token: 'comment.line.number-sign.ini', - regex: '$|^', - next: 'pop' + token: 'punctuation.definition.comment.ini', + regex: '#.*', + push_: [{ + token: 'comment.line.number-sign.ini', + regex: '$|^', + next: 'pop' + }, { + defaultToken: 'comment.line.number-sign.ini' + }] }, { - defaultToken: 'comment.line.number-sign.ini' - }] - }, { - token: 'punctuation.definition.comment.ini', - regex: ';.*', - push_: [{ - token: 'comment.line.semicolon.ini', - regex: '$|^', - next: 'pop' + token: 'punctuation.definition.comment.ini', + regex: ';.*', + push_: [{ + token: 'comment.line.semicolon.ini', + regex: '$|^', + next: 'pop' + }, { + defaultToken: 'comment.line.semicolon.ini' + }] }, { - defaultToken: 'comment.line.semicolon.ini' - }] - }, { - token: ['keyword.other.definition.ini', 'text', 'punctuation.separator.key-value.ini'], - regex: '\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)' - }, { - token: ['punctuation.definition.entity.ini', 'constant.section.group-title.ini', 'punctuation.definition.entity.ini'], - regex: '^(\\[)(.*?)(\\])' - }, { - token: 'punctuation.definition.string.begin.ini', - regex: "'", - push: [{ - token: 'punctuation.definition.string.end.ini', + token: ['keyword.other.definition.ini', 'text', 'punctuation.separator.key-value.ini'], + regex: '\\b([a-zA-Z0-9_.-]+)\\b(\\s*)(=)' + }, { + token: ['punctuation.definition.entity.ini', 'constant.section.group-title.ini', 'punctuation.definition.entity.ini'], + regex: '^(\\[)(.*?)(\\])' + }, { + token: 'punctuation.definition.string.begin.ini', regex: "'", - next: 'pop' + push: [{ + token: 'punctuation.definition.string.end.ini', + regex: "'", + next: 'pop' + }, { + token: "constant.language.escape", + regex: escapeRe + }, { + defaultToken: 'string.quoted.single.ini' + }] }, { - token: "constant.language.escape", - regex: escapeRe - }, { - defaultToken: 'string.quoted.single.ini' - }] - }, { - token: 'punctuation.definition.string.begin.ini', - regex: '"', - push: [{ - token: "constant.language.escape", - regex: escapeRe - }, { - token: 'punctuation.definition.string.end.ini', + token: 'punctuation.definition.string.begin.ini', regex: '"', - next: 'pop' - }, { - defaultToken: 'string.quoted.double.ini' + push: [{ + token: "constant.language.escape", + regex: escapeRe + }, { + token: 'punctuation.definition.string.end.ini', + regex: '"', + next: 'pop' + }, { + defaultToken: 'string.quoted.double.ini' + }] }] - }] }; - this.normalizeRules(); }; - IniHighlightRules.metaData = { fileTypes: ['ini', 'conf'], keyEquivalent: '^~I', name: 'Ini', scopeName: 'source.ini' }; - - oop.inherits(IniHighlightRules, TextHighlightRules); - exports.IniHighlightRules = IniHighlightRules; + }); -define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() { +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { var re = this.foldingStartMarker; var line = session.getLine(row); - var m = line.match(re); - - if (!m) return; - + if (!m) + return; var startName = m[1] + "."; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); if (/^\s*$/.test(line)) @@ -116,40 +99,40 @@ oop.inherits(FoldMode, BaseFoldMode); m = line.match(re); if (m && m[1].lastIndexOf(startName, 0) !== 0) break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/ini",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ini_highlight_rules","ace/mode/folding/ini"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ini",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ini_highlight_rules","ace/mode/folding/ini"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var IniHighlightRules = require("./ini_highlight_rules").IniHighlightRules; var FoldMode = require("./folding/ini").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = IniHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = ";"; this.blockComment = null; this.$id = "ace/mode/ini"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/ini"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-io.js b/vendor/assets/javascripts/ace/mode-io.js index 78411884..a393a378 100644 --- a/vendor/assets/javascripts/ace/mode-io.js +++ b/vendor/assets/javascripts/ace/mode-io.js @@ -1,169 +1,126 @@ -define("ace/mode/io_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/io_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from tm bundles\io.tmbundle/Syntaxes/io.plist (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var IoHighlightRules = function() { - - this.$rules = { start: - [ { token: [ 'text', 'meta.empty-parenthesis.io' ], - regex: '(\\()(\\))', - comment: 'we match this to overload return inside () --Allan; scoping rules for what gets the scope have changed, so we now group the ) instead of the ( -- Rob' }, - { token: [ 'text', 'meta.comma-parenthesis.io' ], - regex: '(\\,)(\\))', - comment: 'We want to do the same for ,) -- Seckar; same as above -- Rob' }, - { token: 'keyword.control.io', - regex: '\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b' }, - { token: 'punctuation.definition.comment.io', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.io', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.io' } ] }, - { token: 'punctuation.definition.comment.io', - regex: '//', - push: - [ { token: 'comment.line.double-slash.io', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-slash.io' } ] }, - { token: 'punctuation.definition.comment.io', - regex: '#', - push: - [ { token: 'comment.line.number-sign.io', regex: '$', next: 'pop' }, - { defaultToken: 'comment.line.number-sign.io' } ] }, - { token: 'variable.language.io', - regex: '\\b(?:self|sender|target|proto|protos|parent)\\b', - comment: 'I wonder if some of this isn\'t variable.other.language? --Allan; scoping this as variable.language to match Objective-C\'s handling of \'self\', which is inconsistent with C++\'s handling of \'this\' but perhaps intentionally so -- Rob' }, - { token: 'keyword.operator.io', - regex: '<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b' }, - { token: 'constant.other.io', regex: '\\bGL[\\w_]+\\b' }, - { token: 'support.class.io', regex: '\\b[A-Z](?:\\w+)?\\b' }, - { token: 'support.function.io', - regex: '\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b' }, - { token: 'support.function.open-gl.io', - regex: '\\bgl(?:u|ut)?[A-Z]\\w+\\b' }, - { token: 'punctuation.definition.string.begin.io', - regex: '"""', - push: - [ { token: 'punctuation.definition.string.end.io', +var IoHighlightRules = function () { + this.$rules = { start: [{ token: 'keyword.control.io', + regex: '\\b(?:if|ifTrue|ifFalse|ifTrueIfFalse|for|loop|reverseForeach|foreach|map|continue|break|while|do|return)\\b' }, + { token: 'punctuation.definition.comment.io', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.io', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.io' }] }, + { token: 'punctuation.definition.comment.io', + regex: '//', + push: [{ token: 'comment.line.double-slash.io', + regex: '$', + next: 'pop' }, + { defaultToken: 'comment.line.double-slash.io' }] }, + { token: 'punctuation.definition.comment.io', + regex: '#', + push: [{ token: 'comment.line.number-sign.io', regex: '$', next: 'pop' }, + { defaultToken: 'comment.line.number-sign.io' }] }, + { token: 'variable.language.io', + regex: '\\b(?:self|sender|target|proto|protos|parent)\\b', + comment: 'I wonder if some of this isn\'t variable.other.language? --Allan; scoping this as variable.language to match Objective-C\'s handling of \'self\', which is inconsistent with C++\'s handling of \'this\' but perhaps intentionally so -- Rob' }, + { token: 'keyword.operator.io', + regex: '<=|>=|=|:=|\\*|\\||\\|\\||\\+|-|/|&|&&|>|<|\\?|@|@@|\\b(?:and|or)\\b' }, + { token: 'constant.other.io', regex: '\\bGL[\\w_]+\\b' }, + { token: 'support.class.io', regex: '\\b[A-Z](?:\\w+)?\\b' }, + { token: 'support.function.io', + regex: '\\b(?:clone|call|init|method|list|vector|block|\\w+(?=\\s*\\())\\b' }, + { token: 'support.function.open-gl.io', + regex: '\\bgl(?:u|ut)?[A-Z]\\w+\\b' }, + { token: 'punctuation.definition.string.begin.io', regex: '"""', - next: 'pop' }, - { token: 'constant.character.escape.io', regex: '\\\\.' }, - { defaultToken: 'string.quoted.triple.io' } ] }, - { token: 'punctuation.definition.string.begin.io', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.io', + push: [{ token: 'punctuation.definition.string.end.io', + regex: '"""', + next: 'pop' }, + { token: 'constant.character.escape.io', regex: '\\\\.' }, + { defaultToken: 'string.quoted.triple.io' }] }, + { token: 'punctuation.definition.string.begin.io', regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.io', regex: '\\\\.' }, - { defaultToken: 'string.quoted.double.io' } ] }, - { token: 'constant.numeric.io', - regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, - { token: 'variable.other.global.io', regex: 'Lobby\\b' }, - { token: 'constant.language.io', - regex: '\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b' } ] }; - + push: [{ token: 'punctuation.definition.string.end.io', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.io', regex: '\\\\.' }, + { defaultToken: 'string.quoted.double.io' }] }, + { token: 'constant.numeric.io', + regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b' }, + { token: 'variable.other.global.io', regex: 'Lobby\\b' }, + { token: 'constant.language.io', + regex: '\\b(?:TRUE|true|FALSE|false|NULL|null|Null|Nil|nil|YES|NO)\\b' }] }; this.normalizeRules(); }; - -IoHighlightRules.metaData = { fileTypes: [ 'io' ], - keyEquivalent: '^~I', - name: 'Io', - scopeName: 'source.io' }; - - +IoHighlightRules.metaData = { fileTypes: ['io'], + keyEquivalent: '^~I', + name: 'Io', + scopeName: 'source.io' }; oop.inherits(IoHighlightRules, TextHighlightRules); - exports.IoHighlightRules = IoHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -176,71 +133,78 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var IoHighlightRules = require("./io_highlight_rules").IoHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = IoHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/io"; + this.snippetFileId = "ace/snippets/io"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/io"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-ion.js b/vendor/assets/javascripts/ace/mode-ion.js new file mode 100644 index 00000000..3072ae1f --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-ion.js @@ -0,0 +1,477 @@ +define("ace/mode/ion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS GENERATED BY 'ligand' USING 'mode_highlight_rules.js' +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var IonHighlightRules = function () { + var k_keywords_bool = "TRUE|FALSE"; + var k_bool = k_keywords_bool; + var k_keywords_null = "NULL.NULL|NULL.BOOL|NULL.INT|NULL.FLOAT|NULL.DECIMAL|NULL.TIMESTAMP|NULL.STRING|NULL.SYMBOL|NULL.BLOB|NULL.CLOB|" + + "NULL.STRUCT|NULL.LIST|NULL.SEXP|NULL"; + var k_null = k_keywords_null; + var keywordMapper = this.createKeywordMapper({ + "constant.language.bool.ion": k_bool, + "constant.language.null.ion": k_null + }, "constant.other.symbol.identifier.ion", true); + var keywordMapperRule = { + token: keywordMapper, + regex: "\\b\\w+(?:\\.\\w+)?\\b" + }; + this.$rules = { + "start": [ + { + "include": "value" + } + ], + "value": [ + { + "include": "whitespace" + }, + { + "include": "comment" + }, + { + "include": "annotation" + }, + { + "include": "string" + }, + { + "include": "number" + }, + { + "include": "keywords" + }, + { + "include": "symbol" + }, + { + "include": "clob" + }, + { + "include": "blob" + }, + { + "include": "struct" + }, + { + "include": "list" + }, + { + "include": "sexp" + } + ], + "sexp": [ + { + "token": "punctuation.definition.sexp.begin.ion", + "regex": "\\(", + "push": [ + { + "token": "punctuation.definition.sexp.end.ion", + "regex": "\\)", + "next": "pop" + }, + { + "include": "comment" + }, + { + "include": "value" + }, + { + "token": "storage.type.symbol.operator.ion", + "regex": "[\\!\\#\\%\\&\\*\\+\\-\\./\\;\\<\\=\\>\\?\\@\\^\\`\\|\\~]+" + } + ] + } + ], + "comment": [ + { + "token": "comment.line.ion", + "regex": "//[^\\n]*" + }, + { + "token": "comment.block.ion", + "regex": "/\\*", + "push": [ + { + "token": "comment.block.ion", + "regex": "[*]/", + "next": "pop" + }, + { + "token": "comment.block.ion", + "regex": "[^*/]+" + }, + { + "token": "comment.block.ion", + "regex": "[*/]+" + } + ] + } + ], + "list": [ + { + "token": "punctuation.definition.list.begin.ion", + "regex": "\\[", + "push": [ + { + "token": "punctuation.definition.list.end.ion", + "regex": "\\]", + "next": "pop" + }, + { + "include": "comment" + }, + { + "include": "value" + }, + { + "token": "punctuation.definition.list.separator.ion", + "regex": "," + } + ] + } + ], + "struct": [ + { + "token": "punctuation.definition.struct.begin.ion", + "regex": "\\{", + "push": [ + { + "token": "punctuation.definition.struct.end.ion", + "regex": "\\}", + "next": "pop" + }, + { + "include": "comment" + }, + { + "include": "value" + }, + { + "token": "punctuation.definition.struct.separator.ion", + "regex": ",|:" + } + ] + } + ], + "blob": [ + { + "token": [ + "punctuation.definition.blob.begin.ion", + "string.other.blob.ion", + "punctuation.definition.blob.end.ion" + ], + "regex": "(\\{\\{)([^\"]*)(\\}\\})" + } + ], + "clob": [ + { + "token": [ + "punctuation.definition.clob.begin.ion", + "string.other.clob.ion", + "punctuation.definition.clob.end.ion" + ], + "regex": "(\\{\\{)(\"[^\"]*\")(\\}\\})" + } + ], + "symbol": [ + { + "token": "storage.type.symbol.quoted.ion", + "regex": "(['])((?:(?:\\\\')|(?:[^']))*?)(['])" + }, + { + "token": "storage.type.symbol.identifier.ion", + "regex": "[\\$_a-zA-Z][\\$_a-zA-Z0-9]*" + } + ], + "number": [ + { + "token": "constant.numeric.timestamp.ion", + "regex": "\\d{4}(?:-\\d{2})?(?:-\\d{2})?T(?:\\d{2}:\\d{2})(?::\\d{2})?(?:\\.\\d+)?(?:Z|[-+]\\d{2}:\\d{2})?" + }, + { + "token": "constant.numeric.timestamp.ion", + "regex": "\\d{4}-\\d{2}-\\d{2}T?" + }, + { + "token": "constant.numeric.integer.binary.ion", + "regex": "-?0[bB][01](?:_?[01])*" + }, + { + "token": "constant.numeric.integer.hex.ion", + "regex": "-?0[xX][0-9a-fA-F](?:_?[0-9a-fA-F])*" + }, + { + "token": "constant.numeric.float.ion", + "regex": "-?(?:0|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?(?:[eE][+-]?\\d+)" + }, + { + "token": "constant.numeric.float.ion", + "regex": "(?:[-+]inf)|(?:nan)" + }, + { + "token": "constant.numeric.decimal.ion", + "regex": "-?(?:0|[1-9](?:_?\\d)*)(?:(?:(?:\\.(?:\\d(?:_?\\d)*)?)(?:[dD][+-]?\\d+)|\\.(?:\\d(?:_?\\d)*)?)|(?:[dD][+-]?\\d+))" + }, + { + "token": "constant.numeric.integer.ion", + "regex": "-?(?:0|[1-9](?:_?\\d)*)" + } + ], + "string": [ + { + "token": [ + "punctuation.definition.string.begin.ion", + "string.quoted.double.ion", + "punctuation.definition.string.end.ion" + ], + "regex": "([\"])((?:(?:\\\\\")|(?:[^\"]))*?)([\"])" + }, + { + "token": "punctuation.definition.string.begin.ion", + "regex": "'{3}", + "push": [ + { + "token": "punctuation.definition.string.end.ion", + "regex": "'{3}", + "next": "pop" + }, + { + "token": "string.quoted.triple.ion", + "regex": "(?:\\\\'|[^'])+" + }, + { + "token": "string.quoted.triple.ion", + "regex": "'" + } + ] + } + ], + "annotation": [ + { + "token": [ + "variable.language.annotation.ion", + "punctuation.definition.annotation.ion" + ], + "regex": /('(?:[^'\\]|\\.)*')\s*(::)/ + }, + { + "token": [ + "variable.language.annotation.ion", + "punctuation.definition.annotation.ion" + ], + "regex": "([\\$_a-zA-Z][\\$_a-zA-Z0-9]*)\\s*(::)" + } + ], + "whitespace": [ + { + "token": "text.ion", + "regex": "\\s+" + } + ] + }; + this.$rules["keywords"] = [keywordMapperRule]; + this.normalizeRules(); +}; +oop.inherits(IonHighlightRules, TextHighlightRules); +exports.IonHighlightRules = IonHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/ion",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ion_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS GENERATED BY 'ligand' USING 'mode.js' +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./ion_highlight_rules").IonHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = HighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { + start: "/*", + end: "*/" + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/ion"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/ion"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-jack.js b/vendor/assets/javascripts/ace/mode-jack.js index 7c5cfc8b..9151667c 100644 --- a/vendor/assets/javascripts/ace/mode-jack.js +++ b/vendor/assets/javascripts/ace/mode-jack.js @@ -1,236 +1,196 @@ -define("ace/mode/jack_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jack_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JackHighlightRules = function() { +var JackHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "string", - regex : '"', - next : "string2" + token: "string", + regex: '"', + next: "string2" }, { - token : "string", - regex : "'", - next : "string1" + token: "string", + regex: "'", + next: "string1" }, { - token : "constant.numeric", // hex + token: "constant.numeric", // hex regex: "-?0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "(?:0|[-+]?[1-9][0-9]*)\\b" + token: "constant.numeric", // float + regex: "(?:0|[-+]?[1-9][0-9]*)\\b" }, { - token : "constant.binary", - regex : "<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>" + token: "constant.binary", + regex: "<[0-9A-Fa-f][0-9A-Fa-f](\\s+[0-9A-Fa-f][0-9A-Fa-f])*>" }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : "constant.language.null", - regex : "null\\b" + token: "constant.language.null", + regex: "null\\b" }, { - token : "storage.type", + token: "storage.type", regex: "(?:Integer|Boolean|Null|String|Buffer|Tuple|List|Object|Function|Coroutine|Form)\\b" }, { - token : "keyword", - regex : "(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b" + token: "keyword", + regex: "(?:return|abort|vars|for|delete|in|is|escape|exec|split|and|if|elif|else|while)\\b" }, { - token : "language.builtin", - regex : "(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b" + token: "language.builtin", + regex: "(?:lines|source|parse|read-stream|interval|substr|parseint|write|print|range|rand|inspect|bind|i-values|i-pairs|i-map|i-filter|i-chunk|i-all\\?|i-any\\?|i-collect|i-zip|i-merge|i-each)\\b" }, { - token : "comment", - regex : "--.*$" + token: "comment", + regex: "--.*$" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "storage.form", - regex : "@[a-z]+" + token: "storage.form", + regex: "@[a-z]+" }, { - token : "constant.other.symbol", - regex : ':+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' + token: "constant.other.symbol", + regex: ':+[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' }, { - token : "variable", - regex : '[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' + token: "variable", + regex: '[a-zA-Z_]([-]?[a-zA-Z0-9_])*[?!]?' }, { - token : "keyword.operator", - regex : "\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!" + token: "keyword.operator", + regex: "\\|\\||\\^\\^|&&|!=|==|<=|<|>=|>|\\+|-|\\*|\\/|\\^|\\%|\\#|\\!" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "string1" : [ + "string1": [ { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ }, { - token : "string", - regex : "[^'\\\\]+" + token: "string", + regex: "[^'\\\\]+" }, { - token : "string", - regex : "'", - next : "start" + token: "string", + regex: "'", + next: "start" }, { - token : "string", - regex : "", - next : "start" + token: "string", + regex: "", + next: "start" } ], - "string2" : [ + "string2": [ { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|['"\\\/bfnrt])/ }, { - token : "string", - regex : '[^"\\\\]+' + token: "string", + regex: '[^"\\\\]+' }, { - token : "string", - regex : '"', - next : "start" + token: "string", + regex: '"', + next: "start" }, { - token : "string", - regex : "", - next : "start" + token: "string", + regex: "", + next: "start" } ] }; - }; - oop.inherits(JackHighlightRules, TextHighlightRules); - exports.JackHighlightRules = JackHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -243,97 +203,91 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/jack",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jack_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jack",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jack_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HighlightRules = require("./jack_highlight_rules").JackHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "--"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.$id = "ace/mode/jack"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/jack"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-jade.js b/vendor/assets/javascripts/ace/mode-jade.js index 3485582b..6abb05a4 100644 --- a/vendor/assets/javascripts/ace/mode-jade.js +++ b/vendor/assets/javascripts/ace/mode-jade.js @@ -1,90 +1,334 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); +var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +336,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +486,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +504,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +543,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +593,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +663,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +724,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +735,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; -}); - -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var modes = require("../config").$modes; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; - -var escaped = function(ch) { +var escaped = function (ch) { return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; }; - -function github_embed(tag, prefix) { - return { // Github style block - token : "support.function", - regex : "^\\s*```" + tag + "\\s*$", - push : prefix + "start" - }; -} - -var MarkdownHighlightRules = function() { +var MarkdownHighlightRules = function () { HtmlHighlightRules.call(this); - + var codeBlockStartRule = { + token: "support.function", + regex: /^\s*(```+[^`]*|~~~+[^~]*)$/, + onMatch: function (value, state, stack, line) { + var m = value.match(/^(\s*)([`~]+)(.*)/); + var language = /[\w-]+|$/.exec(m[3])[0]; + if (!modes[language]) + language = ""; + stack.unshift("githubblock", [], [m[1], m[2], language], state); + return this.token; + }, + next: "githubblock" + }; + var codeBlockRules = [{ + token: "support.function", + regex: ".*", + onMatch: function (value, state, stack, line) { + var embedState = stack[1]; + var indent = stack[2][0]; + var endMarker = stack[2][1]; + var language = stack[2][2]; + var m = /^(\s*)(`+|~+)\s*$/.exec(value); + if (m && m[1].length < indent.length + 3 + && m[2].length >= endMarker.length && m[2][0] == endMarker[0]) { + stack.splice(0, 3); + this.next = stack.shift(); + return this.token; + } + this.next = ""; + if (language && modes[language]) { + var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); + stack[1] = data.state; + return data.tokens; + } + return this.token; + } + }]; this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', + token: "empty_line", + regex: '^$', next: "allowBlock" - }, { // h1 + }, { token: "markup.heading.1", regex: "^=+(?=\\s*$)" - }, { // h2 + }, { token: "markup.heading.2", regex: "^\\-+(?=\\s*$)" }, { - token : function(value) { + token: function (value) { return "markup.heading." + value.length; }, - regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/, - next : "header" - }, - github_embed("(?:javascript|js)", "jscode-"), - github_embed("xml", "xmlcode-"), - github_embed("html", "htmlcode-"), - github_embed("css", "csscode-"), - { // Github style block - token : "support.function", - regex : "^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$", - next : "githubblock" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" + regex: /^#{1,6}(?=\s|$)/, + next: "header" + }, codeBlockStartRule, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" }, { - include : "basic" + token: "constant", + regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", + next: "allowBlock" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic" }); - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\[)(" + // [ - escaped("]") + // link text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ + "basic": [{ + token: "constant.language.escape", + regex: /\\[\\`*_{}\[\]()#+\-.!]/ + }, { + token: "support.function", + regex: "(`+)(.*?[^`])(\\1)" + }, { + token: ["text", "constant", "text", "url", "string", "text"], + regex: "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" + }, { + token: ["text", "string", "text", "constant", "text"], + regex: "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)(" + escaped("]") + ")(\\])" + }, { + token: ["text", "string", "text", "markup.underline", "string", "text"], + regex: "(\\!?\\[)(" + // [ + escaped("]") + // link text or alt text + ")(\\]\\()" + // ]( + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image + '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" + "(\\))" // ) + }, { + token: "string.strong", + regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: "string.emphasis", + regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: ["text", "url", "text"], + regex: "(<)(" + + "(?:https?|ftp|dict):[^'\">\\s]+" + + "|" + + "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+" + ")(>)" - }], + }], "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty_line", regex : '^$', next: "allowBlock"}, - {token : "empty", regex : "", next : "start"} + { token: "support.function", regex: "^ {4}.+", next: "allowBlock" }, + { token: "empty_line", regex: '^$', next: "allowBlock" }, + { token: "empty", regex: "", next: "start" } ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, { // Github style block - token : "support.function", - regex : "^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$", - next : "githubblock" - }, { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // Blockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : [ { - token : "support.function", - regex : "^\\s*```", - next : "start" - }, { - defaultToken : "support.function" - } ] + "header": [{ + regex: "$", + next: "start" + }, { + include: "basic" + }, { + defaultToken: "heading" + }], + "listblock-start": [{ + token: "support.variable", + regex: /(?:\[[ x]\])?/, + next: "listblock" + }], + "listblock": [{ + token: "empty_line", + regex: "^$", + next: "start" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic", noEscape: true + }, + codeBlockStartRule, + { + defaultToken: "list" //do not use markup.list to allow stling leading `*` differntly + }], + "blockquote": [{ + token: "empty_line", + regex: "^\\s*$", + next: "start" + }, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" + }, { + include: "basic", noEscape: true + }, { + defaultToken: "string.blockquote" + }], + "githubblock": codeBlockRules }); - - this.embedRules(JavaScriptHighlightRules, "jscode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(HtmlHighlightRules, "htmlcode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(CssHighlightRules, "csscode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(XmlHighlightRules, "xmlcode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - this.normalizeRules(); }; oop.inherits(MarkdownHighlightRules, TextHighlightRules); - exports.MarkdownHighlightRules = MarkdownHighlightRules; + }); -define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap( (function () { - - var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); - - var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + - "background-size|binding|border-bottom-colors|border-left-colors|" + - "border-right-colors|border-top-colors|border-end|border-end-color|" + - "border-end-style|border-end-width|border-image|border-start|" + - "border-start-color|border-start-style|border-start-width|box-align|" + - "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + - "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + - "column-rule-width|column-rule-style|column-rule-color|float-edge|" + - "font-feature-settings|font-language-override|force-broken-image-icon|" + - "image-region|margin-end|margin-start|opacity|outline|outline-color|" + - "outline-offset|outline-radius|outline-radius-bottomleft|" + - "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + - "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + - "tab-size|text-blink|text-decoration-color|text-decoration-line|" + - "text-decoration-style|transform|transform-origin|transition|" + - "transition-delay|transition-duration|transition-property|" + - "transition-timing-function|user-focus|user-input|user-modify|user-select|" + - "window-shadow|border-radius").split("|"); - - var properties = ("azimuth|background-attachment|background-color|background-image|" + - "background-position|background-repeat|background|border-bottom-color|" + - "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + - "border-color|border-left-color|border-left-style|border-left-width|" + - "border-left|border-right-color|border-right-style|border-right-width|" + - "border-right|border-spacing|border-style|border-top-color|" + - "border-top-style|border-top-width|border-top|border-width|border|bottom|" + - "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + - "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + - "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + - "font-stretch|font-style|font-variant|font-weight|font|height|left|" + - "letter-spacing|line-height|list-style-image|list-style-position|" + - "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + - "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + - "min-width|opacity|orphans|outline-color|" + - "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + - "padding-left|padding-right|padding-top|padding|page-break-after|" + - "page-break-before|page-break-inside|page|pause-after|pause-before|" + - "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + - "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + - "stress|table-layout|text-align|text-decoration|text-indent|" + - "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + - "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + - "z-index").split("|"); - var ret = []; - for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" + token: "keyword.operator", + regex: "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { caseInsensitive: true } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - "qqstring" : [ + "qqstring": [ { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ], - "qstring" : [ + "qstring": [ { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ] }; }; - oop.inherits(ScssHighlightRules, TextHighlightRules); - exports.ScssHighlightRules = ScssHighlightRules; }); -define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var CssHighlightRules = require('./css_highlight_rules'); - -var LessHighlightRules = function() { - - - var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + +var LessHighlightRules = function () { + var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" + "or|and|when|not"; - var keywords = keywordList.split('|'); - var properties = CssHighlightRules.supportType.split('|'); - var keywordMapper = this.createKeywordMapper({ "support.constant": CssHighlightRules.supportConstant, "keyword": keywordList, "support.constant.color": CssHighlightRules.supportConstantColor, "support.constant.fonts": CssHighlightRules.supportConstantFonts - }, "identifier", true); - + }, "identifier", true); var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment", + regex: "\\/\\/.*$" }, { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" }, { - token : "constant.numeric", - regex : numRe + token: "constant.numeric", + regex: numRe }, { - token : ["support.function", "paren.lparen", "string", "paren.rparen"], - regex : "(url)(\\()(.*)(\\))" + token: ["support.function", "paren.lparen", "string", "paren.rparen"], + regex: "(url)(\\()(.*)(\\))" }, { - token : ["support.function", "paren.lparen"], - regex : "(:extend|[a-z0-9_\\-]+)(\\()" + token: ["support.function", "paren.lparen"], + regex: "(:extend|[a-z0-9_\\-]+)(\\()" }, { - token : function(value) { + token: function (value) { if (keywords.indexOf(value.toLowerCase()) > -1) return "keyword"; else return "variable"; }, - regex : "[@\\$][a-z0-9_\\-@\\$]*\\b" + regex: "[@\\$][a-z0-9_\\-@\\$]*\\b" }, { - token : "variable", - regex : "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" + token: "variable", + regex: "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" }, { - token : function(first, second) { - if(properties.indexOf(first.toLowerCase()) > -1) { + token: function (first, second) { + if (properties.indexOf(first.toLowerCase()) > -1) { return ["support.type.property", "text"]; } else { return ["support.type.unknownProperty", "text"]; } }, - regex : "([a-z0-9-_]+)(\\s*:)" + regex: "([a-z0-9-_]+)(\\s*:)" }, { - token : "keyword", - regex : "&" // special case - always treat as keyword + token: "keyword", + regex: "&" // special case - always treat as keyword }, { - token : keywordMapper, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" + token: keywordMapper, + regex: "\\-?[@a-z_][@a-z0-9_\\-]*" }, { token: "variable.language", regex: "#[a-z0-9-_]+" @@ -1569,244 +1501,215 @@ var LessHighlightRules = function() { token: "constant", regex: "[a-z0-9-_]+" }, { - token : "keyword.operator", - regex : "<|>|<=|>=|=|!=|-|%|\\+|\\*" + token: "keyword.operator", + regex: "<|>|<=|>=|=|!=|-|%|\\+|\\*" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { caseInsensitive: true } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ] }; this.normalizeRules(); }; - oop.inherits(LessHighlightRules, TextHighlightRules); - exports.LessHighlightRules = LessHighlightRules; }); -define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - oop.inherits(CoffeeHighlightRules, TextHighlightRules); - - function CoffeeHighlightRules() { - var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; - - var keywords = ( - "this|throw|then|try|typeof|super|switch|return|break|by|continue|" + - "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + - "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + - "or|on|unless|until|and|yes" - ); - - var langConstant = ( - "true|false|null|undefined|NaN|Infinity" - ); - - var illegal = ( - "case|const|default|function|var|void|with|enum|export|implements|" + - "interface|let|package|private|protected|public|static|yield" - ); - - var supportClass = ( - "Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + - "SyntaxError|TypeError|URIError|" + - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray" - ); - - var supportFunction = ( - "Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + - "encodeURIComponent|decodeURI|decodeURIComponent|String|" - ); - - var variableLanguage = ( - "window|arguments|prototype|document" - ); - - var keywordMapper = this.createKeywordMapper({ - "keyword": keywords, - "constant.language": langConstant, - "invalid.illegal": illegal, - "language.support.class": supportClass, - "language.support.function": supportFunction, - "variable.language": variableLanguage - }, "identifier"); - - var functionRule = { - token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], - regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source - }; - - var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; - - this.$rules = { - start : [ - { - token : "constant.numeric", - regex : "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" - }, { - stateName: "qdoc", - token : "string", regex : "'''", next : [ - {token : "string", regex : "'''", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqdoc", - token : "string", - regex : '"""', - next : [ - {token : "string", regex : '"""', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qstring", - token : "string", regex : "'", next : [ - {token : "string", regex : "'", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "qqstring", - token : "string.start", regex : '"', next : [ - {token : "string.end", regex : '"', next : "start"}, - {token : "paren.string", regex : '#{', push : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - stateName: "js", - token : "string", regex : "`", next : [ - {token : "string", regex : "`", next : "start"}, - {token : "constant.language.escape", regex : stringEscape}, - {defaultToken: "string"} - ] - }, { - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift() || ""; - if (this.next.indexOf("string") != -1) - return "paren.string"; - } +define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +oop.inherits(CoffeeHighlightRules, TextHighlightRules); +function CoffeeHighlightRules() { + var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; + var keywords = ("this|throw|then|try|typeof|super|switch|return|break|by|continue|" + + "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + + "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + + "or|on|unless|until|and|yes|yield|export|import|default"); + var langConstant = ("true|false|null|undefined|NaN|Infinity"); + var illegal = ("case|const|function|var|void|with|enum|implements|" + + "interface|let|package|private|protected|public|static"); + var supportClass = ("Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + + "SyntaxError|TypeError|URIError|" + + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray"); + var supportFunction = ("Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + + "encodeURIComponent|decodeURI|decodeURIComponent|String|"); + var variableLanguage = ("window|arguments|prototype|document"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": langConstant, + "invalid.illegal": illegal, + "language.support.class": supportClass, + "language.support.function": supportFunction, + "variable.language": variableLanguage + }, "identifier"); + var functionRule = { + token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], + regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source + }; + var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; + this.$rules = { + start: [ + { + token: "constant.numeric", + regex: "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" + }, { + stateName: "qdoc", + token: "string", regex: "'''", next: [ + { token: "string", regex: "'''", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qqdoc", + token: "string", + regex: '"""', + next: [ + { token: "string", regex: '"""', next: "start" }, + { token: "paren.string", regex: '#{', push: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qstring", + token: "string", regex: "'", next: [ + { token: "string", regex: "'", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qqstring", + token: "string.start", regex: '"', next: [ + { token: "string.end", regex: '"', next: "start" }, + { token: "paren.string", regex: '#{', push: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "js", + token: "string", regex: "`", next: [ + { token: "string", regex: "`", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); return "paren"; } - }, { - token : "string.regex", - regex : "///", - next : "heregex" - }, { - token : "string.regex", - regex : /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ - }, { - token : "comment", - regex : "###(?!#)", - next : "comment" - }, { - token : "comment", - regex : "#.*" - }, { - token : ["punctuation.operator", "text", "identifier"], - regex : "(\\.)(\\s*)(" + illegal + ")" - }, { - token : "punctuation.operator", - regex : "\\.{1,3}" - }, { - token : ["keyword", "text", "language.support.class", - "text", "keyword", "text", "language.support.class"], - regex : "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" - }, { - token : ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), - regex : "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex - }, - functionRule, - { - token : "variable", - regex : "@(?:" + identifier + ")?" - }, { - token: keywordMapper, - regex : identifier - }, { - token : "punctuation.operator", - regex : "\\,|\\." - }, { - token : "storage.type", - regex : "[\\-=]>" - }, { - token : "keyword.operator", - regex : "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" - }, { - token : "paren.lparen", - regex : "[({[]" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }], - - - heregex : [{ - token : "string.regex", - regex : '.*?///[imgy]{0,4}', - next : "start" + if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift() || ""; + if (this.next.indexOf("string") != -1) + return "paren.string"; + } + return "paren"; + } }, { - token : "comment.regex", - regex : "\\s+(?:#.*)?" + token: "string.regex", + regex: "///", + next: "heregex" }, { - token : "string.regex", - regex : "\\S+" + token: "string.regex", + regex: /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ + }, { + token: "comment", + regex: "###(?!#)", + next: "comment" + }, { + token: "comment", + regex: "#.*" + }, { + token: ["punctuation.operator", "text", "identifier"], + regex: "(\\.)(\\s*)(" + illegal + ")" + }, { + token: "punctuation.operator", + regex: "\\.{1,3}" + }, { + token: ["keyword", "text", "language.support.class", + "text", "keyword", "text", "language.support.class"], + regex: "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" + }, { + token: ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), + regex: "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex + }, + functionRule, + { + token: "variable", + regex: "@(?:" + identifier + ")?" + }, { + token: keywordMapper, + regex: identifier + }, { + token: "punctuation.operator", + regex: "\\,|\\." + }, { + token: "storage.type", + regex: "[\\-=]>" + }, { + token: "keyword.operator", + regex: "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" + }, { + token: "paren.lparen", + regex: "[({[]" + }, { + token: "paren.rparen", + regex: "[\\]})]" + }, { + token: "text", + regex: "\\s+" + } + ], + heregex: [{ + token: "string.regex", + regex: '.*?///[imgy]{0,4}', + next: "start" + }, { + token: "comment.regex", + regex: "\\s+(?:#.*)?" + }, { + token: "string.regex", + regex: "\\S+" }], - - comment : [{ - token : "comment", - regex : '###', - next : "start" + comment: [{ + token: "comment", + regex: '###', + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" }] - }; - this.normalizeRules(); - } + }; + this.normalizeRules(); +} +exports.CoffeeHighlightRules = CoffeeHighlightRules; - exports.CoffeeHighlightRules = CoffeeHighlightRules; }); -define("ace/mode/jade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/scss_highlight_rules","ace/mode/less_highlight_rules","ace/mode/coffee_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module) { +define("ace/mode/jade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/scss_highlight_rules","ace/mode/less_highlight_rules","ace/mode/coffee_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: C5B73B98-5F2A-42E3-9F0E-028A74A9FE4B) +*/ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; @@ -1814,17 +1717,14 @@ var SassHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; var CoffeeHighlightRules = require("./coffee_highlight_rules").CoffeeHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - function mixin_embed(tag, prefix) { - return { - token : "entity.name.function.jade", - regex : "^\\s*\\:" + tag, - next : prefix + "start" + return { + token: "entity.name.function.jade", + regex: "^\\s*\\:" + tag, + next: prefix + "start" }; } - -var JadeHighlightRules = function() { - +var JadeHighlightRules = function () { var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "[0-2][0-7]{0,2}|" + // oct @@ -1832,248 +1732,238 @@ var JadeHighlightRules = function() { "37[0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - - this.$rules = + this.$rules = { - "start": [ - { - token: "keyword.control.import.include.jade", - regex: "\\s*\\binclude\\b" - }, - { - token: "keyword.other.doctype.jade", - regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" - }, - { - onMatch: function(value, currentState, stack) { - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; - }, - regex: /^\s*\/\//, - next: "comment_block" - }, - mixin_embed("markdown", "markdown-"), - mixin_embed("sass", "sass-"), - mixin_embed("less", "less-"), - mixin_embed("coffee", "coffee-"), - { - token: [ "storage.type.function.jade", - "entity.name.function.jade", - "punctuation.definition.parameters.begin.jade", - "variable.parameter.function.jade", - "punctuation.definition.parameters.end.jade" + "start": [ + { + token: "keyword.control.import.include.jade", + regex: "\\s*\\binclude\\b" + }, + { + token: "keyword.other.doctype.jade", + regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" + }, + { + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length - 2, currentState); + return "comment"; + }, + regex: /^\s*\/\//, + next: "comment_block" + }, + mixin_embed("markdown", "markdown-"), + mixin_embed("sass", "sass-"), + mixin_embed("less", "less-"), + mixin_embed("coffee", "coffee-"), + { + token: ["storage.type.function.jade", + "entity.name.function.jade", + "punctuation.definition.parameters.begin.jade", + "variable.parameter.function.jade", + "punctuation.definition.parameters.end.jade" ], - regex: "^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))" - }, - { - token: [ "storage.type.function.jade", "entity.name.function.jade"], - regex: "^(\\s*mixin)( [\\w\\-]+)" - }, - { - token: "source.js.embedded.jade", - regex: "^\\s*(?:-|=|!=)", - next: "js-start" - }, - { - token: "string.interpolated.jade", - regex: "[#!]\\{[^\\}]+\\}" - }, - { - token: "meta.tag.any.jade", - regex: /^\s*(?!\w+:)(?:[\w-]+|(?=\.|#)])/, - next: "tag_single" - }, - { - token: "suport.type.attribute.id.jade", - regex: "#\\w+" - }, - { - token: "suport.type.attribute.class.jade", - regex: "\\.\\w+" - }, - { - token: "punctuation", - regex: "\\s*(?:\\()", - next: "tag_attributes" - } - ], - "comment_block": [ - {regex: /^\s*(?:\/\/)?/, onMatch: function(value, currentState, stack) { - if (value.length <= stack[1]) { - if (value.slice(-1) == "/") { - stack[1] = value.length - 2; - this.next = ""; - return "comment"; + regex: "^(\\s*mixin)( [\\w\\-]+)(\\s*\\()(.*?)(\\))" + }, + { + token: ["storage.type.function.jade", "entity.name.function.jade"], + regex: "^(\\s*mixin)( [\\w\\-]+)" + }, + { + token: "source.js.embedded.jade", + regex: "^\\s*(?:-|=|!=)", + next: "js-start" + }, + { + token: "string.interpolated.jade", + regex: "[#!]\\{[^\\}]+\\}" + }, + { + token: "meta.tag.any.jade", + regex: /^\s*(?!\w+:)(?:[\w-]+|(?=\.|#)])/, + next: "tag_single" + }, + { + token: "suport.type.attribute.id.jade", + regex: "#\\w+" + }, + { + token: "suport.type.attribute.class.jade", + regex: "\\.\\w+" + }, + { + token: "punctuation", + regex: "\\s*(?:\\()", + next: "tag_attributes" } - stack.shift(); - stack.shift(); - this.next = stack.shift(); - return "text"; - } else { - this.next = ""; - return "comment"; - } - }, next: "start"}, - {defaultToken: "comment"} - ], - "tag_single": [ - { - token: "entity.other.attribute-name.class.jade", - regex: "\\.[\\w-]+" - }, - { - token: "entity.other.attribute-name.id.jade", - regex: "#[\\w-]+" - }, - { - token: ["text", "punctuation"], - regex: "($)|((?!\\.|#|=|-))", - next: "start" - } - ], - "tag_attributes": [ - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token: ["entity.other.attribute-name.jade", "punctuation"], - regex: "([a-zA-Z:\\.-]+)(=)?", - next: "attribute_strings" - }, - { - token: "punctuation", - regex: "\\)", - next: "start" - } - ], - "attribute_strings": [ - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token : "string", - regex : '(?=\\S)', - next : "tag_attributes" - } - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "tag_attributes" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "[^'\\\\]+" - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "tag_attributes" - } - ] -}; - + ], + "comment_block": [ + { regex: /^\s*(?:\/\/)?/, onMatch: function (value, currentState, stack) { + if (value.length <= stack[1]) { + if (value.slice(-1) == "/") { + stack[1] = value.length - 2; + this.next = ""; + return "comment"; + } + stack.shift(); + stack.shift(); + this.next = stack.shift(); + return "text"; + } + else { + this.next = ""; + return "comment"; + } + }, next: "start" }, + { defaultToken: "comment" } + ], + "tag_single": [ + { + token: "entity.other.attribute-name.class.jade", + regex: "\\.[\\w-]+" + }, + { + token: "entity.other.attribute-name.id.jade", + regex: "#[\\w-]+" + }, + { + token: ["text", "punctuation"], + regex: "($)|((?!\\.|#|=|-))", + next: "start" + } + ], + "tag_attributes": [ + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, + { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, + { + token: ["entity.other.attribute-name.jade", "punctuation"], + regex: "([a-zA-Z:\\.-]+)(=)?", + next: "attribute_strings" + }, + { + token: "punctuation", + regex: "\\)", + next: "start" + } + ], + "attribute_strings": [ + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, + { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, + { + token: "string", + regex: '(?=\\S)', + next: "tag_attributes" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: '[^"\\\\]+' + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "tag_attributes" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "[^'\\\\]+" + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "tag_attributes" + } + ] + }; this.embedRules(JavaScriptHighlightRules, "js-", [{ - token: "text", - regex: ".$", - next: "start" - }]); + token: "text", + regex: ".$", + next: "start" + }]); }; - oop.inherits(JadeHighlightRules, TextHighlightRules); - exports.JadeHighlightRules = JadeHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -2082,48 +1972,49 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/jade",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jade_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jade",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jade_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JadeHighlightRules = require("./jade_highlight_rules").JadeHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JadeHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "//"; +(function () { + this.lineCommentStart = "//"; this.$id = "ace/mode/jade"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/jade"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-java.js b/vendor/assets/javascripts/ace/mode-java.js index 2197bcec..d6355d48 100644 --- a/vendor/assets/javascripts/ace/mode-java.js +++ b/vendor/assets/javascripts/ace/mode-java.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,181 +851,400 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaHighlightRules = function() { - var keywords = ( - "abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "const|float|native|super|while" - ); - - var buildinConstants = ("null|Infinity|NaN|undefined"); - - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); }; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; -oop.inherits(JavaHighlightRules, TextHighlightRules); - -exports.JavaHighlightRules = JavaHighlightRules; }); -define("ace/mode/java",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/java_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JavaHighlightRules = function () { + var identifierRe = "[a-zA-Z_$][a-zA-Z0-9_$]*"; + var keywords = ("abstract|continue|for|new|switch|" + + "assert|default|goto|package|synchronized|" + + "boolean|do|if|private|this|" + + "break|double|implements|protected|throw|" + + "byte|else|import|public|throws|" + + "case|enum|instanceof|return|transient|" + + "catch|extends|int|short|try|" + + "char|final|interface|static|void|" + + "class|finally|long|strictfp|volatile|" + + "const|float|native|super|while|" + + "var|exports|opens|requires|uses|yield|" + + "module|permits|(?:non\\-)?sealed|var|" + + "provides|to|when|" + + "open|record|transitive|with"); + var buildinConstants = ("null|Infinity|NaN|undefined"); + var langClasses = ("AbstractMethodError|AssertionError|ClassCircularityError|" + + "ClassFormatError|Deprecated|EnumConstantNotPresentException|" + + "ExceptionInInitializerError|IllegalAccessError|" + + "IllegalThreadStateException|InstantiationError|InternalError|" + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|" + + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|" + + "SuppressWarnings|TypeNotPresentException|UnknownError|" + + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|" + + "InstantiationException|IndexOutOfBoundsException|" + + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|" + + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|" + + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|" + + "InterruptedException|NoSuchMethodException|IllegalAccessException|" + + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|" + + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|" + + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|" + + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|" + + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|" + + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|" + + "StackOverflowError|OutOfMemoryError|VirtualMachineError|" + + "ArrayStoreException|ClassCastException|LinkageError|" + + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|" + + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|" + + "Cloneable|Class|CharSequence|Comparable|String|Object"); + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "constant.language": buildinConstants, + "support.function": langClasses + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, + { include: "multiline-strings" }, + { include: "strings" }, + { include: "constants" }, + { + regex: "(open(?:\\s+))?module(?=\\s*\\w)", + token: "keyword", + next: [{ + regex: "{", + token: "paren.lparen", + next: [{ + regex: "}", + token: "paren.rparen", + next: "start" + }, { + regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b", + token: "keyword" + }] + }, { + token: "text", + regex: "\\s+" + }, { + token: "identifier", + regex: "\\w+" + }, { + token: "punctuation.operator", + regex: "." + }, { + token: "text", + regex: "\\s+" + }, { + regex: "", // exit if there is anything else + next: "start" + }] + }, + { include: "statements" } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "strings": [ + { + token: ["punctuation", "string"], + regex: /(\.)(")/, + push: [ + { + token: "lparen", + regex: /\\\{/, + push: [ + { + token: "text", + regex: /$/, + next: "start" + }, { + token: "rparen", + regex: /}/, + next: "pop" + }, { + include: "strings" + }, { + include: "constants" + }, { + include: "statements" + } + ] + }, { + token: "string", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + } + ] + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + } + ], + "multiline-strings": [ + { + token: ["punctuation", "string"], + regex: /(\.)(""")/, + push: [ + { + token: "string", + regex: '"""', + next: "pop" + }, { + token: "lparen", + regex: /\\\{/, + push: [ + { + token: "text", + regex: /$/, + next: "start" + }, { + token: "rparen", + regex: /}/, + next: "pop" + }, { + include: "multiline-strings" + }, { + include: "strings" + }, { + include: "constants" + }, { + include: "statements" + } + ] + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + defaultToken: "string" + } + ] + }, + { + token: "string", + regex: '"""', + push: [ + { + token: "string", + regex: '"""', + next: "pop" + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + defaultToken: "string" + } + ] + } + ], + "constants": [ + { + token: "constant.numeric", // hex + regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token: "constant.numeric", // float + regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + } + ], + "statements": [ + { + token: ["keyword", "text", "identifier"], + regex: "(record)(\\s+)(" + identifierRe + ")\\b" + }, + { + token: "keyword", + regex: "(?:" + keywords + ")\\b" + }, { + token: "storage.type.annotation", + regex: "@" + identifierRe + "\\b" + }, { + token: "entity.name.function", + regex: identifierRe + "(?=\\()" + }, { + token: keywordMapper, // TODO: Unicode escape sequences + regex: identifierRe + "\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(JavaHighlightRules, TextHighlightRules); +exports.JavaHighlightRules = JavaHighlightRules; +}); + +define("ace/mode/folding/java",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var CStyleFoldMode = require("./cstyle").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, CStyleFoldMode); +(function () { + this.importRegex = /^import /; + this.getCStyleFoldWidget = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + if (foldStyle === "markbegin") { + var line = session.getLine(row); + if (this.importRegex.test(line)) { + if (row == 0 || !this.importRegex.test(session.getLine(row - 1))) + return "start"; + } + } + return this.getCStyleFoldWidget(session, foldStyle, row); + }; + this.getCstyleFoldWidgetRange = this.getFoldWidgetRange; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + var match = line.match(this.importRegex); + if (!match || foldStyle !== "markbegin") + return this.getCstyleFoldWidgetRange(session, foldStyle, row, forceMultiline); + var startColumn = match[0].length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + var line = session.getLine(row); + if (line.match(/^\s*$/)) + continue; + if (!line.match(this.importRegex)) + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/java",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/java_highlight_rules","ace/mode/folding/java"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JavaScriptMode = require("./javascript").Mode; var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; - -var Mode = function() { +var JavaFoldMode = require("./folding/java").FoldMode; +var Mode = function () { JavaScriptMode.call(this); this.HighlightRules = JavaHighlightRules; + this.foldingRules = new JavaFoldMode(); }; oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { +(function () { + this.createWorker = function (session) { return null; }; - this.$id = "ace/mode/java"; + this.snippetFileId = "ace/snippets/java"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/java"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-javascript.js b/vendor/assets/javascripts/ace/mode-javascript.js index 282b0a38..0a7de681 100644 --- a/vendor/assets/javascripts/ace/mode-javascript.js +++ b/vendor/assets/javascripts/ace/mode-javascript.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,35 +851,35 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/javascript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-jexl.js b/vendor/assets/javascripts/ace/mode-jexl.js new file mode 100644 index 00000000..2eab86ae --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-jexl.js @@ -0,0 +1,270 @@ +define("ace/mode/jexl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JexlHighlightRules = function () { + var keywords = "return|var|function|and|or|not|if|for|while|do|continue|break"; + var buildinConstants = "null"; + var supportFunc = "empty|size|new"; + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": supportFunc + }, "identifier"); + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "|.)"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, { + token: "comment", + regex: "##.*$" + }, { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, { + token: ["comment", "text"], + regex: "(#pragma)(\\s.*$)" + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "string", // multi line string + regex: "`", + push: [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "`", + next: "pop" + }, { + token: "lparen", //interpolation + regex: "\\${", + push: [ + { + token: "rparen", + regex: "}", + next: "pop" + }, { + include: "start" + } + ] + }, { + defaultToken: "string" + } + ] + }, { + token: "constant.numeric", // hex + regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token: "constant.numeric", // float + regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "string.regexp", + regex: "~/", + push: [ + { + token: "constant.language.escape", + regex: "\\\\/" + }, { + token: "string.regexp", + regex: "$|/", + next: "pop" + }, { + defaultToken: "string.regexp" + } + ] + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "&&|\\|\\||!|&|\\||\\^|~|\\?|:|\\?\\?|==|!=|<|<=|>|>=|=~|!~|=\\^|=\\$|!\\$|\\+|\\-|\\*|%|\\/|=" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation", + regex: "[,.]" + }, { + token: "storage.type.annotation", + regex: "@[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(JexlHighlightRules, TextHighlightRules); +exports.JexlHighlightRules = JexlHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/jexl",["require","exports","module","ace/lib/oop","ace/mode/jexl_highlight_rules","ace/mode/text","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var JexlHighlightRules = require("./jexl_highlight_rules").JexlHighlightRules; +var TextMode = require("./text").Mode; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JexlHighlightRules; + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ["//", "##"]; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/jexl"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/jexl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-json.js b/vendor/assets/javascripts/ace/mode-json.js index 5bcfcbb1..cc78c8d0 100644 --- a/vendor/assets/javascripts/ace/mode-json.js +++ b/vendor/assets/javascripts/ace/mode-json.js @@ -1,202 +1,165 @@ -define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsonHighlightRules = function() { +var JsonHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "variable", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + token: "variable", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' }, { - token : "string", // single line - regex : '"', - next : "string" + token: "string", // single line + regex: '"', + next: "string" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : "text", // single quoted strings are not allowed - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "text", // single quoted strings are not allowed + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "comment", // comments are not allowed, but who cares? - regex : "\\/\\/.*$" + token: "comment", // comments are not allowed, but who cares? + regex: "\\/\\/.*$" }, { - token : "comment.start", // comments are not allowed, but who cares? - regex : "\\/\\*", - next : "comment" + token: "comment.start", // comments are not allowed, but who cares? + regex: "\\/\\*", + next: "comment" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" } ], - "string" : [ + "string": [ { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ }, { - token : "string", - regex : '"|$', - next : "start" + token: "string", + regex: '"|$', + next: "start" }, { - defaultToken : "string" + defaultToken: "string" } ], - "comment" : [ + "comment": [ { - token : "comment.end", // comments are not allowed, but who cares? - regex : "\\*\\/", - next : "start" + token: "comment.end", // comments are not allowed, but who cares? + regex: "\\*\\/", + next: "start" }, { defaultToken: "comment" } ] }; - }; - oop.inherits(JsonHighlightRules, TextHighlightRules); - exports.JsonHighlightRules = JsonHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -209,111 +172,104 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - - this.$id = "ace/mode/json"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/json"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-json5.js b/vendor/assets/javascripts/ace/mode-json5.js new file mode 100644 index 00000000..ac95e1c0 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-json5.js @@ -0,0 +1,308 @@ +define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "variable", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + }, { + token: "string", // single line + regex: '"', + next: "string" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "text", // single quoted strings are not allowed + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "comment", // comments are not allowed, but who cares? + regex: "\\/\\/.*$" + }, { + token: "comment.start", // comments are not allowed, but who cares? + regex: "\\/\\*", + next: "comment" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" + } + ], + "string": [ + { + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + } + ], + "comment": [ + { + token: "comment.end", // comments are not allowed, but who cares? + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(JsonHighlightRules, TextHighlightRules); +exports.JsonHighlightRules = JsonHighlightRules; + +}); + +define("ace/mode/json5_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/json_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var Json5HighlightRules = function () { + JsonHighlightRules.call(this); + var startRules = [{ + token: "variable", + regex: /[a-zA-Z$_\u00a1-\uffff][\w$\u00a1-\uffff]*\s*(?=:)/ + }, { + token: "variable", + regex: /['](?:(?:\\.)|(?:[^'\\]))*?[']\s*(?=:)/ + }, { + token: "constant.language.boolean", + regex: /(?:null)\b/ + }, { + token: "string", + regex: /'/, + next: [{ + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/, + consumeLineEnd: true + }, { + token: "string", + regex: /'|$/, + next: "start" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: /"(?![^"]*":)/, + next: [{ + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\/bfnrt]|$)/, + consumeLineEnd: true + }, { + token: "string", + regex: /"|$/, + next: "start" + }, { + defaultToken: "string" + }] + }, { + token: "constant.numeric", + regex: /[+-]?(?:Infinity|NaN)\b/ + }]; + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + this.normalizeRules(); +}; +oop.inherits(Json5HighlightRules, JsonHighlightRules); +exports.Json5HighlightRules = Json5HighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/json5",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json5_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./json5_highlight_rules").Json5HighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = HighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/json5"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/json5"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-jsoniq.js b/vendor/assets/javascripts/ace/mode-jsoniq.js index 6058f50f..2284ca42 100644 --- a/vendor/assets/javascripts/ace/mode-jsoniq.js +++ b/vendor/assets/javascripts/ace/mode-jsoniq.js @@ -2085,20 +2085,15 @@ exports.Lexer = function(Tokenizer, Rules) { }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -2109,26 +2104,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -2141,8 +2131,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -2153,7 +2142,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -2164,14 +2152,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -2179,63 +2171,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === "') { var position = editor.getCursorPosition(); var iterator = new TokenIterator(session, position.row, position.column); var token = iterator.getCurrentToken(); var atCursor = false; var state = JSON.parse(state).pop(); - if ((token && token.value === '>') || state !== "StartTag") return; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ + if ((token && token.value === '>') || state !== "StartTag") + return; + if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))) { do { token = iterator.stepBackward(); } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { + } + else { atCursor = true; } var previous = iterator.stepBackward(); @@ -2299,106 +2276,80 @@ function hasType(token, type) { return; } var tag = token.value.substring(1); - if (atCursor){ + if (atCursor) { var tag = tag.substring(0, position.column - token.start); } - return { - text: '>' + '', - selection: [1, 1] + text: '>' + '', + selection: [1, 1] }; } }); +}; +oop.inherits(XQueryBehaviour, Behaviour); +exports.XQueryBehaviour = XQueryBehaviour; - }; - oop.inherits(XQueryBehaviour, Behaviour); - - exports.XQueryBehaviour = XQueryBehaviour; }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -2411,47 +2362,47 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); @@ -2613,7 +2564,15 @@ oop.inherits(Mode, TextMode); }; this.$id = "ace/mode/jsoniq"; + this.snippetFileId = "ace/snippets/jsoniq"; }).call(Mode.prototype); exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/jsoniq"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-jsp.js b/vendor/assets/javascripts/ace/mode-jsp.js index 57e40879..cacc64e3 100644 --- a/vendor/assets/javascripts/ace/mode-jsp.js +++ b/vendor/assets/javascripts/ace/mode-jsp.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,260 +18,317 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -284,142 +336,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -434,9 +486,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -452,13 +504,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -491,13 +543,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -507,44 +593,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -559,40 +663,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -600,7 +724,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -610,14 +735,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JavaHighlightRules = function() { - var keywords = ( - "abstract|continue|for|new|switch|" + - "assert|default|goto|package|synchronized|" + - "boolean|do|if|private|this|" + - "break|double|implements|protected|throw|" + - "byte|else|import|public|throws|" + - "case|enum|instanceof|return|transient|" + - "catch|extends|int|short|try|" + - "char|final|interface|static|void|" + - "class|finally|long|strictfp|volatile|" + - "const|float|native|super|while" - ); - - var buildinConstants = ("null|Infinity|NaN|undefined"); - - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ - "Cloneable|Class|CharSequence|Comparable|String|Object" - ); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": keywords, - "constant.language": buildinConstants, - "support.function": langClasses - }, "identifier"); - +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); }; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; -oop.inherits(JavaHighlightRules, TextHighlightRules); - -exports.JavaHighlightRules = JavaHighlightRules; }); -define("ace/mode/jsp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/java_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/java_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JavaHighlightRules = function () { + var identifierRe = "[a-zA-Z_$][a-zA-Z0-9_$]*"; + var keywords = ("abstract|continue|for|new|switch|" + + "assert|default|goto|package|synchronized|" + + "boolean|do|if|private|this|" + + "break|double|implements|protected|throw|" + + "byte|else|import|public|throws|" + + "case|enum|instanceof|return|transient|" + + "catch|extends|int|short|try|" + + "char|final|interface|static|void|" + + "class|finally|long|strictfp|volatile|" + + "const|float|native|super|while|" + + "var|exports|opens|requires|uses|yield|" + + "module|permits|(?:non\\-)?sealed|var|" + + "provides|to|when|" + + "open|record|transitive|with"); + var buildinConstants = ("null|Infinity|NaN|undefined"); + var langClasses = ("AbstractMethodError|AssertionError|ClassCircularityError|" + + "ClassFormatError|Deprecated|EnumConstantNotPresentException|" + + "ExceptionInInitializerError|IllegalAccessError|" + + "IllegalThreadStateException|InstantiationError|InternalError|" + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|" + + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|" + + "SuppressWarnings|TypeNotPresentException|UnknownError|" + + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|" + + "InstantiationException|IndexOutOfBoundsException|" + + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|" + + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|" + + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|" + + "InterruptedException|NoSuchMethodException|IllegalAccessException|" + + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|" + + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|" + + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|" + + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|" + + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|" + + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|" + + "StackOverflowError|OutOfMemoryError|VirtualMachineError|" + + "ArrayStoreException|ClassCastException|LinkageError|" + + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|" + + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|" + + "Cloneable|Class|CharSequence|Comparable|String|Object"); + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "constant.language": buildinConstants, + "support.function": langClasses + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, + { include: "multiline-strings" }, + { include: "strings" }, + { include: "constants" }, + { + regex: "(open(?:\\s+))?module(?=\\s*\\w)", + token: "keyword", + next: [{ + regex: "{", + token: "paren.lparen", + next: [{ + regex: "}", + token: "paren.rparen", + next: "start" + }, { + regex: "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b", + token: "keyword" + }] + }, { + token: "text", + regex: "\\s+" + }, { + token: "identifier", + regex: "\\w+" + }, { + token: "punctuation.operator", + regex: "." + }, { + token: "text", + regex: "\\s+" + }, { + regex: "", // exit if there is anything else + next: "start" + }] + }, + { include: "statements" } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "strings": [ + { + token: ["punctuation", "string"], + regex: /(\.)(")/, + push: [ + { + token: "lparen", + regex: /\\\{/, + push: [ + { + token: "text", + regex: /$/, + next: "start" + }, { + token: "rparen", + regex: /}/, + next: "pop" + }, { + include: "strings" + }, { + include: "constants" + }, { + include: "statements" + } + ] + }, { + token: "string", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + } + ] + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + } + ], + "multiline-strings": [ + { + token: ["punctuation", "string"], + regex: /(\.)(""")/, + push: [ + { + token: "string", + regex: '"""', + next: "pop" + }, { + token: "lparen", + regex: /\\\{/, + push: [ + { + token: "text", + regex: /$/, + next: "start" + }, { + token: "rparen", + regex: /}/, + next: "pop" + }, { + include: "multiline-strings" + }, { + include: "strings" + }, { + include: "constants" + }, { + include: "statements" + } + ] + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + defaultToken: "string" + } + ] + }, + { + token: "string", + regex: '"""', + push: [ + { + token: "string", + regex: '"""', + next: "pop" + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + defaultToken: "string" + } + ] + } + ], + "constants": [ + { + token: "constant.numeric", // hex + regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token: "constant.numeric", // float + regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + } + ], + "statements": [ + { + token: ["keyword", "text", "identifier"], + regex: "(record)(\\s+)(" + identifierRe + ")\\b" + }, + { + token: "keyword", + regex: "(?:" + keywords + ")\\b" + }, { + token: "storage.type.annotation", + regex: "@" + identifierRe + "\\b" + }, { + token: "entity.name.function", + regex: identifierRe + "(?=\\()" + }, { + token: keywordMapper, // TODO: Unicode escape sequences + regex: identifierRe + "\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(JavaHighlightRules, TextHighlightRules); +exports.JavaHighlightRules = JavaHighlightRules; +}); + +define("ace/mode/jsp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/java_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var JavaHighlightRules = require("./java_highlight_rules").JavaHighlightRules; - -var JspHighlightRules = function() { +var JspHighlightRules = function () { HtmlHighlightRules.call(this); - var builtinVariables = 'request|response|out|session|' + - 'application|config|pageContext|page|Exception'; - + 'application|config|pageContext|page|Exception'; var keywords = 'page|include|taglib'; - var startRules = [ { - token : "comment", - regex : "<%--", - push : "jsp-dcomment" + token: "comment", + regex: "<%--", + push: "jsp-dcomment" }, { - token : "meta.tag", // jsp open tag - regex : "<%@?|<%=?|<%!?|]+>", - push : "jsp-start" + token: "meta.tag", // jsp open tag + regex: "<%@?|<%=?|<%!?|]+>", + push: "jsp-start" } ]; - var endRules = [ { - token : "meta.tag", // jsp close tag - regex : "%>|<\\/jsp:[^>]+>", - next : "pop" + token: "meta.tag", // jsp close tag + regex: "%>|<\\/jsp:[^>]+>", + next: "pop" }, { token: "variable.language", - regex : builtinVariables + regex: builtinVariables }, { token: "keyword", - regex : keywords + regex: keywords } ]; - for (var key in this.$rules) this.$rules[key].unshift.apply(this.$rules[key], startRules); - this.embedRules(JavaHighlightRules, "jsp-", endRules, ["start"]); - this.addRules({ - "jsp-dcomment" : [{ - token : "comment", - regex : ".*?--%>", - next : "pop" - }] + "jsp-dcomment": [{ + token: "comment", + regex: ".*?--%>", + next: "pop" + }] }); - this.normalizeRules(); }; - oop.inherits(JspHighlightRules, HtmlHighlightRules); - exports.JspHighlightRules = JspHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -1316,73 +1539,75 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/jsp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JspHighlightRules = require("./jsp_highlight_rules").JspHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JspHighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.$id = "ace/mode/jsp"; + this.snippetFileId = "ace/snippets/jsp"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/jsp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-jssm.js b/vendor/assets/javascripts/ace/mode-jssm.js index 7ebab0c5..3ce5ce1f 100644 --- a/vendor/assets/javascripts/ace/mode-jssm.js +++ b/vendor/assets/javascripts/ace/mode-jssm.js @@ -1,242 +1,211 @@ -define("ace/mode/jssm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/jssm_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from ./jssm.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JSSMHighlightRules = function() { - +var JSSMHighlightRules = function () { this.$rules = { start: [{ - token: "punctuation.definition.comment.mn", - regex: /\/\*/, - push: [{ token: "punctuation.definition.comment.mn", - regex: /\*\//, - next: "pop" + regex: /\/\*/, + push: [{ + token: "punctuation.definition.comment.mn", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.jssm" + }], + comment: "block comment" }, { - defaultToken: "comment.block.jssm" - }], - comment: "block comment" - }, { - token: "comment.line.jssm", - regex: /\/\//, - push: [{ token: "comment.line.jssm", - regex: /$/, - next: "pop" + regex: /\/\//, + push: [{ + token: "comment.line.jssm", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.line.jssm" + }], + comment: "block comment" }, { - defaultToken: "comment.line.jssm" - }], - comment: "block comment" - }, { - token: "entity.name.function", - regex: /\${/, - push: [{ token: "entity.name.function", - regex: /}/, - next: "pop" + regex: /\${/, + push: [{ + token: "entity.name.function", + regex: /}/, + next: "pop" + }, { + defaultToken: "keyword.other" + }], + comment: "js outcalls" }, { - defaultToken: "keyword.other" - }], - comment: "js outcalls" - }, { - token: "constant.numeric", - regex: /[0-9]*\.[0-9]*\.[0-9]*/, - comment: "semver" - }, { - token: "constant.language.jssmLanguage", - regex: /graph_layout\s*:/, - comment: "jssm language tokens" - }, { - token: "constant.language.jssmLanguage", - regex: /machine_name\s*:/, - comment: "jssm language tokens" - }, { - token: "constant.language.jssmLanguage", - regex: /machine_version\s*:/, - comment: "jssm language tokens" - }, { - token: "constant.language.jssmLanguage", - regex: /jssm_version\s*:/, - comment: "jssm language tokens" - }, { - token: "keyword.control.transition.jssmArrow.legal_legal", - regex: /<->/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.legal_none", - regex: /<-/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.none_legal", - regex: /->/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.main_main", - regex: /<=>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.none_main", - regex: /=>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.main_none", - regex: /<=/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.forced_forced", - regex: /<~>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.none_forced", - regex: /~>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.forced_none", - regex: /<~/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.legal_main", - regex: /<-=>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.main_legal", - regex: /<=->/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.legal_forced", - regex: /<-~>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.forced_legal", - regex: /<~->/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.main_forced", - regex: /<=~>/, - comment: "transitions" - }, { - token: "keyword.control.transition.jssmArrow.forced_main", - regex: /<~=>/, - comment: "transitions" - }, { - token: "constant.numeric.jssmProbability", - regex: /[0-9]+%/, - comment: "edge probability annotation" - }, { - token: "constant.character.jssmAction", - regex: /\'[^']*\'/, - comment: "action annotation" - }, { - token: "entity.name.tag.jssmLabel.doublequoted", - regex: /\"[^"]*\"/, - comment: "jssm label annotation" - }, { - token: "entity.name.tag.jssmLabel.atom", - regex: /[a-zA-Z0-9_.+&()#@!?,]/, - comment: "jssm label annotation" - }] + token: "constant.numeric", + regex: /[0-9]*\.[0-9]*\.[0-9]*/, + comment: "semver" + }, { + token: "constant.language.jssmLanguage", + regex: /graph_layout\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /machine_name\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /machine_version\s*:/, + comment: "jssm language tokens" + }, { + token: "constant.language.jssmLanguage", + regex: /jssm_version\s*:/, + comment: "jssm language tokens" + }, { + token: "keyword.control.transition.jssmArrow.legal_legal", + regex: /<->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_none", + regex: /<-/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_legal", + regex: /->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_main", + regex: /<=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_main", + regex: /=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_none", + regex: /<=/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_forced", + regex: /<~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.none_forced", + regex: /~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_none", + regex: /<~/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_main", + regex: /<-=>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_legal", + regex: /<=->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.legal_forced", + regex: /<-~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_legal", + regex: /<~->/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.main_forced", + regex: /<=~>/, + comment: "transitions" + }, { + token: "keyword.control.transition.jssmArrow.forced_main", + regex: /<~=>/, + comment: "transitions" + }, { + token: "constant.numeric.jssmProbability", + regex: /[0-9]+%/, + comment: "edge probability annotation" + }, { + token: "constant.character.jssmAction", + regex: /\'[^']*\'/, + comment: "action annotation" + }, { + token: "entity.name.tag.jssmLabel.doublequoted", + regex: /\"[^"]*\"/, + comment: "jssm label annotation" + }, { + token: "entity.name.tag.jssmLabel.atom", + regex: /[a-zA-Z0-9_.+&()#@!?,]/, + comment: "jssm label annotation" + }] }; - this.normalizeRules(); }; - JSSMHighlightRules.metaData = { fileTypes: ["jssm", "jssm_state"], name: "JSSM", scopeName: "source.jssm" }; - - oop.inherits(JSSMHighlightRules, TextHighlightRules); - exports.JSSMHighlightRules = JSSMHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -249,70 +218,76 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/jssm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jssm_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/jssm",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jssm_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JSSMHighlightRules = require("./jssm_highlight_rules").JSSMHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JSSMHighlightRules; this.foldingRules = new FoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/jssm"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/jssm"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-jsx.js b/vendor/assets/javascripts/ace/mode-jsx.js index 6e01f305..3a409d8b 100644 --- a/vendor/assets/javascripts/ace/mode-jsx.js +++ b/vendor/assets/javascripts/ace/mode-jsx.js @@ -1,294 +1,751 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/jsx_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsxHighlightRules = function() { - var keywords = lang.arrayToMap( - ("break|do|instanceof|typeof|case|else|new|var|catch|finally|return|void|continue|for|switch|default|while|function|this|" + - "if|throw|" + - "delete|in|try|" + - "class|extends|super|import|from|into|implements|interface|static|mixin|override|abstract|final|" + - "number|int|string|boolean|variant|" + - "log|assert").split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("null|true|false|NaN|Infinity|__FILE__|__LINE__|undefined").split("|") - ); - - var reserved = lang.arrayToMap( - ("debugger|with|" + - "const|export|" + - "let|private|public|yield|protected|" + - "extern|native|as|operator|__fake__|__readonly__").split("|") - ); - - var identifierRe = "[a-zA-Z_][a-zA-Z0-9_]*\\b"; - +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; this.$rules = { - "start" : [ - { - token : "comment", - regex : "\\/\\/.*$" - }, + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : [ - "storage.type", - "text", - "entity.name.function" + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(function)(\\s+)(" + identifierRe + ")" + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" }, { - token : function(value) { - if (value == "this") - return "variable.language"; - else if (value == "function") - return "storage.type"; - else if (keywords.hasOwnProperty(value) || reserved.hasOwnProperty(value)) - return "keyword"; - else if (buildinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (/^_?[A-Z][a-zA-Z0-9_]*$/.test(value)) - return "language.support.class"; - else - return "identifier"; - }, - regex : identifierRe + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" }, { - token : "keyword.operator", - regex : "!|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" }, { - token : "paren.lparen", - regex : "[[({<]" + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" }, { - token : "paren.rparen", - regex : "[\\])}>]" + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" }, { - token : "text", - regex : "\\s+" + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ } ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + property: [{ + token: "text", + regex: "\\s+" }, { - defaultToken : "comment" + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); }; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", // multi line comment + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -oop.inherits(JsxHighlightRules, TextHighlightRules); - -exports.JsxHighlightRules = JsxHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -301,104 +758,146 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/jsx_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; -var JsxHighlightRules = require("./jsx_highlight_rules").JsxHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -function Mode() { - this.HighlightRules = JsxHighlightRules; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); -} +}; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } } - + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; +}); + +define("ace/mode/jsx",["require","exports","module","ace/lib/oop","ace/mode/javascript"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var jsMode = require("./javascript").Mode; +function Mode() { + jsMode.call(this); + this.$highlightRuleConfig = { jsx: true }; +} +oop.inherits(Mode, jsMode); +(function () { + this.createWorker = function () { + return null; + }; this.$id = "ace/mode/jsx"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/jsx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-julia.js b/vendor/assets/javascripts/ace/mode-julia.js index 769ead28..a964509f 100644 --- a/vendor/assets/javascripts/ace/mode-julia.js +++ b/vendor/assets/javascripts/ace/mode-julia.js @@ -1,219 +1,171 @@ -define("ace/mode/julia_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/julia_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.github.com/JuliaLang/julia/master/contrib/Julia.tmbundle/Syntaxes/Julia.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JuliaHighlightRules = function() { - - this.$rules = { start: - [ { include: '#function_decl' }, - { include: '#function_call' }, - { include: '#type_decl' }, - { include: '#keyword' }, - { include: '#operator' }, - { include: '#number' }, - { include: '#string' }, - { include: '#comment' } ], - '#bracket': - [ { token: 'keyword.bracket.julia', - regex: '\\(|\\)|\\[|\\]|\\{|\\}|,' } ], - '#comment': - [ { token: - [ 'punctuation.definition.comment.julia', - 'comment.line.number-sign.julia' ], - regex: '(#)(?!\\{)(.*$)'} ], - '#function_call': - [ { token: [ 'support.function.julia', 'text' ], - regex: '([a-zA-Z0-9_]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*\\()'} ], - '#function_decl': - [ { token: [ 'keyword.other.julia', 'meta.function.julia', - 'entity.name.function.julia', 'meta.function.julia','text' ], - regex: '(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*)([(\\\\{])'} ], - '#keyword': - [ { token: 'keyword.other.julia', - regex: '\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b' }, - { token: 'keyword.control.julia', - regex: '\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b' }, - { token: 'storage.modifier.variable.julia', - regex: '\\b(?:global|local|const|export|import|importall|using)\\b' }, - { token: 'variable.macro.julia', regex: '@[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b' } ], - '#number': - [ { token: 'constant.numeric.julia', - regex: '\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b' } ], - '#operator': - [ { token: 'keyword.operator.update.julia', - regex: '=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>=' }, - { token: 'keyword.operator.ternary.julia', regex: '\\?|:' }, - { token: 'keyword.operator.boolean.julia', - regex: '\\|\\||&&|!' }, - { token: 'keyword.operator.arrow.julia', regex: '->|<-|-->' }, - { token: 'keyword.operator.relation.julia', - regex: '>|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>' }, - { token: 'keyword.operator.range.julia', regex: ':' }, - { token: 'keyword.operator.shift.julia', regex: '<<|>>' }, - { token: 'keyword.operator.bitwise.julia', regex: '\\||\\&|~' }, - { token: 'keyword.operator.arithmetic.julia', - regex: '\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^' }, - { token: 'keyword.operator.isa.julia', regex: '::' }, - { token: 'keyword.operator.dots.julia', - regex: '\\.(?=[a-zA-Z])|\\.\\.+' }, - { token: 'keyword.operator.interpolation.julia', - regex: '\\$#?(?=.)' }, - { token: [ 'variable', 'keyword.operator.transposed-variable.julia' ], - regex: '([\\w\\xff-\\u218e\\u2455-\\uffff]+)((?:\'|\\.\')*\\.?\')' }, - { token: 'text', - regex: '\\[|\\('}, - { token: [ 'text', 'keyword.operator.transposed-matrix.julia' ], - regex: "([\\]\\)])((?:'|\\.')*\\.?')"} ], - '#string': - [ { token: 'punctuation.definition.string.begin.julia', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.julia', +var JuliaHighlightRules = function () { + this.$rules = { start: [{ include: '#function_decl' }, + { include: '#function_call' }, + { include: '#type_decl' }, + { include: '#keyword' }, + { include: '#operator' }, + { include: '#number' }, + { include: '#string' }, + { include: '#comment' }], + '#bracket': [{ token: 'keyword.bracket.julia', + regex: '\\(|\\)|\\[|\\]|\\{|\\}|,' }], + '#comment': [{ token: ['punctuation.definition.comment.julia', + 'comment.line.number-sign.julia'], + regex: '(#)(?!\\{)(.*$)' }], + '#function_call': [{ token: ['support.function.julia', 'text'], + regex: '([a-zA-Z0-9_]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*\\()' }], + '#function_decl': [{ token: ['keyword.other.julia', 'meta.function.julia', + 'entity.name.function.julia', 'meta.function.julia', 'text'], + regex: '(function|macro)(\\s*)([a-zA-Z0-9_\\{]+!?)([\\w\\xff-\\u218e\\u2455-\\uffff]*)([(\\\\{])' }], + '#keyword': [{ token: 'keyword.other.julia', + regex: '\\b(?:function|type|immutable|macro|quote|abstract|bitstype|typealias|module|baremodule|new)\\b' }, + { token: 'keyword.control.julia', + regex: '\\b(?:if|else|elseif|while|for|in|begin|let|end|do|try|catch|finally|return|break|continue)\\b' }, + { token: 'storage.modifier.variable.julia', + regex: '\\b(?:global|local|const|export|import|importall|using)\\b' }, + { token: 'variable.macro.julia', regex: '@[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b' }], + '#number': [{ token: 'constant.numeric.julia', + regex: '\\b0(?:x|X)[0-9a-fA-F]*|(?:\\b[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]*)?(?:im)?|\\bInf(?:32)?\\b|\\bNaN(?:32)?\\b|\\btrue\\b|\\bfalse\\b' }], + '#operator': [{ token: 'keyword.operator.update.julia', + regex: '=|:=|\\+=|-=|\\*=|/=|//=|\\.//=|\\.\\*=|\\\\=|\\.\\\\=|^=|\\.^=|%=|\\|=|&=|\\$=|<<=|>>=' }, + { token: 'keyword.operator.ternary.julia', regex: '\\?|:' }, + { token: 'keyword.operator.boolean.julia', + regex: '\\|\\||&&|!' }, + { token: 'keyword.operator.arrow.julia', regex: '->|<-|-->' }, + { token: 'keyword.operator.relation.julia', + regex: '>|<|>=|<=|==|!=|\\.>|\\.<|\\.>=|\\.>=|\\.==|\\.!=|\\.=|\\.!|<:|:>' }, + { token: 'keyword.operator.range.julia', regex: ':' }, + { token: 'keyword.operator.shift.julia', regex: '<<|>>' }, + { token: 'keyword.operator.bitwise.julia', regex: '\\||\\&|~' }, + { token: 'keyword.operator.arithmetic.julia', + regex: '\\+|-|\\*|\\.\\*|/|\\./|//|\\.//|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^' }, + { token: 'keyword.operator.isa.julia', regex: '::' }, + { token: 'keyword.operator.dots.julia', + regex: '\\.(?=[a-zA-Z])|\\.\\.+' }, + { token: 'keyword.operator.interpolation.julia', + regex: '\\$#?(?=.)' }, + { token: ['variable', 'keyword.operator.transposed-variable.julia'], + regex: '([\\w\\xff-\\u218e\\u2455-\\uffff]+)((?:\'|\\.\')*\\.?\')' }, + { token: 'text', + regex: '\\[|\\(' }, + { token: ['text', 'keyword.operator.transposed-matrix.julia'], + regex: "([\\]\\)])((?:'|\\.')*\\.?')" }], + '#string': [{ token: 'punctuation.definition.string.begin.julia', regex: '\'', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.single.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.julia', + push: [{ token: 'punctuation.definition.string.end.julia', + regex: '\'', + next: 'pop' }, + { include: '#string_escaped_char' }, + { defaultToken: 'string.quoted.single.julia' }] }, + { token: 'punctuation.definition.string.begin.julia', regex: '"', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.double.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '\\b[\\w\\xff-\\u218e\\u2455-\\uffff]+"', - push: - [ { token: 'punctuation.definition.string.end.julia', - regex: '"[\\w\\xff-\\u218e\\u2455-\\uffff]*', - next: 'pop' }, - { include: '#string_custom_escaped_char' }, - { defaultToken: 'string.quoted.custom-double.julia' } ] }, - { token: 'punctuation.definition.string.begin.julia', - regex: '`', - push: - [ { token: 'punctuation.definition.string.end.julia', + push: [{ token: 'punctuation.definition.string.end.julia', + regex: '"', + next: 'pop' }, + { include: '#string_escaped_char' }, + { defaultToken: 'string.quoted.double.julia' }] }, + { token: 'punctuation.definition.string.begin.julia', + regex: '\\b[\\w\\xff-\\u218e\\u2455-\\uffff]+"', + push: [{ token: 'punctuation.definition.string.end.julia', + regex: '"[\\w\\xff-\\u218e\\u2455-\\uffff]*', + next: 'pop' }, + { include: '#string_custom_escaped_char' }, + { defaultToken: 'string.quoted.custom-double.julia' }] }, + { token: 'punctuation.definition.string.begin.julia', regex: '`', - next: 'pop' }, - { include: '#string_escaped_char' }, - { defaultToken: 'string.quoted.backtick.julia' } ] } ], - '#string_custom_escaped_char': [ { token: 'constant.character.escape.julia', regex: '\\\\"' } ], - '#string_escaped_char': - [ { token: 'constant.character.escape.julia', - regex: '\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)' } ], - '#type_decl': - [ { token: - [ 'keyword.control.type.julia', - 'meta.type.julia', - 'entity.name.type.julia', - 'entity.other.inherited-class.julia', - 'punctuation.separator.inheritance.julia', - 'entity.other.inherited-class.julia' ], - regex: '(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?' }, - { token: [ 'other.typed-variable.julia', 'support.type.julia' ], - regex: '([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)' } ] }; - + push: [{ token: 'punctuation.definition.string.end.julia', + regex: '`', + next: 'pop' }, + { include: '#string_escaped_char' }, + { defaultToken: 'string.quoted.backtick.julia' }] }], + '#string_custom_escaped_char': [{ token: 'constant.character.escape.julia', regex: '\\\\"' }], + '#string_escaped_char': [{ token: 'constant.character.escape.julia', + regex: '\\\\(?:\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)' }], + '#type_decl': [{ token: ['keyword.control.type.julia', + 'meta.type.julia', + 'entity.name.type.julia', + 'entity.other.inherited-class.julia', + 'punctuation.separator.inheritance.julia', + 'entity.other.inherited-class.julia'], + regex: '(type|immutable)(\\s+)([a-zA-Z0-9_]+)(?:(\\s*)(<:)(\\s*[.a-zA-Z0-9_:]+))?' }, + { token: ['other.typed-variable.julia', 'support.type.julia'], + regex: '([a-zA-Z0-9_]+)(::[a-zA-Z0-9_{}]+)' }] }; this.normalizeRules(); }; - -JuliaHighlightRules.metaData = { fileTypes: [ 'jl' ], - firstLineMatch: '^#!.*\\bjulia\\s*$', - foldingStartMarker: '^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$', - foldingStopMarker: '^\\s*(?:end)\\b.*$', - name: 'Julia', - scopeName: 'source.julia' }; - - +JuliaHighlightRules.metaData = { fileTypes: ['jl'], + firstLineMatch: '^#!.*\\bjulia\\s*$', + foldingStartMarker: '^\\s*(?:if|while|for|begin|function|macro|module|baremodule|type|immutable|let)\\b(?!.*\\bend\\b).*$', + foldingStopMarker: '^\\s*(?:end)\\b.*$', + name: 'Julia', + scopeName: 'source.julia' }; oop.inherits(JuliaHighlightRules, TextHighlightRules); - exports.JuliaHighlightRules = JuliaHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -226,71 +178,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/julia",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/julia_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/julia",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/julia_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JuliaHighlightRules = require("./julia_highlight_rules").JuliaHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JuliaHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "#"; this.blockComment = ""; this.$id = "ace/mode/julia"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/julia"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-kotlin.js b/vendor/assets/javascripts/ace/mode-kotlin.js index fb0c4e16..8cb271ff 100644 --- a/vendor/assets/javascripts/ace/mode-kotlin.js +++ b/vendor/assets/javascripts/ace/mode-kotlin.js @@ -1,712 +1,362 @@ -define("ace/mode/kotlin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/kotlin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var KotlinHighlightRules = function() { - +var KotlinHighlightRules = function () { + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "storage.modifier.kotlin": "var|val|public|private|protected|abstract|final|enum|open|attribute|" + + "annotation|override|inline|var|val|vararg|lazy|in|out|internal|data|tailrec|operator|infix|const|" + + "yield|typealias|typeof|sealed|inner|value|lateinit|external|suspend|noinline|crossinline|reified|" + + "expect|actual", + "keyword": "companion|class|object|interface|namespace|type|fun|constructor|if|else|while|for|do|return|when|" + + "where|break|continue|try|catch|finally|throw|in|is|as|assert|constructor", + "constant.language.kotlin": "true|false|null|this|super", + "entity.name.function.kotlin": "get|set" + }, "identifier"); this.$rules = { start: [{ - include: "#comments" - }, { - token: [ - "text", - "keyword.other.kotlin", - "text", - "entity.name.package.kotlin", - "text" - ], - regex: /^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*))?/ - }, { - include: "#imports" - }, { - include: "#statements" - }], - "#classes": [{ - token: "text", - regex: /(?=\s*(?:companion|class|object|interface))/, - push: [{ - token: "text", - regex: /}|(?=$)/, - next: "pop" + include: "#comments" }, { - token: ["keyword.other.kotlin", "text"], - regex: /\b((?:companion\s*)?)(class|object|interface)\b/, - push: [{ - token: "text", - regex: /(?=<|{|\(|:)/, - next: "pop" - }, { - token: "keyword.other.kotlin", - regex: /\bobject\b/ - }, { - token: "entity.name.type.class.kotlin", - regex: /\w+/ - }] + token: [ + "text", + "keyword.other.kotlin", + "text", + "entity.name.package.kotlin", + "text" + ], + regex: /^(\s*)(package)\b(?:(\s*)([^ ;$]+)(\s*))?/ }, { - token: "text", - regex: //, - next: "pop" - }, { - include: "#generics" - }] + token: "comment", + regex: /^\s*#!.*$/ }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#parameters" - }] + include: "#imports" }, { - token: "keyword.operator.declaration.kotlin", - regex: /:/, + include: "#expressions" + }, { + token: "string", + regex: /@[a-zA-Z][a-zA-Z:]*\b/ + }, { + token: ["keyword.other.kotlin", "text", "entity.name.variable.kotlin"], + regex: /\b(var|val)(\s+)([a-zA-Z_][\w]*)\b/ + }, { + token: ["keyword.other.kotlin", "text", "entity.name.variable.kotlin", "paren.lparen"], + regex: /(fun)(\s+)(\w+)(\()/, push: [{ - token: "text", - regex: /(?={|$)/, - next: "pop" - }, { - token: "entity.other.inherited-class.kotlin", - regex: /\w+/ - }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", + token: ["variable.parameter.function.kotlin", "text", "keyword.operator"], + regex: /(\w+)(\s*)(:)/ + }, { + token: "paren.rparen", regex: /\)/, next: "pop" + }, { + include: "#comments" + }, { + include: "#types" }, { include: "#expressions" }] - }] }, { - token: "text", - regex: /\{/, + token: ["text", "keyword", "text", "identifier"], + regex: /^(\s*)(class)(\s*)([a-zA-Z]+)/, + next: "#classes" + }, { + token: ["identifier", "punctuaction"], + regex: /([a-zA-Z_][\w]*)(<)/, push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#statements" - }] - }] - }], - "#comments": [{ - token: "punctuation.definition.comment.kotlin", - regex: /\/\*/, - push: [{ - token: "punctuation.definition.comment.kotlin", - regex: /\*\//, - next: "pop" - }, { - defaultToken: "comment.block.kotlin" - }] - }, { - token: [ - "text", - "punctuation.definition.comment.kotlin", - "comment.line.double-slash.kotlin" - ], - regex: /(\s*)(\/\/)(.*$)/ - }], - "#constants": [{ - token: "constant.language.kotlin", - regex: /\b(?:true|false|null|this|super)\b/ - }, { - token: "constant.numeric.kotlin", - regex: /\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\b/ - }, { - token: "constant.other.kotlin", - regex: /\b[A-Z][A-Z0-9_]+\b/ - }], - "#expressions": [{ - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - include: "#types" - }, { - include: "#strings" - }, { - include: "#constants" - }, { - include: "#comments" - }, { - include: "#keywords" - }], - "#functions": [{ - token: "text", - regex: /(?=\s*fun)/, - push: [{ - token: "text", - regex: /}|(?=$)/, - next: "pop" - }, { - token: "keyword.other.kotlin", - regex: /\bfun\b/, - push: [{ - token: "text", - regex: /(?=\()/, - next: "pop" - }, { - token: "text", - regex: //, next: "pop" - }, { - include: "#generics" }] - }, { - token: ["text", "entity.name.function.kotlin"], - regex: /((?:[\.<\?>\w]+\.)?)(\w+)/ - }] }, { - token: "text", - regex: /\(/, + token: keywordMapper, + regex: /[a-zA-Z_][\w]*\b/ + }, { + token: "paren.lparen", + regex: /[{(\[]/ + }, { + token: "paren.rparen", + regex: /[})\]]/ + }], + "#comments": [{ + token: "comment", + regex: /\/\*/, push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#parameters" - }] + token: "comment", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment" + }] }, { - token: "keyword.operator.declaration.kotlin", - regex: /:/, - push: [{ - token: "text", - regex: /(?={|=|$)/, - next: "pop" - }, { - include: "#types" - }] + token: [ + "text", + "comment" + ], + regex: /(\s*)(\/\/.*$)/ + }], + "#constants": [{ + token: "constant.numeric.kotlin", + regex: /\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\b/ }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /(?=\})/, - next: "pop" - }, { - include: "#statements" - }] + token: "constant.other.kotlin", + regex: /\b[A-Z][A-Z0-9_]+\b/ + }], + "#expressions": [{ + include: "#strings" }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=$)/, - next: "pop" - }, { - include: "#expressions" - }] - }] - }], - "#generics": [{ - token: "keyword.operator.declaration.kotlin", - regex: /:/, - push: [{ - token: "text", - regex: /(?=,|>)/, - next: "pop" + include: "#constants" }, { - include: "#types" - }] - }, { - include: "#keywords" - }, { - token: "storage.type.generic.kotlin", - regex: /\w+/ - }], - "#getters-and-setters": [{ - token: ["entity.name.function.kotlin", "text"], - regex: /\b(get)\b(\s*\(\s*\))/, - push: [{ - token: "text", - regex: /\}|(?=\bset\b)|$/, - next: "pop" - }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=$|\bset\b)/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#expressions" - }] - }] - }, { - token: ["entity.name.function.kotlin", "text"], - regex: /\b(set)\b(\s*)(?=\()/, - push: [{ - token: "text", - regex: /\}|(?=\bget\b)|$/, - next: "pop" - }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#parameters" - }] - }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=$|\bset\b)/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#expressions" - }] - }] - }], + include: "#keywords" + }], "#imports": [{ - token: [ - "text", - "keyword.other.kotlin", - "text", - "keyword.other.kotlin" - ], - regex: /^(\s*)(import)(\s+[^ $]+\s+)((?:as)?)/ - }], - "#keywords": [{ - token: "storage.modifier.kotlin", - regex: /\b(?:var|val|public|private|protected|abstract|final|enum|open|attribute|annotation|override|inline|var|val|vararg|lazy|in|out|internal|data|tailrec|operator|infix|const|yield|typealias|typeof)\b/ - }, { - token: "keyword.control.catch-exception.kotlin", - regex: /\b(?:try|catch|finally|throw)\b/ - }, { - token: "keyword.control.kotlin", - regex: /\b(?:if|else|while|for|do|return|when|where|break|continue)\b/ - }, { - token: "keyword.operator.kotlin", - regex: /\b(?:in|is|as|assert)\b/ - }, { - token: "keyword.operator.comparison.kotlin", - regex: /==|!=|===|!==|<=|>=|<|>/ - }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/ - }, { - token: "keyword.operator.declaration.kotlin", - regex: /:/ - }, { - token: "keyword.operator.dot.kotlin", - regex: /\./ - }, { - token: "keyword.operator.increment-decrement.kotlin", - regex: /\-\-|\+\+/ - }, { - token: "keyword.operator.arithmetic.kotlin", - regex: /\-|\+|\*|\/|%/ - }, { - token: "keyword.operator.arithmetic.assign.kotlin", - regex: /\+=|\-=|\*=|\/=/ - }, { - token: "keyword.operator.logical.kotlin", - regex: /!|&&|\|\|/ - }, { - token: "keyword.operator.range.kotlin", - regex: /\.\./ - }, { - token: "punctuation.terminator.kotlin", - regex: /;/ - }], - "#namespaces": [{ - token: "keyword.other.kotlin", - regex: /\bnamespace\b/ - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#statements" - }] - }], - "#parameters": [{ - token: "keyword.operator.declaration.kotlin", - regex: /:/, - push: [{ - token: "text", - regex: /(?=,|\)|=)/, - next: "pop" - }, { - include: "#types" - }] - }, { - token: "keyword.operator.declaration.kotlin", - regex: /=/, - push: [{ - token: "text", - regex: /(?=,|\))/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - include: "#keywords" - }, { - token: "variable.parameter.function.kotlin", - regex: /\w+/ - }], - "#statements": [{ - include: "#namespaces" - }, { - include: "#typedefs" - }, { - include: "#classes" - }, { - include: "#functions" - }, { - include: "#variables" - }, { - include: "#getters-and-setters" - }, { - include: "#expressions" - }], - "#strings": [{ - token: "punctuation.definition.string.begin.kotlin", - regex: /"""/, - push: [{ - token: "punctuation.definition.string.end.kotlin", - regex: /"""/, - next: "pop" - }, { - token: "variable.parameter.template.kotlin", - regex: /\$\w+|\$\{[^\}]+\}/ - }, { - token: "constant.character.escape.kotlin", - regex: /\\./ - }, { - defaultToken: "string.quoted.third.kotlin" - }] - }, { - token: "punctuation.definition.string.begin.kotlin", - regex: /"/, - push: [{ - token: "punctuation.definition.string.end.kotlin", - regex: /"/, - next: "pop" - }, { - token: "variable.parameter.template.kotlin", - regex: /\$\w+|\$\{[^\}]+\}/ - }, { - token: "constant.character.escape.kotlin", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.kotlin" - }] - }, { - token: "punctuation.definition.string.begin.kotlin", - regex: /'/, - push: [{ - token: "punctuation.definition.string.end.kotlin", - regex: /'/, - next: "pop" - }, { - token: "constant.character.escape.kotlin", - regex: /\\./ - }, { - defaultToken: "string.quoted.single.kotlin" - }] - }, { - token: "punctuation.definition.string.begin.kotlin", - regex: /`/, - push: [{ - token: "punctuation.definition.string.end.kotlin", - regex: /`/, - next: "pop" - }, { - defaultToken: "string.quoted.single.kotlin" - }] - }], - "#typedefs": [{ - token: "text", - regex: /(?=\s*type)/, - push: [{ - token: "text", - regex: /(?=$)/, - next: "pop" - }, { - token: "keyword.other.kotlin", - regex: /\btype\b/ - }, { - token: "text", + token: [ + "text", + "keyword.other.kotlin", + "text", + "keyword.other.kotlin" + ], + regex: /^(\s*)(import)(\s+[^ $]+\s+)((?:as)?)/ + }], + "#generics": [{ + token: "punctuation", regex: //, - next: "pop" - }, { - include: "#generics" - }] - }, { - include: "#expressions" - }] - }], - "#types": [{ - token: "storage.type.buildin.kotlin", - regex: /\b(?:Any|Unit|String|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic)\b/ - }, { - token: "storage.type.buildin.array.kotlin", - regex: /\b(?:IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray)\b/ - }, { - token: [ - "storage.type.buildin.collection.kotlin", - "text" - ], - regex: /\b(Array|List|Map)(<\b)/, - push: [{ - token: "text", - regex: />/, - next: "pop" - }, { - include: "#types" - }, { - include: "#keywords" - }] - }, { - token: "text", - regex: /\w+/, - next: "pop" - }, { - include: "#types" - }, { - include: "#keywords" - }] - }, { - token: ["keyword.operator.tuple.kotlin", "text"], - regex: /(#)(\()/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#expressions" - }] - }, { - token: "text", - regex: /\{/, - push: [{ - token: "text", - regex: /\}/, - next: "pop" - }, { - include: "#statements" - }] - }, { - token: "text", - regex: /\(/, - push: [{ - token: "text", - regex: /\)/, - next: "pop" - }, { - include: "#types" - }] - }, { - token: "keyword.operator.declaration.kotlin", - regex: /->/ - }], - "#variables": [{ - token: "text", - regex: /(?=\s*(?:var|val))/, - push: [{ - token: "text", - regex: /(?=:|=|$)/, - next: "pop" - }, { - token: "keyword.other.kotlin", - regex: /\b(?:var|val)\b/, - push: [{ - token: "text", - regex: /(?=:|=|$)/, - next: "pop" - }, { - token: "text", - regex: //, next: "pop" + }, { + token: "storage.type.generic.kotlin", + regex: /\w+/ + }, { + token: "keyword.operator", + regex: /:/ + }, { + token: "punctuation", + regex: /,/ }, { include: "#generics" }] - }, { - token: ["text", "entity.name.variable.kotlin"], - regex: /((?:[\.<\?>\w]+\.)?)(\w+)/ - }] + }], + "#classes": [{ + include: "#generics" + }, { + token: "keyword", + regex: /public|private|constructor/ + }, { + token: "string", + regex: /@[a-zA-Z][a-zA-Z:]*\b/ + }, { + token: "text", + regex: /(?=$|\(|{)/, + next: "start" + }], + "#keywords": [{ + token: "keyword.operator.kotlin", + regex: /==|!=|===|!==|<=|>=|<|>|=>|->|::|\?:/ + }, { + token: "keyword.operator.assignment.kotlin", + regex: /=/ }, { token: "keyword.operator.declaration.kotlin", regex: /:/, push: [{ - token: "text", - regex: /(?==|$)/, - next: "pop" - }, { - include: "#types" - }, { - include: "#getters-and-setters" - }] + token: "text", + regex: /(?=$|{|=|,)/, + next: "pop" + }, { + include: "#types" + }] }, { - token: "keyword.operator.assignment.kotlin", - regex: /=/, + token: "keyword.operator.dot.kotlin", + regex: /\./ + }, { + token: "keyword.operator.increment-decrement.kotlin", + regex: /\-\-|\+\+/ + }, { + token: "keyword.operator.arithmetic.kotlin", + regex: /\-|\+|\*|\/|%/ + }, { + token: "keyword.operator.arithmetic.assign.kotlin", + regex: /\+=|\-=|\*=|\/=/ + }, { + token: "keyword.operator.logical.kotlin", + regex: /!|&&|\|\|/ + }, { + token: "keyword.operator.range.kotlin", + regex: /\.\./ + }, { + token: "punctuation.kotlin", + regex: /[;,]/ + }], + "#types": [{ + include: "#defaultTypes" + }, { + token: "paren.lparen", + regex: /\(/, push: [{ - token: "text", - regex: /(?=$)/, - next: "pop" - }, { - include: "#expressions" - }, { - include: "#getters-and-setters" - }] + token: "paren.rparen", + regex: /\)/, + next: "pop" + }, { + include: "#defaultTypes" + }, { + token: "punctuation", + regex: /,/ + }] + }, { + include: "#generics" + }, { + token: "keyword.operator.declaration.kotlin", + regex: /->/ + }, { + token: "paren.rparen", + regex: /\)/ + }, { + token: "keyword.operator.declaration.kotlin", + regex: /:/, + push: [{ + token: "text", + regex: /(?=$|{|=|,)/, + next: "pop" + }, { + include: "#types" + }] + }], + "#defaultTypes": [{ + token: "storage.type.buildin.kotlin", + regex: /\b(Any|Unit|String|Int|Boolean|Char|Long|Double|Float|Short|Byte|dynamic|IntArray|BooleanArray|CharArray|LongArray|DoubleArray|FloatArray|ShortArray|ByteArray|Array|List|Map|Nothing|Enum|Throwable|Comparable)\b/ + }], + "#strings": [{ + token: "string", + regex: /"""/, + push: [{ + token: "string", + regex: /"""/, + next: "pop" + }, { + token: "variable.parameter.template.kotlin", + regex: /\$\w+|\${[^}]+}/ + }, { + token: "constant.character.escape.kotlin", + regex: /\\./ + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: /"/, + push: [{ + token: "string", + regex: /"/, + next: "pop" + }, { + token: "variable.parameter.template.kotlin", + regex: /\$\w+|\$\{[^\}]+\}/ + }, { + token: "constant.character.escape.kotlin", + regex: /\\./ + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: /'/, + push: [{ + token: "string", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.kotlin", + regex: /\\./ + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: /`/, + push: [{ + token: "string", + regex: /`/, + next: "pop" + }, { + defaultToken: "string" + }] }] - }] }; - this.normalizeRules(); }; - KotlinHighlightRules.metaData = { fileTypes: ["kt", "kts"], name: "Kotlin", scopeName: "source.Kotlin" }; - - oop.inherits(KotlinHighlightRules, TextHighlightRules); - exports.KotlinHighlightRules = KotlinHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -719,68 +369,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/kotlin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/kotlin_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/kotlin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/kotlin_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var KotlinHighlightRules = require("./kotlin_highlight_rules").KotlinHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = KotlinHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/kotlin"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/kotlin"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-latex.js b/vendor/assets/javascripts/ace/mode-latex.js index 56de8c0a..72e75552 100644 --- a/vendor/assets/javascripts/ace/mode-latex.js +++ b/vendor/assets/javascripts/ace/mode-latex.js @@ -1,101 +1,93 @@ -define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LatexHighlightRules = function() { - +var LatexHighlightRules = function () { this.$rules = { - "start" : [{ - token : "comment", - regex : "%.*$" - }, { - token : ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"], - regex : "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})" - }, { - token : ["keyword","lparen", "variable.parameter", "rparen"], - regex : "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\begin)({)(verbatim)(})", - next : "verbatim" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\begin)({)(lstlisting)(})", - next : "lstlisting" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\(?:begin|end))({)([\\w*]*)(})" - }, { - token : "storage.type", - regex : /\\verb\b\*?/, - next : [{ - token : ["keyword.operator", "string", "keyword.operator"], - regex : "(.)(.*?)(\\1|$)|", - next : "start" - }] - }, { - token : "storage.type", - regex : "\\\\[a-zA-Z]+" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "constant.character.escape", - regex : "\\\\[^a-zA-Z]?" - }, { - token : "string", - regex : "\\${1,2}", - next : "equation" - }], - "equation" : [{ - token : "comment", - regex : "%.*$" - }, { - token : "string", - regex : "\\${1,2}", - next : "start" - }, { - token : "constant.character.escape", - regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" - }, { - token : "error", - regex : "^\\s*$", - next : "start" - }, { - defaultToken : "string" - }], + "start": [{ + token: "comment", + regex: "%.*$" + }, { + token: ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"], + regex: "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})" + }, { + token: ["keyword", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\begin)({)(verbatim)(})", + next: "verbatim" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\begin)({)(lstlisting)(})", + next: "lstlisting" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\(?:begin|end))({)([\\w*]*)(})" + }, { + token: "storage.type", + regex: /\\verb\b\*?/, + next: [{ + token: ["keyword.operator", "string", "keyword.operator"], + regex: "(.)(.*?)(\\1|$)|", + next: "start" + }] + }, { + token: "storage.type", + regex: "\\\\[a-zA-Z]+" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "constant.character.escape", + regex: "\\\\[^a-zA-Z]?" + }, { + token: "string", + regex: "\\${1,2}", + next: "equation" + }], + "equation": [{ + token: "comment", + regex: "%.*$" + }, { + token: "string", + regex: "\\${1,2}", + next: "start" + }, { + token: "constant.character.escape", + regex: "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" + }, { + token: "error", + regex: "^\\s*$", + next: "start" + }, { + defaultToken: "string" + }], "verbatim": [{ - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\end)({)(verbatim)(})", - next : "start" - }, { - defaultToken : "text" - }], + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\end)({)(verbatim)(})", + next: "start" + }, { + defaultToken: "text" + }], "lstlisting": [{ - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\end)({)(lstlisting)(})", - next : "start" - }, { - defaultToken : "text" - }] + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\end)({)(lstlisting)(})", + next: "start" + }, { + defaultToken: "text" + }] }; - this.normalizeRules(); }; oop.inherits(LatexHighlightRules, TextHighlightRules); - exports.LatexHighlightRules = LatexHighlightRules; }); -define("ace/mode/folding/latex",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/latex",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; @@ -112,17 +104,12 @@ var keywordLevels = { "\\begin": 9, "\\end": 10 }; - -var FoldMode = exports.FoldMode = function() {}; - +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /^\s*\\(begin)|\s*\\(part|chapter|(?:sub)*(?:section|paragraph))\b|{\s*$/; this.foldingStopMarker = /^\s*\\(end)\b|^\s*}/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.doc.getLine(row); var match = this.foldingStartMarker.exec(line); if (match) { @@ -130,36 +117,29 @@ oop.inherits(FoldMode, BaseFoldMode); return this.latexBlock(session, row, match[0].length - 1); if (match[2]) return this.latexSection(session, row, match[0].length - 1); - return this.openingBracketBlock(session, "{", row, match.index); } - var match = this.foldingStopMarker.exec(line); if (match) { if (match[1]) return this.latexBlock(session, row, match[0].length - 1); - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); } }; - - this.latexBlock = function(session, row, column, returnRange) { + this.latexBlock = function (session, row, column, returnRange) { var keywords = { "\\begin": 1, "\\end": -1 }; - var stream = new TokenIterator(session, row, column); var token = stream.getCurrentToken(); if (!token || !(token.type == "storage.type" || token.type == "constant.character.escape")) return; - var val = token.value; var dir = keywords[val]; - - var getType = function() { + var getType = function () { var token = stream.stepForward(); - var type = token.type == "lparen" ?stream.stepForward().value : ""; + var type = token && token.type == "lparen" ? stream.stepForward().value : ""; if (dir === -1) { stream.stepBackward(); if (type) @@ -170,9 +150,8 @@ oop.inherits(FoldMode, BaseFoldMode); var stack = [getType()]; var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; var startRow = row; - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { + while (token = stream.step()) { if (!token || !(token.type == "storage.type" || token.type == "constant.character.escape")) continue; var level = keywords[token.value]; @@ -184,97 +163,75 @@ oop.inherits(FoldMode, BaseFoldMode); else if (stack.shift() !== type || !stack.length) break; } - if (stack.length) return; - if (dir == 1) { stream.stepBackward(); stream.stepBackward(); } - if (returnRange) return stream.getCurrentTokenRange(); - var row = stream.getCurrentTokenRow(); if (dir === -1) return new Range(row, session.getLine(row).length, startRow, startColumn); else return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); }; - - this.latexSection = function(session, row, column) { + this.latexSection = function (session, row, column) { var stream = new TokenIterator(session, row, column); var token = stream.getCurrentToken(); if (!token || token.type != "storage.type") return; - var startLevel = keywordLevels[token.value] || 0; var stackDepth = 0; var endRow = row; - - while(token = stream.stepForward()) { + while (token = stream.stepForward()) { if (token.type !== "storage.type") continue; var level = keywordLevels[token.value] || 0; - if (level >= 9) { if (!stackDepth) endRow = stream.getCurrentTokenRow() - 1; - stackDepth += level == 9 ? 1 : - 1; + stackDepth += level == 9 ? 1 : -1; if (stackDepth < 0) break; - } else if (level >= startLevel) + } + else if (level >= startLevel) break; } - if (!stackDepth) endRow = stream.getCurrentTokenRow() - 1; - while (endRow > row && !/\S/.test(session.getLine(endRow))) endRow--; - - return new Range( - row, session.getLine(row).length, - endRow, session.getLine(endRow).length - ); + return new Range(row, session.getLine(row).length, endRow, session.getLine(endRow).length); }; - }).call(FoldMode.prototype); }); -define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/latex"], function(require, exports, module) { -"use strict"; - +define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/latex"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LatexHighlightRules = require("./latex_highlight_rules").LatexHighlightRules; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var LatexFoldMode = require("./folding/latex").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = LatexHighlightRules; this.foldingRules = new LatexFoldMode(); this.$behaviour = new CstyleBehaviour({ braces: true }); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.type = "text"; - this.lineCommentStart = "%"; - this.$id = "ace/mode/latex"; - - this.getMatching = function(session, row, column) { + this.getMatching = function (session, row, column) { if (row == undefined) row = session.selection.lead; if (typeof row == "object") { column = row.column; row = row.row; } - var startToken = session.getTokenAt(row, column); if (!startToken) return; @@ -283,7 +240,13 @@ oop.inherits(Mode, TextMode); } }; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/latex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-latte.js b/vendor/assets/javascripts/ace/mode-latte.js new file mode 100644 index 00000000..171890e7 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-latte.js @@ -0,0 +1,2462 @@ +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", // multi line comment + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/latte_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LatteHighlightRules = function () { + HtmlHighlightRules.call(this); + for (var rule in this.$rules) { + this.$rules[rule].unshift({ + token: "comment.start.latte", + regex: "\\{\\*", + push: [{ + token: "comment.end.latte", + regex: ".*\\*\\}", + next: "pop" + }, { + defaultToken: "comment" + }] + }, { + token: "meta.tag.punctuation.tag-open.latte", + regex: "\\{(?![\\s'\"{}]|$)/?", + push: [{ + token: "meta.tag.latte", + regex: "(?:_|=|[a-z]\\w*(?:[.:-]\\w+)*)?", + next: [{ + token: "meta.tag.punctuation.tag-close.latte", + regex: "\\}", + next: "pop" + }, { + include: "latte-content" + }] + }] + }); + } + this.$rules['tag_stuff'].unshift({ + token: "meta.attribute.latte", + regex: "n:[\\w-]+", + next: [{ + include: "tag_whitespace" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + next: [{ + token: "string.attribute-value.xml", + regex: "'", + next: [ + { token: "string.attribute-value.xml", regex: "'", next: "tag_stuff" }, + { include: "latte-content" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + next: [ + { token: "string.attribute-value.xml", regex: '"', next: "tag_stuff" }, + { include: "latte-content" } + ] + }, { + token: "text.tag-whitespace.xml", + regex: "\\s", + next: "tag_stuff" + }, { + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + next: "tag_stuff" + }, { + include: "latte-content" + }] + }, { + token: "empty", + regex: "", + next: "tag_stuff" + }] + }); + this.$rules["latte-content"] = [ + { + token: "comment.start.latte", // multi line comment + regex: "\\/\\*", + push: [ + { + token: "comment.end.latte", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + } + ] + }, { + token: "string.start", // " string start + regex: '"', + push: [ + { + token: "constant.language.escape", + regex: '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' + }, { + token: "variable", + regex: /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ + }, { + token: "variable", + regex: /\$\{[^"\}]+\}?/ // this is wrong but ok for now + }, + { token: "string.end", regex: '"', next: "pop" }, + { defaultToken: "string" } + ] + }, { + token: "string.start", // ' string start + regex: "'", + push: [ + { token: "constant.language.escape", regex: /\\['\\]/ }, + { token: "string.end", regex: "'", next: "pop" }, + { defaultToken: "string" } + ] + }, { + token: "keyword.control", + regex: "\\b(?:INF|NAN|and|or|xor|AND|OR|XOR|clone|new|instanceof|return|continue|break|as)\\b" + }, { + token: "constant.language", + regex: "\\b(?:true|false|null|TRUE|FALSE|NULL)\\b" + }, { + token: "variable", + regex: /\$\w+/ + }, { + token: "constant.numeric", + regex: "[+-]?[0-9]+(?:\\.[0-9]+)?(?:e[0-9]+)?" + }, { + token: ["support.class", "keyword.operator"], + regex: "\\b(\\w+)(::)" + }, { + token: "constant.language", // constants + regex: "\\b(?:[A-Z0-9_]+)\\b" + }, { + token: "string.unquoted", + regex: "\\w+(?:-+\\w+)*" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "keyword.operator", + regex: "::|=>|->|\\?->|\\?\\?->|\\+\\+|--|<<|>>|<=>|<=|>=|===|!==|==|!=|<>|&&|\\|\\||\\?\\?|\\?>|\\*\\*|\\.\\.\\.|[^'\"]" // =>, any char except quotes + } + ]; + this.normalizeRules(); +}; +oop.inherits(LatteHighlightRules, TextHighlightRules); +exports.LatteHighlightRules = LatteHighlightRules; + +}); + +define("ace/mode/latte",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/latte_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var LatteHighlightRules = require("./latte_highlight_rules").LatteHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + HtmlMode.call(this); + this.HighlightRules = LatteHighlightRules; + this.$outdent = new MatchingBraceOutdent(); +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.blockComment = { start: "{*", end: "*}" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + if (state == "start") { + var match = line.match(/^.*\{(?:if|else|elseif|ifset|elseifset|ifchanged|switch|case|foreach|iterateWhile|for|while|first|last|sep|try|capture|spaceless|snippet|block|define|embed|snippetArea)\b[^{]*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return /^\s+\{\/$/.test(line + input); + }; + this.autoOutdent = function (state, doc, row) { + }; + this.$id = "ace/mode/latte"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/latte"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-lean.js b/vendor/assets/javascripts/ace/mode-lean.js deleted file mode 100644 index 615e8571..00000000 --- a/vendor/assets/javascripts/ace/mode-lean.js +++ /dev/null @@ -1,281 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -} - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -define("ace/mode/lean_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var leanHighlightRules = function() { - - var keywordControls = ( - [ "add_rewrite", "alias", "as", "assume", "attribute", - "begin", "by", "calc", "calc_refl", "calc_subst", "calc_trans", "check", - "classes", "coercions", "conjecture", "constants", "context", - "corollary", "else", "end", "environment", "eval", "example", - "exists", "exit", "export", "exposing", "extends", "fields", "find_decl", - "forall", "from", "fun", "have", "help", "hiding", "if", - "import", "in", "infix", "infixl", "infixr", "instances", - "let", "local", "match", "namespace", "notation", "obtain", "obtains", - "omit", "opaque", "open", "options", "parameter", "parameters", "postfix", - "precedence", "prefix", "premise", "premises", "print", "private", "proof", - "protected", "qed", "raw", "renaming", "section", "set_option", - "show", "tactic_hint", "take", "then", "universe", - "universes", "using", "variable", "variables", "with"].join("|") - ); - - var nameProviders = ( - ["inductive", "structure", "record", "theorem", "axiom", - "axioms", "lemma", "hypothesis", "definition", "constant"].join("|") - ); - - var storageType = ( - ["Prop", "Type", "Type'", "Type₊", "Type₁", "Type₂", "Type₃"].join("|") - ); - - var storageModifiers = ( - "\\[(" + - ["abbreviations", "all-transparent", "begin-end-hints", "class", "classes", "coercion", - "coercions", "declarations", "decls", "instance", "irreducible", - "multiple-instances", "notation", "notations", "parsing-only", "persistent", - "reduce-hints", "reducible", "tactic-hints", "visible", "wf", "whnf" - ].join("|") + - ")\\]" - ); - - var keywordOperators = ( - [].join("|") - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "keyword.operator" : keywordOperators, - "variable.language": "sorry" - }, "identifier"); - - var identifierRe = "[A-Za-z_\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2100-\u214f][A-Za-z0-9_'\u03b1-\u03ba\u03bc-\u03fb\u1f00-\u1ffe\u2070-\u2079\u207f-\u2089\u2090-\u209c\u2100-\u214f]*"; - var operatorRe = new RegExp(["#", "@", "->", "∼", "↔", "/", "==", "=", ":=", "<->", - "/\\", "\\/", "∧", "∨", "≠", "<", ">", "≤", "≥", "¬", - "<=", ">=", "⁻¹", "⬝", "▸", "\\+", "\\*", "-", "/", - "λ", "→", "∃", "∀", ":="].join("|")); - - this.$rules = { - "start" : [ - { - token : "comment", // single line comment "--" - regex : "--.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment "/-" - regex : "\\/-", - next : "comment" - }, { - stateName: "qqstring", - token : "string.start", regex : '"', next : [ - {token : "string.end", regex : '"', next : "start"}, - {token : "constant.language.escape", regex : /\\[n"\\]/}, - {defaultToken: "string"} - ] - }, { - token : "keyword.control", regex : nameProviders, next : [ - {token : "variable.language", regex : identifierRe, next : "start"} ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, { - token : "storage.modifier", - regex : storageModifiers - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "operator", - regex : operatorRe - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ {token: "comment", regex: "-/", next: "start"}, - {defaultToken: "comment"} ] - }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); -}; - -oop.inherits(leanHighlightRules, TextHighlightRules); - -exports.leanHighlightRules = leanHighlightRules; -}); - -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - -var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) - return false; - - return /^\s*\}/.test(input); - }; - - this.autoOutdent = function(doc, row) { - var line = doc.getLine(row); - var match = line.match(/^(\s*\})/); - - if (!match) return 0; - - var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - - var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); - }; - - this.$getIndent = function(line) { - return line.match(/^\s*/)[0]; - }; - -}).call(MatchingBraceOutdent.prototype); - -exports.MatchingBraceOutdent = MatchingBraceOutdent; -}); - -define("ace/mode/lean",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lean_highlight_rules","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var leanHighlightRules = require("./lean_highlight_rules").leanHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; - -var Mode = function() { - this.HighlightRules = leanHighlightRules; - - this.$outdent = new MatchingBraceOutdent(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "--"; - this.blockComment = {start: "/-", end: "-/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - if (state == "start") { - var match = line.match(/^.*[\{\(\[]\s*$/); - if (match) { - indent += tab; - } - } else if (state == "doc-start") { - if (endState == "start") { - return ""; - } - var match = line.match(/^\s*(\/?)\*/); - if (match) { - if (match[1]) { - indent += " "; - } - indent += "- "; - } - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.$id = "ace/mode/lean"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); diff --git a/vendor/assets/javascripts/ace/mode-less.js b/vendor/assets/javascripts/ace/mode-less.js index a3144fd6..b22e7bab 100644 --- a/vendor/assets/javascripts/ace/mode-less.js +++ b/vendor/assets/javascripts/ace/mode-less.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,261 +18,244 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var CssHighlightRules = require('./css_highlight_rules'); - -var LessHighlightRules = function() { - - - var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + +var LessHighlightRules = function () { + var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" + "or|and|when|not"; - var keywords = keywordList.split('|'); - var properties = CssHighlightRules.supportType.split('|'); - var keywordMapper = this.createKeywordMapper({ "support.constant": CssHighlightRules.supportConstant, "keyword": keywordList, "support.constant.color": CssHighlightRules.supportConstantColor, "support.constant.fonts": CssHighlightRules.supportConstantFonts - }, "identifier", true); - + }, "identifier", true); var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment", + regex: "\\/\\/.*$" }, { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" }, { - token : "constant.numeric", - regex : numRe + token: "constant.numeric", + regex: numRe }, { - token : ["support.function", "paren.lparen", "string", "paren.rparen"], - regex : "(url)(\\()(.*)(\\))" + token: ["support.function", "paren.lparen", "string", "paren.rparen"], + regex: "(url)(\\()(.*)(\\))" }, { - token : ["support.function", "paren.lparen"], - regex : "(:extend|[a-z0-9_\\-]+)(\\()" + token: ["support.function", "paren.lparen"], + regex: "(:extend|[a-z0-9_\\-]+)(\\()" }, { - token : function(value) { + token: function (value) { if (keywords.indexOf(value.toLowerCase()) > -1) return "keyword"; else return "variable"; }, - regex : "[@\\$][a-z0-9_\\-@\\$]*\\b" + regex: "[@\\$][a-z0-9_\\-@\\$]*\\b" }, { - token : "variable", - regex : "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" + token: "variable", + regex: "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" }, { - token : function(first, second) { - if(properties.indexOf(first.toLowerCase()) > -1) { + token: function (first, second) { + if (properties.indexOf(first.toLowerCase()) > -1) { return ["support.type.property", "text"]; } else { return ["support.type.unknownProperty", "text"]; } }, - regex : "([a-z0-9-_]+)(\\s*:)" + regex: "([a-z0-9-_]+)(\\s*:)" }, { - token : "keyword", - regex : "&" // special case - always treat as keyword + token: "keyword", + regex: "&" // special case - always treat as keyword }, { - token : keywordMapper, - regex : "\\-?[@a-z_][@a-z0-9_\\-]*" + token: keywordMapper, + regex: "\\-?[@a-z_][@a-z0-9_\\-]*" }, { token: "variable.language", regex: "#[a-z0-9-_]+" @@ -291,94 +269,76 @@ var LessHighlightRules = function() { token: "constant", regex: "[a-z0-9-_]+" }, { - token : "keyword.operator", - regex : "<|>|<=|>=|=|!=|-|%|\\+|\\*" + token: "keyword.operator", + regex: "<|>|<=|>=|=|!=|-|%|\\+|\\*" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { caseInsensitive: true } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ] }; this.normalizeRules(); }; - oop.inherits(LessHighlightRules, TextHighlightRules); - exports.LessHighlightRules = LessHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -390,20 +350,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -417,102 +376,109 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -525,182 +491,143 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -713,64 +640,60 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CssCompletions = require("./css_completions").CssCompletions; - var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = LessHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -778,42 +701,39 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions("ruleset", session, pos, prefix); }; - this.$id = "ace/mode/less"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/less"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-liquid.js b/vendor/assets/javascripts/ace/mode-liquid.js index 16c0089a..9ec2b1f3 100644 --- a/vendor/assets/javascripts/ace/mode-liquid.js +++ b/vendor/assets/javascripts/ace/mode-liquid.js @@ -1,282 +1,154 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] }, { - defaultToken : "comment" + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - }; - this.normalizeRules(); }; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -284,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -434,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -452,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -491,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -507,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -559,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -600,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -610,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/liquid_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var LiquidHighlightRules = function() { - HtmlHighlightRules.call(this); - var functions = ( - "date|capitalize|downcase|upcase|first|last|join|sort|map|size|escape|" + - "escape_once|strip_html|strip_newlines|newline_to_br|replace|replace_first|" + - "truncate|truncatewords|prepend|append|minus|plus|times|divided_by|split" - ); - - var keywords = ( - "capture|endcapture|case|endcase|when|comment|endcomment|" + - "cycle|for|endfor|in|reversed|if|endif|else|elsif|include|endinclude|unless|endunless|" + - "style|text|image|widget|plugin|marker|endmarker|tablerow|endtablerow" - ); - - var builtinVariables = 'forloop|tablerowloop'; - - var definitions = ("assign"); - - var keywordMapper = this.createKeywordMapper({ - "variable.language": builtinVariables, - "keyword": keywords, - "support.function": functions, - "keyword.definition": definitions - }, "identifier"); - for (var rule in this.$rules) { - this.$rules[rule].unshift({ - token : "variable", - regex : "{%", - push : "liquid-start" - }, { - token : "variable", - regex : "{{", - push : "liquid-start" - }); - } - - this.addRules({ - "liquid-start" : [{ - token: "variable", - regex: "}}", - next: "pop" - }, { - token: "variable", - regex: "%}", - next: "pop" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "/|\\*|\\-|\\+|=|!=|\\?\\:" - }, { - token : "paren.lparen", - regex : /[\[\({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "text", - regex : "\\s+" - }] +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); +}); + +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); +var lang = require("../lib/lang"); var TextMode = require("./text").Mode; -var LiquidHighlightRules = require("./liquid_highlight_rules").LiquidHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { - this.HighlightRules = LiquidHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; -(function() { +}); - this.blockComment = {start: ""}; +define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "variable", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + }, { + token: "string", // single line + regex: '"', + next: "string" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "text", // single quoted strings are not allowed + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "comment", // comments are not allowed, but who cares? + regex: "\\/\\/.*$" + }, { + token: "comment.start", // comments are not allowed, but who cares? + regex: "\\/\\*", + next: "comment" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" + } + ], + "string": [ + { + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + } + ], + "comment": [ + { + token: "comment.end", // comments are not allowed, but who cares? + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(JsonHighlightRules, TextHighlightRules); +exports.JsonHighlightRules = JsonHighlightRules; - this.getNextLineIndent = function(state, line, tab) { +}); + +define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = HighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); - var tokens = tokenizedLine.tokens; - var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.$id = "ace/mode/liquid"; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/json_worker", "JsonWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/json"; }).call(Mode.prototype); - exports.Mode = Mode; + }); + +define("ace/mode/liquid_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules","ace/mode/html_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var LiquidHighlightRules = function () { + HtmlHighlightRules.call(this); + function onMatchEmbedded(name) { + var length = name.length; + return function (value) { + var idx = value.indexOf(name); + var x = [ + { + type: "meta.tag.punctuation.tag-open", + value: "{%" + }, + { + type: "text", + value: value.slice(2, idx) + }, + { + type: "keyword.tag" + name + ".tag-name", + value: value.slice(idx, idx + length) + }, + { + type: "text", + value: value.slice(idx + length, value.indexOf("%}")) + }, + { + type: "meta.tag.punctuation.tag-close", + value: "%}" + } + ]; + return x; + }; + } + for (var rule in this.$rules) { + this.$rules[rule].unshift({ + token: "comment.block", + regex: /{%-?\s*comment\s*-?%}/, + next: [ + { + token: "comment.block", + regex: /{%-?\s*endcomment\s*-?%}/, + next: "pop" + }, + { + defaultToken: "comment", + caseInsensitive: false + } + ] + }, { + token: "comment.line", + regex: /{%-?\s*#/, + next: [ + { + token: "comment.line", + regex: /-?%}/, + next: "pop" + }, + { + defaultToken: "comment", + caseInsensitive: false + } + ] + }, { + token: 'style.embedded.start', + regex: /({%-?\s*\bstyle\b\s*-?%})/, + next: "style-start", + onMatch: onMatchEmbedded("style") + }, { + regex: /({%-?\s*\bstylesheet\b\s*-?%})/, + next: "stylesheet-start", + onMatch: onMatchEmbedded("stylesheet") + }, { + regex: /({%-?\s*\bschema\b\s*-?%})/, + next: "schema-start", + onMatch: onMatchEmbedded("schema") + }, { + regex: /({%-?\s*\bjavascript\b\s*-?%})/, + next: "javascript-start", + onMatch: onMatchEmbedded("javascript") + }, { + token: "meta.tag.punctuation.tag-open", + regex: /({%)/, + next: [ + { + token: "keyword.block", + regex: /-?\s*[a-zA-Z_$][a-zA-Z0-9_$]+\b/, + next: 'liquid-start' + }, + { + token: "meta.tag.punctuation.tag-close", + regex: /(-?)(%})/, + next: "pop" + } + ] + }, { + token: "meta.tag.punctuation.ouput-open", + regex: /({{)/, + push: "liquid-start" + }); + } + this.embedRules(JsonHighlightRules, "schema-", [ + { + token: "schema-start", + next: "pop", + regex: /({%-?\s*\bendschema\b\s*-?%})/, + onMatch: onMatchEmbedded("endschema") + } + ]); + this.embedRules(JavaScriptHighlightRules, "javascript-", [ + { + token: "javascript-start", + next: "pop", + regex: /({%-?\s*\bendjavascript\b\s*-?%})/, + onMatch: onMatchEmbedded("endjavascript") + } + ]); + this.embedRules(CssHighlightRules, "style-", [ + { + token: "style-start", + next: "pop", + regex: /({%-?\s*\bendstyle\b\s*-?%})/, + onMatch: onMatchEmbedded("endstyle") + } + ]); + this.embedRules(CssHighlightRules, "stylesheet-", [ + { + token: "stylesheet-start", + next: "pop", + regex: /({%-?\s*\bendstylesheet\b\s*-?%})/, + onMatch: onMatchEmbedded("endstylesheet") + } + ]); + this.addRules({ + "liquid-start": [ + { + token: "meta.tag.punctuation.ouput-close", + regex: /}}/, + next: "pop" + }, + { + token: "meta.tag.punctuation.tag-close", + regex: /%}/, + next: "pop" + }, + { + token: "string", + regex: /['](?:(?:\\.)|(?:[^'\\]))*?[']/ + }, + { + token: "string", + regex: /["](?:(?:\\.)|(?:[^'\\]))*?["]/ + }, + { + token: "constant.numeric", + regex: /0[xX][0-9a-fA-F]+\b/ + }, + { + token: "constant.numeric", + regex: /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + }, + { + token: "keyword.operator", + regex: /\*|\-|\+|=|!=|\?\|\:/ + }, + { + token: "constant.language.boolean", + regex: /(?:true|false|nil|empty)\b/ + }, + { + token: "keyword.operator", + regex: /\s+(?:and|contains|in|with)\b\s+/ + }, + { + token: ["keyword.operator", "support.function"], + regex: /(\|\s*)([a-zA-Z_]+)/ + }, + { + token: "support.function", + regex: /\s*([a-zA-Z_]+\b)(?=:)/ + }, + { + token: "keyword.operator", + regex: /(:)\s*(?=[a-zA-Z_])/ + }, + { + token: [ + "support.class", + "keyword.operator", + "support.object", + "keyword.operator", + "variable.parameter" + ], + regex: /(\w+)(\.)(\w+)(\.)?(\w+)?/ + }, + { + token: "variable.parameter", + regex: /\.([a-zA-Z_$][a-zA-Z0-9_$]*\b)$/ + }, + { + token: "support.class", + regex: /(?:additional_checkout_buttons|content_for_additional_checkout_buttons)\b/ + }, + { + token: "paren.lparen", + regex: /[\[\({]/ + }, + { + token: "paren.rparen", + regex: /[\])}]/ + }, + { + token: "text", + regex: /\s+/ + } + ] + }); + this.normalizeRules(); +}; +oop.inherits(LiquidHighlightRules, TextHighlightRules); +exports.LiquidHighlightRules = LiquidHighlightRules; + +}); + +define("ace/mode/liquid",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/html","ace/mode/javascript","ace/mode/json","ace/mode/css","ace/mode/liquid_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HtmlMode = require("./html").Mode; +var JavascriptMode = require("./javascript").Mode; +var JsonMode = require("./json").Mode; +var CssMode = require("./css").Mode; +var LiquidHighlightRules = require("./liquid_highlight_rules").LiquidHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + JsonMode.call(this); + HtmlMode.call(this); + CssMode.call(this); + JavascriptMode.call(this); + this.HighlightRules = LiquidHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = new HtmlMode().voidElements; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/liquid"; + this.snippetFileId = "ace/snippets/liquid"; +}.call(Mode.prototype)); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/liquid"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-lisp.js b/vendor/assets/javascripts/ace/mode-lisp.js index 4a400faf..5bf4b3d9 100644 --- a/vendor/assets/javascripts/ace/mode-lisp.js +++ b/vendor/assets/javascripts/ace/mode-lisp.js @@ -1,105 +1,104 @@ -define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/lisp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY Lisp.tmlanguage (UUID: 00D451C9-6B1D-11D9-8DFA-000D93589AF6) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LispHighlightRules = function() { +var LispHighlightRules = function () { var keywordControl = "case|do|let|loop|if|else|when"; var keywordOperator = "eq|neq|and|or"; var constantLanguage = "null|nil"; var supportFunctions = "cons|car|cdr|cond|lambda|format|setq|setf|quote|eval|append|list|listp|memberp|t|load|progn"; - var keywordMapper = this.createKeywordMapper({ "keyword.control": keywordControl, "keyword.operator": keywordOperator, "constant.language": constantLanguage, "support.function": supportFunctions }, "identifier", true); - - this.$rules = + this.$rules = { - "start": [ - { - token : "comment", - regex : ";.*$" - }, - { - token: ["storage.type.function-type.lisp", "text", "entity.name.function.lisp"], - regex: "(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" - }, - { - token: ["punctuation.definition.constant.character.lisp", "constant.character.lisp"], - regex: "(#)((?:\\w|[\\\\+-=<>'\"&#])+)" - }, - { - token: ["punctuation.definition.variable.lisp", "variable.other.global.lisp", "punctuation.definition.variable.lisp"], - regex: "(\\*)(\\S*)(\\*)" - }, - { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, - { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" - }, - { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - } - ], - "qqstring": [ - { - token: "constant.character.escape.lisp", - regex: "\\\\." - }, - { - token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - } - ] + "start": [ + { + token: "comment", + regex: ";.*$" + }, + { + token: ["storage.type.function-type.lisp", "text", "entity.name.function.lisp"], + regex: "(?:\\b(?:(defun|defmethod|defmacro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" + }, + { + token: ["punctuation.definition.constant.character.lisp", "constant.character.lisp"], + regex: "(#)((?:\\w|[\\\\+-=<>'\"&#])+)" + }, + { + token: ["punctuation.definition.variable.lisp", "variable.other.global.lisp", "punctuation.definition.variable.lisp"], + regex: "(\\*)(\\S*)(\\*)" + }, + { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, + { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(?:L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, + { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "string", + regex: '"(?=.)', + next: "qqstring" + } + ], + "qqstring": [ + { + token: "constant.character.escape.lisp", + regex: "\\\\." + }, + { + token: "string", + regex: '[^"\\\\]+' + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + } + ] + }; }; - -}; - oop.inherits(LispHighlightRules, TextHighlightRules); - exports.LispHighlightRules = LispHighlightRules; + }); -define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"], function(require, exports, module) { +define("ace/mode/lisp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lisp_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LispHighlightRules = require("./lisp_highlight_rules").LispHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = LispHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ";"; - this.$id = "ace/mode/lisp"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/lisp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-live_script.js b/vendor/assets/javascripts/ace/mode-live_script.js deleted file mode 100644 index 3f0afba3..00000000 --- a/vendor/assets/javascripts/ace/mode-live_script.js +++ /dev/null @@ -1,481 +0,0 @@ -define("ace/mode/live_script_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LiveScriptHighlightRules = function() { - - this.$rules = { start: - [ { token: 'punctuation.definition.comment.livescript', - regex: '\\/\\*', - push: - [ { token: 'punctuation.definition.comment.livescript', - regex: '\\*\\/', - next: 'pop' }, - { token: 'storage.type.annotation.livescriptscript', - regex: '@\\w*' }, - { defaultToken: 'comment.block.livescript' } ] }, - { token: - [ 'punctuation.definition.comment.livescript', - 'comment.line.number-sign.livescript' ], - regex: '(#)(?!\\{)(.*$)' }, - { token: - [ 'variable.parameter.function.livescript', - 'meta.inline.function.livescript', - 'storage.type.function.livescript', - 'meta.inline.function.livescript', - 'variable.parameter.function.livescript', - 'meta.inline.function.livescript', - 'storage.type.function.livescript' ], - regex: '(\\s*\\!?\\(\\s*[^()]*?\\))(\\s*)(!?[~-]{1,2}>)|(\\s*\\!?)(\\(?[^()]*?\\)?)(\\s*)(<[~-]{1,2}!?)', - comment: 'match stuff like: a -> … ' }, - { token: - [ 'keyword.operator.new.livescript', - 'meta.class.instance.constructor', - 'entity.name.type.instance.livescript' ], - regex: '(new)(\\s+)(\\w+(?:\\.\\w*)*)' }, - { token: 'keyword.illegal.livescript', - regex: '\\bp(?:ackage|r(?:ivate|otected)|ublic)|interface|enum|static|yield\\b' }, - { token: 'punctuation.definition.string.begin.livescript', - regex: '\'\'\'', - push: - [ { token: 'punctuation.definition.string.end.livescript', - regex: '\'\'\'', - next: 'pop' }, - { defaultToken: 'string.quoted.heredoc.livescript' } ] }, - { token: 'punctuation.definition.string.begin.livescript', - regex: '"""', - push: - [ { token: 'punctuation.definition.string.end.livescript', - regex: '"""', - next: 'pop' }, - { token: 'constant.character.escape.livescript', - regex: '\\\\.' }, - { include: '#interpolated_livescript' }, - { defaultToken: 'string.quoted.double.heredoc.livescript' } ] }, - { token: 'punctuation.definition.string.begin.livescript', - regex: '``', - push: - [ { token: 'punctuation.definition.string.end.livescript', - regex: '``', - next: 'pop' }, - { token: 'constant.character.escape.livescript', - regex: '\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)' }, - { defaultToken: 'string.quoted.script.livescript' } ] }, - { token: 'string.array-literal.livescript', - regex: '<\\[', - push: - [ { token: 'string.array-literal.livescript', - regex: '\\]>', - next: 'pop' }, - { defaultToken: 'string.array-literal.livescript' } ] }, - { token: 'string.regexp.livescript', - regex: '/{2}(?![\\s=/*+{}?]).*?[^\\\\]/[igmy]{0,4}(?![a-zA-Z0-9])/{2}' }, - { token: 'string.regexp.livescript', - regex: '/{2}$', - push: - [ { token: 'string.regexp.livescript', - regex: '/{2}[imgy]{0,4}', - next: 'pop' }, - { include: '#embedded_spaced_comment' }, - { include: '#interpolated_livescript' }, - { defaultToken: 'string.regexp.livescript' } ] }, - { token: 'string.regexp.livescript', - regex: '/{2}', - push: - [ { token: 'string.regexp.livescript', - regex: '/{2}[imgy]{0,4}', - next: 'pop' }, - { token: 'constant.character.escape.livescript', - regex: '\\\\(?:x[\\da-fA-F]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)' }, - { include: '#interpolated_livescript' }, - { defaultToken: 'string.regexp.livescript' } ] }, - { token: 'string.regexp.livescript', - regex: '/(?![\\s=/*+{}?]).*?[^\\\\]/[igmy]{0,4}(?![a-zA-Z0-9])' }, - { token: 'keyword.control.livescript', - regex: '\\b(?)|\\+\\+|\\+|~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<(?!\\[)|(?|(?)|&&|\\.\\.(?:\\.)?|\\s\\.\\s|\\?|\\||\\|\\||\\:|\\*=|(?)|\\+\\+|\\+|\n\t\t\t\t~(?!~?>)|==|=|!=|<=|>=|<<=|>>=|\n\t\t\t\t>>>=|<>|<(?!\\[)|(?|(?)|&&|\\.\\.(\\.)?|\\s\\.\\s|\\?|\\||\\|\\||\\:|\\*=|(?)' }, - { token: 'keyword.operator.livescript', - regex: '(?<=\\s|^)[\\[\\{](?=.*?[\\]\\}]\\s+[:=])', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?<=\\s|^)([\\[\\{])(?=.*?[\\]\\}]\\s+[:=])', - push: - [ { token: 'keyword.operator.livescript', - regex: '[\\]\\}]\\s*[:=]', - next: 'pop' }, - { include: '#variable_name' }, - { include: '#instance_variable' }, - { include: '#single_quoted_string' }, - { include: '#double_quoted_string' }, - { include: '#numeric' }, - { defaultToken: 'meta.variable.assignment.destructured.livescript' } ] }, - { token: - [ 'meta.function.livescript', - 'entity.name.function.livescript', - 'entity.name.function.livescript', - 'entity.name.function.livescript', - 'entity.name.function.livescript', - 'variable.parameter.function.livescript', - 'entity.name.function.livescript', - 'storage.type.function.livescript' ], - regex: '(\\s*)(?=[a-zA-Z\\$_])([a-zA-Z\\$_])((?:[\\w$.:-])*)(\\s*)([:=])((?:\\s*!?\\s*\\(.*\\))?)(\\s*)(!?[~-]{1,2}>)' }, - { token: 'storage.type.function.livescript', - regex: '!?[~-]{1,2}>' }, - { token: 'constant.language.boolean.true.livescript', - regex: '\\b(?|=>)\\s*$|.*[\\[{]\\s*$', - foldingStopMarker: '^\\s*$|^\\s*[}\\]]\\s*$', - keyEquivalent: '^~C', - name: 'LiveScript', - scopeName: 'source.livescript' } - - -oop.inherits(LiveScriptHighlightRules, TextHighlightRules); - -exports.LiveScriptHighlightRules = LiveScriptHighlightRules; -}); - -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/)#(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -define("ace/mode/live_script",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/live_script_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var LiveScriptHighlightRules = require("./live_script_highlight_rules").LiveScriptHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = LiveScriptHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/live_script" -}).call(Mode.prototype); - -exports.Mode = Mode; -}); diff --git a/vendor/assets/javascripts/ace/mode-livescript.js b/vendor/assets/javascripts/ace/mode-livescript.js index 5a7cfa80..37d1d732 100644 --- a/vendor/assets/javascripts/ace/mode-livescript.js +++ b/vendor/assets/javascripts/ace/mode-livescript.js @@ -1,271 +1,272 @@ -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/livescript",["require","exports","module","ace/tokenizer","ace/mode/matching_brace_outdent","ace/mode/text"], function(require, exports, module){ - var identifier, LiveScriptMode, keywordend, stringfill; - identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; - exports.Mode = LiveScriptMode = (function(superclass){ +define("ace/mode/livescript",["require","exports","module","ace/tokenizer","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/text"], function(require, exports, module){var identifier, LiveScriptMode, keywordend, stringfill; +identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; +exports.Mode = LiveScriptMode = (function (superclass) { var indenter, prototype = extend$((import$(LiveScriptMode, superclass).displayName = 'LiveScriptMode', LiveScriptMode), superclass).prototype, constructor = LiveScriptMode; - function LiveScriptMode(){ - var that; - this.$tokenizer = new (require('../tokenizer')).Tokenizer(LiveScriptMode.Rules); - if (that = require('../mode/matching_brace_outdent')) { - this.$outdent = new that.MatchingBraceOutdent; - } - this.$id = "ace/mode/livescript"; + function LiveScriptMode() { + var that; + this.$tokenizer = new (require('../tokenizer')).Tokenizer(LiveScriptMode.Rules); + if (that = require('../mode/matching_brace_outdent')) { + this.$outdent = new that.MatchingBraceOutdent; + } + this.$id = "ace/mode/livescript"; + this.$behaviour = new (require("./behaviour/cstyle").CstyleBehaviour)(); } indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); - prototype.getNextLineIndent = function(state, line, tab){ - var indent, tokens; - indent = this.$getIndent(line); - tokens = this.$tokenizer.getLineTokens(line, state).tokens; - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment')) { - if (state === 'start' && indenter.test(line)) { - indent += tab; + prototype.getNextLineIndent = function (state, line, tab) { + var indent, tokens; + indent = this.$getIndent(line); + tokens = this.$tokenizer.getLineTokens(line, state).tokens; + if (!(tokens.length && tokens[tokens.length - 1].type === 'comment')) { + if (state === 'start' && indenter.test(line)) { + indent += tab; + } } - } - return indent; + return indent; }; prototype.lineCommentStart = "#"; - prototype.blockComment = {start: "###", end: "###"}; - prototype.checkOutdent = function(state, line, input){ - var ref$; - return (ref$ = this.$outdent) != null ? ref$.checkOutdent(line, input) : void 8; + prototype.blockComment = { start: "###", end: "###" }; + prototype.checkOutdent = function (state, line, input) { + var ref$; + return (ref$ = this.$outdent) != null ? ref$.checkOutdent(line, input) : void 8; }; - prototype.autoOutdent = function(state, doc, row){ - var ref$; - return (ref$ = this.$outdent) != null ? ref$.autoOutdent(doc, row) : void 8; + prototype.autoOutdent = function (state, doc, row) { + var ref$; + return (ref$ = this.$outdent) != null ? ref$.autoOutdent(doc, row) : void 8; }; return LiveScriptMode; - }(require('../mode/text').Mode)); - keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; - stringfill = { +}(require('../mode/text').Mode)); +keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; +stringfill = { defaultToken: 'string' - }; - LiveScriptMode.Rules = { +}; +LiveScriptMode.Rules = { start: [ - { - token: 'keyword', - regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend - }, { - token: 'constant.language', - regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend - }, { - token: 'invalid.illegal', - regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend - }, { - token: 'language.support.class', - regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend - }, { - token: 'language.support.function', - regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend - }, { - token: 'variable.language', - regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend - }, { - token: 'identifier', - regex: identifier + '\\s*:(?![:=])' - }, { - token: 'variable', - regex: identifier - }, { - token: 'keyword.operator', - regex: '(?:\\.{3}|\\s+\\?)' - }, { - token: 'keyword.variable', - regex: '(?:@+|::|\\.\\.)', - next: 'key' - }, { - token: 'keyword.operator', - regex: '\\.\\s*', - next: 'key' - }, { - token: 'string', - regex: '\\\\\\S[^\\s,;)}\\]]*' - }, { - token: 'string.doc', - regex: '\'\'\'', - next: 'qdoc' - }, { - token: 'string.doc', - regex: '"""', - next: 'qqdoc' - }, { - token: 'string', - regex: '\'', - next: 'qstring' - }, { - token: 'string', - regex: '"', - next: 'qqstring' - }, { - token: 'string', - regex: '`', - next: 'js' - }, { - token: 'string', - regex: '<\\[', - next: 'words' - }, { - token: 'string.regex', - regex: '//', - next: 'heregex' - }, { - token: 'comment.doc', - regex: '/\\*', - next: 'comment' - }, { - token: 'comment', - regex: '#.*' - }, { - token: 'string.regex', - regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', - next: 'key' - }, { - token: 'constant.numeric', - regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' - }, { - token: 'lparen', - regex: '[({[]' - }, { - token: 'rparen', - regex: '[)}\\]]', - next: 'key' - }, { - token: 'keyword.operator', - regex: '[\\^!|&%+\\-]+' - }, { - token: 'text', - regex: '\\s+' - } + { + token: 'keyword', + regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend + }, { + token: 'constant.language', + regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend + }, { + token: 'invalid.illegal', + regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend + }, { + token: 'language.support.class', + regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend + }, { + token: 'language.support.function', + regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend + }, { + token: 'variable.language', + regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend + }, { + token: 'identifier', + regex: identifier + '\\s*:(?![:=])' + }, { + token: 'variable', + regex: identifier + }, { + token: 'keyword.operator', + regex: '(?:\\.{3}|\\s+\\?)' + }, { + token: 'keyword.variable', + regex: '(?:@+|::|\\.\\.)', + next: 'key' + }, { + token: 'keyword.operator', + regex: '\\.\\s*', + next: 'key' + }, { + token: 'string', + regex: '\\\\\\S[^\\s,;)}\\]]*' + }, { + token: 'string.doc', + regex: '\'\'\'', + next: 'qdoc' + }, { + token: 'string.doc', + regex: '"""', + next: 'qqdoc' + }, { + token: 'string', + regex: '\'', + next: 'qstring' + }, { + token: 'string', + regex: '"', + next: 'qqstring' + }, { + token: 'string', + regex: '`', + next: 'js' + }, { + token: 'string', + regex: '<\\[', + next: 'words' + }, { + token: 'string.regex', + regex: '//', + next: 'heregex' + }, { + token: 'comment.doc', + regex: '/\\*', + next: 'comment' + }, { + token: 'comment', + regex: '#.*' + }, { + token: 'string.regex', + regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', + next: 'key' + }, { + token: 'constant.numeric', + regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' + }, { + token: 'lparen', + regex: '[({[]' + }, { + token: 'rparen', + regex: '[)}\\]]', + next: 'key' + }, { + token: 'keyword.operator', + regex: '[\\^!|&%+\\-]+' + }, { + token: 'text', + regex: '\\s+' + } ], heregex: [ - { - token: 'string.regex', - regex: '.*?//[gimy$?]{0,4}', - next: 'start' - }, { - token: 'string.regex', - regex: '\\s*#{' - }, { - token: 'comment.regex', - regex: '\\s+(?:#.*)?' - }, { - defaultToken: 'string.regex' - } + { + token: 'string.regex', + regex: '.*?//[gimy$?]{0,4}', + next: 'start' + }, { + token: 'string.regex', + regex: '\\s*#{' + }, { + token: 'comment.regex', + regex: '\\s+(?:#.*)?' + }, { + defaultToken: 'string.regex' + } ], key: [ - { - token: 'keyword.operator', - regex: '[.?@!]+' - }, { - token: 'identifier', - regex: identifier, - next: 'start' - }, { - token: 'text', - regex: '', - next: 'start' - } + { + token: 'keyword.operator', + regex: '[.?@!]+' + }, { + token: 'identifier', + regex: identifier, + next: 'start' + }, { + token: 'text', + regex: '', + next: 'start' + } ], comment: [ - { - token: 'comment.doc', - regex: '.*?\\*/', - next: 'start' - }, { - defaultToken: 'comment.doc' - } + { + token: 'comment.doc', + regex: '.*?\\*/', + next: 'start' + }, { + defaultToken: 'comment.doc' + } ], qdoc: [ - { - token: 'string', - regex: ".*?'''", - next: 'key' - }, stringfill + { + token: 'string', + regex: ".*?'''", + next: 'key' + }, stringfill ], qqdoc: [ - { - token: 'string', - regex: '.*?"""', - next: 'key' - }, stringfill + { + token: 'string', + regex: '.*?"""', + next: 'key' + }, stringfill ], qstring: [ - { - token: 'string', - regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', - next: 'key' - }, stringfill + { + token: 'string', + regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', + next: 'key' + }, stringfill ], qqstring: [ - { - token: 'string', - regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', - next: 'key' - }, stringfill + { + token: 'string', + regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', + next: 'key' + }, stringfill ], js: [ - { - token: 'string', - regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', - next: 'key' - }, stringfill + { + token: 'string', + regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', + next: 'key' + }, stringfill ], words: [ - { - token: 'string', - regex: '.*?\\]>', - next: 'key' - }, stringfill + { + token: 'string', + regex: '.*?\\]>', + next: 'key' + }, stringfill ] - }; -function extend$(sub, sup){ - function fun(){} fun.prototype = (sub.superclass = sup).prototype; - (sub.prototype = new fun).constructor = sub; - if (typeof sup.extended == 'function') sup.extended(sub); - return sub; +}; +function extend$(sub, sup) { + function fun() { } + fun.prototype = (sub.superclass = sup).prototype; + (sub.prototype = new fun).constructor = sub; + if (typeof sup.extended == 'function') + sup.extended(sub); + return sub; } -function import$(obj, src){ - var own = {}.hasOwnProperty; - for (var key in src) if (own.call(src, key)) obj[key] = src[key]; - return obj; +function import$(obj, src) { + var own = {}.hasOwnProperty; + for (var key in src) + if (own.call(src, key)) + obj[key] = src[key]; + return obj; } -}); + +}); (function() { + window.require(["ace/mode/livescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-logiql.js b/vendor/assets/javascripts/ace/mode-logiql.js index f2169942..f22b15e5 100644 --- a/vendor/assets/javascripts/ace/mode-logiql.js +++ b/vendor/assets/javascripts/ace/mode-logiql.js @@ -1,133 +1,116 @@ -define("ace/mode/logiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/logiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* THIS FILE WAS AUTOGENERATED FROM tool\LogicBlox.tmbundle\Syntaxes\LogicBlox.tmLanguage (UUID: 59bf5022-e261-453f-b1cb-9f9fa0712413) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LogiQLHighlightRules = function() { - - this.$rules = { start: - [ { token: 'comment.block', - regex: '/\\*', - push: - [ { token: 'comment.block', regex: '\\*/', next: 'pop' }, - { defaultToken: 'comment.block' } ] +var LogiQLHighlightRules = function () { + this.$rules = { start: [{ token: 'comment.block', + regex: '/\\*', + push: [{ token: 'comment.block', regex: '\\*/', next: 'pop' }, + { defaultToken: 'comment.block' }] }, - { token: 'comment.single', - regex: '//.*' + { token: 'comment.single', + regex: '//.*' }, - { token: 'constant.numeric', - regex: '\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?' + { token: 'constant.numeric', + regex: '\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?[fd]?' }, - { token: 'string', - regex: '"', - push: - [ { token: 'string', regex: '"', next: 'pop' }, - { defaultToken: 'string' } ] + { token: 'string', + regex: '"', + push: [{ token: 'string', regex: '"', next: 'pop' }, + { defaultToken: 'string' }] }, - { token: 'constant.language', - regex: '\\b(true|false)\\b' + { token: 'constant.language', + regex: '\\b(true|false)\\b' }, - { token: 'entity.name.type.logicblox', - regex: '`[a-zA-Z_:]+(\\d|\\a)*\\b' + { token: 'entity.name.type.logicblox', + regex: '`[a-zA-Z_:]+(\\d|\\a)*\\b' }, - { token: 'keyword.start', regex: '->', comment: 'Constraint' }, - { token: 'keyword.start', regex: '-->', comment: 'Level 1 Constraint'}, - { token: 'keyword.start', regex: '<-', comment: 'Rule' }, - { token: 'keyword.start', regex: '<--', comment: 'Level 1 Rule' }, - { token: 'keyword.end', regex: '\\.', comment: 'Terminator' }, - { token: 'keyword.other', regex: '!', comment: 'Negation' }, - { token: 'keyword.other', regex: ',', comment: 'Conjunction' }, - { token: 'keyword.other', regex: ';', comment: 'Disjunction' }, - { token: 'keyword.operator', regex: '<=|>=|!=|<|>', comment: 'Equality'}, - { token: 'keyword.other', regex: '@', comment: 'Equality' }, - { token: 'keyword.operator', regex: '\\+|-|\\*|/', comment: 'Arithmetic operations'}, - { token: 'keyword', regex: '::', comment: 'Colon colon' }, - { token: 'support.function', - regex: '\\b(agg\\s*<<)', - push: - [ { include: '$self' }, - { token: 'support.function', - regex: '>>', - next: 'pop' } ] + { token: 'keyword.start', regex: '->', comment: 'Constraint' }, + { token: 'keyword.start', regex: '-->', comment: 'Level 1 Constraint' }, + { token: 'keyword.start', regex: '<-', comment: 'Rule' }, + { token: 'keyword.start', regex: '<--', comment: 'Level 1 Rule' }, + { token: 'keyword.end', regex: '\\.', comment: 'Terminator' }, + { token: 'keyword.other', regex: '!', comment: 'Negation' }, + { token: 'keyword.other', regex: ',', comment: 'Conjunction' }, + { token: 'keyword.other', regex: ';', comment: 'Disjunction' }, + { token: 'keyword.operator', regex: '<=|>=|!=|<|>', comment: 'Equality' }, + { token: 'keyword.other', regex: '@', comment: 'Equality' }, + { token: 'keyword.operator', regex: '\\+|-|\\*|/', comment: 'Arithmetic operations' }, + { token: 'keyword', regex: '::', comment: 'Colon colon' }, + { token: 'support.function', + regex: '\\b(agg\\s*<<)', + push: [{ include: '$self' }, + { token: 'support.function', + regex: '>>', + next: 'pop' }] }, - { token: 'storage.modifier', - regex: '\\b(lang:[\\w:]*)' + { token: 'storage.modifier', + regex: '\\b(lang:[\\w:]*)' }, - { token: [ 'storage.type', 'text' ], - regex: '(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)' + { token: ['storage.type', 'text'], + regex: '(export|sealed|clauses|block|alias|alias_all)(\\s*\\()(?=`)' }, - { token: 'entity.name', - regex: '[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))' + { token: 'entity.name', + regex: '[a-zA-Z_][a-zA-Z_0-9:]*(@prev|@init|@final)?(?=(\\(|\\[))' }, - { token: 'variable.parameter', - regex: '([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))' - } ] }; - + { token: 'variable.parameter', + regex: '([a-zA-Z][a-zA-Z_0-9]*|_)\\s*(?=(,|\\.|<-|->|\\)|\\]|=))' + }] }; this.normalizeRules(); }; - oop.inherits(LogiQLHighlightRules, TextHighlightRules); - exports.LogiQLHighlightRules = LogiQLHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -136,148 +119,120 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/logiql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/logiql_highlight_rules","ace/mode/folding/coffee","ace/token_iterator","ace/range","ace/mode/behaviour/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - +define("ace/mode/logiql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/logiql_highlight_rules","ace/mode/folding/coffee","ace/token_iterator","ace/range","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LogiQLHighlightRules = require("./logiql_highlight_rules").LogiQLHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; var TokenIterator = require("../token_iterator").TokenIterator; var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { +var Mode = function () { this.HighlightRules = LogiQLHighlightRules; this.foldingRules = new FoldMode(); this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - if (/comment|string/.test(endState)) + if (/comment|string/.test(endState)) return indent; if (tokens.length && tokens[tokens.length - 1].type == "comment.single") return indent; - var match = line.match(); if (/(-->|<--|<-|->|{)\s*$/.test(line)) indent += tab; return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { if (this.$outdent.checkOutdent(line, input)) return true; - if (input !== "\n" && input !== "\r\n") return false; - if (!/^\s+/.test(line)) return false; - return true; }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { if (this.$outdent.autoOutdent(doc, row)) return; var prevLine = doc.getLine(row); var match = prevLine.match(/^\s+/); var column = prevLine.lastIndexOf(".") + 1; - if (!match || !row || !column) return 0; - + if (!match || !row || !column) + return 0; var line = doc.getLine(row + 1); - var startRange = this.getMatching(doc, {row: row, column: column}); - if (!startRange || startRange.start.row == row) return 0; - + var startRange = this.getMatching(doc, { row: row, column: column }); + if (!startRange || startRange.start.row == row) + return 0; column = match[0].length; var indent = this.$getIndent(doc.getLine(startRange.start.row)); doc.replace(new Range(row + 1, 0, row + 1, column), indent); }; - - this.getMatching = function(session, row, column) { + this.getMatching = function (session, row, column) { if (row == undefined) row = session.selection.lead; if (typeof row == "object") { column = row.column; row = row.row; } - var startToken = session.getTokenAt(row, column); var KW_START = "keyword.start", KW_END = "keyword.end"; var tok; @@ -286,25 +241,32 @@ oop.inherits(Mode, TextMode); if (startToken.type == KW_START) { var it = new TokenIterator(session, row, column); it.step = it.stepForward; - } else if (startToken.type == KW_END) { + } + else if (startToken.type == KW_END) { var it = new TokenIterator(session, row, column); it.step = it.stepBackward; - } else + } + else return; - while (tok = it.step()) { if (tok.type == KW_START || tok.type == KW_END) break; } if (!tok || tok.type == startToken.type) return; - var col = it.getCurrentTokenColumn(); var row = it.getCurrentTokenRow(); return new Range(row, col, row, col + tok.value.length); }; this.$id = "ace/mode/logiql"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/logiql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-logtalk.js b/vendor/assets/javascripts/ace/mode-logtalk.js new file mode 100644 index 00000000..663ed731 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-logtalk.js @@ -0,0 +1,309 @@ +define("ace/mode/logtalk_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var LogtalkHighlightRules = function () { + this.$rules = { start: [{ token: 'punctuation.definition.comment.logtalk', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.logtalk', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.logtalk' }] }, + { todo: 'fix grouping', + token: ['comment.line.percentage.logtalk', + 'punctuation.definition.comment.logtalk'], + regex: '%.*$\\n?' }, + { todo: 'fix grouping', + token: ['storage.type.opening.logtalk', + 'punctuation.definition.storage.type.logtalk'], + regex: ':-\\s(?:object|protocol|category|module)(?=[(])' }, + { todo: 'fix grouping', + token: ['storage.type.closing.logtalk', + 'punctuation.definition.storage.type.logtalk'], + regex: ':-\\send_(?:object|protocol|category)(?=[.])' }, + { caseInsensitive: false, + token: 'storage.type.relations.logtalk', + regex: '\\b(?:complements|extends|i(?:nstantiates|mp(?:orts|lements))|specializes)(?=[(])' }, + { caseInsensitive: false, + todo: 'fix grouping', + token: ['storage.modifier.others.logtalk', + 'punctuation.definition.storage.modifier.logtalk'], + regex: ':-\\s(?:e(?:lse|ndif)|built_in|dynamic|synchronized|threaded)(?=[.])' }, + { caseInsensitive: false, + todo: 'fix grouping', + token: ['storage.modifier.others.logtalk', + 'punctuation.definition.storage.modifier.logtalk'], + regex: ':-\\s(?:c(?:alls|oinductive)|e(?:lif|n(?:coding|sure_loaded)|xport)|i(?:f|n(?:clude|itialization|fo))|reexport|set_(?:logtalk|prolog)_flag|uses)(?=[(])' }, + { caseInsensitive: false, + todo: 'fix grouping', + token: ['storage.modifier.others.logtalk', + 'punctuation.definition.storage.modifier.logtalk'], + regex: ':-\\s(?:alias|info|d(?:ynamic|iscontiguous)|m(?:eta_(?:non_terminal|predicate)|ode|ultifile)|p(?:ublic|r(?:otected|ivate))|op|use(?:s|_module)|synchronized)(?=[(])' }, + { token: 'keyword.operator.message-sending.logtalk', + regex: '(:|::|\\^\\^)' }, + { token: 'keyword.operator.external-call.logtalk', + regex: '([{}])' }, + { token: 'keyword.operator.mode.logtalk', regex: '(\\?|@)' }, + { token: 'keyword.operator.comparison.term.logtalk', + regex: '(@=<|@<|@>|@>=|==|\\\\==)' }, + { token: 'keyword.operator.comparison.arithmetic.logtalk', + regex: '(=<|<|>|>=|=:=|=\\\\=)' }, + { token: 'keyword.operator.bitwise.logtalk', + regex: '(<<|>>|/\\\\|\\\\/|\\\\)' }, + { token: 'keyword.operator.evaluable.logtalk', + regex: '\\b(?:e|pi|div|mod|rem)\\b(?![-!(^~])' }, + { token: 'keyword.operator.evaluable.logtalk', + regex: '(\\*\\*|\\+|-|\\*|/|//)' }, + { token: 'keyword.operator.misc.logtalk', + regex: '(:-|!|\\\\+|,|;|-->|->|=|\\=|\\.|=\\.\\.|\\^|\\bas\\b|\\bis\\b)' }, + { caseInsensitive: false, + token: 'support.function.evaluable.logtalk', + regex: '\\b(a(bs|cos|sin|tan|tan2)|c(eiling|os)|div|exp|flo(at(_(integer|fractional)_part)?|or)|log|m(ax|in|od)|r(em|ound)|s(i(n|gn)|qrt)|t(an|runcate)|xor)(?=[(])' }, + { token: 'support.function.control.logtalk', + regex: '\\b(?:true|fa(?:il|lse)|repeat|(?:instantiation|system)_error)\\b(?![-!(^~])' }, + { token: 'support.function.control.logtalk', + regex: '\\b((?:uninstantiation|type|domain|existence|permission|representation|evaluation|resource|syntax)_error)(?=[(])' }, + { token: 'support.function.control.logtalk', + regex: '\\b(?:ca(?:ll|tch)|ignore|throw|once)(?=[(])' }, + { token: 'support.function.chars-and-bytes-io.logtalk', + regex: '\\b(?:(?:get|p(?:eek|ut))_(c(?:har|ode)|byte)|nl)(?=[(])' }, + { token: 'support.function.chars-and-bytes-io.logtalk', + regex: '\\bnl\\b' }, + { token: 'support.function.atom-term-processing.logtalk', + regex: '\\b(?:atom_(?:length|c(?:hars|o(?:ncat|des)))|sub_atom|char_code|number_c(?:har|ode)s)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.term-testing.logtalk', + regex: '\\b(?:var|atom(ic)?|integer|float|c(?:allable|ompound)|n(?:onvar|umber)|ground|acyclic_term)(?=[(])' }, + { token: 'support.function.term-comparison.logtalk', + regex: '\\b(compare)(?=[(])' }, + { token: 'support.function.term-io.logtalk', + regex: '\\b(?:read(_term)?|write(?:q|_(?:canonical|term))?|(current_)?(?:char_conversion|op))(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.term-creation-and-decomposition.logtalk', + regex: '\\b(arg|copy_term|functor|numbervars|term_variables)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.term-unification.logtalk', + regex: '\\b(subsumes_term|unify_with_occurs_check)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.stream-selection-and-control.logtalk', + regex: '\\b(?:(?:se|curren)t_(?:in|out)put|open|close|flush_output|stream_property|at_end_of_stream|set_stream_position)(?=[(])' }, + { token: 'support.function.stream-selection-and-control.logtalk', + regex: '\\b(?:flush_output|at_end_of_stream)\\b' }, + { token: 'support.function.prolog-flags.logtalk', + regex: '\\b((?:se|curren)t_prolog_flag)(?=[(])' }, + { token: 'support.function.compiling-and-loading.logtalk', + regex: '\\b(logtalk_(?:compile|l(?:ibrary_path|oad|oad_context)|make(_target_action)?))(?=[(])' }, + { token: 'support.function.compiling-and-loading.logtalk', + regex: '\\b(logtalk_make)\\b' }, + { caseInsensitive: false, + token: 'support.function.event-handling.logtalk', + regex: '\\b(?:(?:abolish|define)_events|current_event)(?=[(])' }, + { token: 'support.function.implementation-defined-hooks.logtalk', + regex: '\\b(?:(?:create|current|set)_logtalk_flag|halt)(?=[(])' }, + { token: 'support.function.implementation-defined-hooks.logtalk', + regex: '\\b(halt)\\b' }, + { token: 'support.function.sorting.logtalk', + regex: '\\b((key)?(sort))(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.entity-creation-and-abolishing.logtalk', + regex: '\\b((c(?:reate|urrent)|abolish)_(?:object|protocol|category))(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.reflection.logtalk', + regex: '\\b((object|protocol|category)_property|co(mplements_object|nforms_to_protocol)|extends_(object|protocol|category)|imp(orts_category|lements_protocol)|(instantiat|specializ)es_class)(?=[(])' }, + { token: 'support.function.logtalk', + regex: '\\b((?:for|retract)all)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.execution-context.logtalk', + regex: '\\b(?:context|parameter|se(?:lf|nder)|this)(?=[(])' }, + { token: 'support.function.database.logtalk', + regex: '\\b(?:a(?:bolish|ssert(?:a|z))|clause|retract(all)?)(?=[(])' }, + { token: 'support.function.all-solutions.logtalk', + regex: '\\b((?:bag|set)of|f(?:ind|or)all)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.multi-threading.logtalk', + regex: '\\b(threaded(_(ca(?:ll|ncel)|once|ignore|exit|peek|wait|notify))?)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.engines.logtalk', + regex: '\\b(threaded_engine(_(create|destroy|self|next(?:_reified)?|yield|post|fetch))?)(?=[(])' }, + { caseInsensitive: false, + token: 'support.function.reflection.logtalk', + regex: '\\b(?:current_predicate|predicate_property)(?=[(])' }, + { token: 'support.function.event-handler.logtalk', + regex: '\\b(?:before|after)(?=[(])' }, + { token: 'support.function.message-forwarding-handler.logtalk', + regex: '\\b(forward)(?=[(])' }, + { token: 'support.function.grammar-rule.logtalk', + regex: '\\b(?:expand_(?:goal|term)|(?:goal|term)_expansion|phrase)(?=[(])' }, + { token: 'punctuation.definition.string.begin.logtalk', + regex: '\'', + push: [{ token: 'constant.character.escape.logtalk', + regex: '\\\\([\\\\abfnrtv"\']|(x[a-fA-F0-9]+|[0-7]+)\\\\)' }, + { token: 'punctuation.definition.string.end.logtalk', + regex: '\'', + next: 'pop' }, + { defaultToken: 'string.quoted.single.logtalk' }] }, + { token: 'punctuation.definition.string.begin.logtalk', + regex: '"', + push: [{ token: 'constant.character.escape.logtalk', + regex: '\\\\([\\\\abfnrtv"\']|(x[a-fA-F0-9]+|[0-7]+)\\\\)' }, + { token: 'punctuation.definition.string.end.logtalk', + regex: '"', + next: 'pop' }, + { defaultToken: 'string.quoted.double.logtalk' }] }, + { token: 'constant.numeric.logtalk', + regex: '\\b(0b[0-1]+|0o[0-7]+|0x[0-9a-fA-F]+)\\b' }, + { token: 'constant.numeric.logtalk', + regex: '\\b(0\'\\\\.|0\'.|0\'\'|0\'")' }, + { token: 'constant.numeric.logtalk', + regex: '\\b(\\d+\\.?\\d*((e|E)(\\+|-)?\\d+)?)\\b' }, + { token: 'variable.other.logtalk', + regex: '\\b([A-Z_][A-Za-z0-9_]*)\\b' }] }; + this.normalizeRules(); +}; +oop.inherits(LogtalkHighlightRules, TextHighlightRules); +exports.LogtalkHighlightRules = LogtalkHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/logtalk",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/logtalk_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var Tokenizer = require("../tokenizer").Tokenizer; +var LogtalkHighlightRules = require("./logtalk_highlight_rules").LogtalkHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = LogtalkHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "%"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/logtalk"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/logtalk"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-lsl.js b/vendor/assets/javascripts/ace/mode-lsl.js index 5c4c7ad0..77be900b 100644 --- a/vendor/assets/javascripts/ace/mode-lsl.js +++ b/vendor/assets/javascripts/ace/mode-lsl.js @@ -1,219 +1,179 @@ -define("ace/mode/lsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/lsl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - oop.inherits(LSLHighlightRules, TextHighlightRules); - function LSLHighlightRules() { var keywordMapper = this.createKeywordMapper({ - "constant.language.float.lsl" : "DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI", + "constant.language.float.lsl": "DEG_TO_RAD|PI|PI_BY_TWO|RAD_TO_DEG|SQRT2|TWO_PI", "constant.language.integer.lsl": "ACTIVE|AGENT|AGENT_ALWAYS_RUN|AGENT_ATTACHMENTS|AGENT_AUTOPILOT|AGENT_AWAY|AGENT_BUSY|AGENT_BY_LEGACY_NAME|AGENT_BY_USERNAME|AGENT_CROUCHING|AGENT_FLYING|AGENT_IN_AIR|AGENT_LIST_PARCEL|AGENT_LIST_PARCEL_OWNER|AGENT_LIST_REGION|AGENT_MOUSELOOK|AGENT_ON_OBJECT|AGENT_SCRIPTED|AGENT_SITTING|AGENT_TYPING|AGENT_WALKING|ALL_SIDES|ANIM_ON|ATTACH_AVATAR_CENTER|ATTACH_BACK|ATTACH_BELLY|ATTACH_CHEST|ATTACH_CHIN|ATTACH_HEAD|ATTACH_HUD_BOTTOM|ATTACH_HUD_BOTTOM_LEFT|ATTACH_HUD_BOTTOM_RIGHT|ATTACH_HUD_CENTER_1|ATTACH_HUD_CENTER_2|ATTACH_HUD_TOP_CENTER|ATTACH_HUD_TOP_LEFT|ATTACH_HUD_TOP_RIGHT|ATTACH_LEAR|ATTACH_LEFT_PEC|ATTACH_LEYE|ATTACH_LFOOT|ATTACH_LHAND|ATTACH_LHIP|ATTACH_LLARM|ATTACH_LLLEG|ATTACH_LSHOULDER|ATTACH_LUARM|ATTACH_LULEG|ATTACH_MOUTH|ATTACH_NECK|ATTACH_NOSE|ATTACH_PELVIS|ATTACH_REAR|ATTACH_REYE|ATTACH_RFOOT|ATTACH_RHAND|ATTACH_RHIP|ATTACH_RIGHT_PEC|ATTACH_RLARM|ATTACH_RLLEG|ATTACH_RSHOULDER|ATTACH_RUARM|ATTACH_RULEG|AVOID_CHARACTERS|AVOID_DYNAMIC_OBSTACLES|AVOID_NONE|CAMERA_ACTIVE|CAMERA_BEHINDNESS_ANGLE|CAMERA_BEHINDNESS_LAG|CAMERA_DISTANCE|CAMERA_FOCUS|CAMERA_FOCUS_LAG|CAMERA_FOCUS_LOCKED|CAMERA_FOCUS_OFFSET|CAMERA_FOCUS_THRESHOLD|CAMERA_PITCH|CAMERA_POSITION|CAMERA_POSITION_LAG|CAMERA_POSITION_LOCKED|CAMERA_POSITION_THRESHOLD|CHANGED_ALLOWED_DROP|CHANGED_COLOR|CHANGED_INVENTORY|CHANGED_LINK|CHANGED_MEDIA|CHANGED_OWNER|CHANGED_REGION|CHANGED_REGION_START|CHANGED_SCALE|CHANGED_SHAPE|CHANGED_TELEPORT|CHANGED_TEXTURE|CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES|CHARACTER_AVOIDANCE_MODE|CHARACTER_CMD_JUMP|CHARACTER_CMD_SMOOTH_STOP|CHARACTER_CMD_STOP|CHARACTER_DESIRED_SPEED|CHARACTER_DESIRED_TURN_SPEED|CHARACTER_LENGTH|CHARACTER_MAX_ACCEL|CHARACTER_MAX_DECEL|CHARACTER_MAX_SPEED|CHARACTER_MAX_TURN_RADIUS|CHARACTER_ORIENTATION|CHARACTER_RADIUS|CHARACTER_STAY_WITHIN_PARCEL|CHARACTER_TYPE|CHARACTER_TYPE_A|CHARACTER_TYPE_B|CHARACTER_TYPE_C|CHARACTER_TYPE_D|CHARACTER_TYPE_NONE|CLICK_ACTION_BUY|CLICK_ACTION_NONE|CLICK_ACTION_OPEN|CLICK_ACTION_OPEN_MEDIA|CLICK_ACTION_PAY|CLICK_ACTION_PLAY|CLICK_ACTION_SIT|CLICK_ACTION_TOUCH|CONTENT_TYPE_ATOM|CONTENT_TYPE_FORM|CONTENT_TYPE_HTML|CONTENT_TYPE_JSON|CONTENT_TYPE_LLSD|CONTENT_TYPE_RSS|CONTENT_TYPE_TEXT|CONTENT_TYPE_XHTML|CONTENT_TYPE_XML|CONTROL_BACK|CONTROL_DOWN|CONTROL_FWD|CONTROL_LBUTTON|CONTROL_LEFT|CONTROL_ML_LBUTTON|CONTROL_RIGHT|CONTROL_ROT_LEFT|CONTROL_ROT_RIGHT|CONTROL_UP|DATA_BORN|DATA_NAME|DATA_ONLINE|DATA_PAYINFO|DATA_SIM_POS|DATA_SIM_RATING|DATA_SIM_STATUS|DEBUG_CHANNEL|DENSITY|ERR_GENERIC|ERR_MALFORMED_PARAMS|ERR_PARCEL_PERMISSIONS|ERR_RUNTIME_PERMISSIONS|ERR_THROTTLED|ESTATE_ACCESS_ALLOWED_AGENT_ADD|ESTATE_ACCESS_ALLOWED_AGENT_REMOVE|ESTATE_ACCESS_ALLOWED_GROUP_ADD|ESTATE_ACCESS_ALLOWED_GROUP_REMOVE|ESTATE_ACCESS_BANNED_AGENT_ADD|ESTATE_ACCESS_BANNED_AGENT_REMOVE|FALSE|FORCE_DIRECT_PATH|FRICTION|GCNP_RADIUS|GCNP_STATIC|GRAVITY_MULTIPLIER|HORIZONTAL|HTTP_BODY_MAXLENGTH|HTTP_BODY_TRUNCATED|HTTP_CUSTOM_HEADER|HTTP_METHOD|HTTP_MIMETYPE|HTTP_PRAGMA_NO_CACHE|HTTP_VERBOSE_THROTTLE|HTTP_VERIFY_CERT|INVENTORY_ALL|INVENTORY_ANIMATION|INVENTORY_BODYPART|INVENTORY_CLOTHING|INVENTORY_GESTURE|INVENTORY_LANDMARK|INVENTORY_NONE|INVENTORY_NOTECARD|INVENTORY_OBJECT|INVENTORY_SCRIPT|INVENTORY_SOUND|INVENTORY_TEXTURE|JSON_APPEND|KFM_CMD_PAUSE|KFM_CMD_PLAY|KFM_CMD_SET_MODE|KFM_CMD_STOP|KFM_COMMAND|KFM_DATA|KFM_FORWARD|KFM_LOOP|KFM_MODE|KFM_PING_PONG|KFM_REVERSE|KFM_ROTATION|KFM_TRANSLATION|LAND_LEVEL|LAND_LOWER|LAND_NOISE|LAND_RAISE|LAND_REVERT|LAND_SMOOTH|LINK_ALL_CHILDREN|LINK_ALL_OTHERS|LINK_ROOT|LINK_SET|LINK_THIS|LIST_STAT_GEOMETRIC_MEAN|LIST_STAT_MAX|LIST_STAT_MEAN|LIST_STAT_MEDIAN|LIST_STAT_MIN|LIST_STAT_NUM_COUNT|LIST_STAT_RANGE|LIST_STAT_STD_DEV|LIST_STAT_SUM|LIST_STAT_SUM_SQUARES|LOOP|MASK_BASE|MASK_EVERYONE|MASK_GROUP|MASK_NEXT|MASK_OWNER|OBJECT_ATTACHED_POINT|OBJECT_BODY_SHAPE_TYPE|OBJECT_CHARACTER_TIME|OBJECT_CLICK_ACTION|OBJECT_CREATOR|OBJECT_DESC|OBJECT_GROUP|OBJECT_HOVER_HEIGHT|OBJECT_LAST_OWNER_ID|OBJECT_NAME|OBJECT_OWNER|OBJECT_PATHFINDING_TYPE|OBJECT_PHANTOM|OBJECT_PHYSICS|OBJECT_PHYSICS_COST|OBJECT_POS|OBJECT_PRIM_EQUIVALENCE|OBJECT_RENDER_WEIGHT|OBJECT_RETURN_PARCEL|OBJECT_RETURN_PARCEL_OWNER|OBJECT_RETURN_REGION|OBJECT_ROOT|OBJECT_ROT|OBJECT_RUNNING_SCRIPT_COUNT|OBJECT_SCRIPT_MEMORY|OBJECT_SCRIPT_TIME|OBJECT_SERVER_COST|OBJECT_STREAMING_COST|OBJECT_TEMP_ON_REZ|OBJECT_TOTAL_SCRIPT_COUNT|OBJECT_UNKNOWN_DETAIL|OBJECT_VELOCITY|OPT_AVATAR|OPT_CHARACTER|OPT_EXCLUSION_VOLUME|OPT_LEGACY_LINKSET|OPT_MATERIAL_VOLUME|OPT_OTHER|OPT_STATIC_OBSTACLE|OPT_WALKABLE|PARCEL_COUNT_GROUP|PARCEL_COUNT_OTHER|PARCEL_COUNT_OWNER|PARCEL_COUNT_SELECTED|PARCEL_COUNT_TEMP|PARCEL_COUNT_TOTAL|PARCEL_DETAILS_AREA|PARCEL_DETAILS_DESC|PARCEL_DETAILS_GROUP|PARCEL_DETAILS_ID|PARCEL_DETAILS_NAME|PARCEL_DETAILS_OWNER|PARCEL_DETAILS_SEE_AVATARS|PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS|PARCEL_FLAG_ALLOW_CREATE_OBJECTS|PARCEL_FLAG_ALLOW_DAMAGE|PARCEL_FLAG_ALLOW_FLY|PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY|PARCEL_FLAG_ALLOW_GROUP_SCRIPTS|PARCEL_FLAG_ALLOW_LANDMARK|PARCEL_FLAG_ALLOW_SCRIPTS|PARCEL_FLAG_ALLOW_TERRAFORM|PARCEL_FLAG_LOCAL_SOUND_ONLY|PARCEL_FLAG_RESTRICT_PUSHOBJECT|PARCEL_FLAG_USE_ACCESS_GROUP|PARCEL_FLAG_USE_ACCESS_LIST|PARCEL_FLAG_USE_BAN_LIST|PARCEL_FLAG_USE_LAND_PASS_LIST|PARCEL_MEDIA_COMMAND_AGENT|PARCEL_MEDIA_COMMAND_AUTO_ALIGN|PARCEL_MEDIA_COMMAND_DESC|PARCEL_MEDIA_COMMAND_LOOP|PARCEL_MEDIA_COMMAND_LOOP_SET|PARCEL_MEDIA_COMMAND_PAUSE|PARCEL_MEDIA_COMMAND_PLAY|PARCEL_MEDIA_COMMAND_SIZE|PARCEL_MEDIA_COMMAND_STOP|PARCEL_MEDIA_COMMAND_TEXTURE|PARCEL_MEDIA_COMMAND_TIME|PARCEL_MEDIA_COMMAND_TYPE|PARCEL_MEDIA_COMMAND_UNLOAD|PARCEL_MEDIA_COMMAND_URL|PASS_ALWAYS|PASS_IF_NOT_HANDLED|PASS_NEVER|PASSIVE|PATROL_PAUSE_AT_WAYPOINTS|PAYMENT_INFO_ON_FILE|PAYMENT_INFO_USED|PAY_DEFAULT|PAY_HIDE|PERMISSION_ATTACH|PERMISSION_CHANGE_LINKS|PERMISSION_CONTROL_CAMERA|PERMISSION_DEBIT|PERMISSION_OVERRIDE_ANIMATIONS|PERMISSION_RETURN_OBJECTS|PERMISSION_SILENT_ESTATE_MANAGEMENT|PERMISSION_TAKE_CONTROLS|PERMISSION_TELEPORT|PERMISSION_TRACK_CAMERA|PERMISSION_TRIGGER_ANIMATION|PERM_ALL|PERM_COPY|PERM_MODIFY|PERM_MOVE|PERM_TRANSFER|PING_PONG|PRIM_ALPHA_MODE|PRIM_ALPHA_MODE_BLEND|PRIM_ALPHA_MODE_EMISSIVE|PRIM_ALPHA_MODE_MASK|PRIM_ALPHA_MODE_NONE|PRIM_BUMP_BARK|PRIM_BUMP_BLOBS|PRIM_BUMP_BRICKS|PRIM_BUMP_BRIGHT|PRIM_BUMP_CHECKER|PRIM_BUMP_CONCRETE|PRIM_BUMP_DARK|PRIM_BUMP_DISKS|PRIM_BUMP_GRAVEL|PRIM_BUMP_LARGETILE|PRIM_BUMP_NONE|PRIM_BUMP_SHINY|PRIM_BUMP_SIDING|PRIM_BUMP_STONE|PRIM_BUMP_STUCCO|PRIM_BUMP_SUCTION|PRIM_BUMP_TILE|PRIM_BUMP_WEAVE|PRIM_BUMP_WOOD|PRIM_COLOR|PRIM_DESC|PRIM_FLEXIBLE|PRIM_FULLBRIGHT|PRIM_GLOW|PRIM_HOLE_CIRCLE|PRIM_HOLE_DEFAULT|PRIM_HOLE_SQUARE|PRIM_HOLE_TRIANGLE|PRIM_LINK_TARGET|PRIM_MATERIAL|PRIM_MATERIAL_FLESH|PRIM_MATERIAL_GLASS|PRIM_MATERIAL_METAL|PRIM_MATERIAL_PLASTIC|PRIM_MATERIAL_RUBBER|PRIM_MATERIAL_STONE|PRIM_MATERIAL_WOOD|PRIM_MEDIA_ALT_IMAGE_ENABLE|PRIM_MEDIA_AUTO_LOOP|PRIM_MEDIA_AUTO_PLAY|PRIM_MEDIA_AUTO_SCALE|PRIM_MEDIA_AUTO_ZOOM|PRIM_MEDIA_CONTROLS|PRIM_MEDIA_CONTROLS_MINI|PRIM_MEDIA_CONTROLS_STANDARD|PRIM_MEDIA_CURRENT_URL|PRIM_MEDIA_FIRST_CLICK_INTERACT|PRIM_MEDIA_HEIGHT_PIXELS|PRIM_MEDIA_HOME_URL|PRIM_MEDIA_MAX_HEIGHT_PIXELS|PRIM_MEDIA_MAX_URL_LENGTH|PRIM_MEDIA_MAX_WHITELIST_COUNT|PRIM_MEDIA_MAX_WHITELIST_SIZE|PRIM_MEDIA_MAX_WIDTH_PIXELS|PRIM_MEDIA_PARAM_MAX|PRIM_MEDIA_PERMS_CONTROL|PRIM_MEDIA_PERMS_INTERACT|PRIM_MEDIA_PERM_ANYONE|PRIM_MEDIA_PERM_GROUP|PRIM_MEDIA_PERM_NONE|PRIM_MEDIA_PERM_OWNER|PRIM_MEDIA_WHITELIST|PRIM_MEDIA_WHITELIST_ENABLE|PRIM_MEDIA_WIDTH_PIXELS|PRIM_NAME|PRIM_NORMAL|PRIM_OMEGA|PRIM_PHANTOM|PRIM_PHYSICS|PRIM_PHYSICS_SHAPE_CONVEX|PRIM_PHYSICS_SHAPE_NONE|PRIM_PHYSICS_SHAPE_PRIM|PRIM_PHYSICS_SHAPE_TYPE|PRIM_POINT_LIGHT|PRIM_POSITION|PRIM_POS_LOCAL|PRIM_ROTATION|PRIM_ROT_LOCAL|PRIM_SCULPT_FLAG_INVERT|PRIM_SCULPT_FLAG_MIRROR|PRIM_SCULPT_TYPE_CYLINDER|PRIM_SCULPT_TYPE_MASK|PRIM_SCULPT_TYPE_PLANE|PRIM_SCULPT_TYPE_SPHERE|PRIM_SCULPT_TYPE_TORUS|PRIM_SHINY_HIGH|PRIM_SHINY_LOW|PRIM_SHINY_MEDIUM|PRIM_SHINY_NONE|PRIM_SIZE|PRIM_SLICE|PRIM_SPECULAR|PRIM_TEMP_ON_REZ|PRIM_TEXGEN|PRIM_TEXGEN_DEFAULT|PRIM_TEXGEN_PLANAR|PRIM_TEXT|PRIM_TEXTURE|PRIM_TYPE|PRIM_TYPE_BOX|PRIM_TYPE_CYLINDER|PRIM_TYPE_PRISM|PRIM_TYPE_RING|PRIM_TYPE_SCULPT|PRIM_TYPE_SPHERE|PRIM_TYPE_TORUS|PRIM_TYPE_TUBE|PROFILE_NONE|PROFILE_SCRIPT_MEMORY|PSYS_PART_BF_DEST_COLOR|PSYS_PART_BF_ONE|PSYS_PART_BF_ONE_MINUS_DEST_COLOR|PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA|PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR|PSYS_PART_BF_SOURCE_ALPHA|PSYS_PART_BF_SOURCE_COLOR|PSYS_PART_BF_ZERO|PSYS_PART_BLEND_FUNC_DEST|PSYS_PART_BLEND_FUNC_SOURCE|PSYS_PART_BOUNCE_MASK|PSYS_PART_EMISSIVE_MASK|PSYS_PART_END_ALPHA|PSYS_PART_END_COLOR|PSYS_PART_END_GLOW|PSYS_PART_END_SCALE|PSYS_PART_FLAGS|PSYS_PART_FOLLOW_SRC_MASK|PSYS_PART_FOLLOW_VELOCITY_MASK|PSYS_PART_INTERP_COLOR_MASK|PSYS_PART_INTERP_SCALE_MASK|PSYS_PART_MAX_AGE|PSYS_PART_RIBBON_MASK|PSYS_PART_START_ALPHA|PSYS_PART_START_COLOR|PSYS_PART_START_GLOW|PSYS_PART_START_SCALE|PSYS_PART_TARGET_LINEAR_MASK|PSYS_PART_TARGET_POS_MASK|PSYS_PART_WIND_MASK|PSYS_SRC_ACCEL|PSYS_SRC_ANGLE_BEGIN|PSYS_SRC_ANGLE_END|PSYS_SRC_BURST_PART_COUNT|PSYS_SRC_BURST_RADIUS|PSYS_SRC_BURST_RATE|PSYS_SRC_BURST_SPEED_MAX|PSYS_SRC_BURST_SPEED_MIN|PSYS_SRC_MAX_AGE|PSYS_SRC_OMEGA|PSYS_SRC_PATTERN|PSYS_SRC_PATTERN_ANGLE|PSYS_SRC_PATTERN_ANGLE_CONE|PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY|PSYS_SRC_PATTERN_DROP|PSYS_SRC_PATTERN_EXPLODE|PSYS_SRC_TARGET_KEY|PSYS_SRC_TEXTURE|PUBLIC_CHANNEL|PURSUIT_FUZZ_FACTOR|PURSUIT_GOAL_TOLERANCE|PURSUIT_INTERCEPT|PURSUIT_OFFSET|PU_EVADE_HIDDEN|PU_EVADE_SPOTTED|PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED|PU_FAILURE_INVALID_GOAL|PU_FAILURE_INVALID_START|PU_FAILURE_NO_NAVMESH|PU_FAILURE_NO_VALID_DESTINATION|PU_FAILURE_OTHER|PU_FAILURE_PARCEL_UNREACHABLE|PU_FAILURE_TARGET_GONE|PU_FAILURE_UNREACHABLE|PU_GOAL_REACHED|PU_SLOWDOWN_DISTANCE_REACHED|RCERR_CAST_TIME_EXCEEDED|RCERR_SIM_PERF_LOW|RCERR_UNKNOWN|RC_DATA_FLAGS|RC_DETECT_PHANTOM|RC_GET_LINK_NUM|RC_GET_NORMAL|RC_GET_ROOT_KEY|RC_MAX_HITS|RC_REJECT_AGENTS|RC_REJECT_LAND|RC_REJECT_NONPHYSICAL|RC_REJECT_PHYSICAL|RC_REJECT_TYPES|REGION_FLAG_ALLOW_DAMAGE|REGION_FLAG_ALLOW_DIRECT_TELEPORT|REGION_FLAG_BLOCK_FLY|REGION_FLAG_BLOCK_TERRAFORM|REGION_FLAG_DISABLE_COLLISIONS|REGION_FLAG_DISABLE_PHYSICS|REGION_FLAG_FIXED_SUN|REGION_FLAG_RESTRICT_PUSHOBJECT|REGION_FLAG_SANDBOX|REMOTE_DATA_CHANNEL|REMOTE_DATA_REPLY|REMOTE_DATA_REQUEST|REQUIRE_LINE_OF_SIGHT|RESTITUTION|REVERSE|ROTATE|SCALE|SCRIPTED|SIM_STAT_PCT_CHARS_STEPPED|SMOOTH|STATUS_BLOCK_GRAB|STATUS_BLOCK_GRAB_OBJECT|STATUS_BOUNDS_ERROR|STATUS_CAST_SHADOWS|STATUS_DIE_AT_EDGE|STATUS_INTERNAL_ERROR|STATUS_MALFORMED_PARAMS|STATUS_NOT_FOUND|STATUS_NOT_SUPPORTED|STATUS_OK|STATUS_PHANTOM|STATUS_PHYSICS|STATUS_RETURN_AT_EDGE|STATUS_ROTATE_X|STATUS_ROTATE_Y|STATUS_ROTATE_Z|STATUS_SANDBOX|STATUS_TYPE_MISMATCH|STATUS_WHITELIST_FAILED|STRING_TRIM|STRING_TRIM_HEAD|STRING_TRIM_TAIL|TOUCH_INVALID_FACE|TRAVERSAL_TYPE|TRAVERSAL_TYPE_FAST|TRAVERSAL_TYPE_NONE|TRAVERSAL_TYPE_SLOW|TRUE|TYPE_FLOAT|TYPE_INTEGER|TYPE_INVALID|TYPE_KEY|TYPE_ROTATION|TYPE_STRING|TYPE_VECTOR|VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY|VEHICLE_ANGULAR_DEFLECTION_TIMESCALE|VEHICLE_ANGULAR_FRICTION_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE|VEHICLE_ANGULAR_MOTOR_DIRECTION|VEHICLE_ANGULAR_MOTOR_TIMESCALE|VEHICLE_BANKING_EFFICIENCY|VEHICLE_BANKING_MIX|VEHICLE_BANKING_TIMESCALE|VEHICLE_BUOYANCY|VEHICLE_FLAG_CAMERA_DECOUPLED|VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT|VEHICLE_FLAG_HOVER_TERRAIN_ONLY|VEHICLE_FLAG_HOVER_UP_ONLY|VEHICLE_FLAG_HOVER_WATER_ONLY|VEHICLE_FLAG_LIMIT_MOTOR_UP|VEHICLE_FLAG_LIMIT_ROLL_ONLY|VEHICLE_FLAG_MOUSELOOK_BANK|VEHICLE_FLAG_MOUSELOOK_STEER|VEHICLE_FLAG_NO_DEFLECTION_UP|VEHICLE_HOVER_EFFICIENCY|VEHICLE_HOVER_HEIGHT|VEHICLE_HOVER_TIMESCALE|VEHICLE_LINEAR_DEFLECTION_EFFICIENCY|VEHICLE_LINEAR_DEFLECTION_TIMESCALE|VEHICLE_LINEAR_FRICTION_TIMESCALE|VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE|VEHICLE_LINEAR_MOTOR_DIRECTION|VEHICLE_LINEAR_MOTOR_OFFSET|VEHICLE_LINEAR_MOTOR_TIMESCALE|VEHICLE_REFERENCE_FRAME|VEHICLE_TYPE_AIRPLANE|VEHICLE_TYPE_BALLOON|VEHICLE_TYPE_BOAT|VEHICLE_TYPE_CAR|VEHICLE_TYPE_NONE|VEHICLE_TYPE_SLED|VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY|VEHICLE_VERTICAL_ATTRACTION_TIMESCALE|VERTICAL|WANDER_PAUSE_AT_WAYPOINTS|XP_ERROR_EXPERIENCES_DISABLED|XP_ERROR_EXPERIENCE_DISABLED|XP_ERROR_EXPERIENCE_SUSPENDED|XP_ERROR_INVALID_EXPERIENCE|XP_ERROR_INVALID_PARAMETERS|XP_ERROR_KEY_NOT_FOUND|XP_ERROR_MATURITY_EXCEEDED|XP_ERROR_NONE|XP_ERROR_NOT_FOUND|XP_ERROR_NOT_PERMITTED|XP_ERROR_NO_EXPERIENCE|XP_ERROR_QUOTA_EXCEEDED|XP_ERROR_RETRY_UPDATE|XP_ERROR_STORAGE_EXCEPTION|XP_ERROR_STORE_DISABLED|XP_ERROR_THROTTLED|XP_ERROR_UNKNOWN_ERROR", - "constant.language.integer.boolean.lsl" : "FALSE|TRUE", - "constant.language.quaternion.lsl" : "ZERO_ROTATION", - "constant.language.string.lsl" : "EOF|JSON_ARRAY|JSON_DELETE|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED", - "constant.language.vector.lsl" : "TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR", + "constant.language.integer.boolean.lsl": "FALSE|TRUE", + "constant.language.quaternion.lsl": "ZERO_ROTATION", + "constant.language.string.lsl": "EOF|JSON_ARRAY|JSON_DELETE|JSON_FALSE|JSON_INVALID|JSON_NULL|JSON_NUMBER|JSON_OBJECT|JSON_STRING|JSON_TRUE|NULL_KEY|TEXTURE_BLANK|TEXTURE_DEFAULT|TEXTURE_MEDIA|TEXTURE_PLYWOOD|TEXTURE_TRANSPARENT|URL_REQUEST_DENIED|URL_REQUEST_GRANTED", + "constant.language.vector.lsl": "TOUCH_INVALID_TEXCOORD|TOUCH_INVALID_VECTOR|ZERO_VECTOR", "invalid.broken.lsl": "LAND_LARGE_BRUSH|LAND_MEDIUM_BRUSH|LAND_SMALL_BRUSH", - "invalid.deprecated.lsl" : "ATTACH_LPEC|ATTACH_RPEC|DATA_RATING|OBJECT_ATTACHMENT_GEOMETRY_BYTES|OBJECT_ATTACHMENT_SURFACE_AREA|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llClearExperiencePermissions|llCloud|llGetExperienceList|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect", + "invalid.deprecated.lsl": "ATTACH_LPEC|ATTACH_RPEC|DATA_RATING|OBJECT_ATTACHMENT_GEOMETRY_BYTES|OBJECT_ATTACHMENT_SURFACE_AREA|PRIM_CAST_SHADOWS|PRIM_MATERIAL_LIGHT|PRIM_TYPE_LEGACY|PSYS_SRC_INNERANGLE|PSYS_SRC_OUTERANGLE|VEHICLE_FLAG_NO_FLY_UP|llClearExperiencePermissions|llCloud|llGetExperienceList|llMakeExplosion|llMakeFire|llMakeFountain|llMakeSmoke|llRemoteDataSetRegion|llSound|llSoundPreload|llXorBase64Strings|llXorBase64StringsCorrect", "invalid.illegal.lsl": "event", "invalid.unimplemented.lsl": "CHARACTER_MAX_ANGULAR_ACCEL|CHARACTER_MAX_ANGULAR_SPEED|CHARACTER_TURN_SPEED_MULTIPLIER|PERMISSION_CHANGE_JOINTS|PERMISSION_CHANGE_PERMISSIONS|PERMISSION_EXPERIENCE|PERMISSION_RELEASE_OWNERSHIP|PERMISSION_REMAP_CONTROLS|PRIM_PHYSICS_MATERIAL|PSYS_SRC_OBJ_REL_MASK|llCollisionSprite|llPointAt|llRefreshPrimURL|llReleaseCamera|llRemoteLoadScript|llSetPrimURL|llStopPointAt|llTakeCamera", "reserved.godmode.lsl": "llGodLikeRezObject|llSetInventoryPermMask|llSetObjectPermMask", - "reserved.log.lsl" : "print", - "keyword.control.lsl" : "do|else|for|if|jump|return|while", - "storage.type.lsl" : "float|integer|key|list|quaternion|rotation|string|vector", + "reserved.log.lsl": "print", + "keyword.control.lsl": "do|else|for|if|jump|return|while", + "storage.type.lsl": "float|integer|key|list|quaternion|rotation|string|vector", "support.function.lsl": "llAbs|llAcos|llAddToLandBanList|llAddToLandPassList|llAdjustSoundVolume|llAgentInExperience|llAllowInventoryDrop|llAngleBetween|llApplyImpulse|llApplyRotationalImpulse|llAsin|llAtan2|llAttachToAvatar|llAttachToAvatarTemp|llAvatarOnLinkSitTarget|llAvatarOnSitTarget|llAxes2Rot|llAxisAngle2Rot|llBase64ToInteger|llBase64ToString|llBreakAllLinks|llBreakLink|llCSV2List|llCastRay|llCeil|llClearCameraParams|llClearLinkMedia|llClearPrimMedia|llCloseRemoteDataChannel|llCollisionFilter|llCollisionSound|llCos|llCreateCharacter|llCreateKeyValue|llCreateLink|llDataSizeKeyValue|llDeleteCharacter|llDeleteKeyValue|llDeleteSubList|llDeleteSubString|llDetachFromAvatar|llDetectedGrab|llDetectedGroup|llDetectedKey|llDetectedLinkNumber|llDetectedName|llDetectedOwner|llDetectedPos|llDetectedRot|llDetectedTouchBinormal|llDetectedTouchFace|llDetectedTouchNormal|llDetectedTouchPos|llDetectedTouchST|llDetectedTouchUV|llDetectedType|llDetectedVel|llDialog|llDie|llDumpList2String|llEdgeOfWorld|llEjectFromLand|llEmail|llEscapeURL|llEuler2Rot|llEvade|llExecCharacterCmd|llFabs|llFleeFrom|llFloor|llForceMouselook|llFrand|llGenerateKey|llGetAccel|llGetAgentInfo|llGetAgentLanguage|llGetAgentList|llGetAgentSize|llGetAlpha|llGetAndResetTime|llGetAnimation|llGetAnimationList|llGetAnimationOverride|llGetAttached|llGetAttachedList|llGetBoundingBox|llGetCameraPos|llGetCameraRot|llGetCenterOfMass|llGetClosestNavPoint|llGetColor|llGetCreator|llGetDate|llGetDisplayName|llGetEnergy|llGetEnv|llGetExperienceDetails|llGetExperienceErrorMessage|llGetForce|llGetFreeMemory|llGetFreeURLs|llGetGMTclock|llGetGeometricCenter|llGetHTTPHeader|llGetInventoryCreator|llGetInventoryKey|llGetInventoryName|llGetInventoryNumber|llGetInventoryPermMask|llGetInventoryType|llGetKey|llGetLandOwnerAt|llGetLinkKey|llGetLinkMedia|llGetLinkName|llGetLinkNumber|llGetLinkNumberOfSides|llGetLinkPrimitiveParams|llGetListEntryType|llGetListLength|llGetLocalPos|llGetLocalRot|llGetMass|llGetMassMKS|llGetMaxScaleFactor|llGetMemoryLimit|llGetMinScaleFactor|llGetNextEmail|llGetNotecardLine|llGetNumberOfNotecardLines|llGetNumberOfPrims|llGetNumberOfSides|llGetObjectDesc|llGetObjectDetails|llGetObjectMass|llGetObjectName|llGetObjectPermMask|llGetObjectPrimCount|llGetOmega|llGetOwner|llGetOwnerKey|llGetParcelDetails|llGetParcelFlags|llGetParcelMaxPrims|llGetParcelMusicURL|llGetParcelPrimCount|llGetParcelPrimOwners|llGetPermissions|llGetPermissionsKey|llGetPhysicsMaterial|llGetPos|llGetPrimMediaParams|llGetPrimitiveParams|llGetRegionAgentCount|llGetRegionCorner|llGetRegionFPS|llGetRegionFlags|llGetRegionName|llGetRegionTimeDilation|llGetRootPosition|llGetRootRotation|llGetRot|llGetSPMaxMemory|llGetScale|llGetScriptName|llGetScriptState|llGetSimStats|llGetSimulatorHostname|llGetStartParameter|llGetStaticPath|llGetStatus|llGetSubString|llGetSunDirection|llGetTexture|llGetTextureOffset|llGetTextureRot|llGetTextureScale|llGetTime|llGetTimeOfDay|llGetTimestamp|llGetTorque|llGetUnixTime|llGetUsedMemory|llGetUsername|llGetVel|llGetWallclock|llGiveInventory|llGiveInventoryList|llGiveMoney|llGround|llGroundContour|llGroundNormal|llGroundRepel|llGroundSlope|llHTTPRequest|llHTTPResponse|llInsertString|llInstantMessage|llIntegerToBase64|llJson2List|llJsonGetValue|llJsonSetValue|llJsonValueType|llKey2Name|llKeyCountKeyValue|llKeysKeyValue|llLinkParticleSystem|llLinkSitTarget|llList2CSV|llList2Float|llList2Integer|llList2Json|llList2Key|llList2List|llList2ListStrided|llList2Rot|llList2String|llList2Vector|llListFindList|llListInsertList|llListRandomize|llListReplaceList|llListSort|llListStatistics|llListen|llListenControl|llListenRemove|llLoadURL|llLog|llLog10|llLookAt|llLoopSound|llLoopSoundMaster|llLoopSoundSlave|llMD5String|llManageEstateAccess|llMapDestination|llMessageLinked|llMinEventDelay|llModPow|llModifyLand|llMoveToTarget|llNavigateTo|llOffsetTexture|llOpenRemoteDataChannel|llOverMyLand|llOwnerSay|llParcelMediaCommandList|llParcelMediaQuery|llParseString2List|llParseStringKeepNulls|llParticleSystem|llPassCollisions|llPassTouches|llPatrolPoints|llPlaySound|llPlaySoundSlave|llPow|llPreloadSound|llPursue|llPushObject|llReadKeyValue|llRegionSay|llRegionSayTo|llReleaseControls|llReleaseURL|llRemoteDataReply|llRemoteLoadScriptPin|llRemoveFromLandBanList|llRemoveFromLandPassList|llRemoveInventory|llRemoveVehicleFlags|llRequestAgentData|llRequestDisplayName|llRequestExperiencePermissions|llRequestInventoryData|llRequestPermissions|llRequestSecureURL|llRequestSimulatorData|llRequestURL|llRequestUsername|llResetAnimationOverride|llResetLandBanList|llResetLandPassList|llResetOtherScript|llResetScript|llResetTime|llReturnObjectsByID|llReturnObjectsByOwner|llRezAtRoot|llRezObject|llRot2Angle|llRot2Axis|llRot2Euler|llRot2Fwd|llRot2Left|llRot2Up|llRotBetween|llRotLookAt|llRotTarget|llRotTargetRemove|llRotateTexture|llRound|llSHA1String|llSameGroup|llSay|llScaleByFactor|llScaleTexture|llScriptDanger|llScriptProfiler|llSendRemoteData|llSensor|llSensorRemove|llSensorRepeat|llSetAlpha|llSetAngularVelocity|llSetAnimationOverride|llSetBuoyancy|llSetCameraAtOffset|llSetCameraEyeOffset|llSetCameraParams|llSetClickAction|llSetColor|llSetContentType|llSetDamage|llSetForce|llSetForceAndTorque|llSetHoverHeight|llSetKeyframedMotion|llSetLinkAlpha|llSetLinkCamera|llSetLinkColor|llSetLinkMedia|llSetLinkPrimitiveParams|llSetLinkPrimitiveParamsFast|llSetLinkTexture|llSetLinkTextureAnim|llSetLocalRot|llSetMemoryLimit|llSetObjectDesc|llSetObjectName|llSetParcelMusicURL|llSetPayPrice|llSetPhysicsMaterial|llSetPos|llSetPrimMediaParams|llSetPrimitiveParams|llSetRegionPos|llSetRemoteScriptAccessPin|llSetRot|llSetScale|llSetScriptState|llSetSitText|llSetSoundQueueing|llSetSoundRadius|llSetStatus|llSetText|llSetTexture|llSetTextureAnim|llSetTimerEvent|llSetTorque|llSetTouchText|llSetVehicleFlags|llSetVehicleFloatParam|llSetVehicleRotationParam|llSetVehicleType|llSetVehicleVectorParam|llSetVelocity|llShout|llSin|llSitTarget|llSleep|llSqrt|llStartAnimation|llStopAnimation|llStopHover|llStopLookAt|llStopMoveToTarget|llStopSound|llStringLength|llStringToBase64|llStringTrim|llSubStringIndex|llTakeControls|llTan|llTarget|llTargetOmega|llTargetRemove|llTeleportAgent|llTeleportAgentGlobalCoords|llTeleportAgentHome|llTextBox|llToLower|llToUpper|llTransferLindenDollars|llTriggerSound|llTriggerSoundLimited|llUnSit|llUnescapeURL|llUpdateCharacter|llUpdateKeyValue|llVecDist|llVecMag|llVecNorm|llVolumeDetect|llWanderWithin|llWater|llWhisper|llWind|llXorBase64", - "support.function.event.lsl" : "at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|experience_permissions|experience_permissions_denied|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result" - }, "identifier"); - + "support.function.event.lsl": "at_rot_target|at_target|attach|changed|collision|collision_end|collision_start|control|dataserver|email|experience_permissions|experience_permissions_denied|http_request|http_response|land_collision|land_collision_end|land_collision_start|link_message|listen|money|moving_end|moving_start|no_sensor|not_at_rot_target|not_at_target|object_rez|on_rez|path_update|remote_data|run_time_permissions|sensor|state_entry|state_exit|timer|touch|touch_end|touch_start|transaction_result" + }, "identifier"); this.$rules = { - "start" : [ + "start": [ { - token : "comment.line.double-slash.lsl", - regex : "\\/\\/.*$" + token: "comment.line.double-slash.lsl", + regex: "\\/\\/.*$" }, { - token : "comment.block.begin.lsl", - regex : "\\/\\*", - next : "comment" + token: "comment.block.begin.lsl", + regex: "\\/\\*", + next: "comment" }, { - token : "string.quoted.double.lsl", - start : '"', - end : '"', - next : [{ - token : "constant.character.escape.lsl", - regex : /\\[tn"\\]/ - }] + token: "string.quoted.double.lsl", + start: '"', + end: '"', + next: [{ + token: "constant.character.escape.lsl", + regex: /\\[tn"\\]/ + }] }, { - token : "constant.numeric.lsl", - regex : "(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b" + token: "constant.numeric.lsl", + regex: "(0[xX][0-9a-fA-F]+|[+-]?[0-9]+(?:(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?)?)\\b" }, { - token : "entity.name.state.lsl", - regex : "\\b((state)\\s+[A-Za-z_]\\w*|default)\\b" + token: "entity.name.state.lsl", + regex: "\\b((state)\\s+[A-Za-z_]\\w*|default)\\b" }, { - token : keywordMapper, - regex : "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b" + token: keywordMapper, + regex: "\\b[a-zA-Z_][a-zA-Z0-9_]*\\b" }, { - token : "support.function.user-defined.lsl", - regex : /\b([a-zA-Z_]\w*)(?=\(.*?\))/ + token: "support.function.user-defined.lsl", + regex: /\b([a-zA-Z_]\w*)(?=\(.*?\))/ }, { - token : "keyword.operator.lsl", - regex : "\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?" + token: "keyword.operator.lsl", + regex: "\\+\\+|\\-\\-|<<|>>|&&?|\\|\\|?|\\^|~|[!%<>=*+\\-\\/]=?" }, { - token : "invalid.illegal.keyword.operator.lsl", - regex : ":=?" + token: "invalid.illegal.keyword.operator.lsl", + regex: ":=?" }, { - token : "punctuation.operator.lsl", - regex : "\\,|\\;" + token: "punctuation.operator.lsl", + regex: "\\,|\\;" }, { - token : "paren.lparen.lsl", - regex : "[\\[\\(\\{]" + token: "paren.lparen.lsl", + regex: "[\\[\\(\\{]" }, { - token : "paren.rparen.lsl", - regex : "[\\]\\)\\}]" + token: "paren.rparen.lsl", + regex: "[\\]\\)\\}]" }, { - token : "text.lsl", - regex : "\\s+" + token: "text.lsl", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment.block.end.lsl", - regex : "\\*\\/", - next : "start" + token: "comment.block.end.lsl", + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment.block.lsl" + defaultToken: "comment.block.lsl" } ] }; this.normalizeRules(); } - exports.LSLHighlightRules = LSLHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -226,110 +186,102 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/lsl",["require","exports","module","ace/mode/lsl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/text","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/lib/oop"], function(require, exports, module) { -"use strict"; - +define("ace/mode/lsl",["require","exports","module","ace/mode/lsl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/text","ace/mode/folding/cstyle","ace/lib/oop"], function(require, exports, module){"use strict"; var Rules = require("./lsl_highlight_rules").LSLHighlightRules; var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var TextMode = require("./text").Mode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var oop = require("../lib/oop"); - -var Mode = function() { +var Mode = function () { this.HighlightRules = Rules; this.$outdent = new Outdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ["//"]; - this.blockComment = { start: "/*", end: "*/" }; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type === "comment.block.lsl") { + if (tokens.length && tokens[tokens.length - 1].type === "comment.block.lsl") { return indent; } - if (state === "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/lsl"; + this.snippetFileId = "ace/snippets/lsl"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/lsl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-lua.js b/vendor/assets/javascripts/ace/mode-lua.js index 09d5ca46..d09c25b5 100644 --- a/vendor/assets/javascripts/ace/mode-lua.js +++ b/vendor/assets/javascripts/ace/mode-lua.js @@ -1,47 +1,34 @@ -define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuaHighlightRules = function() { - - var keywords = ( - "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ - "return|then|until|while|or|and|not" - ); - +var LuaHighlightRules = function () { + var keywords = ("break|do|else|elseif|end|for|function|if|in|local|repeat|" + + "return|then|until|while|or|and|not"); var builtinConstants = ("true|false|nil|_G|_VERSION"); - var functions = ( - "string|xpcall|package|tostring|print|os|unpack|require|"+ - "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ - "collectgarbage|getmetatable|module|rawset|math|debug|"+ - "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ - "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ - "load|error|loadfile|"+ - - "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ - "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ - "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ - "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ - "lines|write|close|flush|open|output|type|read|stderr|"+ - "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ - "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ - "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ - "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ - "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ - "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ - "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ - "status|wrap|create|running|"+ - "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ - "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" - ); - + "string|xpcall|package|tostring|print|os|unpack|require|" + + "getfenv|setmetatable|next|assert|tonumber|io|rawequal|" + + "collectgarbage|getmetatable|module|rawset|math|debug|" + + "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|" + + "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|" + + "load|error|loadfile|" + + "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|" + + "reverse|byte|format|gsub|lower|preload|loadlib|loaded|" + + "loaders|cpath|config|path|seeall|exit|setlocale|date|" + + "getenv|difftime|remove|time|clock|tmpname|rename|execute|" + + "lines|write|close|flush|open|output|type|read|stderr|" + + "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|" + + "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|" + + "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|" + + "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|" + + "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|" + + "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|" + + "foreachi|maxn|foreach|concat|sort|remove|resume|yield|" + + "status|wrap|create|running|" + + "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|" + + "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber"); var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); - var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); - var keywordMapper = this.createKeywordMapper({ "keyword": keywords, "support.function": functions, @@ -50,136 +37,122 @@ var LuaHighlightRules = function() { "constant.language": builtinConstants, "variable.language": "self" }, "identifier"); - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; - var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; var floatNumber = "(?:" + pointFloat + ")"; - this.$rules = { - "start" : [{ - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; + "start": [{ + stateName: "bracketedComment", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length - 2, currentState); + return "comment"; + }, + regex: /\-\-\[=*\[/, + next: [ + { + onMatch: function (value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return "comment"; + }, + regex: /\]=*\]/, + next: "start" + }, { + defaultToken: "comment" + } + ] }, - regex : /\-\-\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - - { - token : "comment", - regex : "\\-\\-.*$" - }, - { - stateName: "bracketedString", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length, currentState); - return "string.start"; + { + token: "comment", + regex: "\\-\\-.*$" }, - regex : /\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "string.end"; - }, - - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "string" - } - ] - }, - { - token : "string", // " string - regex : '"(?:[^\\\\]|\\\\.)*?"' - }, { - token : "string", // ' string - regex : "'(?:[^\\\\]|\\\\.)*?'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+|\\w+" - } ] + { + stateName: "bracketedString", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length, currentState); + return "string.start"; + }, + regex: /\[=*\[/, + next: [ + { + onMatch: function (value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return "string.end"; + }, + regex: /\]=*\]/, + next: "start" + }, { + defaultToken: "string" + } + ] + }, + { + token: "string", // " string + regex: '"(?:[^\\\\]|\\\\.)*?"' + }, { + token: "string", // ' string + regex: "'(?:[^\\\\]|\\\\.)*?'" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: "text", + regex: "\\s+|\\w+" + }] }; - this.normalizeRules(); }; - oop.inherits(LuaHighlightRules, TextHighlightRules); - exports.LuaHighlightRules = LuaHighlightRules; + }); -define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function() {}; - +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/; this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/; - - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var isStart = this.foldingStartMarker.test(line); var isEnd = this.foldingStopMarker.test(line); - if (isStart && !isEnd) { var match = line.match(this.foldingStartMarker); if (match[1] == "then" && /\belseif\b/.test(line)) @@ -187,57 +160,53 @@ oop.inherits(FoldMode, BaseFoldMode); if (match[1]) { if (session.getTokenAt(row, match.index + 1).type === "keyword") return "start"; - } else if (match[2]) { + } + else if (match[2]) { var type = session.bgTokenizer.getState(row) || ""; if (type[0] == "bracketedComment" || type[0] == "bracketedString") return "start"; - } else { + } + else { return "start"; } } if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) return ""; - var match = line.match(this.foldingStopMarker); if (match[0] === "end") { if (session.getTokenAt(row, match.index + 1).type === "keyword") return "end"; - } else if (match[0][0] === "]") { + } + else if (match[0][0] === "]") { var type = session.bgTokenizer.getState(row - 1) || ""; if (type[0] == "bracketedComment" || type[0] == "bracketedString") return "end"; - } else + } + else return "end"; }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.doc.getLine(row); var match = this.foldingStartMarker.exec(line); if (match) { if (match[1]) return this.luaBlock(session, row, match.index + 1); - if (match[2]) return session.getCommentFoldRange(row, match.index + 1); - return this.openingBracketBlock(session, "{", row, match.index); } - var match = this.foldingStopMarker.exec(line); if (match) { if (match[0] === "end") { if (session.getTokenAt(row, match.index + 1).type === "keyword") return this.luaBlock(session, row, match.index + 1); } - if (match[0][0] === "]") return session.getCommentFoldRange(row, match.index + 1); - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); } }; - - this.luaBlock = function(session, row, column) { + this.luaBlock = function (session, row, column, tokenRange) { var stream = new TokenIterator(session, row, column); var indentKeywords = { "function": 1, @@ -248,30 +217,25 @@ oop.inherits(FoldMode, BaseFoldMode); "repeat": 1, "until": -1 }; - var token = stream.getCurrentToken(); if (!token || token.type != "keyword") return; - var val = token.value; var stack = [val]; var dir = indentKeywords[val]; - if (!dir) return; - var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; var startRow = row; - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { + while (token = stream.step()) { if (token.type !== "keyword") continue; var level = dir * indentKeywords[token.value]; - if (level > 0) { stack.unshift(token.value); - } else if (level <= 0) { + } + else if (level <= 0) { stack.shift(); if (!stack.length && token.value != "elseif") break; @@ -279,41 +243,36 @@ oop.inherits(FoldMode, BaseFoldMode); stack.unshift(token.value); } } - + if (!token) + return null; + if (tokenRange) + return stream.getCurrentTokenRange(); var row = stream.getCurrentTokenRow(); if (dir === -1) return new Range(row, session.getLine(row).length, startRow, startColumn); else return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); }; - }).call(FoldMode.prototype); }); -define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; var LuaFoldMode = require("./folding/lua").FoldMode; var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { +var Mode = function () { this.HighlightRules = LuaHighlightRules; - this.foldingRules = new LuaFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "--"; - this.blockComment = {start: "--[", end: "]--"}; - + this.blockComment = { start: "--[[", end: "--]]" }; var indentKeywords = { "function": 1, "then": 1, @@ -330,7 +289,6 @@ oop.inherits(Mode, TextMode); "end", "until" ]; - function getNetIndentLevel(tokens) { var level = 0; for (var i = 0; i < tokens.length; i++) { @@ -339,86 +297,97 @@ oop.inherits(Mode, TextMode); if (token.value in indentKeywords) { level += indentKeywords[token.value]; } - } else if (token.type == "paren.lparen") { + } + else if (token.type == "paren.lparen") { level += token.value.length; - } else if (token.type == "paren.rparen") { + } + else if (token.type == "paren.rparen") { level -= token.value.length; } } if (level < 0) { return -1; - } else if (level > 0) { + } + else if (level > 0) { return 1; - } else { + } + else { return 0; } } - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var level = 0; - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - if (state == "start") { level = getNetIndentLevel(tokens); } if (level > 0) { return indent + tab; - } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { + } + else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { if (!this.checkOutdent(state, line, "\n")) { return indent.substr(0, indent.length - tab.length); } } return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { if (input != "\n" && input != "\r" && input != "\r\n") return false; - if (line.match(/^\s*[\)\}\]]$/)) return true; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens || !tokens.length) return false; - return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1); }; - - this.autoOutdent = function(state, session, row) { - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine).length; - var prevTokens = this.getTokenizer().getLineTokens(prevLine, "start").tokens; - var tabLength = session.getTabString().length; - var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens); - var curIndent = this.$getIndent(session.getLine(row)).length; - if (curIndent <= expectedIndent) { - return; + this.getMatching = function (session, row, column) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; } - session.outdentRows(new Range(row, 0, row + 2, 0)); + var startToken = session.getTokenAt(row, column); + if (startToken && startToken.value in indentKeywords) + return this.foldingRules.luaBlock(session, row, column, true); }; - - this.createWorker = function(session) { + this.autoOutdent = function (state, session, row) { + var line = session.getLine(row); + var column = line.match(/^\s*/)[0].length; + if (!column || !row) + return; + var startRange = this.getMatching(session, row, column + 1); + if (!startRange || startRange.start.row == row) + return; + var indent = this.$getIndent(session.getLine(startRange.start.row)); + if (indent.length != column) { + session.replace(new Range(row, 0, row, column), indent); + session.outdentRows(new Range(row + 1, 0, row + 1, 0)); + } + }; + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/lua_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/lua"; + this.snippetFileId = "ace/snippets/lua"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/lua"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-luapage.js b/vendor/assets/javascripts/ace/mode-luapage.js index c87e8e56..8c58b4b7 100644 --- a/vendor/assets/javascripts/ace/mode-luapage.js +++ b/vendor/assets/javascripts/ace/mode-luapage.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,110 +2225,83 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/lua_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuaHighlightRules = function() { - - var keywords = ( - "break|do|else|elseif|end|for|function|if|in|local|repeat|"+ - "return|then|until|while|or|and|not" - ); - +var LuaHighlightRules = function () { + var keywords = ("break|do|else|elseif|end|for|function|if|in|local|repeat|" + + "return|then|until|while|or|and|not"); var builtinConstants = ("true|false|nil|_G|_VERSION"); - var functions = ( - "string|xpcall|package|tostring|print|os|unpack|require|"+ - "getfenv|setmetatable|next|assert|tonumber|io|rawequal|"+ - "collectgarbage|getmetatable|module|rawset|math|debug|"+ - "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|"+ - "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|"+ - "load|error|loadfile|"+ - - "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|"+ - "reverse|byte|format|gsub|lower|preload|loadlib|loaded|"+ - "loaders|cpath|config|path|seeall|exit|setlocale|date|"+ - "getenv|difftime|remove|time|clock|tmpname|rename|execute|"+ - "lines|write|close|flush|open|output|type|read|stderr|"+ - "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|"+ - "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|"+ - "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|"+ - "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|"+ - "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|"+ - "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|"+ - "foreachi|maxn|foreach|concat|sort|remove|resume|yield|"+ - "status|wrap|create|running|"+ - "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|"+ - "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber" - ); - + "string|xpcall|package|tostring|print|os|unpack|require|" + + "getfenv|setmetatable|next|assert|tonumber|io|rawequal|" + + "collectgarbage|getmetatable|module|rawset|math|debug|" + + "pcall|table|newproxy|type|coroutine|_G|select|gcinfo|" + + "pairs|rawget|loadstring|ipairs|_VERSION|dofile|setfenv|" + + "load|error|loadfile|" + + "sub|upper|len|gfind|rep|find|match|char|dump|gmatch|" + + "reverse|byte|format|gsub|lower|preload|loadlib|loaded|" + + "loaders|cpath|config|path|seeall|exit|setlocale|date|" + + "getenv|difftime|remove|time|clock|tmpname|rename|execute|" + + "lines|write|close|flush|open|output|type|read|stderr|" + + "stdin|input|stdout|popen|tmpfile|log|max|acos|huge|" + + "ldexp|pi|cos|tanh|pow|deg|tan|cosh|sinh|random|randomseed|" + + "frexp|ceil|floor|rad|abs|sqrt|modf|asin|min|mod|fmod|log10|" + + "atan2|exp|sin|atan|getupvalue|debug|sethook|getmetatable|" + + "gethook|setmetatable|setlocal|traceback|setfenv|getinfo|" + + "setupvalue|getlocal|getregistry|getfenv|setn|insert|getn|" + + "foreachi|maxn|foreach|concat|sort|remove|resume|yield|" + + "status|wrap|create|running|" + + "__add|__sub|__mod|__unm|__concat|__lt|__index|__call|__gc|__metatable|" + + "__mul|__div|__pow|__len|__eq|__le|__newindex|__tostring|__mode|__tonumber"); var stdLibaries = ("string|package|os|io|math|debug|table|coroutine"); - var deprecatedIn5152 = ("setn|foreach|foreachi|gcinfo|log10|maxn"); - var keywordMapper = this.createKeywordMapper({ "keyword": keywords, "support.function": functions, @@ -2531,136 +2310,122 @@ var LuaHighlightRules = function() { "constant.language": builtinConstants, "variable.language": "self" }, "identifier"); - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var integer = "(?:" + decimalInteger + "|" + hexInteger + ")"; - var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; var floatNumber = "(?:" + pointFloat + ")"; - this.$rules = { - "start" : [{ - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 2, currentState); - return "comment"; + "start": [{ + stateName: "bracketedComment", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length - 2, currentState); + return "comment"; + }, + regex: /\-\-\[=*\[/, + next: [ + { + onMatch: function (value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return "comment"; + }, + regex: /\]=*\]/, + next: "start" + }, { + defaultToken: "comment" + } + ] }, - regex : /\-\-\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "comment"; - }, - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "comment" - } - ] - }, - - { - token : "comment", - regex : "\\-\\-.*$" - }, - { - stateName: "bracketedString", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length, currentState); - return "string.start"; + { + token: "comment", + regex: "\\-\\-.*$" }, - regex : /\[=*\[/, - next : [ - { - onMatch : function(value, currentState, stack) { - if (value.length == stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return "string.end"; - }, - - regex : /\]=*\]/, - next : "start" - }, { - defaultToken : "string" - } - ] - }, - { - token : "string", // " string - regex : '"(?:[^\\\\]|\\\\.)*?"' - }, { - token : "string", // ' string - regex : "'(?:[^\\\\]|\\\\.)*?'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+|\\w+" - } ] + { + stateName: "bracketedString", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length, currentState); + return "string.start"; + }, + regex: /\[=*\[/, + next: [ + { + onMatch: function (value, currentState, stack) { + if (value.length == stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return "string.end"; + }, + regex: /\]=*\]/, + next: "start" + }, { + defaultToken: "string" + } + ] + }, + { + token: "string", // " string + regex: '"(?:[^\\\\]|\\\\.)*?"' + }, { + token: "string", // ' string + regex: "'(?:[^\\\\]|\\\\.)*?'" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\/|%|\\#|\\^|~|<|>|<=|=>|==|~=|=|\\:|\\.\\.\\.|\\.\\." + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: "text", + regex: "\\s+|\\w+" + }] }; - this.normalizeRules(); }; - oop.inherits(LuaHighlightRules, TextHighlightRules); - exports.LuaHighlightRules = LuaHighlightRules; + }); -define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/lua",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; var TokenIterator = require("../../token_iterator").TokenIterator; - - -var FoldMode = exports.FoldMode = function() {}; - +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /\b(function|then|do|repeat)\b|{\s*$|(\[=*\[)/; this.foldingStopMarker = /\bend\b|^\s*}|\]=*\]/; - - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var isStart = this.foldingStartMarker.test(line); var isEnd = this.foldingStopMarker.test(line); - if (isStart && !isEnd) { var match = line.match(this.foldingStartMarker); if (match[1] == "then" && /\belseif\b/.test(line)) @@ -2668,57 +2433,53 @@ oop.inherits(FoldMode, BaseFoldMode); if (match[1]) { if (session.getTokenAt(row, match.index + 1).type === "keyword") return "start"; - } else if (match[2]) { + } + else if (match[2]) { var type = session.bgTokenizer.getState(row) || ""; if (type[0] == "bracketedComment" || type[0] == "bracketedString") return "start"; - } else { + } + else { return "start"; } } if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) return ""; - var match = line.match(this.foldingStopMarker); if (match[0] === "end") { if (session.getTokenAt(row, match.index + 1).type === "keyword") return "end"; - } else if (match[0][0] === "]") { + } + else if (match[0][0] === "]") { var type = session.bgTokenizer.getState(row - 1) || ""; if (type[0] == "bracketedComment" || type[0] == "bracketedString") return "end"; - } else + } + else return "end"; }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.doc.getLine(row); var match = this.foldingStartMarker.exec(line); if (match) { if (match[1]) return this.luaBlock(session, row, match.index + 1); - if (match[2]) return session.getCommentFoldRange(row, match.index + 1); - return this.openingBracketBlock(session, "{", row, match.index); } - var match = this.foldingStopMarker.exec(line); if (match) { if (match[0] === "end") { if (session.getTokenAt(row, match.index + 1).type === "keyword") return this.luaBlock(session, row, match.index + 1); } - if (match[0][0] === "]") return session.getCommentFoldRange(row, match.index + 1); - return this.closingBracketBlock(session, "}", row, match.index + match[0].length); } }; - - this.luaBlock = function(session, row, column) { + this.luaBlock = function (session, row, column, tokenRange) { var stream = new TokenIterator(session, row, column); var indentKeywords = { "function": 1, @@ -2729,30 +2490,25 @@ oop.inherits(FoldMode, BaseFoldMode); "repeat": 1, "until": -1 }; - var token = stream.getCurrentToken(); if (!token || token.type != "keyword") return; - var val = token.value; var stack = [val]; var dir = indentKeywords[val]; - if (!dir) return; - var startColumn = dir === -1 ? stream.getCurrentTokenColumn() : session.getLine(row).length; var startRow = row; - stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; - while(token = stream.step()) { + while (token = stream.step()) { if (token.type !== "keyword") continue; var level = dir * indentKeywords[token.value]; - if (level > 0) { stack.unshift(token.value); - } else if (level <= 0) { + } + else if (level <= 0) { stack.shift(); if (!stack.length && token.value != "elseif") break; @@ -2760,41 +2516,36 @@ oop.inherits(FoldMode, BaseFoldMode); stack.unshift(token.value); } } - + if (!token) + return null; + if (tokenRange) + return stream.getCurrentTokenRange(); var row = stream.getCurrentTokenRow(); if (dir === -1) return new Range(row, session.getLine(row).length, startRow, startColumn); else return new Range(startRow, startColumn, row, stream.getCurrentTokenColumn()); }; - }).call(FoldMode.prototype); }); -define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/lua",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lua_highlight_rules","ace/mode/folding/lua","ace/range","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; var LuaFoldMode = require("./folding/lua").FoldMode; var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { +var Mode = function () { this.HighlightRules = LuaHighlightRules; - this.foldingRules = new LuaFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "--"; - this.blockComment = {start: "--[", end: "]--"}; - + this.blockComment = { start: "--[[", end: "--]]" }; var indentKeywords = { "function": 1, "then": 1, @@ -2811,7 +2562,6 @@ oop.inherits(Mode, TextMode); "end", "until" ]; - function getNetIndentLevel(tokens) { var level = 0; for (var i = 0; i < tokens.length; i++) { @@ -2820,100 +2570,101 @@ oop.inherits(Mode, TextMode); if (token.value in indentKeywords) { level += indentKeywords[token.value]; } - } else if (token.type == "paren.lparen") { + } + else if (token.type == "paren.lparen") { level += token.value.length; - } else if (token.type == "paren.rparen") { + } + else if (token.type == "paren.rparen") { level -= token.value.length; } } if (level < 0) { return -1; - } else if (level > 0) { + } + else if (level > 0) { return 1; - } else { + } + else { return 0; } } - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var level = 0; - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - if (state == "start") { level = getNetIndentLevel(tokens); } if (level > 0) { return indent + tab; - } else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { + } + else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { if (!this.checkOutdent(state, line, "\n")) { return indent.substr(0, indent.length - tab.length); } } return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { if (input != "\n" && input != "\r" && input != "\r\n") return false; - if (line.match(/^\s*[\)\}\]]$/)) return true; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens || !tokens.length) return false; - return (tokens[0].type == "keyword" && outdentKeywords.indexOf(tokens[0].value) != -1); }; - - this.autoOutdent = function(state, session, row) { - var prevLine = session.getLine(row - 1); - var prevIndent = this.$getIndent(prevLine).length; - var prevTokens = this.getTokenizer().getLineTokens(prevLine, "start").tokens; - var tabLength = session.getTabString().length; - var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens); - var curIndent = this.$getIndent(session.getLine(row)).length; - if (curIndent <= expectedIndent) { - return; + this.getMatching = function (session, row, column) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; } - session.outdentRows(new Range(row, 0, row + 2, 0)); + var startToken = session.getTokenAt(row, column); + if (startToken && startToken.value in indentKeywords) + return this.foldingRules.luaBlock(session, row, column, true); }; - - this.createWorker = function(session) { + this.autoOutdent = function (state, session, row) { + var line = session.getLine(row); + var column = line.match(/^\s*/)[0].length; + if (!column || !row) + return; + var startRange = this.getMatching(session, row, column + 1); + if (!startRange || startRange.start.row == row) + return; + var indent = this.$getIndent(session.getLine(startRange.start.row)); + if (indent.length != column) { + session.replace(new Range(row, 0, row, column), indent); + session.outdentRows(new Range(row + 1, 0, row + 1, 0)); + } + }; + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/lua_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/lua"; + this.snippetFileId = "ace/snippets/lua"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/luapage_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/lua_highlight_rules"], function(require, exports, module) { +define("ace/mode/luapage_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules","ace/mode/lua_highlight_rules"], function(require, exports, module){// LuaPage implements the LuaPage markup as described by the Kepler Project's CGILua "use strict"; - var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var LuaHighlightRules = require("./lua_highlight_rules").LuaHighlightRules; - -var LuaPageHighlightRules = function() { +var LuaPageHighlightRules = function () { HtmlHighlightRules.call(this); - var startRules = [ { token: "keyword", @@ -2925,7 +2676,6 @@ var LuaPageHighlightRules = function() { push: "lua-start" } ]; - var endRules = [ { token: "keyword", @@ -2937,42 +2687,39 @@ var LuaPageHighlightRules = function() { next: "pop" } ]; - this.embedRules(LuaHighlightRules, "lua-", endRules, ["start"]); - for (var key in this.$rules) this.$rules[key].unshift.apply(this.$rules[key], startRules); - this.normalizeRules(); }; - oop.inherits(LuaPageHighlightRules, HtmlHighlightRules); - exports.LuaPageHighlightRules = LuaPageHighlightRules; }); -define("ace/mode/luapage",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/lua","ace/mode/luapage_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/luapage",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/lua","ace/mode/luapage_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var LuaMode = require("./lua").Mode; var LuaPageHighlightRules = require("./luapage_highlight_rules").LuaPageHighlightRules; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); - this.HighlightRules = LuaPageHighlightRules; this.createModeDelegates({ "lua-": LuaMode }); }; oop.inherits(Mode, HtmlMode); - -(function() { +(function () { this.$id = "ace/mode/luapage"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/luapage"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-lucene.js b/vendor/assets/javascripts/ace/mode-lucene.js index a8bbeeb8..332be98d 100644 --- a/vendor/assets/javascripts/ace/mode-lucene.js +++ b/vendor/assets/javascripts/ace/mode-lucene.js @@ -1,70 +1,145 @@ -define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/lucene_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LuceneHighlightRules = function() { +var LuceneHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "constant.character.negation", - regex : "[\\-]" + token: "constant.language.escape", + regex: /\\[\-+&|!(){}\[\]^"~*?:\\]/ }, { - token : "constant.character.interro", - regex : "[\\?]" + token: "constant.character.negation", + regex: "\\-" }, { - token : "constant.character.asterisk", - regex : "[\\*]" + token: "constant.character.interro", + regex: "\\?" + }, { + token: "constant.character.required", + regex: "\\+" + }, { + token: "constant.character.asterisk", + regex: "\\*" }, { token: 'constant.character.proximity', - regex: '~[0-9]+\\b' + regex: '~(?:0\\.[0-9]+|[0-9]+)?' }, { - token : 'keyword.operator', - regex: '(?:AND|OR|NOT)\\b' + token: 'keyword.operator', + regex: '(AND|OR|NOT|TO)\\b' }, { - token : "paren.lparen", - regex : "[\\(]" + token: "paren.lparen", + regex: "[\\(\\{\\[]" }, { - token : "paren.rparen", - regex : "[\\)]" + token: "paren.rparen", + regex: "[\\)\\}\\]]" }, { - token : "keyword", - regex : "[\\S]+:" + token: "keyword.operator", + regex: /[><=^]/ }, { - token : "string", // " string - regex : '".*?"' + token: "constant.numeric", + regex: /\d[\d.-]*/ }, { - token : "text", - regex : "\\s+" + token: "string", + regex: /"(?:\\"|[^"])*"/ + }, { + token: "keyword", + regex: /(?:\\.|[^\s\-+&|!(){}\[\]^"~*?:\\])+:/, + next: "maybeRegex" + }, { + token: "term", + regex: /\w+/ + }, { + token: "text", + regex: /\s+/ + } + ], + "maybeRegex": [{ + token: "text", + regex: /\s+/ + }, { + token: "string.regexp.start", + regex: "/", + next: "regex" + }, { + regex: "", + next: "start" + }], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp.end", + regex: "/[sxngimy]*", + next: "start" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.escape", + regex: "<\d+-\d+>|[~&@]" + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "start" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "start" + }, { + defaultToken: "string.regexp.characterclass" } ] }; }; - oop.inherits(LuceneHighlightRules, TextHighlightRules); - exports.LuceneHighlightRules = LuceneHighlightRules; + }); -define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"], function(require, exports, module) { -'use strict'; - +define("ace/mode/lucene",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/lucene_highlight_rules"], function(require, exports, module){'use strict'; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LuceneHighlightRules = require("./lucene_highlight_rules").LuceneHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = LuceneHighlightRules; this.$behaviour = this.$defaultBehaviour; }; - oop.inherits(Mode, TextMode); - -(function() { +(function () { this.$id = "ace/mode/lucene"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/lucene"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-makefile.js b/vendor/assets/javascripts/ace/mode-makefile.js index 23836359..c8de6861 100644 --- a/vendor/assets/javascripts/ace/mode-makefile.js +++ b/vendor/assets/javascripts/ace/mode-makefile.js @@ -1,351 +1,318 @@ -define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set|function|declare|readonly' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { +var reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' + + 'esac|fi|for|if|in|then|until|while|' + + '&|;|export|local|read|typeset|unset|' + + 'elif|select|set|function|declare|readonly'); +var languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' + + 'cd|command|compgen|complete|continue|' + + 'dirs|disown|echo|enable|eval|exec|' + + 'exit|fc|fg|getopts|hash|help|history|' + + 'jobs|kill|let|logout|popd|printf|pushd|' + + 'pwd|return|set|shift|shopt|source|' + + 'suspend|test|times|trap|type|ulimit|' + + 'umask|unalias|wait'); +var ShHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "keyword": reservedKeywords, "support.function.builtin": languageConstructs, "invalid.deprecated": "debugger" }, "identifier"); - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; var fileDescriptor = "(?:&" + intPart + ")"; - var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; var variable = "(?:" + variableName + "(?==))"; - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - var func = "(?:" + variableName + "\\s*\\(\\))"; - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string.start", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$`"\\]|$)/ + "start": [{ + token: "constant", + regex: /\\./ }, { - include : "variables" + token: ["text", "comment"], + regex: /(^|\s)(#.*)$/ }, { - token : "keyword.operator", - regex : /`/ // TODO highlight ` + token: "string.start", + regex: '"', + push: [{ + token: "constant.language.escape", + regex: /\\(?:[$`"\\]|$)/ + }, { + include: "variables" + }, { + token: "keyword.operator", + regex: /`/ // TODO highlight ` + }, { + token: "string.end", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }] }, { - token : "string.end", - regex : '"', + token: "string", + regex: "\\$'", + push: [{ + token: "constant.language.escape", + regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex: "<<<", + token: "keyword.operator" + }, { + stateName: "heredoc", + regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch: function (value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + { type: "constant", value: tokens[1] }, + { type: "text", value: tokens[2] }, + { type: "string", value: tokens[3] }, + { type: "support.class", value: tokens[4] }, + { type: "string", value: tokens[5] } + ]; + }, + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: ["keyword", "text", "text", "text", "variable"], + regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token: "variable.language", + regex: builtinVariable + }, { + token: "variable", + regex: variable + }, { + include: "variables" + }, { + token: "support.function", + regex: func + }, { + token: "support.function", + regex: fileDescriptor + }, { + token: "string", // ' string + start: "'", end: "'" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token: "punctuation.operator", + regex: ";" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]]" + }, { + token: "paren.rparen", + regex: "[\\)\\}]", next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string", - regex : "\\$'", - push : [{ - token : "constant.language.escape", - regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "string", - regex : "'", - next: "pop" - }, { - defaultToken: "string" - }] - }, { - regex : "<<<", - token : "keyword.operator" - }, { - stateName: "heredoc", - regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[4]); - return [ - {type:"constant", value: tokens[1]}, - {type:"text", value: tokens[2]}, - {type:"string", value: tokens[3]}, - {type:"support.class", value: tokens[4]}, - {type:"string", value: tokens[5]} - ]; - }, - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^\t+" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : ["keyword", "text", "text", "text", "variable"], - regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - include : "variables" - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" - }, { - token : "punctuation.operator", - regex : ";" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "paren.rparen", - regex : "[\\)\\}]", - next : "pop" - }], + }], variables: [{ - token : "variable", - regex : /(\$)(\w+)/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\()/, - push : "start" - }, { - token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], - regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, - push : "start" - }, { - token : "variable", - regex : /\$[*@#?\-$!0_]/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\{)/, - push : "start" - }] + token: "variable", + regex: /(\$)(\w+)/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\()/, + push: "start" + }, { + token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push: "start" + }, { + token: "variable", + regex: /\$[*@#?\-$!0_]/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\{)/, + push: "start" + }] }; - this.normalizeRules(); }; - oop.inherits(ShHighlightRules, TextHighlightRules); - exports.ShHighlightRules = ShHighlightRules; + }); -define("ace/mode/makefile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/sh_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/makefile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/sh_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var ShHighlightFile = require("./sh_highlight_rules"); - -var MakefileHighlightRules = function() { - +var MakefileHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "keyword": ShHighlightFile.reservedKeywords, "support.function.builtin": ShHighlightFile.languageConstructs, "invalid.deprecated": "debugger" }, "string"); - - this.$rules = + this.$rules = { - "start": [ - { - token: "string.interpolated.backtick.makefile", - regex: "`", - next: "shell-start" - }, - { - token: "punctuation.definition.comment.makefile", - regex: /#(?=.)/, - next: "comment" - }, - { - token: [ "keyword.control.makefile"], - regex: "^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)" - }, - {// ^([^\t ]+(\s[^\t ]+)*:(?!\=))\s*.* - token: ["entity.name.function.makefile", "text"], - regex: "^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)" - } - ], - "comment": [ - { - token : "punctuation.definition.comment.makefile", - regex : /.+\\/ - }, - { - token : "punctuation.definition.comment.makefile", - regex : ".+", - next : "start" - } - ], - "shell-start": [ - { - token: keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token: "string", - regex : "\\w+" - }, - { - token : "string.interpolated.backtick.makefile", - regex : "`", - next : "start" - } - ] + "start": [ + { + token: "string.interpolated.backtick.makefile", + regex: "`", + next: "shell-start" + }, + { + token: "punctuation.definition.comment.makefile", + regex: /#(?=.)/, + next: "comment" + }, + { + token: ["keyword.control.makefile"], + regex: "^(?:\\s*\\b)(\\-??include|ifeq|ifneq|ifdef|ifndef|else|endif|vpath|export|unexport|define|endef|override)(?:\\b)" + }, + { + token: ["entity.name.function.makefile", "text"], + regex: "^([^\\t ]+(?:\\s[^\\t ]+)*:)(\\s*.*)" + } + ], + "comment": [ + { + token: "punctuation.definition.comment.makefile", + regex: /.+\\/ + }, + { + token: "punctuation.definition.comment.makefile", + regex: ".+", + next: "start" + } + ], + "shell-start": [ + { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "string", + regex: "\\w+" + }, + { + token: "string.interpolated.backtick.makefile", + regex: "`", + next: "start" + } + ] + }; }; - -}; - oop.inherits(MakefileHighlightRules, TextHighlightRules); - exports.MakefileHighlightRules = MakefileHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -354,51 +321,54 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/makefile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/makefile_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { +define("ace/mode/makefile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/makefile_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var MakefileHighlightRules = require("./makefile_highlight_rules").MakefileHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = MakefileHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = "#"; +(function () { + this.lineCommentStart = "#"; this.$indentWithTabs = true; - this.$id = "ace/mode/makefile"; + this.snippetFileId = "ace/snippets/makefile"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/makefile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-markdown.js b/vendor/assets/javascripts/ace/mode-markdown.js index d92b1804..82c962ba 100644 --- a/vendor/assets/javascripts/ace/mode-markdown.js +++ b/vendor/assets/javascripts/ace/mode-markdown.js @@ -1,90 +1,334 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); +var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -}; - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +336,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +486,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +504,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +543,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +593,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +663,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +724,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +735,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; +}); + +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var modes = require("../config").$modes; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var escaped = function (ch) { + return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; +}; +var MarkdownHighlightRules = function () { + HtmlHighlightRules.call(this); + var codeBlockStartRule = { + token: "support.function", + regex: /^\s*(```+[^`]*|~~~+[^~]*)$/, + onMatch: function (value, state, stack, line) { + var m = value.match(/^(\s*)([`~]+)(.*)/); + var language = /[\w-]+|$/.exec(m[3])[0]; + if (!modes[language]) + language = ""; + stack.unshift("githubblock", [], [m[1], m[2], language], state); + return this.token; + }, + next: "githubblock" + }; + var codeBlockRules = [{ + token: "support.function", + regex: ".*", + onMatch: function (value, state, stack, line) { + var embedState = stack[1]; + var indent = stack[2][0]; + var endMarker = stack[2][1]; + var language = stack[2][2]; + var m = /^(\s*)(`+|~+)\s*$/.exec(value); + if (m && m[1].length < indent.length + 3 + && m[2].length >= endMarker.length && m[2][0] == endMarker[0]) { + stack.splice(0, 3); + this.next = stack.shift(); + return this.token; + } + this.next = ""; + if (language && modes[language]) { + var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); + stack[1] = data.state; + return data.tokens; + } + return this.token; + } + }]; + this.$rules["start"].unshift({ + token: "empty_line", + regex: '^$', + next: "allowBlock" + }, { + token: "markup.heading.1", + regex: "^=+(?=\\s*$)" + }, { + token: "markup.heading.2", + regex: "^\\-+(?=\\s*$)" + }, { + token: function (value) { + return "markup.heading." + value.length; + }, + regex: /^#{1,6}(?=\s|$)/, + next: "header" + }, codeBlockStartRule, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" + }, { + token: "constant", + regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", + next: "allowBlock" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic" + }); + this.addRules({ + "basic": [{ + token: "constant.language.escape", + regex: /\\[\\`*_{}\[\]()#+\-.!]/ + }, { + token: "support.function", + regex: "(`+)(.*?[^`])(\\1)" + }, { + token: ["text", "constant", "text", "url", "string", "text"], + regex: "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" + }, { + token: ["text", "string", "text", "constant", "text"], + regex: "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)(" + escaped("]") + ")(\\])" + }, { + token: ["text", "string", "text", "markup.underline", "string", "text"], + regex: "(\\!?\\[)(" + // [ + escaped("]") + // link text or alt text + ")(\\]\\()" + // ]( + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image + '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" + "(\\))" // ) + }, { + token: "string.strong", + regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: "string.emphasis", + regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: ["text", "url", "text"], + regex: "(<)(" + + "(?:https?|ftp|dict):[^'\">\\s]+" + + "|" + + "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+" + + ")(>)" + }], + "allowBlock": [ + { token: "support.function", regex: "^ {4}.+", next: "allowBlock" }, + { token: "empty_line", regex: '^$', next: "allowBlock" }, + { token: "empty", regex: "", next: "start" } + ], + "header": [{ + regex: "$", + next: "start" + }, { + include: "basic" + }, { + defaultToken: "heading" + }], + "listblock-start": [{ + token: "support.variable", + regex: /(?:\[[ x]\])?/, + next: "listblock" + }], + "listblock": [{ + token: "empty_line", + regex: "^$", + next: "start" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic", noEscape: true + }, + codeBlockStartRule, + { + defaultToken: "list" //do not use markup.list to allow stling leading `*` differntly + }], + "blockquote": [{ + token: "empty_line", + regex: "^\\s*$", + next: "start" + }, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" + }, { + include: "basic", noEscape: true + }, { + defaultToken: "string.blockquote" + }], + "githubblock": codeBlockRules + }); + this.normalizeRules(); +}; +oop.inherits(MarkdownHighlightRules, TextHighlightRules); +exports.MarkdownHighlightRules = MarkdownHighlightRules; + +}); + +define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (!this.foldingStartMarker.test(line)) + return ""; + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) == "start") + return "end"; + return "start"; + } + return "start"; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (!line.match(this.foldingStartMarker)) + return; + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) !== "start") { + while (++row < maxRow) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(startRow, startColumn, row, 0); + } + else { + while (row-- > 0) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(row, line.length, startRow, 0); + } + } + var token; + function isHeading(row) { + token = session.getTokens(row)[0]; + return token && token.type.lastIndexOf(heading, 0) === 0; + } + var heading = "markup.heading"; + function getLevel() { + var ch = token.value[0]; + if (ch == "=") + return 6; + if (ch == "-") + return 5; + return 7 - token.value.search(/[^#]|$/); + } + if (isHeading(row)) { + var startHeadingLevel = getLevel(); + while (++row < maxRow) { + if (!isHeading(row)) + continue; + var level = getLevel(); + if (level >= startHeadingLevel) + break; + } + endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); + if (endRow > startRow) { + while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) + endRow--; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +1444,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +1497,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,256 +1537,339 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" - }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ]; - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; +}); + +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1015,26 +1880,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1047,8 +1907,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1059,7 +1918,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1070,14 +1928,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1085,63 +1947,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1263,876 +2135,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextMode = require("./text").Mode; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; -var XmlFoldMode = require("./folding/xml").FoldMode; -var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); -}; - -oop.inherits(Mode, TextMode); - -(function() { - - this.voidElements = lang.arrayToMap([]); - - this.blockComment = {start: ""}; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/xml"; -}).call(Mode.prototype); - -exports.Mode = Mode; -}); - -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - - url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - - strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], - escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - -var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, - "-moz-border-radius": 1, - "-moz-border-radius-topright": 1, - "-moz-border-radius-bottomright": 1, - "-moz-border-radius-topleft": 1, - "-moz-border-radius-bottomleft": 1, - "-webkit-border-radius": 1, - "-webkit-border-top-right-radius": 1, - "-webkit-border-top-left-radius": 1, - "-webkit-border-bottom-right-radius": 1, - "-webkit-border-bottom-left-radius": 1, - "-moz-box-shadow": 1, - "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } -}; - -var CssCompletions = function() { - -}; - -(function() { - - this.completionsDefined = false; - - this.defineCompletions = function() { - if (document) { - var style = document.createElement('c').style; - - for (var i in style) { - if (typeof style[i] !== 'string') - continue; - - var name = i.replace(/[A-Z]/g, function(x) { - return '-' + x.toLowerCase(); - }); - - if (!propertyMap.hasOwnProperty(name)) - propertyMap[name] = 1; - } - } - - this.completionsDefined = true; - }; - - this.getCompletions = function(state, session, pos, prefix) { - if (!this.completionsDefined) { - this.defineCompletions(); - } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ - var line = session.getLine(pos.row).substr(0, pos.column); - if (/:[^;]+$/.test(line)) { - /([\w\-]+):[^:]*$/.test(line); - - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); - } - } - - return []; - }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { - var properties = Object.keys(propertyMap); - return properties.map(function(property){ - return { - caption: property, - snippet: property + ': $0;', - meta: "property", - score: Number.MAX_VALUE - }; - }); - }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { - var line = session.getLine(pos.row).substr(0, pos.column); - var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - - if (!property) - return []; - var values = []; - if (property in propertyMap && typeof propertyMap[property] === "object") { - values = Object.keys(propertyMap[property]); - } - return values.map(function(value){ - return { - caption: value, - snippet: value, - meta: "property value", - score: Number.MAX_VALUE - }; - }); - }; - -}).call(CssCompletions.prototype); - -exports.CssCompletions = CssCompletions; -}); - -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Behaviour = require("../behaviour").Behaviour; -var CstyleBehaviour = require("./cstyle").CstyleBehaviour; -var TokenIterator = require("../../token_iterator").TokenIterator; - -var CssBehaviour = function () { - - this.inherit(CstyleBehaviour); - - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ':') { - return { - text: '', - selection: [1, 1] - }; - } - if (!line.substring(cursor.column).match(/^\s*;/)) { - return { - text: ':;', - selection: [1, 1] - }; - } - } - } - }); - - this.add("colon", "deletion", function (state, action, editor, session, range) { - var selected = session.doc.getTextRange(range); - if (!range.isMultiLine() && selected === ':') { - var cursor = editor.getCursorPosition(); - var iterator = new TokenIterator(session, cursor.row, cursor.column); - var token = iterator.getCurrentToken(); - if (token && token.value.match(/\s+/)) { - token = iterator.stepBackward(); - } - if (token && token.type === 'support.type') { - var line = session.doc.getLine(range.start.row); - var rightChar = line.substring(range.end.column, range.end.column + 1); - if (rightChar === ';') { - range.end.column ++; - return range; - } - } - } - }); - - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { - var cursor = editor.getCursorPosition(); - var line = session.doc.getLine(cursor.row); - var rightChar = line.substring(cursor.column, cursor.column + 1); - if (rightChar === ';') { - return { - text: '', - selection: [1, 1] - }; - } - } - }); - -}; -oop.inherits(CssBehaviour, CstyleBehaviour); - -exports.CssBehaviour = CssBehaviour; -}); - -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var WorkerClient = require("../worker/worker_client").WorkerClient; -var CssCompletions = require("./css_completions").CssCompletions; -var CssBehaviour = require("./behaviour/css").CssBehaviour; -var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = CssHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CssBehaviour(); - this.$completer = new CssCompletions(); - this.foldingRules = new CStyleFoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - - this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { - var indent = this.$getIndent(line); - var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { - return indent; - } - - var match = line.match(/^.*\{\s*$/); - if (match) { - indent += tab; - } - - return indent; - }; - - this.checkOutdent = function(state, line, input) { - return this.$outdent.checkOutdent(line, input); - }; - - this.autoOutdent = function(state, doc, row) { - this.$outdent.autoOutdent(doc, row); - }; - - this.getCompletions = function(state, session, pos, prefix) { - return this.$completer.getCompletions(state, session, pos, prefix); - }; - - this.createWorker = function(session) { - var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); - worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { - session.setAnnotations(e.data); - }); - - worker.on("terminate", function() { - session.clearAnnotations(); - }); - - return worker; - }; - - this.$id = "ace/mode/css"; -}).call(Mode.prototype); - -exports.Mode = Mode; - -}); - -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ] - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(defaultMode, subModes) { - this.defaultMode = defaultMode; - this.subModes = subModes; -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - - this.$getMode = function(state) { - if (typeof state != "string") - state = state[0]; - for (var key in this.subModes) { - if (state.indexOf(key) === 0) - return this.subModes[key]; - } - return null; - }; - - this.$tryMode = function(state, session, foldStyle, row) { - var mode = this.$getMode(state); - return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); - }; - - this.getFoldWidget = function(session, foldStyle, row) { - return ( - this.$tryMode(session.getState(row-1), session, foldStyle, row) || - this.$tryMode(session.getState(row), session, foldStyle, row) || - this.defaultMode.getFoldWidget(session, foldStyle, row) - ); - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var mode = this.$getMode(session.getState(row-1)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.$getMode(session.getState(row)); - - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) - mode = this.defaultMode; - - return mode.getFoldWidgetRange(session, foldStyle, row); - }; - -}).call(FoldMode.prototype); - -}); - -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2156,7 +2189,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2214,161 +2246,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2380,21 +2402,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2402,57 +2421,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2465,387 +2477,376 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; - -var escaped = function(ch) { - return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; -}; - -function github_embed(tag, prefix) { - return { // Github style block - token : "support.function", - regex : "^\\s*```" + tag + "\\s*$", - push : prefix + "start" +var reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' + + 'esac|fi|for|if|in|then|until|while|' + + '&|;|export|local|read|typeset|unset|' + + 'elif|select|set|function|declare|readonly'); +var languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' + + 'cd|command|compgen|complete|continue|' + + 'dirs|disown|echo|enable|eval|exec|' + + 'exit|fc|fg|getopts|hash|help|history|' + + 'jobs|kill|let|logout|popd|printf|pushd|' + + 'pwd|return|set|shift|shopt|source|' + + 'suspend|test|times|trap|type|ulimit|' + + 'umask|unalias|wait'); +var ShHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword": reservedKeywords, + "support.function.builtin": languageConstructs, + "invalid.deprecated": "debugger" + }, "identifier"); + var integer = "(?:(?:[1-9]\\d*)|(?:0))"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var fileDescriptor = "(?:&" + intPart + ")"; + var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; + var variable = "(?:" + variableName + "(?==))"; + var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + var func = "(?:" + variableName + "\\s*\\(\\))"; + this.$rules = { + "start": [{ + token: "constant", + regex: /\\./ + }, { + token: ["text", "comment"], + regex: /(^|\s)(#.*)$/ + }, { + token: "string.start", + regex: '"', + push: [{ + token: "constant.language.escape", + regex: /\\(?:[$`"\\]|$)/ + }, { + include: "variables" + }, { + token: "keyword.operator", + regex: /`/ // TODO highlight ` + }, { + token: "string.end", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: "\\$'", + push: [{ + token: "constant.language.escape", + regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex: "<<<", + token: "keyword.operator" + }, { + stateName: "heredoc", + regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch: function (value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + { type: "constant", value: tokens[1] }, + { type: "text", value: tokens[2] }, + { type: "string", value: tokens[3] }, + { type: "support.class", value: tokens[4] }, + { type: "string", value: tokens[5] } + ]; + }, + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: ["keyword", "text", "text", "text", "variable"], + regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token: "variable.language", + regex: builtinVariable + }, { + token: "variable", + regex: variable + }, { + include: "variables" + }, { + token: "support.function", + regex: func + }, { + token: "support.function", + regex: fileDescriptor + }, { + token: "string", // ' string + start: "'", end: "'" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token: "punctuation.operator", + regex: ";" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]]" + }, { + token: "paren.rparen", + regex: "[\\)\\}]", + next: "pop" + }], + variables: [{ + token: "variable", + regex: /(\$)(\w+)/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\()/, + push: "start" + }, { + token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push: "start" + }, { + token: "variable", + regex: /\$[*@#?\-$!0_]/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\{)/, + push: "start" + }] }; -} - -var MarkdownHighlightRules = function() { - HtmlHighlightRules.call(this); - - this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', - next: "allowBlock" - }, { // h1 - token: "markup.heading.1", - regex: "^=+(?=\\s*$)" - }, { // h2 - token: "markup.heading.2", - regex: "^\\-+(?=\\s*$)" - }, { - token : function(value) { - return "markup.heading." + value.length; - }, - regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/, - next : "header" - }, - github_embed("(?:javascript|js)", "jscode-"), - github_embed("xml", "xmlcode-"), - github_embed("html", "htmlcode-"), - github_embed("css", "csscode-"), - { // Github style block - token : "support.function", - regex : "^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$", - next : "githubblock" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic" - }); - - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\[)(" + // [ - escaped("]") + // link text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ - ")(>)" - }], - "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty_line", regex : '^$', next: "allowBlock"}, - {token : "empty", regex : "", next : "start"} - ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, { // Github style block - token : "support.function", - regex : "^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$", - next : "githubblock" - }, { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // Blockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : [ { - token : "support.function", - regex : "^\\s*```", - next : "start" - }, { - defaultToken : "support.function" - } ] - }); - - this.embedRules(JavaScriptHighlightRules, "jscode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(HtmlHighlightRules, "htmlcode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(CssHighlightRules, "csscode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(XmlHighlightRules, "xmlcode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - this.normalizeRules(); }; -oop.inherits(MarkdownHighlightRules, TextHighlightRules); - -exports.MarkdownHighlightRules = MarkdownHighlightRules; -}); - -define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var BaseFoldMode = require("./fold_mode").FoldMode; -var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; - - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - if (!this.foldingStartMarker.test(line)) - return ""; - - if (line[0] == "`") { - if (session.bgTokenizer.getState(row) == "start") - return "end"; - return "start"; - } - - return "start"; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var line = session.getLine(row); - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - if (!line.match(this.foldingStartMarker)) - return; - - if (line[0] == "`") { - if (session.bgTokenizer.getState(row) !== "start") { - while (++row < maxRow) { - line = session.getLine(row); - if (line[0] == "`" & line.substring(0, 3) == "```") - break; - } - return new Range(startRow, startColumn, row, 0); - } else { - while (row -- > 0) { - line = session.getLine(row); - if (line[0] == "`" & line.substring(0, 3) == "```") - break; - } - return new Range(row, line.length, startRow, 0); - } - } - - var token; - function isHeading(row) { - token = session.getTokens(row)[0]; - return token && token.type.lastIndexOf(heading, 0) === 0; - } - - var heading = "markup.heading"; - function getLevel() { - var ch = token.value[0]; - if (ch == "=") return 6; - if (ch == "-") return 5; - return 7 - token.value.search(/[^#]/); - } - - if (isHeading(row)) { - var startHeadingLevel = getLevel(); - while (++row < maxRow) { - if (!isHeading(row)) - continue; - var level = getLevel(); - if (level >= startHeadingLevel) - break; - } - - endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); - - if (endRow > startRow) { - while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) - endRow--; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } - } - }; - -}).call(FoldMode.prototype); +oop.inherits(ShHighlightRules, TextHighlightRules); +exports.ShHighlightRules = ShHighlightRules; }); -define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; -var JavaScriptMode = require("./javascript").Mode; -var XmlMode = require("./xml").Mode; -var HtmlMode = require("./html").Mode; -var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; -var MarkdownFoldMode = require("./folding/markdown").FoldMode; - -var Mode = function() { - this.HighlightRules = MarkdownHighlightRules; - - this.createModeDelegates({ - "js-": JavaScriptMode, - "xml-": XmlMode, - "html-": HtmlMode - }); - - this.foldingRules = new MarkdownFoldMode(); +var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; +var Range = require("../range").Range; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = ShHighlightRules; + this.foldingRules = new CStyleFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + this.checkOutdent = function (state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + if (!tokens) + return false; + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + if (!last) + return false; + return (last.type == "keyword" && outdents[last.value]); + }; + this.autoOutdent = function (state, doc, row) { + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); + }; + this.$id = "ace/mode/sh"; + this.snippetFileId = "ace/snippets/sh"; +}).call(Mode.prototype); +exports.Mode = Mode; -(function() { +}); + +define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var XmlFoldMode = require("./folding/xml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.voidElements = lang.arrayToMap([]); + this.blockComment = { start: "" }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/xml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/behaviour/cstyle","ace/mode/text","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var TextMode = require("./text").Mode; +var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; +var MarkdownFoldMode = require("./folding/markdown").FoldMode; +var Mode = function () { + this.HighlightRules = MarkdownHighlightRules; + this.createModeDelegates({ + javascript: require("./javascript").Mode, + html: require("./html").Mode, + bash: require("./sh").Mode, + sh: require("./sh").Mode, + xml: require("./xml").Mode, + css: require("./css").Mode + }); + this.foldingRules = new MarkdownFoldMode(); + this.$behaviour = new CstyleBehaviour({ braces: true }); +}; +oop.inherits(Mode, TextMode); +(function () { this.type = "text"; - this.blockComment = {start: ""}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "" }; + this.$quotes = { '"': '"', "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { if (state == "listblock") { var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); if (!match) @@ -2854,12 +2855,21 @@ oop.inherits(Mode, TextMode); if (!marker) marker = parseInt(match[3], 10) + 1 + "."; return match[1] + marker + match[4]; - } else { + } + else { return this.$getIndent(line); } }; this.$id = "ace/mode/markdown"; + this.snippetFileId = "ace/snippets/markdown"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/markdown"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-mask.js b/vendor/assets/javascripts/ace/mode-mask.js index d7d4b696..8e4d660f 100644 --- a/vendor/assets/javascripts/ace/mode-mask.js +++ b/vendor/assets/javascripts/ace/mode-mask.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -546,728 +678,632 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var modes = require("../config").$modes; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; - -var escaped = function(ch) { +var escaped = function (ch) { return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; }; - -function github_embed(tag, prefix) { - return { // Github style block - token : "support.function", - regex : "^\\s*```" + tag + "\\s*$", - push : prefix + "start" - }; -} - -var MarkdownHighlightRules = function() { +var MarkdownHighlightRules = function () { HtmlHighlightRules.call(this); - + var codeBlockStartRule = { + token: "support.function", + regex: /^\s*(```+[^`]*|~~~+[^~]*)$/, + onMatch: function (value, state, stack, line) { + var m = value.match(/^(\s*)([`~]+)(.*)/); + var language = /[\w-]+|$/.exec(m[3])[0]; + if (!modes[language]) + language = ""; + stack.unshift("githubblock", [], [m[1], m[2], language], state); + return this.token; + }, + next: "githubblock" + }; + var codeBlockRules = [{ + token: "support.function", + regex: ".*", + onMatch: function (value, state, stack, line) { + var embedState = stack[1]; + var indent = stack[2][0]; + var endMarker = stack[2][1]; + var language = stack[2][2]; + var m = /^(\s*)(`+|~+)\s*$/.exec(value); + if (m && m[1].length < indent.length + 3 + && m[2].length >= endMarker.length && m[2][0] == endMarker[0]) { + stack.splice(0, 3); + this.next = stack.shift(); + return this.token; + } + this.next = ""; + if (language && modes[language]) { + var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); + stack[1] = data.state; + return data.tokens; + } + return this.token; + } + }]; this.$rules["start"].unshift({ - token : "empty_line", - regex : '^$', + token: "empty_line", + regex: '^$', next: "allowBlock" - }, { // h1 + }, { token: "markup.heading.1", regex: "^=+(?=\\s*$)" - }, { // h2 + }, { token: "markup.heading.2", regex: "^\\-+(?=\\s*$)" }, { - token : function(value) { + token: function (value) { return "markup.heading." + value.length; }, - regex : /^#{1,6}(?=\s*[^ #]|\s+#.)/, - next : "header" - }, - github_embed("(?:javascript|js)", "jscode-"), - github_embed("xml", "xmlcode-"), - github_embed("html", "htmlcode-"), - github_embed("css", "csscode-"), - { // Github style block - token : "support.function", - regex : "^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$", - next : "githubblock" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { // HR * - _ - token : "constant", - regex : "^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$", - next: "allowBlock" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" + regex: /^#{1,6}(?=\s|$)/, + next: "header" + }, codeBlockStartRule, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" }, { - include : "basic" + token: "constant", + regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", + next: "allowBlock" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic" }); - this.addRules({ - "basic" : [{ - token : "constant.language.escape", - regex : /\\[\\`*_{}\[\]()#+\-.!]/ - }, { // code span ` - token : "support.function", - regex : "(`+)(.*?[^`])(\\1)" - }, { // reference - token : ["text", "constant", "text", "url", "string", "text"], - regex : "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" - }, { // link by reference - token : ["text", "string", "text", "constant", "text"], - regex : "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)("+ escaped("]") + ")(\\])" - }, { // link by url - token : ["text", "string", "text", "markup.underline", "string", "text"], - regex : "(\\[)(" + // [ - escaped("]") + // link text - ")(\\]\\()"+ // ]( - '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href - '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" - "(\\))" // ) - }, { // strong ** __ - token : "string.strong", - regex : "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // emphasis * _ - token : "string.emphasis", - regex : "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" - }, { // - token : ["text", "url", "text"], - regex : "(<)("+ - "(?:https?|ftp|dict):[^'\">\\s]+"+ - "|"+ - "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+"+ + "basic": [{ + token: "constant.language.escape", + regex: /\\[\\`*_{}\[\]()#+\-.!]/ + }, { + token: "support.function", + regex: "(`+)(.*?[^`])(\\1)" + }, { + token: ["text", "constant", "text", "url", "string", "text"], + regex: "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" + }, { + token: ["text", "string", "text", "constant", "text"], + regex: "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)(" + escaped("]") + ")(\\])" + }, { + token: ["text", "string", "text", "markup.underline", "string", "text"], + regex: "(\\!?\\[)(" + // [ + escaped("]") + // link text or alt text + ")(\\]\\()" + // ]( + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image + '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" + "(\\))" // ) + }, { + token: "string.strong", + regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: "string.emphasis", + regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: ["text", "url", "text"], + regex: "(<)(" + + "(?:https?|ftp|dict):[^'\">\\s]+" + + "|" + + "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+" + ")(>)" - }], + }], "allowBlock": [ - {token : "support.function", regex : "^ {4}.+", next : "allowBlock"}, - {token : "empty_line", regex : '^$', next: "allowBlock"}, - {token : "empty", regex : "", next : "start"} + { token: "support.function", regex: "^ {4}.+", next: "allowBlock" }, + { token: "empty_line", regex: '^$', next: "allowBlock" }, + { token: "empty", regex: "", next: "start" } ], - - "header" : [{ - regex: "$", - next : "start" - }, { - include: "basic" - }, { - defaultToken : "heading" - } ], - - "listblock-start" : [{ - token : "support.variable", - regex : /(?:\[[ x]\])?/, - next : "listblock" - }], - - "listblock" : [ { // Lists only escape on completely blank lines. - token : "empty_line", - regex : "^$", - next : "start" - }, { // list - token : "markup.list", - regex : "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", - next : "listblock-start" - }, { - include : "basic", noEscape: true - }, { // Github style block - token : "support.function", - regex : "^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$", - next : "githubblock" - }, { - defaultToken : "list" //do not use markup.list to allow stling leading `*` differntly - } ], - - "blockquote" : [ { // Blockquotes only escape on blank lines. - token : "empty_line", - regex : "^\\s*$", - next : "start" - }, { // block quote - token : "string.blockquote", - regex : "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", - next : "blockquote" - }, { - include : "basic", noEscape: true - }, { - defaultToken : "string.blockquote" - } ], - - "githubblock" : [ { - token : "support.function", - regex : "^\\s*```", - next : "start" - }, { - defaultToken : "support.function" - } ] + "header": [{ + regex: "$", + next: "start" + }, { + include: "basic" + }, { + defaultToken: "heading" + }], + "listblock-start": [{ + token: "support.variable", + regex: /(?:\[[ x]\])?/, + next: "listblock" + }], + "listblock": [{ + token: "empty_line", + regex: "^$", + next: "start" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic", noEscape: true + }, + codeBlockStartRule, + { + defaultToken: "list" //do not use markup.list to allow stling leading `*` differntly + }], + "blockquote": [{ + token: "empty_line", + regex: "^\\s*$", + next: "start" + }, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" + }, { + include: "basic", noEscape: true + }, { + defaultToken: "string.blockquote" + }], + "githubblock": codeBlockRules }); - - this.embedRules(JavaScriptHighlightRules, "jscode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(HtmlHighlightRules, "htmlcode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(CssHighlightRules, "csscode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - - this.embedRules(XmlHighlightRules, "xmlcode-", [{ - token : "support.function", - regex : "^\\s*```", - next : "pop" - }]); - this.normalizeRules(); }; oop.inherits(MarkdownHighlightRules, TextHighlightRules); - exports.MarkdownHighlightRules = MarkdownHighlightRules; + }); -define("ace/mode/mask_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/css_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/mask_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/css_highlight_rules","ace/mode/markdown_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; exports.MaskHighlightRules = MaskHighlightRules; - var oop = require("../lib/oop"); var lang = require("../lib/lang"); -var TextRules = require("./text_highlight_rules").TextHighlightRules; -var JSRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var CssRules = require("./css_highlight_rules").CssHighlightRules; -var MDRules = require("./markdown_highlight_rules").MarkdownHighlightRules; -var HTMLRules = require("./html_highlight_rules").HtmlHighlightRules; - -var token_TAG = "keyword.support.constant.language", - token_COMPO = "support.function.markup.bold", - token_KEYWORD = "keyword", - token_LANG = "constant.language", - token_UTIL = "keyword.control.markup.italic", - token_ATTR = "support.variable.class", - token_PUNKT = "keyword.operator", - token_ITALIC = "markup.italic", - token_BOLD = "markup.bold", - token_LPARE = "paren.lparen", - token_RPARE = "paren.rparen"; - -var const_FUNCTIONS, - const_KEYWORDS, - const_CONST, - const_TAGS; -(function(){ - const_FUNCTIONS = lang.arrayToMap( - ("log").split("|") - ); - const_CONST = lang.arrayToMap( - (":dualbind|:bind|:import|slot|event|style|html|markdown|md").split("|") - ); - const_KEYWORDS = lang.arrayToMap( - ("debugger|define|var|if|each|for|of|else|switch|case|with|visible|+if|+each|+for|+switch|+with|+visible|include|import").split("|") - ); - const_TAGS = lang.arrayToMap( - ("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + - "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + - "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + - "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + - "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + - "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + - "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + - "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + - "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|") - ); +var TextRules = require("./text_highlight_rules").TextHighlightRules; +var JSRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var CssRules = require("./css_highlight_rules").CssHighlightRules; +var MDRules = require("./markdown_highlight_rules").MarkdownHighlightRules; +var HTMLRules = require("./html_highlight_rules").HtmlHighlightRules; +var token_TAG = "keyword.support.constant.language", token_COMPO = "support.function.markup.bold", token_KEYWORD = "keyword", token_LANG = "constant.language", token_UTIL = "keyword.control.markup.italic", token_ATTR = "support.variable.class", token_PUNKT = "keyword.operator", token_ITALIC = "markup.italic", token_BOLD = "markup.bold", token_LPARE = "paren.lparen", token_RPARE = "paren.rparen"; +var const_FUNCTIONS, const_KEYWORDS, const_CONST, const_TAGS; +(function () { + const_FUNCTIONS = lang.arrayToMap(("log").split("|")); + const_CONST = lang.arrayToMap((":dualbind|:bind|:import|slot|event|style|html|markdown|md").split("|")); + const_KEYWORDS = lang.arrayToMap(("debugger|define|var|if|each|for|of|else|switch|case|with|visible|+if|+each|+for|+switch|+with|+visible|include|import").split("|")); + const_TAGS = lang.arrayToMap(("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + + "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + + "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + + "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + + "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + + "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + + "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + + "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + + "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|")); }()); - -function MaskHighlightRules () { - +function MaskHighlightRules() { this.$rules = { - "start" : [ + "start": [ Token("comment", "\\/\\/.*$"), Token("comment", "\\/\\*", [ Token("comment", ".*?\\*\\/", "start"), Token("comment", ".+") ]), - Blocks.string("'''"), Blocks.string('"""'), Blocks.string('"'), Blocks.string("'"), - Blocks.syntax(/(markdown|md)\b/, "md-multiline", "multiline"), Blocks.syntax(/html\b/, "html-multiline", "multiline"), Blocks.syntax(/(slot|event)\b/, "js-block", "block"), Blocks.syntax(/style\b/, "css-block", "block"), Blocks.syntax(/var\b/, "js-statement", "attr"), - Blocks.tag(), - Token(token_LPARE, "[[({>]"), Token(token_RPARE, "[\\])};]", "start"), { @@ -1276,24 +1312,15 @@ function MaskHighlightRules () { ] }; var rules = this; - addJavaScript("interpolation", /\]/, token_RPARE + "." + token_ITALIC); addJavaScript("statement", /\)|}|;/); addJavaScript("block", /\}/); addCss(); addMarkdown(); addHtml(); - function addJavaScript(name, escape, closeType) { - var prfx = "js-" + name + "-", - rootTokens = name === "block" ? ["start"] : ["start", "no_regex"]; - add( - JSRules - , prfx - , escape - , rootTokens - , closeType - ); + var prfx = "js-" + name + "-", rootTokens = name === "block" ? ["start"] : ["start", "no_regex"]; + add(JSRules, prfx, escape, rootTokens, closeType); } function addCss() { add(CssRules, "css-block-", /\}/); @@ -1306,7 +1333,7 @@ function MaskHighlightRules () { } function add(Rules, strPrfx, rgxEnd, rootTokens, closeType) { var next = "pop"; - var tokens = rootTokens || [ "start" ]; + var tokens = rootTokens || ["start"]; if (tokens.length === 0) { tokens = null; } @@ -1316,47 +1343,34 @@ function MaskHighlightRules () { Token("empty", "", "start") ]; } - rules.embedRules( - Rules - , strPrfx - , [ Token(closeType || token_RPARE, rgxEnd, next) ] - , tokens - , tokens == null ? true : false - ); + rules.embedRules(Rules, strPrfx, [Token(closeType || token_RPARE, rgxEnd, next)], tokens, tokens == null ? true : false); } - this.normalizeRules(); } oop.inherits(MaskHighlightRules, TextRules); - var Blocks = { - string: function(str, next){ - var token = Token( - "string.start" - , str - , [ - Token(token_LPARE + "." + token_ITALIC, /~\[/, Blocks.interpolation()), - Token("string.end", str, "pop"), - { - defaultToken: "string" - } - ] - , next - ); - if (str.length === 1){ + string: function (str, next) { + var token = Token("string.start", str, [ + Token(token_LPARE + "." + token_ITALIC, /~\[/, Blocks.interpolation()), + Token("string.end", str, "pop"), + { + defaultToken: "string" + } + ], next); + if (str.length === 1) { var escaped = Token("string.escape", "\\\\" + str); token.push.unshift(escaped); } return token; }, - interpolation: function(){ + interpolation: function () { return [ Token(token_UTIL, /\s*\w*\s*:/), "js-interpolation-start" ]; }, tagHead: function (rgx) { - return Token(token_ATTR, rgx, [ + return Token(token_ATTR, rgx, [ Token(token_ATTR, /[\w\-_]+/), Token(token_LPARE + "." + token_ITALIC, /~\[/, Blocks.interpolation()), Blocks.goUp() @@ -1365,7 +1379,7 @@ var Blocks = { tag: function () { return { token: 'tag', - onMatch : function(value) { + onMatch: function (value) { if (void 0 !== const_KEYWORDS[value]) return token_KEYWORD; if (void 0 !== const_CONST[value]) @@ -1374,51 +1388,49 @@ var Blocks = { return "support.function"; if (void 0 !== const_TAGS[value.toLowerCase()]) return token_TAG; - return token_COMPO; }, - regex : /([@\w\-_:+]+)|((^|\s)(?=\s*(\.|#)))/, + regex: /([@\w\-_:+]+)|((^|\s)(?=\s*(\.|#)))/, push: [ - Blocks.tagHead(/\./) , - Blocks.tagHead(/#/) , + Blocks.tagHead(/\./), + Blocks.tagHead(/#/), Blocks.expression(), Blocks.attribute(), - Token(token_LPARE, /[;>{]/, "pop") ] }; }, - syntax: function(rgx, next, type){ + syntax: function (rgx, next, type) { return { token: token_LANG, - regex : rgx, + regex: rgx, push: ({ "attr": [ next + "-start", Token(token_PUNKT, /;/, "start") ], "multiline": [ - Blocks.tagHead(/\./) , - Blocks.tagHead(/#/) , + Blocks.tagHead(/\./), + Blocks.tagHead(/#/), Blocks.attribute(), Blocks.expression(), Token(token_LPARE, /[>\{]/), Token(token_PUNKT, /;/, "start"), - Token(token_LPARE, /'''|"""/, [ next + "-start" ]) + Token(token_LPARE, /'''|"""/, [next + "-start"]) ], "block": [ - Blocks.tagHead(/\./) , - Blocks.tagHead(/#/) , + Blocks.tagHead(/\./), + Blocks.tagHead(/#/), Blocks.attribute(), Blocks.expression(), - Token(token_LPARE, /\{/, [ next + "-start" ]) + Token(token_LPARE, /\{/, [next + "-start"]) ] })[type] }; }, - attribute: function(){ - return Token(function(value){ - return /^x\-/.test(value) + attribute: function () { + return Token(function (value) { + return /^x\-/.test(value) ? token_ATTR + "." + token_BOLD : token_ATTR; }, /[\w_-]+/, [ @@ -1431,21 +1443,19 @@ var Blocks = { Blocks.goUp() ]); }, - expression: function(){ - return Token(token_LPARE, /\(/, [ "js-statement-start" ]); + expression: function () { + return Token(token_LPARE, /\(/, ["js-statement-start"]); }, - word: function(){ + word: function () { return Token("string", /[\w-_]+/); }, - goUp: function(){ + goUp: function () { return Token("text", "", "pop"); }, - goStart: function(){ + goStart: function () { return Token("text", "", "start"); } }; - - function Token(token, rgx, mix) { var push, next, onMatch; if (arguments.length === 4) { @@ -1460,7 +1470,7 @@ function Token(token, rgx, mix) { } if (typeof token === "function") { onMatch = token; - token = "empty"; + token = "empty"; } return { token: token, @@ -1473,60 +1483,44 @@ function Token(token, rgx, mix) { }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1538,20 +1532,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1565,116 +1558,102 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -1687,100 +1666,95 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/mask",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mask_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/mask",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mask_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var MaskHighlightRules = require("./mask_highlight_rules").MaskHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = MaskHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/mask"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/mask"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-matlab.js b/vendor/assets/javascripts/ace/mode-matlab.js index 908a5736..ebc7fe93 100644 --- a/vendor/assets/javascripts/ace/mode-matlab.js +++ b/vendor/assets/javascripts/ace/mode-matlab.js @@ -1,256 +1,239 @@ -define("ace/mode/matlab_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matlab_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MatlabHighlightRules = function() { - -var keywords = ( - "break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while" - ); - - var builtinConstants = ( - "true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout" - ); - - var builtinFunctions = ( - "abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|"+ - "airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|" + - "audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|"+ - "bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|"+ - "bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|"+ - "camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|"+ - "computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|"+ - "getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|"+ - "getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|"+ - "getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|"+ - "getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|"+ - "hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|"+ - "renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|"+ - "setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|"+ - "cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|"+ - "clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|"+ - "commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|"+ - "copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|"+ - "cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|"+ - "dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|"+ - "demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|"+ - "dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|"+ - "erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|"+ - "expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|"+ - "fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|"+ - "findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|"+ - "frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|"+ - "get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|"+ - "guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|"+ - "hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|"+ - "hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|"+ - "ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|"+ - "1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|"+ - "isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|"+ - "isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|"+ - "isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|"+ - "lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|"+ - "linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|"+ - "lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|"+ - "matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|"+ - "MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|"+ - "minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|"+ - "multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|"+ - "ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|"+ - "NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|"+ - "getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|"+ - "inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|"+ - "setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|"+ - "ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|"+ - "orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|"+ - "permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|"+ - "polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|"+ - "PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|"+ - "getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|"+ - "rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|"+ - "restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|"+ - "saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|"+ - "setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|"+ - "spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|"+ - "str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|"+ - "strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|"+ - "support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|"+ - "textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|"+ - "transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|"+ - "uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|"+ - "uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|"+ - "userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|"+ - "view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|"+ - "what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|"+ - "ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|"+ - "pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|"+ - "cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|"+ - "template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|"+ - "controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|"+ - "dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|"+ - "fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|"+ - "pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|"+ - "gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|"+ - "jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|"+ - "LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|"+ - "mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|"+ - "sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|"+ - "nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|"+ - "pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|"+ - "Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|"+ - "rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|"+ - "robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|"+ - "statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|"+ - "ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest"+ - "adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|"+ - "bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|"+ - "cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|"+ - "entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|"+ - "getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|"+ - "iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|"+ - "imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|"+ - "imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|"+ - "imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|"+ - "imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|"+ - "imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|"+ - "iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|"+ - "isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|"+ - "medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|"+ - "reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|"+ - "rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|"+ - "warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|"+ - "linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog" - ); - var storageType = ( - "cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse" - ); +var MatlabHighlightRules = function () { + var keywords = ("break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while"); + var builtinConstants = ("true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout"); + var builtinFunctions = ("abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|" + + "airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|" + + "audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|" + + "bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|" + + "bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|" + + "camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|" + + "computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|" + + "getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|" + + "getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|" + + "getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|" + + "getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|" + + "hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|" + + "renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|" + + "setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|" + + "cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|" + + "clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|" + + "commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|" + + "copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|" + + "cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|" + + "dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|" + + "demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|" + + "dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|" + + "erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|" + + "expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|" + + "fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|" + + "findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|" + + "frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|" + + "get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|" + + "guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|" + + "hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|" + + "hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|" + + "ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|" + + "1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|" + + "isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|" + + "isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|" + + "isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|" + + "lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|" + + "linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|" + + "lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|" + + "matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|" + + "MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|" + + "minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|" + + "multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|" + + "ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|" + + "NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|" + + "getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|" + + "inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|" + + "setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|" + + "ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|" + + "orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|" + + "permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|" + + "polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|" + + "PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|" + + "getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|" + + "rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|" + + "restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|" + + "saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|" + + "setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|" + + "spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|" + + "str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|" + + "strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|" + + "support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|" + + "textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|" + + "transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|" + + "uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|" + + "uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|" + + "userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|" + + "view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|" + + "what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|" + + "ylabel|ylim|zeros|zip|zlabel|zlim|zoom|addedvarplot|andrewsplot|anova(?:1|2|n)|ansaribradley|aoctool|barttest|bbdesign|beta(?:cdf|fit|inv|like|pdf|rnd|stat)|bino(?:cdf|fit|inv|" + + "pdf|rnd|stat)|biplot|bootci|bootstrp|boxplot|candexch|candgen|canoncorr|capability|capaplot|caseread|casewrite|categorical|ccdesign|cdfplot|chi2(?:cdf|gof|inv|pdf|rnd|stat)|" + + "cholcov|Classification(?:BaggedEnsemble|Discriminant(?:.(?:fit|make|template))?|Ensemble|KNN(?:.(?:fit|template))?|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|" + + "template))?)|classify|classregtree|cluster|clusterdata|cmdscale|combnk|Compact(?:Classification(?:Discriminant|Ensemble|Tree)|Regression(?:Ensemble|Tree)|TreeBagger)|confusionmat|" + + "controlchart|controlrules|cophenet|copula(?:cdf|fit|param|pdf|rnd|stat)|cordexch|corr|corrcov|coxphfit|createns|crosstab|crossval|cvpartition|datasample|dataset|daugment|dcovary|" + + "dendrogram|dfittool|disttool|dummyvar|dwtest|ecdf|ecdfhist|ev(?:cdf|fit|inv|like|pdf|rnd|stat)|ExhaustiveSearcher|exp(?:cdf|fit|inv|like|pdf|rnd|stat)|factoran|fcdf|ff2n|finv|" + + "fitdist|fitensemble|fpdf|fracfact|fracfactgen|friedman|frnd|fstat|fsurfht|fullfact|gagerr|gam(?:cdf|fit|inv|like|pdf|rnd|stat)|GeneralizedLinearModel(?:.fit)?|geo(?:cdf|inv|mean|" + + "pdf|rnd|stat)|gev(?:cdf|fit|inv|like|pdf|rnd|stat)|gline|glmfit|glmval|glyphplot|gmdistribution(?:.fit)?|gname|gp(?:cdf|fit|inv|like|pdf|rnd|stat)|gplotmatrix|grp2idx|grpstats|" + + "gscatter|haltonset|harmmean|hist3|histfit|hmm(?:decode|estimate|generate|train|viterbi)|hougen|hyge(?:cdf|inv|pdf|rnd|stat)|icdf|inconsistent|interactionplot|invpred|iqr|iwishrnd|" + + "jackknife|jbtest|johnsrnd|KDTreeSearcher|kmeans|knnsearch|kruskalwallis|ksdensity|kstest|kstest2|kurtosis|lasso|lassoglm|lassoPlot|leverage|lhsdesign|lhsnorm|lillietest|" + + "LinearModel(?:.fit)?|linhyptest|linkage|logn(?:cdf|fit|inv|like|pdf|rnd|stat)|lsline|mad|mahal|maineffectsplot|manova1|manovacluster|mdscale|mhsample|mle|mlecov|mnpdf|" + + "mnrfit|mnrnd|mnrval|moment|multcompare|multivarichart|mvn(?:cdf|pdf|rnd)|mvregress|mvregresslike|mvt(?:cdf|pdf|rnd)|NaiveBayes(?:.fit)?|nan(?:cov|max|mean|median|min|std|" + + "sum|var)|nbin(?:cdf|fit|inv|pdf|rnd|stat)|ncf(?:cdf|inv|pdf|rnd|stat)|nct(?:cdf|inv|pdf|rnd|stat)|ncx2(?:cdf|inv|pdf|rnd|stat)|NeighborSearcher|nlinfit|nlintool|nlmefit|nlmefitsa|" + + "nlparci|nlpredci|nnmf|nominal|NonLinearModel(?:.fit)?|norm(?:cdf|fit|inv|like|pdf|rnd|stat)|normplot|normspec|ordinal|outlierMeasure|parallelcoords|paretotails|partialcorr|" + + "pcacov|pcares|pdf|pdist|pdist2|pearsrnd|perfcurve|perms|piecewisedistribution|plsregress|poiss(?:cdf|fit|inv|pdf|rnd|tat)|polyconf|polytool|prctile|princomp|ProbDist(?:Kernel|" + + "Parametric|UnivKernel|UnivParam)?|probplot|procrustes|qqplot|qrandset|qrandstream|quantile|randg|random|randsample|randtool|range|rangesearch|ranksum|rayl(?:cdf|fit|inv|pdf|" + + "rnd|stat)|rcoplot|refcurve|refline|regress|Regression(?:BaggedEnsemble|Ensemble|PartitionedEnsemble|PartitionedModel|Tree(?:.(?:fit|template))?)|regstats|relieff|ridge|" + + "robustdemo|robustfit|rotatefactors|rowexch|rsmdemo|rstool|runstest|sampsizepwr|scatterhist|sequentialfs|signrank|signtest|silhouette|skewness|slicesample|sobolset|squareform|" + + "statget|statset|stepwise|stepwisefit|surfht|tabulate|tblread|tblwrite|tcdf|tdfread|tiedrank|tinv|tpdf|TreeBagger|treedisp|treefit|treeprune|treetest|treeval|trimmean|trnd|tstat|" + + "ttest|ttest2|unid(?:cdf|inv|pdf|rnd|stat)|unif(?:cdf|inv|it|pdf|rnd|stat)|vartest(?:2|n)?|wbl(?:cdf|fit|inv|like|pdf|rnd|stat)|wblplot|wishrnd|x2fx|xptread|zscore|ztest" + + "adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|" + + "bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|" + + "cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|" + + "entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|" + + "getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|" + + "iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|" + + "imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|" + + "imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|" + + "imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|" + + "imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|" + + "imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|" + + "iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|" + + "isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|" + + "medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|" + + "reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|" + + "rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|" + + "warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb|bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|" + + "linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog"); + var storageType = ("cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse"); var keywordMapper = this.createKeywordMapper({ "storage.type": storageType, "support.function": builtinFunctions, "keyword": keywords, "constant.language": builtinConstants }, "identifier", true); - this.$rules = { - start: [{ - token : "string", - regex : "'", - stateName : "qstring", - next : [{ - token : "constant.language.escape", - regex : "''" + start: [{ + token: "string", + regex: "'", + stateName: "qstring", + next: [{ + token: "constant.language.escape", + regex: "''" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }] }, { - token : "string", - regex : "'|$", - next : "start" + token: "text", + regex: "\\s+" }, { - defaultToken: "string" - }] - }, { - token : "text", - regex : "\\s+" - }, { - regex: "", - next: "noQstring" - }], - noQstring : [{ - regex: "^\\s*%{\\s*$", - token: "comment.start", - push: "blockComment" - }, { - token : "comment", - regex : "%[^\r\n]*" - }, { - token : "string", - regex : '"', - stateName : "qqstring", - next : [{ - token : "constant.language.escape", - regex : /\\./ + regex: "", + next: "noQstring" + }], + noQstring: [{ + regex: "^\\s*%{\\s*$", + token: "comment.start", + push: "blockComment" }, { - token : "string", - regex : "\\\\$", - next : "qqstring" + token: "comment", + regex: "%[^\r\n]*" }, { - token : "string", - regex : '"|$', - next : "start" + token: "string", + regex: '"', + stateName: "qqstring", + next: [{ + token: "constant.language.escape", + regex: /\\./ + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }] }, { - defaultToken: "string" - }] - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=", - next: "start" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\.", - next: "start" - }, { - token : "paren.lparen", - regex : "[({\\[]", - next: "start" - }, { - token : "paren.rparen", - regex : "[\\]})]" - }, { - token : "text", - regex : "\\s+" - }, { - token : "text", - regex : "$", - next : "start" - }], + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=", + next: "start" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\.", + next: "start" + }, { + token: "paren.lparen", + regex: "[({\\[]", + next: "start" + }, { + token: "paren.rparen", + regex: "[\\]})]" + }, { + token: "text", + regex: "\\s+" + }, { + token: "text", + regex: "$", + next: "start" + }], blockComment: [{ - regex: "^\\s*%{\\s*$", - token: "comment.start", - push: "blockComment" - }, { - regex: "^\\s*%}\\s*$", - token: "comment.end", - next: "pop" - }, { - defaultToken: "comment" - }] + regex: "^\\s*%{\\s*$", + token: "comment.start", + push: "blockComment" + }, { + regex: "^\\s*%}\\s*$", + token: "comment.end", + next: "pop" + }, { + defaultToken: "comment" + }] }; - this.normalizeRules(); }; - oop.inherits(MatlabHighlightRules, TextHighlightRules); - exports.MatlabHighlightRules = MatlabHighlightRules; + }); -define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var MatlabHighlightRules = require("./matlab_highlight_rules").MatlabHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = MatlabHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "%"; - this.blockComment = {start: "%{", end: "%}"}; - + this.blockComment = { start: "%{", end: "%}" }; this.$id = "ace/mode/matlab"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/matlab"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-mavens_mate_log.js b/vendor/assets/javascripts/ace/mode-mavens_mate_log.js deleted file mode 100644 index 8f73e66e..00000000 --- a/vendor/assets/javascripts/ace/mode-mavens_mate_log.js +++ /dev/null @@ -1,160 +0,0 @@ -ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -ace.define("ace/mode/mavens_mate_log",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mavens_mate_log_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MavensMateLogHighlightRules = require("./mavens_mate_log_highlight_rules").MavensMateLogHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = MavensMateLogHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/mavens_mate_log" -}).call(Mode.prototype); - -exports.Mode = Mode; -}); diff --git a/vendor/assets/javascripts/ace/mode-maze.js b/vendor/assets/javascripts/ace/mode-maze.js index 9a8687f9..3f6f25b4 100644 --- a/vendor/assets/javascripts/ace/mode-maze.js +++ b/vendor/assets/javascripts/ace/mode-maze.js @@ -1,208 +1,176 @@ -define("ace/mode/maze_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/maze_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MazeHighlightRules = function() { - +var MazeHighlightRules = function () { this.$rules = { start: [{ - token: "keyword.control", - regex: /##|``/, - comment: "Wall" - }, { - token: "entity.name.tag", - regex: /\.\./, - comment: "Path" - }, { - token: "keyword.control", - regex: /<>/, - comment: "Splitter" - }, { - token: "entity.name.tag", - regex: /\*[\*A-Za-z0-9]/, - comment: "Signal" - }, { - token: "constant.numeric", - regex: /[0-9]{2}/, - comment: "Pause" - }, { - token: "keyword.control", - regex: /\^\^/, - comment: "Start" - }, { - token: "keyword.control", - regex: /\(\)/, - comment: "Hole" - }, { - token: "support.function", - regex: />>/, - comment: "Out" - }, { - token: "support.function", - regex: />\//, - comment: "Ln Out" - }, { - token: "support.function", - regex: /< *)(?:([-+*\/]=)( *)((?:-)?)([0-9]+)|(=)( *)(?:((?:-)?)([0-9]+)|("[^"]*")|('[^']*')))/, - comment: "Assignment function" - }, { - token: [ - "entity.name.function", - "keyword.other", - "keyword.control", - "keyword.other", - "keyword.operator", - "keyword.other", - "keyword.operator", - "constant.numeric", - "entity.name.tag", - "keyword.other", - "keyword.control", - "keyword.other", - "constant.language", - "keyword.other", - "keyword.control", - "keyword.other", - "constant.language" - ], - regex: /([A-Za-z][A-Za-z0-9])( *-> *)(IF|if)( *)(?:([<>]=?|==)( *)((?:-)?)([0-9]+)|(\*[\*A-Za-z0-9]))( *)(THEN|then)( *)(%[LRUDNlrudn])(?:( *)(ELSE|else)( *)(%[LRUDNlrudn]))?/, - comment: "Equality Function" - }, { - token: "entity.name.function", - regex: /[A-Za-z][A-Za-z0-9]/, - comment: "Function cell" - }, { - token: "comment.line.double-slash", - regex: / *\/\/.*/, - comment: "Comment" - }] + token: "keyword.control", + regex: /##|``/, + comment: "Wall" + }, { + token: "entity.name.tag", + regex: /\.\./, + comment: "Path" + }, { + token: "keyword.control", + regex: /<>/, + comment: "Splitter" + }, { + token: "entity.name.tag", + regex: /\*[\*A-Za-z0-9]/, + comment: "Signal" + }, { + token: "constant.numeric", + regex: /[0-9]{2}/, + comment: "Pause" + }, { + token: "keyword.control", + regex: /\^\^/, + comment: "Start" + }, { + token: "keyword.control", + regex: /\(\)/, + comment: "Hole" + }, { + token: "support.function", + regex: />>/, + comment: "Out" + }, { + token: "support.function", + regex: />\//, + comment: "Ln Out" + }, { + token: "support.function", + regex: /< *)(?:([-+*\/]=)( *)((?:-)?)([0-9]+)|(=)( *)(?:((?:-)?)([0-9]+)|("[^"]*")|('[^']*')))/, + comment: "Assignment function" + }, { + token: [ + "entity.name.function", + "keyword.other", + "keyword.control", + "keyword.other", + "keyword.operator", + "keyword.other", + "keyword.operator", + "constant.numeric", + "entity.name.tag", + "keyword.other", + "keyword.control", + "keyword.other", + "constant.language", + "keyword.other", + "keyword.control", + "keyword.other", + "constant.language" + ], + regex: /([A-Za-z][A-Za-z0-9])( *-> *)(IF|if)( *)(?:([<>]=?|==)( *)((?:-)?)([0-9]+)|(\*[\*A-Za-z0-9]))( *)(THEN|then)( *)(%[LRUDNlrudn])(?:( *)(ELSE|else)( *)(%[LRUDNlrudn]))?/, + comment: "Equality Function" + }, { + token: "entity.name.function", + regex: /[A-Za-z][A-Za-z0-9]/, + comment: "Function cell" + }, { + token: "comment.line.double-slash", + regex: / *\/\/.*/, + comment: "Comment" + }] }; - this.normalizeRules(); }; - MazeHighlightRules.metaData = { fileTypes: ["mz"], name: "Maze", scopeName: "source.maze" }; - - oop.inherits(MazeHighlightRules, TextHighlightRules); - exports.MazeHighlightRules = MazeHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -215,70 +183,74 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/maze",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/maze_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/maze",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/maze_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var MazeHighlightRules = require("./maze_highlight_rules").MazeHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = MazeHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; this.$id = "ace/mode/maze"; + this.snippetFileId = "ace/snippets/maze"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/maze"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-mediawiki.js b/vendor/assets/javascripts/ace/mode-mediawiki.js new file mode 100644 index 00000000..4bcf9124 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-mediawiki.js @@ -0,0 +1,580 @@ +define("ace/mode/mediawiki_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var MediaWikiHighlightRules = function () { + this.$rules = { + start: [{ + include: "#switch" + }, { + include: "#redirect" + }, { + include: "#variable" + }, { + include: "#comment" + }, { + include: "#entity" + }, { + include: "#emphasis" + }, { + include: "#tag" + }, { + include: "#table" + }, { + include: "#hr" + }, { + include: "#heading" + }, { + include: "#link" + }, { + include: "#list" + }, { + include: "#template" + }], + "#hr": [{ + token: "markup.bold", + regex: /^[-]{4,}/ + }], + "#switch": [{ + token: "constant.language", + regex: /(__NOTOC__|__FORCETOC__|__TOC__|__NOEDITSECTION__|__NEWSECTIONLINK__|__NONEWSECTIONLINK__|__NOWYSIWYG__|__NOGALLERY__|__HIDDENCAT__|__EXPECTUNUSEDCATEGORY__|__NOCONTENTCONVERT__|__NOCC__|__NOTITLECONVERT__|__NOTC__|__START__|__END__|__INDEX__|__NOINDEX__|__STATICREDIRECT__|__NOGLOBAL__|__DISAMBIG__)/ + }], + "#redirect": [{ + token: [ + "keyword.control.redirect", + "meta.keyword.control" + ], + regex: /(^#REDIRECT|^#redirect|^#Redirect)(\s+)/ + }], + "#variable": [{ + token: "storage.type.variable", + regex: /{{{/, + push: [{ + token: "storage.type.variable", + regex: /}}}/, + next: "pop" + }, { + token: [ + "text", + "variable.other", + "text", + "keyword.operator" + ], + regex: /(\s*)(\w+)(\s*)((?:\|)?)/ + }, { + defaultToken: "storage.type.variable" + }] + }], + "#entity": [{ + token: "constant.character.entity", + regex: /&\w+;/ + }], + "#list": [{ + token: "markup.bold", + regex: /^[#*;:]+/, + push: [{ + token: "markup.list", + regex: /$/, + next: "pop" + }, { + include: "$self" + }, { + defaultToken: "markup.list" + }] + }], + "#template": [{ + token: [ + "storage.type.function", + "meta.template", + "entity.name.function", + "meta.template" + ], + regex: /({{)(\s*)([#\w: ]+)(\s*)/, + push: [{ + token: "storage.type.function", + regex: /}}/, + next: "pop" + }, { + token: [ + "storage", + "meta.structure.dictionary", + "support.type.property-name", + "meta.structure.dictionary", + "punctuation.separator.dictionary.key-value", + "meta.structure.dictionary", + "meta.structure.dictionary.value" + ], + regex: /(\|)(\s*)([a-zA-Z-]*)(\s*)(=)(\s*)([^|}]*)/, + push: [{ + token: "meta.structure.dictionary", + regex: /(?=}}|[|])/, + next: "pop" + }, { + defaultToken: "meta.structure.dictionary" + }] + }, { + token: ["storage", "meta.template.value"], + regex: /(\|)(.*?)/, + push: [{ + token: [], + regex: /(?=}}|[|])/, + next: "pop" + }, { + include: "$self" + }, { + defaultToken: "meta.template.value" + }] + }, { + defaultToken: "meta.template" + }] + }], + "#link": [{ + token: [ + "punctuation.definition.tag.begin", + "meta.tag.link.internal", + "entity.name.tag", + "meta.tag.link.internal", + "string.other.link.title", + "meta.tag.link.internal", + "punctuation.definition.tag" + ], + regex: /(\[\[)(\s*)((?:Category|Wikipedia)?)(:?)([^\]\]\|]+)(\s*)((?:\|)*)/, + push: [{ + token: "punctuation.definition.tag.end", + regex: /\]\]/, + next: "pop" + }, { + include: "$self" + }, { + defaultToken: "meta.tag.link.internal" + }] + }, { + token: [ + "punctuation.definition.tag.begin", + "meta.tag.link.external", + "meta.tag.link.external", + "string.unquoted", + "punctuation.definition.tag.end" + ], + regex: /(\[)(.*?)([\s]+)(.*?)(\])/ + }], + "#comment": [{ + token: "punctuation.definition.comment.html", + regex: //, + next: "pop" + }, { + defaultToken: "comment.block.html" + }] + }], + "#emphasis": [{ + token: [ + "punctuation.definition.tag.begin", + "markup.italic.bold", + "punctuation.definition.tag.end" + ], + regex: /(''''')(?!')(.*?)('''''|$)/ + }, { + token: [ + "punctuation.definition.tag.begin", + "markup.bold", + "punctuation.definition.tag.end" + ], + regex: /(''')(?!')(.*?)('''|$)/ + }, { + token: [ + "punctuation.definition.tag.begin", + "markup.italic", + "punctuation.definition.tag.end" + ], + regex: /('')(?!')(.*?)(''|$)/ + }], + "#heading": [{ + token: [ + "punctuation.definition.heading", + "entity.name.section", + "punctuation.definition.heading" + ], + regex: /(={1,6})(.+?)(\1)(?!=)/ + }], + "#tag": [{ + token: [ + "punctuation.definition.tag.begin", + "entity.name.tag", + "meta.tag.block.ref", + "punctuation.definition.tag.end" + ], + regex: /(<)(ref)((?:\s+.*?)?)(>)/, + caseInsensitive: true, + push: [{ + token: [ + "punctuation.definition.tag.begin", + "entity.name.tag", + "meta.tag.block.ref", + "punctuation.definition.tag.end" + ], + regex: /(<\/)(ref)(\s*)(>)/, + caseInsensitive: true, + next: "pop" + }, { + include: "$self" + }, { + defaultToken: "meta.tag.block.ref" + }] + }, + { + token: [ + "punctuation.definition.tag.begin", + "entity.name.tag", + "meta.tag.block.nowiki", + "punctuation.definition.tag.end" + ], + regex: /(<)(nowiki)((?:\s+.*?)?)(>)/, + caseInsensitive: true, + push: [{ + token: [ + "punctuation.definition.tag.begin", + "entity.name.tag", + "meta.tag.block.nowiki", + "punctuation.definition.tag.end" + ], + regex: /(<\/)(nowiki)(\s*)(>)/, + caseInsensitive: true, + next: "pop" + }, { + defaultToken: "meta.tag.block.nowiki" + }] + }, { + token: [ + "punctuation.definition.tag.begin", + "entity.name.tag" + ], + regex: /(<\/?)(noinclude|includeonly|onlyinclude)(?=\W)/, + caseInsensitive: true, + push: [{ + token: [ + "invalid.illegal", + "punctuation.definition.tag.end" + ], + regex: /((?:\/)?)(>)/, + next: "pop" + }, { + include: "#attribute" + }, { + defaultToken: "meta.tag.block.any" + }] + }, { + token: [ + "punctuation.definition.tag.begin", + "entity.name.tag" + ], + regex: /(<)(br|wbr|hr|meta|link)(?=\W)/, + caseInsensitive: true, + push: [{ + token: "punctuation.definition.tag.end", + regex: /\/?>/, + next: "pop" + }, { + include: "#attribute" + }, { + defaultToken: "meta.tag.other" + }] + }, { + token: [ + "punctuation.definition.tag.begin", + "entity.name.tag" + ], + regex: /(<\/?)(div|center|span|h1|h2|h3|h4|h5|h6|bdo|em|strong|cite|dfn|code|samp|kbd|var|abbr|blockquote|q|sub|sup|p|pre|ins|del|ul|ol|li|dl|dd|dt|table|caption|thead|tfoot|tbody|colgroup|col|tr|td|th|a|img|video|source|track|tt|b|i|big|small|strike|s|u|font|ruby|rb|rp|rt|rtc|math|figure|figcaption|bdi|data|time|mark|html)(?=\W)/, + caseInsensitive: true, + push: [{ + token: [ + "invalid.illegal", + "punctuation.definition.tag.end" + ], + regex: /((?:\/)?)(>)/, + next: "pop" + }, { + include: "#attribute" + }, { + defaultToken: "meta.tag.block" + }] + }, { + token: [ + "punctuation.definition.tag.begin", + "invalid.illegal" + ], + regex: /(<\/)(br|wbr|hr|meta|link)(?=\W)/, + caseInsensitive: true, + push: [{ + token: "punctuation.definition.tag.end", + regex: /\/?>/, + next: "pop" + }, { + include: "#attribute" + }, { + defaultToken: "meta.tag.other" + }] + }], + "#caption": [{ + token: [ + "meta.tag.block.table-caption", + "punctuation.definition.tag.begin" + ], + regex: /^(\s*)(\|\+)/, + push: [{ + token: "meta.tag.block.table-caption", + regex: /$/, + next: "pop" + }, { + defaultToken: "meta.tag.block.table-caption" + }] + }], + "#tr": [{ + token: [ + "meta.tag.block.tr", + "punctuation.definition.tag.begin", + "meta.tag.block.tr", + "invalid.illegal" + ], + regex: /^(\s*)(\|\-)([\s]*)(.*)/ + }], + "#th": [{ + token: [ + "meta.tag.block.th.heading", + "punctuation.definition.tag.begin", + "meta.tag.block.th.heading", + "punctuation.definition.tag", + "markup.bold" + ], + regex: /^(\s*)(!)(?:(.*?)(\|))?(.*?)(?=!!|$)/, + push: [{ + token: "meta.tag.block.th.heading", + regex: /$/, + next: "pop" + }, { + token: [ + "punctuation.definition.tag.begin", + "meta.tag.block.th.inline", + "punctuation.definition.tag", + "markup.bold" + ], + regex: /(!!)(?:(.*?)(\|))?(.*?)(?=!!|$)/ + }, { + include: "$self" + }, { + defaultToken: "meta.tag.block.th.heading" + }] + }], + "#td": [{ + token: [ + "meta.tag.block.td", + "punctuation.definition.tag.begin" + ], + regex: /^(\s*)(\|)/, + push: [{ + token: "meta.tag.block.td", + regex: /$/, + next: "pop" + }, { + include: "$self" + }, { + defaultToken: "meta.tag.block.td" + }] + }], + "#table": [{ + patterns: [{ + name: "meta.tag.block.table", + begin: "^\\s*({\\|)(.*?)$", + end: "^\\s*\\|}", + beginCaptures: { + 1: { + name: "punctuation.definition.tag.begin" + }, + 2: { + patterns: [{ + include: "#attribute" + }] + }, + 3: { + name: "invalid.illegal" + } + }, + endCaptures: { + 0: { + name: "punctuation.definition.tag.end" + } + }, + patterns: [{ + include: "#comment" + }, { + include: "#template" + }, { + include: "#caption" + }, { + include: "#tr" + }, { + include: "#th" + }, { + include: "#td" + }] + }], + repository: { + caption: { + name: "meta.tag.block.table-caption", + begin: "^\\s*(\\|\\+)", + end: "$", + beginCaptures: { + 1: { + name: "punctuation.definition.tag.begin" + } + } + }, + tr: { + name: "meta.tag.block.tr", + match: "^\\s*(\\|\\-)[\\s]*(.*)", + captures: { + 1: { + name: "punctuation.definition.tag.begin" + }, + 2: { + name: "invalid.illegal" + } + } + }, + th: { + name: "meta.tag.block.th.heading", + begin: "^\\s*(!)((.*?)(\\|))?(.*?)(?=(!!)|$)", + end: "$", + beginCaptures: { + 1: { + name: "punctuation.definition.tag.begin" + }, + 3: { + patterns: [{ + include: "#attribute" + }] + }, + 4: { + name: "punctuation.definition.tag" + }, + 5: { + name: "markup.bold" + } + }, + patterns: [{ + name: "meta.tag.block.th.inline", + match: "(!!)((.*?)(\\|))?(.*?)(?=(!!)|$)", + captures: { + 1: { + name: "punctuation.definition.tag.begin" + }, + 3: { + patterns: [{ + include: "#attribute" + }] + }, + 4: { + name: "punctuation.definition.tag" + }, + 5: { + name: "markup.bold" + } + } + }, { + include: "$self" + }] + }, + td: { + name: "meta.tag.block.td", + begin: "^\\s*(\\|)", + end: "$", + beginCaptures: { + 1: { + name: "punctuation.definition.tag.begin" + }, + 2: { + patterns: [{ + include: "#attribute" + }] + }, + 3: { + name: "punctuation.definition.tag" + } + }, + patterns: [{ + include: "$self" + }] + } + } + }], + "#attribute": [{ + include: "#string" + }, { + token: "entity.other.attribute-name", + regex: /\w+/ + }], + "#string": [{ + token: "string.quoted.double", + regex: /\"/, + push: [{ + token: "string.quoted.double", + regex: /\"/, + next: "pop" + }, { + defaultToken: "string.quoted.double" + }] + }, { + token: "string.quoted.single", + regex: /\'/, + push: [{ + token: "string.quoted.single", + regex: /\'/, + next: "pop" + }, { + defaultToken: "string.quoted.single" + }] + }], + "#url": [{ + token: "markup.underline.link", + regex: /(?:http(?:s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:\/?#\[\]@!\$&'\(\)\*\+,;=.]+/ + }, { + token: "invalid.illegal", + regex: /.*/ + }] + }; + this.normalizeRules(); +}; +MediaWikiHighlightRules.metaData = { + name: "MediaWiki", + scopeName: "text.html.mediawiki", + fileTypes: ["mediawiki", "wiki"] +}; +oop.inherits(MediaWikiHighlightRules, TextHighlightRules); +exports.MediaWikiHighlightRules = MediaWikiHighlightRules; + +}); + +define("ace/mode/mediawiki",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mediawiki_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MediaWikiHighlightRules = require("./mediawiki_highlight_rules").MediaWikiHighlightRules; +var Mode = function () { + this.HighlightRules = MediaWikiHighlightRules; +}; +oop.inherits(Mode, TextMode); +(function () { + this.type = "text"; + this.blockComment = { start: "" }; + this.$id = "ace/mode/mediawiki"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/mediawiki"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-mel.js b/vendor/assets/javascripts/ace/mode-mel.js index 5ca5fedd..6acbc66f 100644 --- a/vendor/assets/javascripts/ace/mode-mel.js +++ b/vendor/assets/javascripts/ace/mode-mel.js @@ -1,176 +1,133 @@ -define("ace/mode/mel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/mel_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* THIS FILE WAS AUTOGENERATED FROM MEL.tmLanguage (UUID: 69554E52-391D-42BC-9F65-7A77444BA1CF) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MELHighlightRules = function() { - - this.$rules = { start: - [ { caseInsensitive: true, - token: 'storage.type.mel', - regex: '\\b(matrix|string|vector|float|int|void)\\b' }, - { caseInsensitive: true, - token: 'support.function.mel', - regex: '\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b' }, - { caseInsensitive: true, - token: 'support.constant.mel', - regex: '\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b' }, - { caseInsensitive: true, - token: 'keyword.control.mel', - regex: '\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b' }, - { token: 'keyword.other.mel', regex: '\\b(global)\\b' }, - { caseInsensitive: true, - token: 'constant.language.mel', - regex: '\\b(null|undefined)\\b' }, - { token: 'constant.numeric.mel', - regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b' }, - { token: 'punctuation.definition.string.begin.mel', - regex: '"', - push: - [ { token: 'constant.character.escape.mel', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.mel', +var MELHighlightRules = function () { + this.$rules = { start: [{ caseInsensitive: true, + token: 'storage.type.mel', + regex: '\\b(matrix|string|vector|float|int|void)\\b' }, + { caseInsensitive: true, + token: 'support.function.mel', + regex: '\\b((s(h(ow(ManipCtx|S(hadingGroupAttrEditor|electionInTitle)|H(idden|elp)|Window)|el(f(Button|TabLayout|Layout)|lField)|ading(GeometryRelCtx|Node|Connection|LightRelCtx))|y(s(tem|File)|mbol(Button|CheckBox))|nap(shot|Mode|2to2 |TogetherCtx|Key)|c(ulpt|ene(UIReplacement|Editor)|ale(BrushBrightness |Constraint|Key(Ctx)?)?|r(ipt(Node|Ctx|Table|edPanel(Type)?|Job|EditorInfo)|oll(Field|Layout))|mh)|t(itch(Surface(Points)?|AndExplodeShell )|a(ckTrace|rt(sWith |String ))|r(cmp|i(ng(ToStringArray |Array(Remove(Duplicates | )|C(ount |atenate )|ToString |Intersector))|p )|oke))|i(n(gleProfileBirailSurface)?|ze|gn|mplify)|o(u(nd(Control)?|rce)|ft(Mod(Ctx)?)?|rt)|u(perCtx|rface(S(haderList|ampler))?|b(st(itute(Geometry|AllString )?|ring)|d(M(irror|a(tchTopology|p(SewMove|Cut)))|iv(Crease|DisplaySmoothness)?|C(ollapse|leanTopology)|T(o(Blind|Poly)|ransferUVsToCache)|DuplicateAndConnect|EditUV|ListComponentConversion|AutoProjection)))|p(h(ere|rand)|otLight(PreviewPort)?|aceLocator|r(ing|eadSheetEditor))|e(t(s|MenuMode|Sta(te |rtupMessage|mpDensity )|NodeTypeFlag|ConstraintRestPosition |ToolTo|In(putDeviceMapping|finity)|D(ynamic|efaultShadingGroup|rivenKeyframe)|UITemplate|P(ar(ticleAttr|ent)|roject )|E(scapeCtx|dit(or|Ctx))|Key(Ctx|frame|Path)|F(ocus|luidAttr)|Attr(Mapping)?)|parator|ed|l(ect(Mode|ionConnection|Context|Type|edNodes|Pr(iority|ef)|Key(Ctx)?)?|LoadSettings)|archPathArray )|kin(Cluster|Percent)|q(uareSurface|rt)|w(itchTable|atchDisplayPort)|a(ve(Menu|Shelf|ToolSettings|I(nitialState|mage)|Pref(s|Objects)|Fluid|A(ttrPreset |llShelves))|mpleImage)|rtContext|mooth(step|Curve|TangentSurface))|h(sv_to_rgb|yp(ot|er(Graph|Shade|Panel))|i(tTest|de|lite)|ot(Box|key(Check)?)|ud(Button|Slider(Button)?)|e(lp(Line)?|adsUpDisplay|rmite)|wRe(nder(Load)?|flectionMap)|ard(enPointCurve|ware(RenderPanel)?))|n(o(nLinear|ise|de(Type|IconButton|Outliner|Preset)|rmal(ize |Constraint))|urbs(Boolean|S(elect|quare)|C(opyUVSet|ube)|To(Subdiv|Poly(gonsPref)?)|Plane|ViewDirectionVector )|ew(ton|PanelItems)|ame(space(Info)?|Command|Field))|c(h(oice|dir|eck(Box(Grp)?|DefaultRenderGlobals)|a(n(nelBox|geSubdiv(Region|ComponentDisplayLevel))|racter(Map|OutlineEditor)?))|y(cleCheck|linder)|tx(Completion|Traverse|EditMode|Abort)|irc(ularFillet|le)|o(s|n(str(uctionHistory|ain(Value)?)|nect(ionInfo|Control|Dynamic|Joint|Attr)|t(extInfo|rol)|dition|e|vert(SolidTx|Tessellation|Unit|FromOldLayers |Lightmap)|firmDialog)|py(SkinWeights|Key|Flexor|Array )|l(or(Slider(Grp|ButtonGrp)|Index(SliderGrp)?|Editor|AtPoint)?|umnLayout|lision)|arsenSubdivSelectionList|m(p(onentEditor|utePolysetVolume |actHairSystem )|mand(Port|Echo|Line)))|u(tKey|r(ve(MoveEPCtx|SketchCtx|CVCtx|Intersect|OnSurface|E(ditorCtx|PCtx)|AddPtCtx)?|rent(Ctx|Time(Ctx)?|Unit)))|p(GetSolverAttr|Button|S(olver(Types)?|e(t(SolverAttr|Edit)|am))|C(o(nstraint|llision)|ache)|Tool|P(anel|roperty))|eil|l(ip(Schedule(rOutliner)?|TrimBefore |Editor(CurrentTimeCtx)?)?|ose(Surface|Curve)|uster|ear(Cache)?|amp)|a(n(CreateManip|vas)|tch(Quiet)?|pitalizeString |mera(View)?)|r(oss(Product )?|eate(RenderLayer|MotionField |SubdivRegion|N(ode|ewShelf )|D(isplayLayer|rawCtx)|Editor))|md(Shell|FileOutput))|M(R(ender(ShadowData|Callback|Data|Util|View|Line(Array)?)|ampAttribute)|G(eometryData|lobal)|M(odelMessage|essage|a(nipData|t(erial|rix)))|BoundingBox|S(yntax|ceneMessage|t(atus|ring(Array)?)|imple|pace|elect(ion(Mask|List)|Info)|watchRender(Register|Base))|H(ardwareRenderer|WShaderSwatchGenerator)|NodeMessage|C(o(nditionMessage|lor(Array)?|m(putation|mand(Result|Message)))|ursor|loth(Material|S(ystem|olverRegister)|Con(straint|trol)|Triangle|Particle|Edge|Force)|allbackIdArray)|T(ypeId|ime(r(Message)?|Array)?|oolsInfo|esselationParams|r(imBoundaryArray|ansformationMatrix))|I(ntArray|t(Geometry|Mesh(Polygon|Edge|Vertex|FaceVertex)|S(urfaceCV|electionList)|CurveCV|Instancer|eratorType|D(ependency(Graph|Nodes)|ag)|Keyframe)|k(System|HandleGroup)|mage)|3dView|Object(SetMessage|Handle|Array)?|D(G(M(odifier|essage)|Context)|ynSwept(Triangle|Line)|istance|oubleArray|evice(State|Channel)|a(ta(Block|Handle)|g(M(odifier|essage)|Path(Array)?))|raw(Request(Queue)?|Info|Data|ProcedureBase))|U(serEventMessage|i(nt(Array|64Array)|Message))|P(o(int(Array)?|lyMessage)|lug(Array)?|rogressWindow|x(G(eometry(Iterator|Data)|lBuffer)|M(idiInputDevice|odelEditorCommand|anipContainer)|S(urfaceShape(UI)?|pringNode|electionContext)|HwShaderNode|Node|Co(ntext(Command)?|m(ponentShape|mand))|T(oolCommand|ransform(ationMatrix)?)|IkSolver(Node)?|3dModelView|ObjectSet|D(eformerNode|ata|ragAndDropBehavior)|PolyT(weakUVCommand|rg)|EmitterNode|F(i(eldNode|leTranslator)|luidEmitterNode)|LocatorNode))|E(ulerRotation|vent(Message)?)|ayatomr|Vector(Array)?|Quaternion|F(n(R(otateManip|eflectShader|adialField)|G(e(nericAttribute|ometry(Data|Filter))|ravityField)|M(otionPath|es(sageAttribute|h(Data)?)|a(nip3D|trix(Data|Attribute)))|B(l(innShader|endShapeDeformer)|ase)|S(caleManip|t(ateManip|ring(Data|ArrayData))|ingleIndexedComponent|ubd(Names|Data)?|p(hereData|otLight)|et|kinCluster)|HikEffector|N(on(ExtendedLight|AmbientLight)|u(rbs(Surface(Data)?|Curve(Data)?)|meric(Data|Attribute))|ewtonField)|C(haracter|ircleSweepManip|ompo(nent(ListData)?|undAttribute)|urveSegmentManip|lip|amera)|T(ypedAttribute|oggleManip|urbulenceField|r(ipleIndexedComponent|ansform))|I(ntArrayData|k(Solver|Handle|Joint|Effector))|D(ynSweptGeometryData|i(s(cManip|tanceManip)|rection(Manip|alLight))|ouble(IndexedComponent|ArrayData)|ependencyNode|a(ta|gNode)|ragField)|U(ni(tAttribute|formField)|Int64ArrayData)|P(hong(Shader|EShader)|oint(On(SurfaceManip|CurveManip)|Light|ArrayData)|fxGeometry|lugin(Data)?|arti(cleSystem|tion))|E(numAttribute|xpression)|V(o(lume(Light|AxisField)|rtexField)|ectorArrayData)|KeyframeDelta(Move|B(lockAddRemove|reakdown)|Scale|Tangent|InfType|Weighted|AddRemove)?|F(ield|luid|reePointTriadManip)|W(ireDeformer|eightGeometryFilter)|L(ight(DataAttribute)?|a(yeredShader|ttice(D(eformer|ata))?|mbertShader))|A(ni(sotropyShader|mCurve)|ttribute|irField|r(eaLight|rayAttrsData)|mbientLight))?|ile(IO|Object)|eedbackLine|loat(Matrix|Point(Array)?|Vector(Array)?|Array))|L(i(ghtLinks|brary)|ockMessage)|A(n(im(Message|C(ontrol|urveC(hange|lipboard(Item(Array)?)?))|Util)|gle)|ttribute(Spec(Array)?|Index)|r(rayData(Builder|Handle)|g(Database|Parser|List))))|t(hreePointArcCtx|ime(Control|Port|rX)|o(ol(Button|HasOptions|Collection|Dropped|PropertyWindow)|NativePath |upper|kenize(List )?|l(ower|erance)|rus|ggle(WindowVisibility|Axis)?)|u(rbulence|mble(Ctx)?)|ex(RotateContext|M(oveContext|anipContext)|t(ScrollList|Curves|ure(HairColor |DisplacePlane |PlacementContext|Window)|ToShelf |Field(Grp|ButtonGrp)?)?|S(caleContext|electContext|mudgeUVContext)|WinToolCtx)|woPointArcCtx|a(n(gentConstraint)?|bLayout)|r(im|unc(ate(HairCache|FluidCache))?|a(ns(formLimits|lator)|c(e|k(Ctx)?))))|i(s(olateSelect|Connected|True|Dirty|ParentOf |Valid(String |ObjectName |UiName )|AnimCurve )|n(s(tance(r)?|ert(Joint(Ctx)?|K(not(Surface|Curve)|eyCtx)))|heritTransform|t(S(crollBar|lider(Grp)?)|er(sect|nalVar|ToUI )|Field(Grp)?))|conText(Radio(Button|Collection)|Button|StaticLabel|CheckBox)|temFilter(Render|Type|Attr)?|prEngine|k(S(ystem(Info)?|olver|plineHandleCtx)|Handle(Ctx|DisplayScale)?|fkDisplayMethod)|m(portComposerCurves |fPlugins|age))|o(ceanNurbsPreviewPlane |utliner(Panel|Editor)|p(tion(Menu(Grp)?|Var)|en(GLExtension|MayaPref))|verrideModifier|ffset(Surface|Curve(OnSurface)?)|r(ientConstraint|bit(Ctx)?)|b(soleteProc |j(ect(Center|Type(UI)?|Layer )|Exists)))|d(yn(RelEd(itor|Panel)|Globals|C(ontrol|ache)|P(a(intEditor|rticleCtx)|ref)|Exp(ort|ression)|amicLoad)|i(s(connect(Joint|Attr)|tanceDim(Context|ension)|pla(y(RGBColor|S(tats|urface|moothness)|C(olor|ull)|Pref|LevelOfDetail|Affected)|cementToPoly)|kCache|able)|r(name |ect(ionalLight|KeyCtx)|map)|mWhen)|o(cServer|Blur|t(Product )?|ubleProfileBirailSurface|peSheetEditor|lly(Ctx)?)|uplicate(Surface|Curve)?|e(tach(Surface|Curve|DeviceAttr)|vice(Panel|Editor)|f(ine(DataServer|VirtualDevice)|ormer|ault(Navigation|LightListCheckBox))|l(ete(Sh(elfTab |adingGroupsAndMaterials )|U(nusedBrushes |I)|Attr)?|randstr)|g_to_rad)|agPose|r(opoffLocator|ag(gerContext)?)|g(timer|dirty|Info|eval))|CBG |u(serCtx|n(t(angleUV|rim)|i(t|form)|do(Info)?|loadPlugin|assignInputDevice|group)|iTemplate|p(dateAE |Axis)|v(Snapshot|Link))|joint(C(tx|luster)|DisplayScale|Lattice)?|p(sd(ChannelOutliner|TextureFile|E(ditTextureFile|xport))|close|i(c(ture|kWalk)|xelMove)|o(se|int(MatrixMult |C(onstraint|urveConstraint)|On(Surface|Curve)|Position|Light)|p(upMenu|en)|w|l(y(Reduce|GeoSampler|M(irrorFace|ove(UV|Edge|Vertex|Facet(UV)?)|erge(UV|Edge(Ctx)?|Vertex|Facet(Ctx)?)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|l(indData|endColor))|S(traightenUVBorder|oftEdge|u(perCtx|bdivide(Edge|Facet))|p(her(icalProjection|e)|lit(Ring|Ctx|Edge|Vertex)?)|e(tToFaceNormal|parate|wEdge|lect(Constraint(Monitor)?|EditCtx))|mooth)|Normal(izeUV|PerVertex)?|C(hipOff|ylind(er|ricalProjection)|o(ne|pyUV|l(or(BlindData|Set|PerVertex)|lapse(Edge|Facet)))|u(t(Ctx)?|be)|l(ipboard|oseBorder)|acheMonitor|rea(seEdge|teFacet(Ctx)?))|T(o(Subdiv|rus)|r(iangulate|ansfer))|In(stallAction|fo)|Options|D(uplicate(Edge|AndConnect)|el(Edge|Vertex|Facet))|U(nite|VSet)|P(yramid|oke|lan(e|arProjection)|r(ism|ojection))|E(ditUV|valuate|xtrude(Edge|Facet))|Qu(eryBlindData|ad)|F(orceUV|lip(UV|Edge))|WedgeFace|L(istComponentConversion|ayoutUV)|A(utoProjection|ppend(Vertex|FacetCtx)?|verage(Normal|Vertex)))|eVectorConstraint))|utenv|er(cent|formanceOptions)|fxstrokes|wd|l(uginInfo|a(y(b(last|ackOptions))?|n(e|arSrf)))|a(steKey|ne(l(History|Configuration)?|Layout)|thAnimation|irBlend|use|lettePort|r(ti(cle(RenderInfo|Instancer|Exists)?|tion)|ent(Constraint)?|am(Dim(Context|ension)|Locator)))|r(int|o(j(ect(ion(Manip|Context)|Curve|Tangent)|FileViewer)|pMo(dCtx|ve)|gress(Bar|Window)|mptDialog)|eloadRefEd))|e(n(codeString|d(sWith |String )|v|ableDevice)|dit(RenderLayer(Globals|Members)|or(Template)?|DisplayLayer(Globals|Members)|AttrLimits )|v(ent|al(Deferred|Echo)?)|quivalent(Tol | )|ffector|r(f|ror)|x(clusiveLightCheckBox|t(end(Surface|Curve)|rude)|ists|p(ortComposerCurves |ression(EditorListen)?)?|ec(uteForEachObject )?|actWorldBoundingBox)|mit(ter)?)|v(i(sor|ew(Set|HeadOn|2dToolCtx|C(lipPlane|amera)|Place|Fit|LookAt))|o(lumeAxis|rtex)|e(ctorize|rifyCmd )|alidateShelfName )|key(Tangent|frame(Region(MoveKeyCtx|S(caleKeyCtx|e(tKeyCtx|lectKeyCtx))|CurrentTimeCtx|TrackCtx|InsertKeyCtx|D(irectKeyCtx|ollyCtx))|Stats|Outliner)?)|qu(it|erySubdiv)|f(c(heck|lose)|i(nd(RelatedSkinCluster |MenuItem |er|Keyframe|AllIntersections )|tBspline|l(ter(StudioImport|Curve|Expand)?|e(BrowserDialog|test|Info|Dialog|Extension )?|letCurve)|rstParentOf )|o(ntDialog|pen|rmLayout)|print|eof|flush|write|l(o(or|w|at(S(crollBar|lider(Grp|ButtonGrp|2)?)|Eq |Field(Grp)?))|u(shUndo|id(CacheInfo|Emitter|VoxelInfo))|exor)|r(omNativePath |e(eFormFillet|wind|ad)|ameLayout)|get(word|line)|mod)|w(hatIs|i(ndow(Pref)?|re(Context)?)|orkspace|ebBrowser(Prefs)?|a(itCursor|rning)|ri(nkle(Context)?|teTake))|l(s(T(hroughFilter|ype )|UI)?|i(st(Relatives|MenuAnnotation |Sets|History|NodeTypes|C(onnections|ameras)|Transforms |InputDevice(s|Buttons|Axes)|erEditor|DeviceAttachments|Unselected |A(nimatable|ttr))|n(step|eIntersection )|ght(link|List(Panel|Editor)?))|o(ckNode|okThru|ft|ad(NewShelf |P(lugin|refObjects)|Fluid)|g)|a(ssoContext|y(out|er(Button|ed(ShaderPort|TexturePort)))|ttice(DeformKeyCtx)?|unch(ImageEditor)?))|a(ssign(Command|InputDevice)|n(notate|im(C(one|urveEditor)|Display|View)|gle(Between)?)|tt(ach(Surface|Curve|DeviceAttr)|r(ibute(Menu|Info|Exists|Query)|NavigationControlGrp|Co(ntrolGrp|lorSliderGrp|mpatibility)|PresetEditWin|EnumOptionMenu(Grp)?|Field(Grp|SliderGrp)))|i(r|mConstraint)|d(d(NewShelfTab|Dynamic|PP|Attr(ibuteEditorNodeHelp)?)|vanceToNextDrivenKey)|uto(Place|Keyframe)|pp(endStringArray|l(y(Take|AttrPreset)|icationName))|ffect(s|edNet)|l(i(as(Attr)?|gn(Surface|C(tx|urve))?)|lViewFit)|r(c(len|Len(DimContext|gthDimension))|t(BuildPaintMenu|Se(tPaintCtx|lectCtx)|3dPaintCtx|UserPaintCtx|PuttyCtx|FluidAttrCtx|Attr(SkinPaintCtx|Ctx|PaintVertexCtx))|rayMapper)|mbientLight|b(s|out))|r(igid(Body|Solver)|o(t(at(ionInterpolation|e))?|otOf |undConstantRadius|w(ColumnLayout|Layout)|ll(Ctx)?)|un(up|TimeCommand)|e(s(olutionNode|et(Tool|AE )|ampleFluid)|hash|n(der(GlobalsNode|Manip|ThumbnailUpdate|Info|er|Partition|QualityNode|Window(SelectContext|Editor)|LayerButton)?|ame(SelectionList |UI|Attr)?)|cord(Device|Attr)|target|order(Deformers)?|do|v(olve|erse(Surface|Curve))|quires|f(ineSubdivSelectionList|erence(Edit|Query)?|resh(AE )?)|loadImage|adTake|root|move(MultiInstance|Joint)|build(Surface|Curve))|a(n(d(state|omizeFollicles )?|geControl)|d(i(o(MenuItemCollection|Button(Grp)?|Collection)|al)|_to_deg)|mpColorPort)|gb_to_hsv)|g(o(toBindPose |al)|e(t(M(odifiers|ayaPanelTypes )|Classification|InputDeviceRange|pid|env|DefaultBrush|Pa(nel|rticleAttr)|F(ileList|luidAttr)|A(ttr|pplicationVersionAsFloat ))|ometryConstraint)|l(Render(Editor)?|obalStitch)|a(uss|mma)|r(id(Layout)?|oup(ObjectsByName )?|a(dientControl(NoAttr)?|ph(SelectContext|TrackCtx|DollyCtx)|vity|bColor))|match)|x(pmPicker|form|bmLangPathList )|m(i(n(imizeApp)?|rrorJoint)|o(del(CurrentTimeCtx|Panel|Editor)|use|v(In|e(IKtoFK |VertexAlongDirection|KeyCtx)?|Out))|u(te|ltiProfileBirailSurface)|e(ssageLine|nu(BarLayout|Item(ToShelf )?|Editor)?|mory)|a(nip(Rotate(Context|LimitsCtx)|Move(Context|LimitsCtx)|Scale(Context|LimitsCtx)|Options)|tch|ke(Roll |SingleSurface|TubeOn |Identity|Paintable|bot|Live)|rker|g|x))|b(in(Membership|d(Skin|Pose))|o(neLattice|undary|x(ZoomCtx|DollyCtx))|u(tton(Manip)?|ild(BookmarkMenu|KeyframeMenu)|fferCurve)|e(ssel|vel(Plus)?)|l(indDataType|end(Shape(Panel|Editor)?|2|TwoAttr))|a(sename(Ex | )|tchRender|ke(Results|Simulation|Clip|PartialHistory|FluidShading )))))\\b' }, + { caseInsensitive: true, + token: 'support.constant.mel', + regex: '\\b(s(h(ellTessellate|a(d(ing(Map|Engine)|erGlow)|pe))|n(ow|apshot(Shape)?)|c(ulpt|aleConstraint|ript)|t(yleCurve|itch(Srf|AsNurbsShell)|u(cco|dioClearCoat)|encil|roke(Globals)?)|i(ngleShadingSwitch|mpleVolumeShader)|o(ftMod(Manip|Handle)?|lidFractal)|u(rface(Sha(der|pe)|Info|EdManip|VarGroup|Luminance)|b(Surface|d(M(odifier(UV|World)?|ap(SewMove|Cut|pingManip))|B(lindData|ase)|iv(ReverseFaces|SurfaceVarGroup|Co(llapse|mponentId)|To(Nurbs|Poly))?|HierBlind|CleanTopology|Tweak(UV)?|P(lanarProj|rojManip)|LayoutUV|A(ddTopology|utoProj))|Curve))|p(BirailSrf|otLight|ring)|e(tRange|lectionListOperator)|k(inCluster|etchPlane)|quareSrf|ampler(Info)?|m(ooth(Curve|TangentSrf)|ear))|h(svToRgb|yper(GraphInfo|View|Layout)|ik(Solver|Handle|Effector)|oldMatrix|eightField|w(Re(nderGlobals|flectionMap)|Shader)|a(ir(System|Constraint|TubeShader)|rd(enPoint|wareRenderGlobals)))|n(o(n(ExtendedLightShapeNode|Linear|AmbientLightShapeNode)|ise|rmalConstraint)|urbs(Surface|Curve|T(oSubdiv(Proc)?|essellate)|DimShape)|e(twork|wtonField))|c(h(o(ice|oser)|ecker|aracter(Map|Offset)?)|o(n(straint|tr(olPoint|ast)|dition)|py(ColorSet|UVSet))|urve(Range|Shape|Normalizer(Linear|Angle)?|In(tersect|fo)|VarGroup|From(Mesh(CoM|Edge)?|Su(rface(Bnd|CoS|Iso)?|bdiv(Edge|Face)?)))|l(ip(Scheduler|Library)|o(se(stPointOnSurface|Surface|Curve)|th|ud)|uster(Handle)?|amp)|amera(View)?|r(eate(BPManip|ColorSet|UVSet)|ater))|t(ime(ToUnitConversion|Function)?|oo(nLineAttributes|lDrawManip)|urbulenceField|ex(BaseDeformManip|ture(BakeSet|2d|ToGeom|3d|Env)|SmudgeUVManip|LatticeDeformManip)|weak|angentConstraint|r(i(pleShadingSwitch|m(WithBoundaries)?)|ansform(Geometry)?))|i(n(s(tancer|ertKnot(Surface|Curve))|tersectSurface)|k(RPsolver|MCsolver|S(ystem|olver|Csolver|plineSolver)|Handle|PASolver|Effector)|m(plicit(Box|Sphere|Cone)|agePlane))|o(cean(Shader)?|pticalFX|ffset(Surface|C(os|urve))|ldBlindDataBase|rient(Constraint|ationMarker)|bject(RenderFilter|MultiFilter|BinFilter|S(criptFilter|et)|NameFilter|TypeFilter|Filter|AttrFilter))|d(yn(Globals|Base)|i(s(tance(Between|DimShape)|pla(yLayer(Manager)?|cementShader)|kCache)|rect(ionalLight|edDisc)|mensionShape)|o(ubleShadingSwitch|f)|pBirailSrf|e(tach(Surface|Curve)|pendNode|f(orm(Bend|S(ine|quash)|Twist|ableShape|F(unc|lare)|Wave)|ault(RenderUtilityList|ShaderList|TextureList|LightList))|lete(Co(lorSet|mponent)|UVSet))|ag(Node|Pose)|r(opoffLocator|agField))|u(seBackground|n(trim|i(t(Conversion|ToTimeConversion)|formField)|known(Transform|Dag)?)|vChooser)|j(iggle|oint(Cluster|Ffd|Lattice)?)|p(sdFileTex|hong(E)?|o(s(tProcessList|itionMarker)|int(MatrixMult|Constraint|On(SurfaceInfo|CurveInfo)|Emitter|Light)|l(y(Reduce|M(irror|o(difier(UV|World)?|ve(UV|Edge|Vertex|Face(tUV)?))|erge(UV|Edge|Vert|Face)|ap(Sew(Move)?|Cut|Del))|B(oolOp|evel|lindData|ase)|S(traightenUVBorder|oftEdge|ubd(Edge|Face)|p(h(ere|Proj)|lit(Ring|Edge|Vert)?)|e(parate|wEdge)|mooth(Proxy|Face)?)|Normal(izeUV|PerVertex)?|C(hipOff|yl(inder|Proj)|o(ne|pyUV|l(orPerVertex|lapse(Edge|F)))|u(t(Manip(Container)?)?|be)|loseBorder|rea(seEdge|t(or|eFace)))|T(o(Subdiv|rus)|weak(UV)?|r(iangulate|ansfer))|OptUvs|D(uplicateEdge|el(Edge|Vertex|Facet))|Unite|P(yramid|oke(Manip)?|lan(e|arProj)|r(i(sm|mitive)|oj))|Extrude(Edge|Vertex|Face)|VertexNormalManip|Quad|Flip(UV|Edge)|WedgeFace|LayoutUV|A(utoProj|ppend(Vertex)?|verageVertex))|eVectorConstraint))|fx(Geometry|Hair|Toon)|l(usMinusAverage|a(n(e|arTrimSurface)|ce(2dTexture|3dTexture)))|a(ssMatrix|irBlend|r(ti(cle(SamplerInfo|C(olorMapper|loud)|TranspMapper|IncandMapper|AgeMapper)?|tion)|ent(Constraint|Tessellate)|amDimension))|r(imitive|o(ject(ion|Curve|Tangent)|xyManager)))|e(n(tity|v(Ball|ironmentFog|S(phere|ky)|C(hrome|ube)|Fog))|x(t(end(Surface|Curve)|rude)|p(lodeNurbsShell|ression)))|v(iewManip|o(lume(Shader|Noise|Fog|Light|AxisField)|rtexField)|e(ctor(RenderGlobals|Product)|rtexBakeSet))|quadShadingSwitch|f(i(tBspline|eld|l(ter(Resample|Simplify|ClosestSample|Euler)?|e|letCurve))|o(urByFourMatrix|llicle)|urPointOn(MeshInfo|Subd)|f(BlendSrf(Obsolete)?|d|FilletSrf)|l(ow|uid(S(hape|liceManip)|Texture(2D|3D)|Emitter)|exorShape)|ra(ctal|meCache))|w(tAddMatrix|ire|ood|eightGeometryFilter|ater|rap)|l(ight(Info|Fog|Li(st|nker))?|o(cator|okAt|d(Group|Thresholds)|ft)|uminance|ea(stSquaresModifier|ther)|a(yered(Shader|Texture)|ttice|mbert))|a(n(notationShape|i(sotropic|m(Blend(InOut)?|C(urve(T(T|U|L|A)|U(T|U|L|A))?|lip)))|gleBetween)|tt(ach(Surface|Curve)|rHierarchyTest)|i(rField|mConstraint)|dd(Matrix|DoubleLinear)|udio|vg(SurfacePoints|NurbsSurfacePoints|Curves)|lign(Manip|Surface|Curve)|r(cLengthDimension|tAttrPaintTest|eaLight|rayMapper)|mbientLight|bstractBase(NurbsConversion|Create))|r(igid(Body|Solver|Constraint)|o(ck|undConstantRadius)|e(s(olution|ultCurve(TimeTo(Time|Unitless|Linear|Angular))?)|nder(Rect|Globals(List)?|Box|Sphere|Cone|Quality|L(ight|ayer(Manager)?))|cord|v(olve(dPrimitive)?|erse(Surface|Curve)?)|f(erence|lect)|map(Hsv|Color|Value)|build(Surface|Curve))|a(dialField|mp(Shader)?)|gbToHsv|bfSrf)|g(uide|eo(Connect(or|able)|metry(Shape|Constraint|VarGroup|Filter))|lobal(Stitch|CacheControl)|ammaCorrect|r(id|oup(Id|Parts)|a(nite|vityField)))|Fur(Globals|Description|Feedback|Attractors)|xformManip|m(o(tionPath|untain|vie)|u(te|lt(Matrix|i(plyDivide|listerLight)|DoubleLinear))|pBirailSrf|e(sh(VarGroup)?|ntalray(Texture|IblShape))|a(terialInfo|ke(Group|Nurb(sSquare|Sphere|C(ylinder|ircle|one|ube)|Torus|Plane)|CircularArc|T(hreePointCircularArc|extCurves|woPointCircularArc))|rble))|b(irailSrf|o(neLattice|olean|undary(Base)?)|u(lge|mp(2d|3d))|evel(Plus)?|l(in(n|dDataTemplate)|end(Shape|Color(s|Sets)|TwoAttr|Device|Weighted)?)|a(se(GeometryVarGroup|ShadingSwitch|Lattice)|keSet)|r(ownian|ush)))\\b' }, + { caseInsensitive: true, + token: 'keyword.control.mel', + regex: '\\b(if|in|else|for|while|break|continue|case|default|do|switch|return|switch|case|source|catch|alias)\\b' }, + { token: 'keyword.other.mel', regex: '\\b(global)\\b' }, + { caseInsensitive: true, + token: 'constant.language.mel', + regex: '\\b(null|undefined)\\b' }, + { token: 'constant.numeric.mel', + regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b' }, + { token: 'punctuation.definition.string.begin.mel', regex: '"', - next: 'pop' }, - { defaultToken: 'string.quoted.double.mel' } ] }, - - { token: [ 'variable.other.mel', 'punctuation.definition.variable.mel' ], - regex: '(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)' }, - - { token: 'punctuation.definition.string.begin.mel', - regex: '\'', - push: - [ { token: 'constant.character.escape.mel', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.mel', + push: [{ token: 'constant.character.escape.mel', regex: '\\\\.' }, + { token: 'punctuation.definition.string.end.mel', + regex: '"', + next: 'pop' }, + { defaultToken: 'string.quoted.double.mel' }] }, + { token: ['variable.other.mel', 'punctuation.definition.variable.mel'], + regex: '(\\$)([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*?\\b)' }, + { token: 'punctuation.definition.string.begin.mel', regex: '\'', - next: 'pop' }, - { defaultToken: 'string.quoted.single.mel' } ] }, - - { token: 'constant.language.mel', - regex: '\\b(false|true|yes|no|on|off)\\b' }, - - { token: 'punctuation.definition.comment.mel', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.mel', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.mel' } ] }, - - { token: [ 'comment.line.double-slash.mel', 'punctuation.definition.comment.mel' ], - regex: '(//)(.*$\\n?)' }, - - { caseInsensitive: true, - token: 'keyword.operator.mel', - regex: '\\b(instanceof)\\b' }, - { token: 'keyword.operator.symbolic.mel', - regex: '[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]' }, - - { token: [ 'meta.preprocessor.mel', 'punctuation.definition.preprocessor.mel' ], - regex: '(^[ \\t]*)((?:#)[a-zA-Z]+)' }, - - { token: [ 'meta.function.mel', 'keyword.other.mel', 'storage.type.mel', 'entity.name.function.mel', 'punctuation.section.function.mel' ], - regex: '(global\\s*)?(proc\\s*)(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*\\()', - push: - [ { include: '$self' }, - { token: 'punctuation.section.function.mel', - regex: '\\)', - next: 'pop' }, - { defaultToken: 'meta.function.mel' } ] } - - ] }; - + push: [{ token: 'constant.character.escape.mel', regex: '\\\\.' }, + { token: 'punctuation.definition.string.end.mel', + regex: '\'', + next: 'pop' }, + { defaultToken: 'string.quoted.single.mel' }] }, + { token: 'constant.language.mel', + regex: '\\b(false|true|yes|no|on|off)\\b' }, + { token: 'punctuation.definition.comment.mel', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.mel', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.mel' }] }, + { token: ['comment.line.double-slash.mel', 'punctuation.definition.comment.mel'], + regex: '(//)(.*$\\n?)' }, + { caseInsensitive: true, + token: 'keyword.operator.mel', + regex: '\\b(instanceof)\\b' }, + { token: 'keyword.operator.symbolic.mel', + regex: '[-\\!\\%\\&\\*\\+\\=\\/\\?\\:]' }, + { token: ['meta.preprocessor.mel', 'punctuation.definition.preprocessor.mel'], + regex: '(^[ \\t]*)((?:#)[a-zA-Z]+)' }, + { token: ['meta.function.mel', 'keyword.other.mel', 'storage.type.mel', 'entity.name.function.mel', 'punctuation.section.function.mel'], + regex: '(global\\s*)?(proc\\s*)(\\w+\\s*\\[?\\]?\\s+|\\s+)([A-Za-z_][A-Za-z0-9_\\.]*)(\\s*\\()', + push: [{ include: '$self' }, + { token: 'punctuation.section.function.mel', + regex: '\\)', + next: 'pop' }, + { defaultToken: 'meta.function.mel' }] } + ] }; this.normalizeRules(); }; - oop.inherits(MELHighlightRules, TextHighlightRules); - exports.MELHighlightRules = MELHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -183,74 +140,74 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/mel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mel_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/mel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mel_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var MELHighlightRules = require("./mel_highlight_rules").MELHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = MELHighlightRules; - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/mel"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/mel"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-mips.js b/vendor/assets/javascripts/ace/mode-mips.js new file mode 100644 index 00000000..f84bbf8e --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-mips.js @@ -0,0 +1,231 @@ +define("ace/mode/mips_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from mips.tmLanguage (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var MIPSHighlightRules = function () { + var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; + this.$rules = { + start: [{ + token: "storage.modifier.mips", + regex: /\.\b(?:align|ascii|asciiz|byte|double|extern|float|globl|space|word)\b/, + comment: "Assembler directives for data storage" + }, { + token: "entity.name.section.mips", + regex: /\.\b(?:data|text|kdata|ktext|)\b/, + comment: "Segements: .data .text" + }, { + token: "variable.parameter.mips", + regex: /\$(?:(?:3[01]|[12]?[0-9]|[0-9])|zero|at|v[01]|a[0-3]|s[0-7]|t[0-9]|k[01]|gp|sp|fp|ra)/, + comment: "Registers by id $1, $2, ..." + }, { + token: "variable.parameter.mips", + regex: /\$f(?:[0-9]|[1-2][0-9]|3[0-1])/, + comment: "Floating point registers" + }, { + token: "support.function.source.mips", + regex: /\b(?:(?:add|sub|div|l|mov|mult|neg|s|c\.eq|c\.le|c\.lt)\.[ds]|cvt\.s\.[dw]|cvt\.d\.[sw]|cvt\.w\.[ds]|bc1[tf])\b/, + comment: "The MIPS floating-point instruction set" + }, { + token: "support.function.source.mips", + regex: /\b(?:add|addu|addi|addiu|sub|subu|and|andi|or|not|ori|nor|xor|xori|slt|sltu|slti|sltiu|sll|sllv|rol|srl|sra|srlv|ror|j|jr|jal|beq|bne|lw|sw|lb|sb|lui|move|mfhi|mflo|mthi|mtlo)\b/, + comment: "Just the hardcoded instructions provided by the MIPS assembly language" + }, { + token: "support.function.other.mips", + regex: /\b(?:abs|b|beqz|bge|bgt|bgtu|ble|bleu|blt|bltu|bnez|div|divu|la|li|move|mul|neg|not|rem|remu|seq|sge|sgt|sle|sne)\b/, + comment: "Pseudo instructions" + }, { + token: "entity.name.function.mips", + regex: /\bsyscall\b/, + comment: "Other" + }, { + token: "string", // character + regex: "(?:'\")(?:" + escapeRe + "|.)?(?:'\")" + }, { + token: "string.start", + regex: '\'', + stateName: "qstring", + next: [ + { token: "string", regex: /\\\s*$/, next: "qqstring" }, + { token: "constant.language.escape", regex: escapeRe }, + { token: "string.end", regex: '\'|$', next: "start" }, + { defaultToken: "string" } + ] + }, { + token: "string.start", + regex: '"', + stateName: "qqstring", + next: [ + { token: "string", regex: /\\\s*$/, next: "qqstring" }, + { token: "constant.language.escape", regex: escapeRe }, + { token: "string.end", regex: '"|$', next: "start" }, + { defaultToken: "string" } + ] + }, { + token: "constant.numeric.mips", + regex: /\b(?:\d+|0(?:x|X)[a-fA-F0-9]+)\b/, + comment: "Numbers like +12, -3, 55, 0x3F" + }, { + token: "entity.name.tag.mips", + regex: /\b[\w]+\b:/, + comment: "Labels at line start: begin_repeat: add ..." + }, { + token: "comment.assembly", + regex: /#.*$/, + comment: "Single line comments" + }] + }; + this.normalizeRules(); +}; +MIPSHighlightRules.metaData = { + fileTypes: ["s", "asm"], + name: "MIPS", + scopeName: "source.mips" +}; +oop.inherits(MIPSHighlightRules, TextHighlightRules); +exports.MIPSHighlightRules = MIPSHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/mips",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mips_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MIPSHighlightRules = require("./mips_highlight_rules").MIPSHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = MIPSHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ["#"]; + this.$id = "ace/mode/mips"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/mips"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-mips_assembler.js b/vendor/assets/javascripts/ace/mode-mips_assembler.js deleted file mode 100644 index dc8e10ed..00000000 --- a/vendor/assets/javascripts/ace/mode-mips_assembler.js +++ /dev/null @@ -1,235 +0,0 @@ -define("ace/mode/mips_assembler_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MIPSAssemblerHighlightRules = function() { - - this.$rules = { start: - [ { token: 'support.function.pseudo.mips', - regex: '\\b(?:mul|abs|div|divu|mulo|mulou|neg|negu|not|rem|remu|rol|ror|li|seq|sge|sgeu|sgt|sgtu|sle|sleu|sne|b|beqz|bge|bgeu|bgt|bgtu|ble|bleu|blt|bltu|bnez|la|ld|ulh|ulhu|ulw|sd|ush|usw|move|mfc1\\.d|l\\.d|l\\.s|s\\.d|s\\.s)\\b', - comment: 'ok actually this are instructions, but one also could call them funtions…' }, - { token: 'support.function.mips', - regex: '\\b(?:abs\\.d|abs\\.s|add|add\\.d|add\\.s|addi|addiu|addu|and|andi|bc1f|bc1t|beq|bgez|bgezal|bgtz|blez|bltz|bltzal|bne|break|c\\.eq\\.d|c\\.eq\\.s|c\\.le\\.d|c\\.le\\.s|c\\.lt\\.d|c\\.lt\\.s|ceil\\.w\\.d|ceil\\.w\\.s|clo|clz|cvt\\.d\\.s|cvt\\.d\\.w|cvt\\.s\\.d|cvt\\.s\\.w|cvt\\.w\\.d|cvt\\.w\\.s|div|div\\.d|div\\.s|divu|eret|floor\\.w\\.d|floor\\.w\\.s|j|jal|jalr|jr|lb|lbu|lh|lhu|ll|lui|lw|lwc1|lwl|lwr|madd|maddu|mfc0|mfc1|mfhi|mflo|mov\\.d|mov\\.s|movf|movf\\.d|movf\\.s|movn|movn\\.d|movn\\.s|movt|movt\\.d|movt\\.s|movz|movz\\.d|movz\\.s|msub|mtc0|mtc1|mthi|mtlo|mul|mul\\.d|mul\\.s|mult|multu|neg\\.d|neg\\.s|nop|nor|or|ori|round\\.w\\.d|round\\.w\\.s|sb|sc|sdc1|sh|sll|sllv|slt|slti|sltiu|sltu|sqrt\\.d|sqrt\\.s|sra|srav|srl|srlv|sub|sub\\.d|sub\\.s|subu|sw|swc1|swl|swr|syscall|teq|teqi|tge|tgei|tgeiu|tgeu|tlt|tlti|tltiu|tltu|trunc\\.w\\.d|trunc\\.w\\.s|xor|xori)\\b' }, - { token: 'storage.type.mips', - regex: '\\.(?:ascii|asciiz|byte|data|double|float|half|kdata|ktext|space|text|word|set\\s*(?:noat|at))\\b' }, - { token: 'storage.modifier.mips', - regex: '\\.(?:align|extern||globl)\\b' }, - { token: - [ 'entity.name.function.label.mips', - 'meta.function.label.mips' ], - regex: '\\b([A-Za-z0-9_]+)(:)' }, - { token: - [ 'punctuation.definition.variable.mips', - 'variable.other.register.usable.by-number.mips' ], - regex: '(\\$)(0|[2-9]|1[0-9]|2[0-5]|2[89]|3[0-1])\\b' }, - { token: - [ 'punctuation.definition.variable.mips', - 'variable.other.register.usable.by-name.mips' ], - regex: '(\\$)(zero|v[01]|a[0-3]|t[0-9]|s[0-7]|gp|sp|fp|ra)\\b' }, - { token: - [ 'punctuation.definition.variable.mips', - 'variable.other.register.reserved.mips' ], - regex: '(\\$)(at|k[01]|1|2[67])\\b' }, - { token: - [ 'punctuation.definition.variable.mips', - 'variable.other.register.usable.floating-point.mips', - 'variable.other.register.usable.floating-point.mips' ], - regex: '(\\$)(f)([0-9]|1[0-9]|2[0-9]|3[0-1])\\b' }, - { token: 'constant.numeric.float.mips', - regex: '\\b\\d+\\.\\d+\\b' }, - { token: 'constant.numeric.integer.mips', - regex: '\\b(?:\\d+|0(?:x|X)[a-fA-F0-9]+)\\b' }, - { token: 'punctuation.definition.string.begin.mips', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.mips', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.mips', - regex: '\\\\[rnt\\\\"]' }, - { defaultToken: 'string.quoted.double.mips' } ] }, - { token: 'punctuation.definition.comment.mips', - regex: '#', - push: - [ { token: 'comment.line.number-sign.mips', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.number-sign.mips' } ] } ] } - - this.normalizeRules(); -}; - -MIPSAssemblerHighlightRules.metaData = { fileTypes: [ 's', 'mips', 'spim', 'asm' ], - keyEquivalent: '^~M', - name: 'MIPS Assembler', - scopeName: 'source.mips' } - - -oop.inherits(MIPSAssemblerHighlightRules, TextHighlightRules); - -exports.MIPSAssemblerHighlightRules = MIPSAssemblerHighlightRules; -}); - -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/)#(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -define("ace/mode/mips_assembler",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mips_assembler_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var MIPSAssemblerHighlightRules = require("./mips_assembler_highlight_rules").MIPSAssemblerHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = MIPSAssemblerHighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/mips_assembler" -}).call(Mode.prototype); - -exports.Mode = Mode; -}); diff --git a/vendor/assets/javascripts/ace/mode-mipsassembler.js b/vendor/assets/javascripts/ace/mode-mipsassembler.js deleted file mode 100644 index 7b7dd710..00000000 --- a/vendor/assets/javascripts/ace/mode-mipsassembler.js +++ /dev/null @@ -1,196 +0,0 @@ -define("ace/mode/mipsassembler_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var mipsassemblerHighlightRules = function() { - - this.$rules = { - start: [{ - token: "string.start", - regex: '"', - next: "qstring" - }], - qstring: [{ - token: "escape", - regex: /\\./, - }, { - token: "string.end", - regex: '"', - next: "start" - }], - } - - this.normalizeRules(); -}; - -mipsassemblerHighlightRules.metaData = - - -oop.inherits(mipsassemblerHighlightRules, TextHighlightRules); - -exports.mipsassemblerHighlightRules = mipsassemblerHighlightRules; -}); - -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - -var oop = require("../../lib/oop"); -var Range = require("../../range").Range; -var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { - if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); - } -}; -oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; - this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; - this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; - this.startRegionRe = /^\s*(\/\*|\/\/)#region\b/; - this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { - var line = session.getLine(row); - - if (this.singleLineBlockCommentRe.test(line)) { - if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) - return ""; - } - - var fw = this._getFoldWidgetBase(session, foldStyle, row); - - if (!fw && this.startRegionRe.test(line)) - return "start"; // lineCommentRegionStart - - return fw; - }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { - var line = session.getLine(row); - - if (this.startRegionRe.test(line)) - return this.getCommentRegionBlock(session, line, row); - - var match = line.match(this.foldingStartMarker); - if (match) { - var i = match.index; - - if (match[1]) - return this.openingBracketBlock(session, match[1], row, i); - - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - - if (range && !range.isMultiLine()) { - if (forceMultiline) { - range = this.getSectionRange(session, row); - } else if (foldStyle != "all") - range = null; - } - - return range; - } - - if (foldStyle === "markbegin") - return; - - var match = line.match(this.foldingStopMarker); - if (match) { - var i = match.index + match[0].length; - - if (match[1]) - return this.closingBracketBlock(session, match[1], row, i); - - return session.getCommentFoldRange(row, i, -1); - } - }; - - this.getSectionRange = function(session, row) { - var line = session.getLine(row); - var startIndent = line.search(/\S/); - var startRow = row; - var startColumn = line.length; - row = row + 1; - var endRow = row; - var maxRow = session.getLength(); - while (++row < maxRow) { - line = session.getLine(row); - var indent = line.search(/\S/); - if (indent === -1) - continue; - if (startIndent > indent) - break; - var subRange = this.getFoldWidgetRange(session, "all", row); - - if (subRange) { - if (subRange.start.row <= startRow) { - break; - } else if (subRange.isMultiLine()) { - row = subRange.end.row; - } else if (startIndent == indent) { - break; - } - } - endRow = row; - } - - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); - }; - - this.getCommentRegionBlock = function(session, line, row) { - var startColumn = line.search(/\s*$/); - var maxRow = session.getLength(); - var startRow = row; - - var re = /^\s*(?:\/\*|\/\/)#(end)?region\b/; - var depth = 1; - while (++row < maxRow) { - line = session.getLine(row); - var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; - } - - var endRow = row; - if (endRow > startRow) { - return new Range(startRow, startColumn, endRow, line.length); - } - }; - -}).call(FoldMode.prototype); - -}); - -define("ace/mode/mipsassembler",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mipsassembler_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextMode = require("./text").Mode; -var HighlightRules = require("./mipsassembler_highlight_rules").HighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { - this.HighlightRules = HighlightRules; - this.foldingRules = new FoldMode(); -}; -oop.inherits(Mode, TextMode); - -(function() { - this.$id = "ace/mode/mipsassembler" -}).call(Mode.prototype); - -exports.Mode = Mode; -}); diff --git a/vendor/assets/javascripts/ace/mode-mixal.js b/vendor/assets/javascripts/ace/mode-mixal.js new file mode 100644 index 00000000..b5f5f074 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-mixal.js @@ -0,0 +1,110 @@ +define("ace/mode/mixal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var MixalHighlightRules = function () { + var isValidSymbol = function (string) { + return string && string.search(/^[A-Z\u0394\u03a0\u03a30-9]{1,10}$/) > -1 && string.search(/[A-Z\u0394\u03a0\u03a3]/) > -1; + }; + var isValidOp = function (op) { + return op && [ + 'NOP', 'ADD', 'FADD', 'SUB', 'FSUB', 'MUL', 'FMUL', 'DIV', 'FDIV', 'NUM', 'CHAR', 'HLT', + 'SLA', 'SRA', 'SLAX', 'SRAX', 'SLC', 'SRC', 'MOVE', 'LDA', 'LD1', 'LD2', 'LD3', 'LD4', + 'LD5', 'LD6', 'LDX', 'LDAN', 'LD1N', 'LD2N', 'LD3N', 'LD4N', 'LD5N', 'LD6N', 'LDXN', + 'STA', 'ST1', 'ST2', 'ST3', 'ST4', 'ST5', 'ST6', 'STX', 'STJ', 'STZ', 'JBUS', 'IOC', + 'IN', 'OUT', 'JRED', 'JMP', 'JSJ', 'JOV', 'JNOV', 'JL', 'JE', 'JG', 'JGE', 'JNE', 'JLE', + 'JAN', 'JAZ', 'JAP', 'JANN', 'JANZ', 'JANP', 'J1N', 'J1Z', 'J1P', 'J1NN', 'J1NZ', + 'J1NP', 'J2N', 'J2Z', 'J2P', 'J2NN', 'J2NZ', 'J2NP', 'J3N', 'J3Z', 'J3P', 'J3NN', 'J3NZ', + 'J3NP', 'J4N', 'J4Z', 'J4P', 'J4NN', 'J4NZ', 'J4NP', 'J5N', 'J5Z', 'J5P', 'J5NN', + 'J5NZ', 'J5NP', 'J6N', 'J6Z', 'J6P', 'J6NN', 'J6NZ', 'J6NP', 'JXN', 'JXZ', 'JXP', + 'JXNN', 'JXNZ', 'JXNP', 'INCA', 'DECA', 'ENTA', 'ENNA', 'INC1', 'DEC1', 'ENT1', 'ENN1', + 'INC2', 'DEC2', 'ENT2', 'ENN2', 'INC3', 'DEC3', 'ENT3', 'ENN3', 'INC4', 'DEC4', 'ENT4', + 'ENN4', 'INC5', 'DEC5', 'ENT5', 'ENN5', 'INC6', 'DEC6', 'ENT6', 'ENN6', 'INCX', 'DECX', + 'ENTX', 'ENNX', 'CMPA', 'FCMP', 'CMP1', 'CMP2', 'CMP3', 'CMP4', 'CMP5', 'CMP6', 'CMPX', + 'EQU', 'ORIG', 'CON', 'ALF', 'END' + ].indexOf(op) > -1; + }; + var containsOnlySupportedCharacters = function (string) { + return string && string.search(/[^ A-Z\u0394\u03a0\u03a30-9.,()+*/=$<>@;:'-]/) == -1; + }; + this.$rules = { + "start": [{ + token: "comment.line.character", + regex: /^ *\*.*$/ + }, { + token: function (label, space0, keyword, space1, literal, comment) { + return [ + isValidSymbol(label) ? "variable.other" : "invalid.illegal", + "text", + "keyword.control", + "text", + containsOnlySupportedCharacters(literal) ? "text" : "invalid.illegal", + "comment.line.character" + ]; + }, + regex: /^(\S+)?( +)(ALF)( )(.{5})(\s+.*)?$/ + }, { + token: function (label, space0, keyword, space1, literal, comment) { + return [ + isValidSymbol(label) ? "variable.other" : "invalid.illegal", + "text", + "keyword.control", + "text", + containsOnlySupportedCharacters(literal) ? "text" : "invalid.illegal", + "comment.line.character" + ]; + }, + regex: /^(\S+)?( +)(ALF)( )(\S.{4})(\s+.*)?$/ + }, { + token: function (label, space0, op, comment) { + return [ + isValidSymbol(label) ? "variable.other" : "invalid.illegal", + "text", + isValidOp(op) ? "keyword.control" : "invalid.illegal", + "comment.line.character" + ]; + }, + regex: /^(\S+)?( +)(\S+)(?:\s*)$/ + }, { + token: function (label, space0, op, space1, address, comment) { + return [ + isValidSymbol(label) ? "variable.other" : "invalid.illegal", + "text", + isValidOp(op) ? "keyword.control" : "invalid.illegal", + "text", + containsOnlySupportedCharacters(address) ? "text" : "invalid.illegal", + "comment.line.character" + ]; + }, + regex: /^(\S+)?( +)(\S+)( +)(\S+)(\s+.*)?$/ + }, { + defaultToken: "text" + }] + }; +}; +oop.inherits(MixalHighlightRules, TextHighlightRules); +exports.MixalHighlightRules = MixalHighlightRules; + +}); + +define("ace/mode/mixal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mixal_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var MixalHighlightRules = require("./mixal_highlight_rules").MixalHighlightRules; +var Mode = function () { + this.HighlightRules = MixalHighlightRules; +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/mixal"; + this.lineCommentStart = "*"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/mixal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-mushcode.js b/vendor/assets/javascripts/ace/mode-mushcode.js index ab75d240..fbf1ab9f 100644 --- a/vendor/assets/javascripts/ace/mode-mushcode.js +++ b/vendor/assets/javascripts/ace/mode-mushcode.js @@ -1,583 +1,564 @@ -define("ace/mode/mushcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/mushcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * MUSHCodeMode + */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MushCodeRules = function() { - - - var keywords = ( - "@if|"+ - "@ifelse|"+ - "@switch|"+ - "@halt|"+ - "@dolist|"+ - "@create|"+ - "@scent|"+ - "@sound|"+ - "@touch|"+ - "@ataste|"+ - "@osound|"+ - "@ahear|"+ - "@aahear|"+ - "@amhear|"+ - "@otouch|"+ - "@otaste|"+ - "@drop|"+ - "@odrop|"+ - "@adrop|"+ - "@dropfail|"+ - "@odropfail|"+ - "@smell|"+ - "@oemit|"+ - "@emit|"+ - "@pemit|"+ - "@parent|"+ - "@clone|"+ - "@taste|"+ - "whisper|"+ - "page|"+ - "say|"+ - "pose|"+ - "semipose|"+ - "teach|"+ - "touch|"+ - "taste|"+ - "smell|"+ - "listen|"+ - "look|"+ - "move|"+ - "go|"+ - "home|"+ - "follow|"+ - "unfollow|"+ - "desert|"+ - "dismiss|"+ - "@tel" - ); - - var builtinConstants = ( - "=#0" - ); - - var builtinFunctions = ( - "default|"+ - "edefault|"+ - "eval|"+ - "get_eval|"+ - "get|"+ - "grep|"+ - "grepi|"+ - "hasattr|"+ - "hasattrp|"+ - "hasattrval|"+ - "hasattrpval|"+ - "lattr|"+ - "nattr|"+ - "poss|"+ - "udefault|"+ - "ufun|"+ - "u|"+ - "v|"+ - "uldefault|"+ - "xget|"+ - "zfun|"+ - "band|"+ - "bnand|"+ - "bnot|"+ - "bor|"+ - "bxor|"+ - "shl|"+ - "shr|"+ - "and|"+ - "cand|"+ - "cor|"+ - "eq|"+ - "gt|"+ - "gte|"+ - "lt|"+ - "lte|"+ - "nand|"+ - "neq|"+ - "nor|"+ - "not|"+ - "or|"+ - "t|"+ - "xor|"+ - "con|"+ - "entrances|"+ - "exit|"+ - "followers|"+ - "home|"+ - "lcon|"+ - "lexits|"+ - "loc|"+ - "locate|"+ - "lparent|"+ - "lsearch|"+ - "next|"+ - "num|"+ - "owner|"+ - "parent|"+ - "pmatch|"+ - "rloc|"+ - "rnum|"+ - "room|"+ - "where|"+ - "zone|"+ - "worn|"+ - "held|"+ - "carried|"+ - "acos|"+ - "asin|"+ - "atan|"+ - "ceil|"+ - "cos|"+ - "e|"+ - "exp|"+ - "fdiv|"+ - "fmod|"+ - "floor|"+ - "log|"+ - "ln|"+ - "pi|"+ - "power|"+ - "round|"+ - "sin|"+ - "sqrt|"+ - "tan|"+ - "aposs|"+ - "andflags|"+ - "conn|"+ - "commandssent|"+ - "controls|"+ - "doing|"+ - "elock|"+ - "findable|"+ - "flags|"+ - "fullname|"+ - "hasflag|"+ - "haspower|"+ - "hastype|"+ - "hidden|"+ - "idle|"+ - "isbaker|"+ - "lock|"+ - "lstats|"+ - "money|"+ - "who|"+ - "name|"+ - "nearby|"+ - "obj|"+ - "objflags|"+ - "photo|"+ - "poll|"+ - "powers|"+ - "pendingtext|"+ - "receivedtext|"+ - "restarts|"+ - "restarttime|"+ - "subj|"+ - "shortestpath|"+ - "tmoney|"+ - "type|"+ - "visible|"+ - "cat|"+ - "element|"+ - "elements|"+ - "extract|"+ - "filter|"+ - "filterbool|"+ - "first|"+ - "foreach|"+ - "fold|"+ - "grab|"+ - "graball|"+ - "index|"+ - "insert|"+ - "itemize|"+ - "items|"+ - "iter|"+ - "last|"+ - "ldelete|"+ - "map|"+ - "match|"+ - "matchall|"+ - "member|"+ - "mix|"+ - "munge|"+ - "pick|"+ - "remove|"+ - "replace|"+ - "rest|"+ - "revwords|"+ - "setdiff|"+ - "setinter|"+ - "setunion|"+ - "shuffle|"+ - "sort|"+ - "sortby|"+ - "splice|"+ - "step|"+ - "wordpos|"+ - "words|"+ - "add|"+ - "lmath|"+ - "max|"+ - "mean|"+ - "median|"+ - "min|"+ - "mul|"+ - "percent|"+ - "sign|"+ - "stddev|"+ - "sub|"+ - "val|"+ - "bound|"+ - "abs|"+ - "inc|"+ - "dec|"+ - "dist2d|"+ - "dist3d|"+ - "div|"+ - "floordiv|"+ - "mod|"+ - "modulo|"+ - "remainder|"+ - "vadd|"+ - "vdim|"+ - "vdot|"+ - "vmag|"+ - "vmax|"+ - "vmin|"+ - "vmul|"+ - "vsub|"+ - "vunit|"+ - "regedit|"+ - "regeditall|"+ - "regeditalli|"+ - "regediti|"+ - "regmatch|"+ - "regmatchi|"+ - "regrab|"+ - "regraball|"+ - "regraballi|"+ - "regrabi|"+ - "regrep|"+ - "regrepi|"+ - "after|"+ - "alphamin|"+ - "alphamax|"+ - "art|"+ - "before|"+ - "brackets|"+ - "capstr|"+ - "case|"+ - "caseall|"+ - "center|"+ - "containsfansi|"+ - "comp|"+ - "decompose|"+ - "decrypt|"+ - "delete|"+ - "edit|"+ - "encrypt|"+ - "escape|"+ - "if|"+ - "ifelse|"+ - "lcstr|"+ - "left|"+ - "lit|"+ - "ljust|"+ - "merge|"+ - "mid|"+ - "ostrlen|"+ - "pos|"+ - "repeat|"+ - "reverse|"+ - "right|"+ - "rjust|"+ - "scramble|"+ - "secure|"+ - "space|"+ - "spellnum|"+ - "squish|"+ - "strcat|"+ - "strmatch|"+ - "strinsert|"+ - "stripansi|"+ - "stripfansi|"+ - "strlen|"+ - "switch|"+ - "switchall|"+ - "table|"+ - "tr|"+ - "trim|"+ - "ucstr|"+ - "unsafe|"+ - "wrap|"+ - "ctitle|"+ - "cwho|"+ - "channels|"+ - "clock|"+ - "cflags|"+ - "ilev|"+ - "itext|"+ - "inum|"+ - "convsecs|"+ - "convutcsecs|"+ - "convtime|"+ - "ctime|"+ - "etimefmt|"+ - "isdaylight|"+ - "mtime|"+ - "secs|"+ - "msecs|"+ - "starttime|"+ - "time|"+ - "timefmt|"+ - "timestring|"+ - "utctime|"+ - "atrlock|"+ - "clone|"+ - "create|"+ - "cook|"+ - "dig|"+ - "emit|"+ - "lemit|"+ - "link|"+ - "oemit|"+ - "open|"+ - "pemit|"+ - "remit|"+ - "set|"+ - "tel|"+ - "wipe|"+ - "zemit|"+ - "fbcreate|"+ - "fbdestroy|"+ - "fbwrite|"+ - "fbclear|"+ - "fbcopy|"+ - "fbcopyto|"+ - "fbclip|"+ - "fbdump|"+ - "fbflush|"+ - "fbhset|"+ - "fblist|"+ - "fbstats|"+ - "qentries|"+ - "qentry|"+ - "play|"+ - "ansi|"+ - "break|"+ - "c|"+ - "asc|"+ - "die|"+ - "isdbref|"+ - "isint|"+ - "isnum|"+ - "isletters|"+ - "linecoords|"+ - "localize|"+ - "lnum|"+ - "nameshort|"+ - "null|"+ - "objeval|"+ - "r|"+ - "rand|"+ - "s|"+ - "setq|"+ - "setr|"+ - "soundex|"+ - "soundslike|"+ - "valid|"+ - "vchart|"+ - "vchart2|"+ - "vlabel|"+ - "@@|"+ - "bakerdays|"+ - "bodybuild|"+ - "box|"+ - "capall|"+ - "catalog|"+ - "children|"+ - "ctrailer|"+ - "darttime|"+ - "debt|"+ - "detailbar|"+ - "exploredroom|"+ - "fansitoansi|"+ - "fansitoxansi|"+ - "fullbar|"+ - "halfbar|"+ - "isdarted|"+ - "isnewbie|"+ - "isword|"+ - "lambda|"+ - "lobjects|"+ - "lplayers|"+ - "lthings|"+ - "lvexits|"+ - "lvobjects|"+ - "lvplayers|"+ - "lvthings|"+ - "newswrap|"+ - "numsuffix|"+ - "playerson|"+ - "playersthisweek|"+ - "randomad|"+ - "randword|"+ - "realrandword|"+ - "replacechr|"+ - "second|"+ - "splitamount|"+ - "strlenall|"+ - "text|"+ - "third|"+ - "tofansi|"+ - "totalac|"+ - "unique|"+ - "getaddressroom|"+ - "listpropertycomm|"+ - "listpropertyres|"+ - "lotowner|"+ - "lotrating|"+ - "lotratingcount|"+ - "lotvalue|"+ - "boughtproduct|"+ - "companyabb|"+ - "companyicon|"+ - "companylist|"+ - "companyname|"+ - "companyowners|"+ - "companyvalue|"+ - "employees|"+ - "invested|"+ - "productlist|"+ - "productname|"+ - "productowners|"+ - "productrating|"+ - "productratingcount|"+ - "productsoldat|"+ - "producttype|"+ - "ratedproduct|"+ - "soldproduct|"+ - "topproducts|"+ - "totalspentonproduct|"+ - "totalstock|"+ - "transfermoney|"+ - "uniquebuyercount|"+ - "uniqueproductsbought|"+ - "validcompany|"+ - "deletepicture|"+ - "fbsave|"+ - "getpicturesecurity|"+ - "haspicture|"+ - "listpictures|"+ - "picturesize|"+ - "replacecolor|"+ - "rgbtocolor|"+ - "savepicture|"+ - "setpicturesecurity|"+ - "showpicture|"+ - "piechart|"+ - "piechartlabel|"+ - "createmaze|"+ - "drawmaze|"+ - "drawwireframe" - ); +var MushCodeRules = function () { + var keywords = ("@if|" + + "@ifelse|" + + "@switch|" + + "@halt|" + + "@dolist|" + + "@create|" + + "@scent|" + + "@sound|" + + "@touch|" + + "@ataste|" + + "@osound|" + + "@ahear|" + + "@aahear|" + + "@amhear|" + + "@otouch|" + + "@otaste|" + + "@drop|" + + "@odrop|" + + "@adrop|" + + "@dropfail|" + + "@odropfail|" + + "@smell|" + + "@oemit|" + + "@emit|" + + "@pemit|" + + "@parent|" + + "@clone|" + + "@taste|" + + "whisper|" + + "page|" + + "say|" + + "pose|" + + "semipose|" + + "teach|" + + "touch|" + + "taste|" + + "smell|" + + "listen|" + + "look|" + + "move|" + + "go|" + + "home|" + + "follow|" + + "unfollow|" + + "desert|" + + "dismiss|" + + "@tel"); + var builtinConstants = ("=#0"); + var builtinFunctions = ("default|" + + "edefault|" + + "eval|" + + "get_eval|" + + "get|" + + "grep|" + + "grepi|" + + "hasattr|" + + "hasattrp|" + + "hasattrval|" + + "hasattrpval|" + + "lattr|" + + "nattr|" + + "poss|" + + "udefault|" + + "ufun|" + + "u|" + + "v|" + + "uldefault|" + + "xget|" + + "zfun|" + + "band|" + + "bnand|" + + "bnot|" + + "bor|" + + "bxor|" + + "shl|" + + "shr|" + + "and|" + + "cand|" + + "cor|" + + "eq|" + + "gt|" + + "gte|" + + "lt|" + + "lte|" + + "nand|" + + "neq|" + + "nor|" + + "not|" + + "or|" + + "t|" + + "xor|" + + "con|" + + "entrances|" + + "exit|" + + "followers|" + + "home|" + + "lcon|" + + "lexits|" + + "loc|" + + "locate|" + + "lparent|" + + "lsearch|" + + "next|" + + "num|" + + "owner|" + + "parent|" + + "pmatch|" + + "rloc|" + + "rnum|" + + "room|" + + "where|" + + "zone|" + + "worn|" + + "held|" + + "carried|" + + "acos|" + + "asin|" + + "atan|" + + "ceil|" + + "cos|" + + "e|" + + "exp|" + + "fdiv|" + + "fmod|" + + "floor|" + + "log|" + + "ln|" + + "pi|" + + "power|" + + "round|" + + "sin|" + + "sqrt|" + + "tan|" + + "aposs|" + + "andflags|" + + "conn|" + + "commandssent|" + + "controls|" + + "doing|" + + "elock|" + + "findable|" + + "flags|" + + "fullname|" + + "hasflag|" + + "haspower|" + + "hastype|" + + "hidden|" + + "idle|" + + "isbaker|" + + "lock|" + + "lstats|" + + "money|" + + "who|" + + "name|" + + "nearby|" + + "obj|" + + "objflags|" + + "photo|" + + "poll|" + + "powers|" + + "pendingtext|" + + "receivedtext|" + + "restarts|" + + "restarttime|" + + "subj|" + + "shortestpath|" + + "tmoney|" + + "type|" + + "visible|" + + "cat|" + + "element|" + + "elements|" + + "extract|" + + "filter|" + + "filterbool|" + + "first|" + + "foreach|" + + "fold|" + + "grab|" + + "graball|" + + "index|" + + "insert|" + + "itemize|" + + "items|" + + "iter|" + + "last|" + + "ldelete|" + + "map|" + + "match|" + + "matchall|" + + "member|" + + "mix|" + + "munge|" + + "pick|" + + "remove|" + + "replace|" + + "rest|" + + "revwords|" + + "setdiff|" + + "setinter|" + + "setunion|" + + "shuffle|" + + "sort|" + + "sortby|" + + "splice|" + + "step|" + + "wordpos|" + + "words|" + + "add|" + + "lmath|" + + "max|" + + "mean|" + + "median|" + + "min|" + + "mul|" + + "percent|" + + "sign|" + + "stddev|" + + "sub|" + + "val|" + + "bound|" + + "abs|" + + "inc|" + + "dec|" + + "dist2d|" + + "dist3d|" + + "div|" + + "floordiv|" + + "mod|" + + "modulo|" + + "remainder|" + + "vadd|" + + "vdim|" + + "vdot|" + + "vmag|" + + "vmax|" + + "vmin|" + + "vmul|" + + "vsub|" + + "vunit|" + + "regedit|" + + "regeditall|" + + "regeditalli|" + + "regediti|" + + "regmatch|" + + "regmatchi|" + + "regrab|" + + "regraball|" + + "regraballi|" + + "regrabi|" + + "regrep|" + + "regrepi|" + + "after|" + + "alphamin|" + + "alphamax|" + + "art|" + + "before|" + + "brackets|" + + "capstr|" + + "case|" + + "caseall|" + + "center|" + + "containsfansi|" + + "comp|" + + "decompose|" + + "decrypt|" + + "delete|" + + "edit|" + + "encrypt|" + + "escape|" + + "if|" + + "ifelse|" + + "lcstr|" + + "left|" + + "lit|" + + "ljust|" + + "merge|" + + "mid|" + + "ostrlen|" + + "pos|" + + "repeat|" + + "reverse|" + + "right|" + + "rjust|" + + "scramble|" + + "secure|" + + "space|" + + "spellnum|" + + "squish|" + + "strcat|" + + "strmatch|" + + "strinsert|" + + "stripansi|" + + "stripfansi|" + + "strlen|" + + "switch|" + + "switchall|" + + "table|" + + "tr|" + + "trim|" + + "ucstr|" + + "unsafe|" + + "wrap|" + + "ctitle|" + + "cwho|" + + "channels|" + + "clock|" + + "cflags|" + + "ilev|" + + "itext|" + + "inum|" + + "convsecs|" + + "convutcsecs|" + + "convtime|" + + "ctime|" + + "etimefmt|" + + "isdaylight|" + + "mtime|" + + "secs|" + + "msecs|" + + "starttime|" + + "time|" + + "timefmt|" + + "timestring|" + + "utctime|" + + "atrlock|" + + "clone|" + + "create|" + + "cook|" + + "dig|" + + "emit|" + + "lemit|" + + "link|" + + "oemit|" + + "open|" + + "pemit|" + + "remit|" + + "set|" + + "tel|" + + "wipe|" + + "zemit|" + + "fbcreate|" + + "fbdestroy|" + + "fbwrite|" + + "fbclear|" + + "fbcopy|" + + "fbcopyto|" + + "fbclip|" + + "fbdump|" + + "fbflush|" + + "fbhset|" + + "fblist|" + + "fbstats|" + + "qentries|" + + "qentry|" + + "play|" + + "ansi|" + + "break|" + + "c|" + + "asc|" + + "die|" + + "isdbref|" + + "isint|" + + "isnum|" + + "isletters|" + + "linecoords|" + + "localize|" + + "lnum|" + + "nameshort|" + + "null|" + + "objeval|" + + "r|" + + "rand|" + + "s|" + + "setq|" + + "setr|" + + "soundex|" + + "soundslike|" + + "valid|" + + "vchart|" + + "vchart2|" + + "vlabel|" + + "@@|" + + "bakerdays|" + + "bodybuild|" + + "box|" + + "capall|" + + "catalog|" + + "children|" + + "ctrailer|" + + "darttime|" + + "debt|" + + "detailbar|" + + "exploredroom|" + + "fansitoansi|" + + "fansitoxansi|" + + "fullbar|" + + "halfbar|" + + "isdarted|" + + "isnewbie|" + + "isword|" + + "lambda|" + + "lobjects|" + + "lplayers|" + + "lthings|" + + "lvexits|" + + "lvobjects|" + + "lvplayers|" + + "lvthings|" + + "newswrap|" + + "numsuffix|" + + "playerson|" + + "playersthisweek|" + + "randomad|" + + "randword|" + + "realrandword|" + + "replacechr|" + + "second|" + + "splitamount|" + + "strlenall|" + + "text|" + + "third|" + + "tofansi|" + + "totalac|" + + "unique|" + + "getaddressroom|" + + "listpropertycomm|" + + "listpropertyres|" + + "lotowner|" + + "lotrating|" + + "lotratingcount|" + + "lotvalue|" + + "boughtproduct|" + + "companyabb|" + + "companyicon|" + + "companylist|" + + "companyname|" + + "companyowners|" + + "companyvalue|" + + "employees|" + + "invested|" + + "productlist|" + + "productname|" + + "productowners|" + + "productrating|" + + "productratingcount|" + + "productsoldat|" + + "producttype|" + + "ratedproduct|" + + "soldproduct|" + + "topproducts|" + + "totalspentonproduct|" + + "totalstock|" + + "transfermoney|" + + "uniquebuyercount|" + + "uniqueproductsbought|" + + "validcompany|" + + "deletepicture|" + + "fbsave|" + + "getpicturesecurity|" + + "haspicture|" + + "listpictures|" + + "picturesize|" + + "replacecolor|" + + "rgbtocolor|" + + "savepicture|" + + "setpicturesecurity|" + + "showpicture|" + + "piechart|" + + "piechartlabel|" + + "createmaze|" + + "drawmaze|" + + "drawwireframe"); var keywordMapper = this.createKeywordMapper({ "invalid.deprecated": "debugger", "support.function": builtinFunctions, "constant.language": builtinConstants, "keyword": keywords }, "identifier"); - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var octInteger = "(?:0[oO]?[0-7]+)"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var binInteger = "(?:0[bB][01]+)"; var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - var exponent = "(?:[eE][+-]?\\d+)"; var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - this.$rules = { - "start" : [ - { - token : "variable", // mush substitution register - regex : "%[0-9]{1}" - }, - { - token : "variable", // mush substitution register - regex : "%q[0-9A-Za-z]{1}" - }, - { - token : "variable", // mush special character register - regex : "%[a-zA-Z]{1}" - }, - { + "start": [ + { + token: "variable", // mush substitution register + regex: "%[0-9]{1}" + }, + { + token: "variable", // mush substitution register + regex: "%q[0-9A-Za-z]{1}" + }, + { + token: "variable", // mush special character register + regex: "%[a-zA-Z]{1}" + }, + { token: "variable.language", regex: "%[a-z0-9-_]+" - }, - { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ] + }, + { + token: "constant.numeric", // imaginary + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // long integer + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|#|%|<<|>>|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: "text", + regex: "\\s+" + } + ] }; }; - oop.inherits(MushCodeRules, TextHighlightRules); - exports.MushCodeRules = MushCodeRules; + }); -define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(markers) { +var FoldMode = exports.FoldMode = function (markers) { this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.getLine(row); var match = line.match(this.foldingStartMarker); if (match) { @@ -588,87 +569,74 @@ oop.inherits(FoldMode, BaseFoldMode); return this.indentationBlock(session, row); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/mushcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mushcode_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/mushcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mushcode_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var MushCodeRules = require("./mushcode_highlight_rules").MushCodeRules; var PythonFoldMode = require("./folding/pythonic").FoldMode; var Range = require("../range").Range; - -var Mode = function() { +var Mode = function () { this.HighlightRules = MushCodeRules; this.foldingRules = new PythonFoldMode("\\:"); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - - - this.getNextLineIndent = function(state, line, tab) { +(function () { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } } - return indent; }; - - var outdents = { + var outdents = { "pass": 1, "return": 1, "raise": 1, "break": 1, "continue": 1 }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { if (input !== "\r\n" && input !== "\r" && input !== "\n") return false; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens) return false; do { var last = tokens.pop(); } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - if (!last) return false; - return (last.type == "keyword" && outdents[last.value]); }; - - this.autoOutdent = function(state, doc, row) { - + this.autoOutdent = function (state, doc, row) { row += 1; var indent = this.$getIndent(doc.getLine(row)); var tab = doc.getTabString(); if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); }; - this.$id = "ace/mode/mushcode"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/mushcode"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-mysql.js b/vendor/assets/javascripts/ace/mode-mysql.js index 9950f759..3c4e9c1b 100644 --- a/vendor/assets/javascripts/ace/mode-mysql.js +++ b/vendor/assets/javascripts/ace/mode-mysql.js @@ -1,74 +1,65 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); +define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); var lang = require("../lib/lang"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var MysqlHighlightRules = function() { - - var mySqlKeywords = /*sql*/ "alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where" + "|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat"; - var builtins = "by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl"; +var MysqlHighlightRules = function () { + var mySqlKeywords = /*sql*/ "alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|lateral|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|intersect|except|update|values|where" + "|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|by|group_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat"; + var builtins = "rank|coalesce|ifnull|isnull|nvl"; var variable = "charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee"; - + var datetimeFunctions = 'adddate|addtime|convert_tz|curdate|current_date|current_time|current_timestamp|curtime|date|date_add|date_format|date_sub|datediff|day|dayname|dayofmonth|dayofweek|dayofyear|extract|from_days|from_unixtime|get_format|hour|last_day|localtime|localtimestamp|makedate|maketime|microsecond|minute|month|monthname|now|period_add|period_diff|quarter|sec_to_time|second|str_to_date|subdate|subtime|sysdate|time|time_format|time_to_sec|timediff|timestamp|timestampadd|timestampdiff|to_days|to_seconds|unix_timestamp|utc_date|utc_time|utc_timestamp|week|weekday|weekofyear|year|yearweek'; + var encryptionFunctions = 'aes_decrypt|aes_encrypt|compress|md|random_bytes|sha|sha|statement_digest|statement_digest_text|uncompress|uncompressed_length|validate_password_strength'; + var mathFunctions = 'abs|acos|asin|atan|atan|ceil|ceiling|conv|cos|cot|crc|degrees|div|exp|floor|ln|log|log10|log2|mod|pi|pow|power|radians|rand|round|sign|sin|sqrt|tan|truncate'; + var stringFunctions = 'ascii|bin|bit_length|char|char_length|character_length|concat|concat_ws|elt|export_set|field|find_in_set|format|from_base|hex|insert|instr|lcase|left|length|like|load_file|locate|lower|lpad|ltrim|make_set|match|mid|not|not|oct|octet_length|ord|position|quote|regexp|regexp_instr|regexp_like|regexp_replace|regexp_substr|repeat|replace|reverse|right|rlike|rpad|rtrim|soundex|sounds|space|strcmp|substr|substring|substring_index|to_base|trim|ucase|unhex|upper|weight_string'; + var dataTypes = ("bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|" + + "bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric"); var keywordMapper = this.createKeywordMapper({ - "support.function": builtins, + "support.function": [builtins, datetimeFunctions, encryptionFunctions, mathFunctions, stringFunctions].join('|'), "keyword": mySqlKeywords, - "constant": "false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat", + "storage.type": dataTypes, + "constant": "false|true|null|unknown|ODBCdotTable|zerolessFloat", "variable.language": variable }, "identifier", true); - - function string(rule) { var start = rule.start; var escapeSeq = rule.escape; @@ -76,85 +67,84 @@ var MysqlHighlightRules = function() { token: "string.start", regex: start, next: [ - {token: "constant.language.escape", regex: escapeSeq}, - {token: "string.end", next: "start", regex: start}, - {defaultToken: "string"} + { token: "constant.language.escape", regex: escapeSeq }, + { token: "string.end", next: "start", regex: start }, + { defaultToken: "string" } ] }; } - this.$rules = { - "start" : [ { - token : "comment", regex : "(?:-- |#).*$" - }, - string({start: '"', escape: /\\[0'"bnrtZ\\%_]?/}), - string({start: "'", escape: /\\[0'"bnrtZ\\%_]?/}), - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/ - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "constant.class", - regex : "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "constant.buildin", - regex : "`[^`]*`" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ], - "comment" : [ - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment"} + "start": [{ + token: "comment", regex: "(?:-- |#).*$" + }, + string({ start: '"', escape: /\\[0'"bnrtZ\\%_]?/ }), + string({ start: "'", escape: /\\[0'"bnrtZ\\%_]?/ }), + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: /\/\*/, + next: "comment" + }, { + token: "constant.numeric", // hex + regex: /0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/ + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "constant.class", + regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "constant.buildin", + regex: "`[^`]*`" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + }], + "comment": [ + { token: "comment", regex: "\\*\\/", next: "start" }, + { defaultToken: "comment" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; - oop.inherits(MysqlHighlightRules, TextHighlightRules); - exports.MysqlHighlightRules = MysqlHighlightRules; + }); -define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); +define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); var TextMode = require("../mode/text").Mode; var MysqlHighlightRules = require("./mysql_highlight_rules").MysqlHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = MysqlHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = ["--", "#"]; // todo space - this.blockComment = {start: "/*", end: "*/"}; - + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/mysql"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/mysql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-nasal.js b/vendor/assets/javascripts/ace/mode-nasal.js new file mode 100644 index 00000000..d6cb8a8a --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-nasal.js @@ -0,0 +1,513 @@ +define("ace/mode/nasal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var NasalHighlightRules = function () { + this.$rules = { + start: [{ + token: "constant.other.allcaps.nasal", + regex: /\b[[:upper:]_][[:upper:][:digit:]_]*\b(?![\.\(\'\"])/, + comment: "Match identifiers in ALL_CAPS as constants, except when followed by `.`, `(`, `'`, or `\"`." + }, { + todo: { + token: [ + "support.class.nasal", + "meta.function.nasal", + "entity.name.function.nasal", + "meta.function.nasal", + "keyword.operator.nasal", + "meta.function.nasal", + "storage.type.function.nasal", + "meta.function.nasal", + "punctuation.definition.parameters.begin.nasal" + ], + regex: /([a-zA-Z_?.$][\w?.$]*)(\.)([a-zA-Z_?.$][\w?.$]*)(\s*)(=)(\s*)(func)(\s*)(\()/, + push: [{ + token: "punctuation.definition.parameters.end.nasal", + regex: /\)/, + next: "pop" + }, { + include: "$self" + }, { + token: "variable.parameter.nasal", + regex: /\w/ + }, { + defaultToken: "meta.function.nasal" + }] + }, + comment: "match stuff like: Sound.play = func() { … }" + }, { + todo: { + token: [ + "entity.name.function.nasal", + "meta.function.nasal", + "keyword.operator.nasal", + "meta.function.nasal", + "storage.type.function.nasal", + "meta.function.nasal", + "punctuation.definition.parameters.begin.nasal" + ], + regex: /([a-zA-Z_?$][\w?$]*)(\s*)(=)(\s*)(func)(\s*)(\()/, + push: [{ + token: "punctuation.definition.parameters.end.nasal", + regex: /\)/, + next: "pop" + }, { + include: "$self" + }, { + token: "variable.parameter.nasal", + regex: /\w/ + }, { + defaultToken: "meta.function.nasal" + }] + }, + comment: "match stuff like: play = func() { … }" + }, { + todo: { + token: [ + "entity.name.function.nasal", + "meta.function.nasal", + "keyword.operator.nasal", + "meta.function.nasal", + "storage.type.function.nasal", + "meta.function.nasal", + "punctuation.definition.parameters.begin.nasal" + ], + regex: /([a-zA-Z_?$][\w?$]*)(\s*)(=)(\s*\(\s*)(func)(\s*)(\()/, + push: [{ + token: "punctuation.definition.parameters.end.nasal", + regex: /\)/, + next: "pop" + }, { + include: "$self" + }, { + token: "variable.parameter.nasal", + regex: /\w/ + }, { + defaultToken: "meta.function.nasal" + }] + }, + comment: "match stuff like: play = (func() { … }" + }, { + todo: { + token: [ + "entity.name.function.nasal", + "meta.function.hash.nasal", + "storage.type.function.nasal", + "meta.function.hash.nasal", + "punctuation.definition.parameters.begin.nasal" + ], + regex: /\b([a-zA-Z_?.$][\w?.$]*)(\s*:\s*\b)(func)(\s*)(\()/, + push: [{ + token: "punctuation.definition.parameters.end.nasal", + regex: /\)/, + next: "pop" + }, { + include: "$self" + }, { + token: "variable.parameter.nasal", + regex: /\w/ + }, { + defaultToken: "meta.function.hash.nasal" + }] + }, + comment: "match stuff like: foobar: func() { … }" + }, { + todo: { + token: [ + "storage.type.function.nasal", + "meta.function.nasal", + "punctuation.definition.parameters.begin.nasal" + ], + regex: /\b(func)(\s*)(\()/, + push: [{ + token: "punctuation.definition.parameters.end.nasal", + regex: /\)/, + next: "pop" + }, { + include: "$self" + }, { + token: "variable.parameter.nasal", + regex: /\w/ + }, { + defaultToken: "meta.function.nasal" + }] + }, + comment: "match stuff like: func() { … }" + }, { + token: [ + "keyword.operator.new.nasal", + "meta.class.instance.constructor", + "entity.name.type.instance.nasal" + ], + regex: /(new)(\s+)(\w+(?:\.\w*)?)/ + }, { + token: "keyword.control.nasal", + regex: /\b(?:if|else|elsif|while|for|foreach|forindex)\b/ + }, { + token: "keyword.control.nasal", + regex: /\b(?:break(?:\s+[A-Z]{2,16})?(?=\s*(?:;|\}))|continue(?:\s+[A-Z]{2,16})?(?=\s*(?:;|\}))|[A-Z]{2,16}(?=\s*;(?:[^\)#;]*?;){0,2}[^\)#;]*?\)))\b/ + }, { + token: "keyword.operator.nasal", + regex: /!|\*|\-|\+|~|\/|==|=|!=|<=|>=|<|>|!|\?|\:|\*=|\/=|\+=|\-=|~=|\.\.\.|\b(?:and|or)\b/ + }, { + token: "variable.language.nasal", + regex: /\b(?:me|arg|parents|obj)\b/ + }, { + token: "storage.type.nasal", + regex: /\b(?:return|var)\b/ + }, { + token: "constant.language.nil.nasal", + regex: /\bnil\b/ + }, { + token: "punctuation.definition.string.begin.nasal", + regex: /'/, + push: [{ + token: "punctuation.definition.string.end.nasal", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.nasal", + regex: /\\'/ + }, { + defaultToken: "string.quoted.single.nasal" + }], + comment: "Single quoted strings" + }, { + token: "punctuation.definition.string.begin.nasal", + regex: /"/, + push: [{ + token: "punctuation.definition.string.end.nasal", + regex: /"/, + next: "pop" + }, { + token: "constant.character.escape.nasal", + regex: /\\(?:x[\da-fA-F]{2}|[0-2][0-7]{,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|r|n|t|\\|")/ + }, { + token: "constant.character.escape.nasal", + regex: /%(?:%|(?:\d+\$)?[+-]?(?:[ 0]|'.{1})?-?\d*(?:\.\d+)?[bcdeEufFgGosxX])/ + }, { + defaultToken: "string.quoted.double.nasal" + }], + comment: "Double quoted strings" + }, { + token: [ + "punctuation.definition.string.begin.nasal", + "string.other", + "punctuation.definition.string.end.nasal" + ], + regex: /(`)(.)(`)/, + comment: "Single-byte ASCII character constants" + }, { + token: [ + "punctuation.definition.comment.nasal", + "comment.line.hash.nasal" + ], + regex: /(#)(.*$)/, + comment: "Comments" + }, { + token: "constant.numeric.nasal", + regex: /(?:(?:\b[0-9]+)?\.)?\b[0-9]+(?:[eE][-+]?[0-9]+)?\b/, + comment: "Integers, floats, and scientific format" + }, { + token: "constant.numeric.nasal", + regex: /0[x|X][0-9a-fA-F]+/, + comment: "Hex codes" + }, { + token: "punctuation.terminator.statement.nasal", + regex: /\;/ + }, { + token: [ + "punctuation.section.scope.begin.nasal", + "punctuation.section.scope.end.nasal" + ], + regex: /(\[)(\])/ + }, { + todo: { + token: "punctuation.section.scope.begin.nasal", + regex: /\{/, + push: [{ + token: "punctuation.section.scope.end.nasal", + regex: /\}/, + next: "pop" + }, { + include: "$self" + }] + } + }, { + todo: { + token: "punctuation.section.scope.begin.nasal", + regex: /\(/, + push: [{ + token: "punctuation.section.scope.end.nasal", + regex: /\)/, + next: "pop" + }, { + include: "$self" + }] + } + }, { + token: "invalid.illegal", + regex: /%|\$|@|&|\^|\||\\|`/, + comment: "Illegal characters" + }, { + todo: { + comment: "TODO: Symbols in hash keys" + }, + comment: "TODO: Symbols in hash keys" + }, { + token: "variable.language.nasal", + regex: /\b(?:append|bind|call|caller|chr|closure|cmp|compile|contains|delete|die|find|ghosttype|id|int|keys|left|num|pop|right|setsize|size|sort|split|sprintf|streq|substr|subvec|typeof|readline)\b/, + comment: "Core functions" + }, { + token: "variable.language.nasal", + regex: /\b(?:abort|abs|aircraftToCart|addcommand|airportinfo|airwaysRoute|assert|carttogeod|cmdarg|courseAndDistance|createDiscontinuity|createViaTo|createWP|createWPFrom|defined|directory|fgcommand|findAirportsByICAO|findAirportsWithinRange|findFixesByID|findNavaidByFrequency|findNavaidsByFrequency|findNavaidsByID|findNavaidsWithinRange|finddata|flightplan|geodinfo|geodtocart|get_cart_ground_intersection|getprop|greatCircleMove|interpolate|isa|logprint|magvar|maketimer|start|stop|restart|maketimestamp|md5|navinfo|parse_markdown|parsexml|print|printf|printlog|rand|registerFlightPlanDelegate|removecommand|removelistener|resolvepath|setlistener|_setlistener|setprop|srand|systime|thisfunc|tileIndex|tilePath|values)\b/, + comment: "FG ext core functions" + }, { + token: "variable.language.nasal", + regex: /\b(?:singleShot|isRunning|simulatedTime)\b/, + comment: "FG ext core functions" + }, { + token: "constant.language.nasal", + regex: /\b(?:D2R|FPS2KT|FT2M|GAL2L|IN2M|KG2LB|KT2FPS|KT2MPS|LG2GAL|LB2KG|M2FT|M2IN|M2NM|MPS2KT|NM2M|R2D)\b/, + comment: "FG ext core constants" + }, { + token: "support.function.nasal", + regex: /\b(?:addChild|addChildren|alias|clearValue|equals|getAliasTarget|getAttribute|getBoolValue|getChild|getChildren|getIndex|getName|getNode|getParent|getPath|getType|getValue|getValues|initNode|remove|removeAllChildren|removeChild|removeChildren|setAttribute|setBoolValue|setDoubleValue|setIntValue|setValue|setValues|unalias|compileCondition|condition|copy|dump|getNode|nodeList|runBinding|setAll|wrap|wrapNode)\b/, + comment: "FG func props" + }, { + token: "support.class.nasal", + regex: /\bNode\b/, + comment: "FG node class" + }, { + token: "variable.language.nasal", + regex: /\b(?:props|globals)\b/, + comment: "FG func props variables" + }, { + todo: { + token: [ + "support.function.nasal", + "punctuation.definition.arguments.begin.nasal" + ], + regex: /\b([a-zA-Z_?$][\w?$]*)(\()/, + push: [{ + token: "punctuation.definition.arguments.end.nasal", + regex: /\)/, + next: "pop" + }, { + include: "$self" + }, { + defaultToken: "meta.function-call.nasal" + }] + }, + comment: "function call" + }] + }; + this.normalizeRules(); +}; +NasalHighlightRules.metaData = { + fileTypes: ["nas"], + name: "Nasal", + scopeName: "source.nasal" +}; +oop.inherits(NasalHighlightRules, TextHighlightRules); +exports.NasalHighlightRules = NasalHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/nasal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nasal_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var NasalHighlightRules = require("./nasal_highlight_rules").NasalHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = NasalHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/nasal"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/nasal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-nginx.js b/vendor/assets/javascripts/ace/mode-nginx.js new file mode 100644 index 00000000..04bb73fb --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-nginx.js @@ -0,0 +1,262 @@ +define("ace/mode/nginx_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var NginxHighlightRules = function () { + var keywords = "include|index|absolute_redirect|aio|output_buffers|directio|sendfile|aio_write|alias|root|chunked_transfer_encoding|client_body_buffer_size|client_body_in_file_only|client_body_in_single_buffer|client_body_temp_path|client_body_timeout|client_header_buffer_size|client_header_timeout|client_max_body_size|connection_pool_size|default_type|disable_symlinks|directio_alignment|error_page|etag|if_modified_since|ignore_invalid_headers|internal|keepalive_requests|keepalive_disable|keepalive_timeout|limit_except|large_client_header_buffers|limit_rate|limit_rate_after|lingering_close|lingering_time|lingering_timeout|listen|log_not_found|log_subrequest|max_ranges|merge_slashes|msie_padding|msie_refresh|open_file_cache|open_file_cache_errors|open_file_cache_min_uses|open_file_cache_valid|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver|resolver_timeout|satisfy|send_lowat|send_timeout|sendfile|sendfile_max_chunk|server_name|server_name_in_redirect|server_names_hash_bucket_size|server_names_hash_max_size|server_tokens|subrequest_output_buffer_size|tcp_nodelay|tcp_nopush|try_files|types|types_hash_bucket_size|types_hash_max_size|underscores_in_headers|variables_hash_bucket_size|variables_hash_max_size|accept_mutex|accept_mutex_delay|debug_connection|error_log|daemon|debug_points|env|load_module|lock_file|master_process|multi_accept|pcre_jit|pid|ssl_engine|thread_pool|timer_resolution|use|user|worker_aio_requests|worker_connections|worker_cpu_affinity|worker_priority|worker_processes|worker_rlimit_core|worker_rlimit_nofile|worker_shutdown_timeout|working_directory|allow|deny|add_before_body|add_after_body|addition_types|api|status_zone|auth_basic|auth_basic_user_file|auth_jwt|auth_jwt|auth_jwt_claim_set|auth_jwt_header_set|auth_jwt_key_file|auth_jwt_key_request|auth_jwt_leeway|auth_request|auth_request_set|autoindex|autoindex_exact_size|autoindex_format|autoindex_localtime|ancient_browser|ancient_browser_value|modern_browser|modern_browser_value|charset|charset_map|charset_types|override_charset|source_charset|create_full_put_path|dav_access|dav_methods|min_delete_depth|empty_gif|f4f|f4f_buffer_size|fastcgi_bind|fastcgi_buffer_size|fastcgi_buffering|fastcgi_buffers|fastcgi_busy_buffers_size|fastcgi_cache|fastcgi_cache_background_update|fastcgi_cache_bypass|fastcgi_cache_key|fastcgi_cache_lock|fastcgi_cache_lock_age|fastcgi_cache_lock_timeout|fastcgi_cache_max_range_offset|fastcgi_cache_methods|fastcgi_cache_min_uses|fastcgi_cache_min_uses|fastcgi_cache_path|fastcgi_cache_purge|fastcgi_cache_revalidate|fastcgi_cache_use_stale|fastcgi_cache_valid|fastcgi_catch_stderr|fastcgi_connect_timeout|fastcgi_force_ranges|fastcgi_hide_header|fastcgi_ignore_client_abort|fastcgi_ignore_headers|fastcgi_index|fastcgi_intercept_errors|fastcgi_keep_conn|fastcgi_limit_rate|fastcgi_max_temp_file_size|fastcgi_next_upstream|fastcgi_next_upstream_timeout|fastcgi_next_upstream_tries|fastcgi_no_cache|fastcgi_param|fastcgi_pass|fastcgi_pass_header|fastcgi_pass_request_body|fastcgi_pass_request_headers|fastcgi_read_timeout|fastcgi_request_buffering|fastcgi_send_lowat|fastcgi_send_timeout|fastcgi_socket_keepalive|fastcgi_split_path_info|fastcgi_store|fastcgi_store_access|fastcgi_temp_file_write_size|fastcgi_temp_path|flv|geoip_country|geoip_city|geoip_org|geoip_proxy|geoip_proxy_recursive|grpc_bind|grpc_buffer_size|grpc_connect_timeout|grpc_hide_header|grpc_ignore_headers|grpc_intercept_errors|grpc_next_upstream|grpc_next_upstream_timeout|grpc_next_upstream_tries|grpc_pass|grpc_pass_header|grpc_read_timeout|grpc_send_timeout|grpc_set_header|grpc_socket_keepalive|grpc_ssl_certificate|grpc_ssl_certificate_key|grpc_ssl_ciphers|grpc_ssl_crl|grpc_ssl_name|grpc_ssl_password_file|grpc_ssl_protocols|grpc_ssl_server_name|grpc_ssl_session_reuse|grpc_ssl_trusted_certificate|grpc_ssl_verify|grpc_ssl_verify_depth|gunzip|gunzip_buffers|gzip|gzip_buffers|gzip_comp_level|gzip_disable|gzip_http_version|gzip_min_length|gzip_proxied|gzip_types|gzip_vary|gzip_static|add_header|add_trailer|expires|hlshls_buffers|hls_forward_args|hls_fragment|hls_mp4_buffer_size|hls_mp4_max_buffer_size|image_filter|image_filter_buffer|image_filter_interlace|image_filter_jpeg_quality|image_filter_sharpen|image_filter_transparency|image_filter_webp_quality|js_content|js_include|js_set|keyval|keyval_zone|limit_conn|limit_conn_log_level|limit_conn_status|limit_conn_zone|limit_zone|limit_req|limit_req_log_level|limit_req_status|limit_req_zone|access_log|log_format|open_log_file_cache|map_hash_bucket_size|map_hash_max_size|memcached_bind|memcached_buffer_size|memcached_connect_timeout|memcached_force_ranges|memcached_gzip_flag|memcached_next_upstream|memcached_next_upstream_timeout|memcached_next_upstream_tries|memcached_pass|memcached_read_timeout|memcached_send_timeout|memcached_socket_keepalive|mirror|mirror_request_body|mp4|mp4_buffer_size|mp4_max_buffer_size|mp4_limit_rate|mp4_limit_rate_after|perl_modules|perl_require|perl_set|proxy_bind|proxy_buffer_size|proxy_buffering|proxy_buffers|proxy_busy_buffers_size|proxy_cache|proxy_cache_background_update|proxy_cache_bypass|proxy_cache_convert_head|proxy_cache_key|proxy_cache_lock|proxy_cache_lock_age|proxy_cache_lock_timeout|proxy_cache_max_range_offset|proxy_cache_methods|proxy_cache_min_uses|proxy_cache_path|proxy_cache_purge|proxy_cache_revalidate|proxy_cache_use_stale|proxy_cache_valid|proxy_connect_timeout|proxy_cookie_domain|proxy_cookie_path|proxy_force_ranges|proxy_headers_hash_bucket_size|proxy_headers_hash_max_size|proxy_hide_header|proxy_http_version|proxy_ignore_client_abort|proxy_ignore_headers|proxy_intercept_errors|proxy_limit_rate|proxy_max_temp_file_size|proxy_method|proxy_next_upstream|proxy_next_upstream_timeout|proxy_next_upstream_tries|proxy_no_cache|proxy_pass|proxy_pass_header|proxy_pass_request_body|proxy_pass_request_headers|proxy_read_timeout|proxy_redirect|proxy_send_lowat|proxy_send_timeout|proxy_set_body|proxy_set_header|proxy_socket_keepalive|proxy_ssl_certificate|proxy_ssl_certificate_key|proxy_ssl_ciphers|proxy_ssl_crl|proxy_ssl_name|proxy_ssl_password_file|proxy_ssl_protocols|proxy_ssl_server_name|proxy_ssl_session_reuse|proxy_ssl_trusted_certificate|proxy_ssl_verify|proxy_ssl_verify_depth|proxy_store|proxy_store_access|proxy_temp_file_write_size|proxy_temp_path|random_index|set_real_ip_from|real_ip_header|real_ip_recursive|referer_hash_bucket_size|referer_hash_max_size|valid_referers|break|return|rewrite_log|set|uninitialized_variable_warn|scgi_bind|scgi_buffer_size|scgi_buffering|scgi_buffers|scgi_busy_buffers_size|scgi_cache|scgi_cache_background_update|scgi_cache_key|scgi_cache_lock|scgi_cache_lock_age|scgi_cache_lock_timeout|scgi_cache_max_range_offset|scgi_cache_methods|scgi_cache_min_uses|scgi_cache_path|scgi_cache_purge|scgi_cache_revalidate|scgi_cache_use_stale|scgi_cache_valid|scgi_connect_timeout|scgi_force_ranges|scgi_hide_header|scgi_ignore_client_abort|scgi_ignore_headers|scgi_intercept_errors|scgi_limit_rate|scgi_max_temp_file_size|scgi_next_upstream|scgi_next_upstream_timeout|scgi_next_upstream_tries|scgi_no_cache|scgi_param|scgi_pass|scgi_pass_header|scgi_pass_request_body|scgi_pass_request_headers|scgi_read_timeout|scgi_request_buffering|scgi_send_timeout|scgi_socket_keepalive|scgi_store|scgi_store_access|scgi_temp_file_write_size|scgi_temp_path|secure_link|secure_link_md5|secure_link_secret|session_log|session_log_format|session_log_zone|slice|spdy_chunk_size|spdy_headers_comp|ssi|ssi_last_modified|ssi_min_file_chunk|ssi_silent_errors|ssi_types|ssi_value_length|ssl|ssl_buffer_size|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_client_certificate|ssl_crl|ssl_dhparam|ssl_early_data|ssl_ecdh_curve|ssl_password_file|ssl_prefer_server_ciphers|ssl_protocols|ssl_session_cache|ssl_session_ticket_key|ssl_session_tickets|ssl_session_timeout|ssl_stapling|ssl_stapling_file|ssl_stapling_responder|ssl_stapling_verify|ssl_trusted_certificate|ssl_verify_client|ssl_verify_depth|status|status_format|status_zone|stub_status|sub_filter|sub_filter_last_modified|sub_filter_once|sub_filter_types|server|zone|state|hash|ip_hash|keepalive|keepalive_requests|keepalive_timeout|ntlm|least_conn|least_time|queue|random|sticky|sticky_cookie_insert|upstream_conf|health_check|userid|userid_domain|userid_expires|userid_mark|userid_name|userid_p3p|userid_path|userid_service|uwsgi_bind|uwsgi_buffer_size|uwsgi_buffering|uwsgi_buffers|uwsgi_busy_buffers_size|uwsgi_cache|uwsgi_cache_background_update|uwsgi_cache_bypass|uwsgi_cache_key|uwsgi_cache_lock|uwsgi_cache_lock_age|uwsgi_cache_lock_timeout|uwsgi_cache_max_range_offset|uwsgi_cache_methods|uwsgi_cache_min_uses|uwsgi_cache_path|uwsgi_cache_purge|uwsgi_cache_revalidate|uwsgi_cache_use_stale|uwsgi_cache_valid|uwsgi_connect_timeout|uwsgi_force_ranges|uwsgi_hide_header|uwsgi_ignore_client_abort|uwsgi_ignore_headers|uwsgi_intercept_errors|uwsgi_limit_rate|uwsgi_max_temp_file_size|uwsgi_modifier1|uwsgi_modifier2|uwsgi_next_upstream|uwsgi_next_upstream_timeout|uwsgi_next_upstream_tries|uwsgi_no_cache|uwsgi_param|uwsgi_pass|uwsgi_pass_header|uwsgi_pass_request_body|uwsgi_pass_request_headers|uwsgi_read_timeout|uwsgi_request_buffering|uwsgi_send_timeout|uwsgi_socket_keepalive|uwsgi_ssl_certificate|uwsgi_ssl_certificate_key|uwsgi_ssl_ciphers|uwsgi_ssl_crl|uwsgi_ssl_name|uwsgi_ssl_password_file|uwsgi_ssl_protocols|uwsgi_ssl_server_name|uwsgi_ssl_session_reuse|uwsgi_ssl_trusted_certificate|uwsgi_ssl_verify|uwsgi_ssl_verify_depth|uwsgi_store|uwsgi_store_access|uwsgi_temp_file_write_size|uwsgi_temp_path|http2_body_preread_size|http2_chunk_size|http2_idle_timeout|http2_max_concurrent_pushes|http2_max_concurrent_streams|http2_max_field_size|http2_max_header_size|http2_max_requests|http2_push|http2_push_preload|http2_recv_buffer_size|http2_recv_timeout|xml_entities|xslt_last_modified|xslt_param|xslt_string_param|xslt_stylesheet|xslt_types|listen|protocol|resolver|resolver_timeout|timeout|auth_http|auth_http_header|auth_http_pass_client_cert|auth_http_timeout|proxy_buffer|proxy_pass_error_message|proxy_timeout|xclient|starttls|imap_auth|imap_capabilities|imap_client_buffer|pop3_auth|pop3_capabilities|smtp_auth|smtp_capabilities|smtp_client_buffer|smtp_greeting_delay|preread_buffer_size|preread_timeout|proxy_protocol_timeout|js_access|js_filter|js_preread|proxy_download_rate|proxy_requests|proxy_responses|proxy_upload_rate|ssl_handshake_timeout|ssl_preread|health_check_timeout|zone_sync|zone_sync_buffers|zone_sync_connect_retry_interval|zone_sync_connect_timeout|zone_sync_interval|zone_sync_recv_buffer_size|zone_sync_server|zone_sync_ssl|zone_sync_ssl_certificate|zone_sync_ssl_certificate_key|zone_sync_ssl_ciphers|zone_sync_ssl_crl|zone_sync_ssl_name|zone_sync_ssl_password_file|zone_sync_ssl_protocols|zone_sync_ssl_server_name|zone_sync_ssl_trusted_certificate|zone_sync_ssl_verify_depth|zone_sync_timeout|google_perftools_profiles|proxy|perl"; + this.$rules = { + "start": [{ + token: ["storage.type", "text", "string.regexp", "paren.lparen"], + regex: "\\b(location)(\\s+)([\\^]?~[\\*]?\\s+.*?)({)" + }, { + token: ["storage.type", "text", "text", "paren.lparen"], + regex: "\\b(location|match|upstream)(\\s+)(.*?)({)" + }, { + token: ["storage.type", "text", "string", "text", "variable", "text", "paren.lparen"], + regex: '\\b(split_clients|map)(\\s+)(\\".*\\")(\\s+)(\\$[\\w_]+)(\\s*)({)' + }, { + token: ["storage.type", "text", "paren.lparen"], + regex: "\\b(http|events|server|mail|stream)(\\s*)({)" + }, { + token: ["storage.type", "text", "variable", "text", "variable", "text", "paren.lparen"], + regex: '\\b(geo|map)(\\s+)(\\$[\\w_]+)?(\\s*)(\\$[\\w_]+)(\\s*)({)' + }, { + token: "paren.rparen", + regex: "(})" + }, { + token: "paren.lparen", + regex: "({)" + }, { + token: ["storage.type", "text", "paren.lparen"], + regex: "\\b(if)(\\s+)(\\()", + push: [{ + token: "paren.rparen", + regex: "\\)|$", + next: "pop" + }, { + include: "lexical" + }] + }, { + token: "keyword", + regex: "\\b(" + keywords + ")\\b", + push: [{ + token: "punctuation", + regex: ";", + next: "pop" + }, { + include: "lexical" + }] + }, { + token: ["keyword", "text", "string.regexp", "text", "punctuation"], + regex: "\\b(rewrite)(\\s)(\\S*)(\\s.*)(;)" + }, { + include: "lexical" + }, { + include: "comments" + }], + comments: [{ + token: "comment", + regex: '#.*$' + }], + lexical: [{ + token: "string", + regex: "'", + push: [{ + token: "string", + regex: "'", + next: "pop" + }, { + include: "variables" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: '"', + push: [{ + token: "string", + regex: '"', + next: "pop" + }, { + include: "variables" + }, { + defaultToken: "string" + }] + }, { + token: "string.regexp", + regex: /[!]?[~][*]?\s+.*(?=\))/ + }, { + token: "string.regexp", + regex: /[\^]\S*(?=;$)/ + }, { + token: "string.regexp", + regex: /[\^]\S*(?=;|\s|$)/ + }, { + token: "keyword.operator", + regex: "\\B(\\+|\\-|\\*|\\=|!=)\\B" + }, { + token: "constant.language", + regex: "\\b(true|false|on|off|all|any|main|always)\\b" + }, { + token: "text", + regex: "\\s+" + }, { + include: "variables" + } + ], + variables: [{ + token: "variable", + regex: "\\$[\\w_]+" + }, { + token: "variable.language", + regex: "\\b(GET|POST|HEAD)\\b" + }] + }; + this.normalizeRules(); +}; +oop.inherits(NginxHighlightRules, TextHighlightRules); +exports.NginxHighlightRules = NginxHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/nginx",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nginx_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var NginxHighlightRules = require("./nginx_highlight_rules").NginxHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = NginxHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$id = "ace/mode/nginx"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/nginx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-nim.js b/vendor/assets/javascripts/ace/mode-nim.js new file mode 100644 index 00000000..2b8bb78d --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-nim.js @@ -0,0 +1,325 @@ +define("ace/mode/nim_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var NimHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "variable": "var|let|const", + "keyword": "assert|parallel|spawn|export|include|from|template|mixin|bind|import|concept|raise|defer|try|finally|except|converter|proc|func|macro|method|and|or|not|xor|shl|shr|div|mod|in|notin|is|isnot|of|static|if|elif|else|case|of|discard|when|return|yield|block|break|while|echo|continue|asm|using|cast|addr|unsafeAddr|type|ref|ptr|do|declared|defined|definedInScope|compiles|sizeOf|is|shallowCopy|getAst|astToStr|spawn|procCall|for|iterator|as", + "storage.type": "newSeq|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|float|char|bool|string|set|pointer|float32|float64|enum|object|cstring|array|seq|openArray|varargs|UncheckedArray|tuple|set|distinct|void|auto|openarray|range", + "support.function": "lock|ze|toU8|toU16|toU32|ord|low|len|high|add|pop|contains|card|incl|excl|dealloc|inc", + "constant.language": "nil|true|false" + }, "identifier"); + var hexNumber = "(?:0[xX][\\dA-Fa-f][\\dA-Fa-f_]*)"; + var decNumber = "(?:[0-9][\\d_]*)"; + var octNumber = "(?:0o[0-7][0-7_]*)"; + var binNumber = "(?:0[bB][01][01_]*)"; + var intNumber = "(?:" + hexNumber + "|" + decNumber + "|" + octNumber + "|" + binNumber + ")(?:'?[iIuU](?:8|16|32|64)|u)?\\b"; + var exponent = "(?:[eE][+-]?[\\d][\\d_]*)"; + var floatNumber = "(?:[\\d][\\d_]*(?:[.][\\d](?:[\\d_]*)" + exponent + "?)|" + exponent + ")"; + var floatNumberExt = "(?:" + hexNumber + "(?:'(?:(?:[fF](?:32|64)?)|[dD])))|(?:" + floatNumber + "|" + decNumber + "|" + octNumber + "|" + binNumber + ")(?:'(?:(?:[fF](?:32|64)?)|[dD]))"; + var stringEscape = "\\\\([abeprcnlftv\\\"']|x[0-9A-Fa-f]{2}|[0-2][0-9]{2}|u[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; + var identifier = '[a-zA-Z][a-zA-Z0-9_]*'; + this.$rules = { + "start": [{ + token: ["identifier", "keyword.operator", "support.function"], + regex: "(" + identifier + ")([.]{1})(" + identifier + ")(?=\\()" + }, { + token: "paren.lparen", + regex: "(\\{\\.)", + next: [{ + token: "paren.rparen", + regex: '(\\.\\}|\\})', + next: "start" + }, { + include: "methods" + }, { + token: "identifier", + regex: identifier + }, { + token: "punctuation", + regex: /[,]/ + }, { + token: "keyword.operator", + regex: /[=:.]/ + }, { + token: "paren.lparen", + regex: /[[(]/ + }, { + token: "paren.rparen", + regex: /[\])]/ + }, { + include: "math" + }, { + include: "strings" + }, { + defaultToken: "text" + }] + }, { + token: "comment.doc.start", + regex: /##\[(?!])/, + push: "docBlockComment" + }, { + token: "comment.start", + regex: /#\[(?!])/, + push: "blockComment" + }, { + token: "comment.doc", + regex: '##.*$' + }, { + token: "comment", + regex: '#.*$' + }, { + include: "strings" + }, { + token: "string", + regex: "'(?:\\\\(?:[abercnlftv]|x[0-9A-Fa-f]{2}|[0-2][0-9]{2}|u[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})|.{1})?'" + }, { + include: "methods" + }, { + token: keywordMapper, + regex: "[a-zA-Z][a-zA-Z0-9_]*\\b" + }, { + token: ["keyword.operator", "text", "storage.type"], + regex: "([:])(\\s+)(" + identifier + ")(?=$|\\)|\\[|,|\\s+=|;|\\s+\\{)" + }, { + token: "paren.lparen", + regex: /\[\.|{\||\(\.|\[:|[[({`]/ + }, { + token: "paren.rparen", + regex: /\.\)|\|}|\.]|[\])}]/ + }, { + token: "keyword.operator", + regex: /[=+\-*\/<>@$~&%|!?^.:\\]/ + }, { + token: "punctuation", + regex: /[,;]/ + }, { + include: "math" + }], + blockComment: [{ + regex: /#\[]/, + token: "comment" + }, { + regex: /#\[(?!])/, + token: "comment.start", + push: "blockComment" + }, { + regex: /]#/, + token: "comment.end", + next: "pop" + }, { + defaultToken: "comment" + }], + docBlockComment: [{ + regex: /##\[]/, + token: "comment.doc" + }, { + regex: /##\[(?!])/, + token: "comment.doc.start", + push: "docBlockComment" + }, { + regex: /]##/, + token: "comment.doc.end", + next: "pop" + }, { + defaultToken: "comment.doc" + }], + math: [{ + token: "constant.float", + regex: floatNumberExt + }, { + token: "constant.float", + regex: floatNumber + }, { + token: "constant.integer", + regex: intNumber + }], + methods: [{ + token: "support.function", + regex: "(\\w+)(?=\\()" + }], + strings: [{ + token: "string", + regex: '(\\b' + identifier + ')?"""', + push: [{ + token: "string", + regex: '"""', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: "\\b" + identifier + '"(?=.)', + push: [{ + token: "string", + regex: '"|$', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: '"', + push: [{ + token: "string", + regex: '"|$', + next: "pop" + }, { + token: "constant.language.escape", + regex: stringEscape + }, { + defaultToken: "string" + }] + }] + }; + this.normalizeRules(); +}; +oop.inherits(NimHighlightRules, TextHighlightRules); +exports.NimHighlightRules = NimHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/nim",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nim_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var NimHighlightRules = require("./nim_highlight_rules").NimHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = NimHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.blockComment = { start: "#[", end: "]#", nestable: true }; + this.$id = "ace/mode/nim"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/nim"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-nix.js b/vendor/assets/javascripts/ace/mode-nix.js index 76a759c4..1b6a9a54 100644 --- a/vendor/assets/javascripts/ace/mode-nix.js +++ b/vendor/assets/javascripts/ace/mode-nix.js @@ -1,370 +1,300 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + +var cFunctions = exports.cFunctions = "hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen"; +var c_cppHighlightRules = function (extraKeywords) { + var keywordControls = ("break|case|continue|default|do|else|for|goto|if|_Pragma|" + + "return|switch|while|catch|operator|try|throw|using"); + var storageType = ("asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + + "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + + "class|wchar_t|template|char16_t|char32_t"); + var storageModifiers = ("const|extern|register|restrict|static|volatile|inline|private|" + "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, + "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local"); + var keywordOperators = ("and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + + "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace"); + var builtinConstants = ("NULL|true|false|TRUE|FALSE|nullptr"); + var keywordMapper = this.$keywords = this.createKeywordMapper(Object.assign({ + "keyword.control": keywordControls, + "storage.type": storageType, + "storage.modifier": storageModifiers, + "keyword.operator": keywordOperators, "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - + "constant.language": builtinConstants, + "support.function.C99.c": cFunctions + }, extraKeywords), "identifier"); var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ + + /(\d+\$)?/.source // field (argument #) + + /[#0\- +']*/.source // flags + + /[,;:_]?/.source // separator character (AltiVec) + + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type + this.$rules = { + "start": [ { - token : "comment", - regex : "//$", - next : "start" + token: "comment", + regex: "//$", + next: "start" }, { - token : "comment", - regex : "//", - next : "singleLineComment" + token: "comment", + regex: "//", + next: "singleLineComment" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" + token: "string", // character + regex: "'(?:" + escapeRe + "|.)?'" }, { - token : "string.start", - regex : '"', + token: "string.start", + regex: '"', stateName: "qqstring", next: [ { token: "string", regex: /\\\s*$/, next: "qqstring" }, { token: "constant.language.escape", regex: escapeRe }, { token: "constant.language.escape", regex: formatRe }, { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "string.start", - regex : 'R"\\(', + token: "string.start", + regex: 'R"\\(', stateName: "rawString", next: [ { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" + token: "keyword", // pre-compiler directives + regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b", + next: "directive" }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" + token: "keyword", // special case pre-compiler directive + regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" }, { - token : "support.function.C99.c", - regex : cFunctions + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" + token: "keyword.operator", + regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { defaultToken: "comment" } ], - "directive" : [ + "singleLineComment": [ { - token : "constant.other.multiline", - regex : /\\/ + token: "comment", + regex: /\\$/, + next: "singleLineComment" + }, { + token: "comment", + regex: /$/, + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ }, { - token : "constant.other.multiline", - regex : /.*\\/ + token: "constant.other.multiline", + regex: /.*\\/ }, { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" + token: "constant.other", + regex: "\\s*<.+?>", + next: "start" }, { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" + token: "constant.other", // single line + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next: "start" }, { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" + token: "constant.other", // single line + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; - oop.inherits(c_cppHighlightRules, TextHighlightRules); - exports.c_cppHighlightRules = c_cppHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -377,94 +307,82 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = c_cppHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start") { return ""; } @@ -476,164 +394,162 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/c_cpp"; + this.snippetFileId = "ace/snippets/c_cpp"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/nix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var NixHighlightRules = function() { - - var constantLanguage = "true|false"; - var keywordControl = "with|import|if|else|then|inherit"; - var keywordDeclaration = "let|in|rec"; - - var keywordMapper = this.createKeywordMapper({ - "constant.language.nix": constantLanguage, - "keyword.control.nix": keywordControl, - "keyword.declaration.nix": keywordDeclaration - }, "identifier"); - - this.$rules = { - "start": [{ - token: "comment", - regex: /#.*$/ - }, { - token: "comment", - regex: /\/\*/, - next: "comment" - }, { - token: "constant", - regex: "<[^>]+>" - }, { - regex: "(==|!=|<=?|>=?)", - token: ["keyword.operator.comparison.nix"] - }, { - regex: "((?:[+*/%-]|\\~)=)", - token: ["keyword.operator.assignment.arithmetic.nix"] - }, { - regex: "=", - token: "keyword.operator.assignment.nix" - }, { - token: "string", - regex: "''", - next: "qqdoc" - }, { - token: "string", - regex: "'", - next: "qstring" - }, { - token: "string", - regex: '"', - push: "qqstring" - }, { - token: "constant.numeric", // hex - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - regex: "}", - token: function(val, start, stack) { - return stack[1] && stack[1].charAt(0) == "q" ? "constant.language.escape" : "text"; - }, - next: "pop" - }], - "comment": [{ +define("ace/mode/nix_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var NixHighlightRules = function () { + var constantLanguage = "true|false"; + var keywordControl = "with|import|if|else|then|inherit"; + var keywordDeclaration = "let|in|rec"; + var keywordMapper = this.createKeywordMapper({ + "constant.language.nix": constantLanguage, + "keyword.control.nix": keywordControl, + "keyword.declaration.nix": keywordDeclaration + }, "identifier"); + this.$rules = { + "start": [{ + token: "comment", + regex: /#.*$/ + }, { + token: "comment", + regex: /\/\*/, + next: "comment" + }, { + token: "constant", + regex: "<[^>]+>" + }, { + regex: "(==|!=|<=?|>=?)", + token: ["keyword.operator.comparison.nix"] + }, { + regex: "((?:[+*/%-]|\\~)=)", + token: ["keyword.operator.assignment.arithmetic.nix"] + }, { + regex: "=", + token: "keyword.operator.assignment.nix" + }, { + token: "string", + regex: "''", + next: "qqdoc" + }, { + token: "string", + regex: "'", + next: "qstring" + }, { + token: "string", + regex: '"', + push: "qqstring" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + regex: "}", + token: function (val, start, stack) { + return stack[1] && stack[1].charAt(0) == "q" ? "constant.language.escape" : "text"; + }, + next: "pop" + }], + "comment": [{ token: "comment", // closing comment regex: "\\*\\/", next: "start" }, { defaultToken: "comment" }], - "qqdoc": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: "''", - next: "pop" - }, { - defaultToken: "string" - }], - "qqstring": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: '"', - next: "pop" - }, { - defaultToken: "string" - }], - "qstring": [ - { - token: "constant.language.escape", - regex: /\$\{/, - push: "start" - }, { - token: "string", - regex: "'", - next: "pop" - }, { - defaultToken: "string" - }] - }; - - this.normalizeRules(); + "qqdoc": [ + { + token: "constant.language.escape", + regex: /\$\{/, + push: "start" + }, { + token: "string", + regex: "''", + next: "pop" + }, { + defaultToken: "string" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: /\$\{/, + push: "start" + }, { + token: "string", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: /\$\{/, + push: "start" + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + } + ] }; + this.normalizeRules(); +}; +oop.inherits(NixHighlightRules, TextHighlightRules); +exports.NixHighlightRules = NixHighlightRules; - oop.inherits(NixHighlightRules, TextHighlightRules); - - exports.NixHighlightRules = NixHighlightRules; }); -define("ace/mode/nix",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/nix_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/nix",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/nix_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var CMode = require("./c_cpp").Mode; var NixHighlightRules = require("./nix_highlight_rules").NixHighlightRules; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { CMode.call(this); this.HighlightRules = NixHighlightRules; this.foldingRules = new CStyleFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, CMode); - -(function() { +(function () { this.lineCommentStart = "#"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/nix"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/nix"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-nsis.js b/vendor/assets/javascripts/ace/mode-nsis.js index 14c54cd5..1c33c69b 100644 --- a/vendor/assets/javascripts/ace/mode-nsis.js +++ b/vendor/assets/javascripts/ace/mode-nsis.js @@ -1,228 +1,196 @@ -define("ace/mode/nsis_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/nsis_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var NSISHighlightRules = function() { - +var NSISHighlightRules = function () { this.$rules = { start: [{ - token: "keyword.compiler.nsis", - regex: /^\s*!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/, - caseInsensitive: true - }, { - token: "keyword.command.nsis", - regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/, - caseInsensitive: true - }, { - token: "keyword.control.nsis", - regex: /^\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/, - caseInsensitive: true - }, { - token: "keyword.plugin.nsis", - regex: /^\s*\w+::\w+/, - caseInsensitive: true - }, { - token: "keyword.operator.comparison.nsis", - regex: /[!<>]?=|<>|<|>/ - }, { - token: "support.function.nsis", - regex: /(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|PageEx|PageExEnd)\b/, - caseInsensitive: true - }, { - token: "support.library.nsis", - regex: /\${[\w\.:-]+}/ - }, { - token: "constant.nsis", - regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, - caseInsensitive: true - }, { - token: "constant.library.nsis", - regex: /\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/ - }, { - token: "constant.language.boolean.true.nsis", - regex: /\b(?:true|on)\b/ - }, { - token: "constant.language.boolean.false.nsis", - regex: /\b(?:false|off)\b/ - }, { - token: "constant.language.option.nsis", - regex: /(?:\b|^\s*)(?:(?:un\.)?components|(?:un\.)?custom|(?:un\.)?directory|(?:un\.)?instfiles|(?:un\.)?license|uninstConfirm|admin|all|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|zlib)\b/, - caseInsensitive: true - }, { - token: "constant.language.slash-option.nsis", - regex: /\b\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/, - caseInsensitive: true - }, { - token: "constant.numeric.nsis", - regex: /\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/ - }, { - token: "entity.name.function.nsis", - regex: /\$\([\w\.:-]+\)/ - }, { - token: "storage.type.function.nsis", - regex: /\$\w+/ - }, { - token: "punctuation.definition.string.begin.nsis", - regex: /`/, - push: [{ - token: "punctuation.definition.string.end.nsis", + token: "keyword.compiler.nsis", + regex: /^\s*!(?:include|addincludedir|addplugindir|appendfile|assert|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|gettlbversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace|uninstfinalize)\b/, + caseInsensitive: true + }, { + token: "keyword.command.nsis", + regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetKnownFolderPath|GetLabelAddress|GetTempFileName|GetWinVer|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfRtlLanguage|IfShellVarContextAll|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|Int64Cmp|Int64CmpU|Int64Fmt|IntCmp|IntCmpU|IntFmt|IntOp|IntPtrCmp|IntPtrCmpU|IntPtrOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadAndSetImage|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestLongPathAware|ManifestMaxVersionTested|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|PEAddResource|PEDllCharacteristics|PERemoveResource|PESubsysVer|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/, + caseInsensitive: true + }, { + token: "keyword.control.nsis", + regex: /^\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/, + caseInsensitive: true + }, { + token: "keyword.plugin.nsis", + regex: /^\s*\w+::\w+/, + caseInsensitive: true + }, { + token: "keyword.operator.comparison.nsis", + regex: /[!<>]?=|<>|<|>/ + }, { + token: "support.function.nsis", + regex: /(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|PageEx|PageExEnd)\b/, + caseInsensitive: true + }, { + token: "support.library.nsis", + regex: /\${[\w\.:-]+}/ + }, { + token: "constant.nsis", + regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, + caseInsensitive: true + }, { + token: "constant.library.nsis", + regex: /\${(?:AtLeastServicePack|AtLeastWin7|AtLeastWin8|AtLeastWin10|AtLeastWin95|AtLeastWin98|AtLeastWin2000|AtLeastWin2003|AtLeastWin2008|AtLeastWin2008R2|AtLeastWinME|AtLeastWinNT4|AtLeastWinVista|AtLeastWinXP|AtMostServicePack|AtMostWin7|AtMostWin8|AtMostWin10|AtMostWin95|AtMostWin98|AtMostWin2000|AtMostWin2003|AtMostWin2008|AtMostWin2008R2|AtMostWinME|AtMostWinNT4|AtMostWinVista|AtMostWinXP|IsDomainController|IsNT|IsServer|IsServicePack|IsWin7|IsWin8|IsWin10|IsWin95|IsWin98|IsWin2000|IsWin2003|IsWin2008|IsWin2008R2|IsWinME|IsWinNT4|IsWinVista|IsWinXP)}/ + }, { + token: "constant.language.boolean.true.nsis", + regex: /\b(?:true|on)\b/ + }, { + token: "constant.language.boolean.false.nsis", + regex: /\b(?:false|off)\b/ + }, { + token: "constant.language.option.nsis", + regex: /(?:\b|^\s*)(?:(?:un\.)?components|(?:un\.)?custom|(?:un\.)?directory|(?:un\.)?instfiles|(?:un\.)?license|uninstConfirm|admin|all|amd64-unicode|auto|both|bottom|bzip2|current|force|hide|highest|ifdiff|ifnewer|lastused|leave|left|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|user|Win10|Win7|Win8|WinVista|x86-(ansi|unicode)|zlib)\b/, + caseInsensitive: true + }, { + token: "constant.language.slash-option.nsis", + regex: /\b\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/, + caseInsensitive: true + }, { + token: "constant.numeric.nsis", + regex: /\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/ + }, { + token: "entity.name.function.nsis", + regex: /\$\([\w\.:-]+\)/ + }, { + token: "storage.type.function.nsis", + regex: /\$\w+/ + }, { + token: "punctuation.definition.string.begin.nsis", regex: /`/, - next: "pop" + push: [{ + token: "punctuation.definition.string.end.nsis", + regex: /`/, + next: "pop" + }, { + token: "constant.character.escape.nsis", + regex: /\$\\./ + }, { + defaultToken: "string.quoted.back.nsis" + }] }, { - token: "constant.character.escape.nsis", - regex: /\$\\./ - }, { - defaultToken: "string.quoted.back.nsis" - }] - }, { - token: "punctuation.definition.string.begin.nsis", - regex: /"/, - push: [{ - token: "punctuation.definition.string.end.nsis", + token: "punctuation.definition.string.begin.nsis", regex: /"/, - next: "pop" + push: [{ + token: "punctuation.definition.string.end.nsis", + regex: /"/, + next: "pop" + }, { + token: "constant.character.escape.nsis", + regex: /\$\\./ + }, { + defaultToken: "string.quoted.double.nsis" + }] }, { - token: "constant.character.escape.nsis", - regex: /\$\\./ - }, { - defaultToken: "string.quoted.double.nsis" - }] - }, { - token: "punctuation.definition.string.begin.nsis", - regex: /'/, - push: [{ - token: "punctuation.definition.string.end.nsis", + token: "punctuation.definition.string.begin.nsis", regex: /'/, - next: "pop" + push: [{ + token: "punctuation.definition.string.end.nsis", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.nsis", + regex: /\$\\./ + }, { + defaultToken: "string.quoted.single.nsis" + }] }, { - token: "constant.character.escape.nsis", - regex: /\$\\./ + token: [ + "punctuation.definition.comment.nsis", + "comment.line.nsis" + ], + regex: /(;|#)(.*$)/ }, { - defaultToken: "string.quoted.single.nsis" - }] - }, { - token: [ - "punctuation.definition.comment.nsis", - "comment.line.nsis" - ], - regex: /(;|#)(.*$)/ - }, { - token: "punctuation.definition.comment.nsis", - regex: /\/\*/, - push: [{ token: "punctuation.definition.comment.nsis", - regex: /\*\//, - next: "pop" + regex: /\/\*/, + push: [{ + token: "punctuation.definition.comment.nsis", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.nsis" + }] }, { - defaultToken: "comment.block.nsis" + token: "text", + regex: /(?:!include|!insertmacro)\b/ }] - }, { - token: "text", - regex: /(?:!include|!insertmacro)\b/ - }] }; - this.normalizeRules(); }; - NSISHighlightRules.metaData = { comment: "\n\ttodo: - highlight functions\n\t", fileTypes: ["nsi", "nsh"], name: "NSIS", scopeName: "source.nsis" }; - - oop.inherits(NSISHighlightRules, TextHighlightRules); - exports.NSISHighlightRules = NSISHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -235,71 +203,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/nsis",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nsis_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/nsis",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/nsis_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var NSISHighlightRules = require("./nsis_highlight_rules").NSISHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = NSISHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = [";", "#"]; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/nsis"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/nsis"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-nunjucks.js b/vendor/assets/javascripts/ace/mode-nunjucks.js new file mode 100644 index 00000000..2fb25a55 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-nunjucks.js @@ -0,0 +1,2458 @@ +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", // multi line comment + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/nunjucks_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var NunjucksHighlightRules = function () { + HtmlHighlightRules.call(this); + this.$rules["start"].unshift({ + token: "punctuation.begin", + regex: /{{-?/, + push: [{ + token: "punctuation.end", + regex: /-?}}/, + next: "pop" + }, + { include: "expression" } + ] + }, { + token: "punctuation.begin", + regex: /{%-?/, + push: [{ + token: "punctuation.end", + regex: /-?%}/, + next: "pop" + }, { + token: "constant.language.escape", + regex: /\b(r\/.*\/[gimy]?)\b/ + }, + { include: "statement" } + ] + }, { + token: "comment.begin", + regex: /{#/, + push: [{ + token: "comment.end", + regex: /#}/, + next: "pop" + }, + { defaultToken: "comment" } + ] + }); + this.addRules({ + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { + token: "punctuation.begin", + regex: /{{-?/, + push: [{ + token: "punctuation.end", + regex: /-?}}/, + next: "pop" + }, + { include: "expression" } + ] + }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { + token: "punctuation.begin", + regex: /{{-?/, + push: [{ + token: "punctuation.end", + regex: /-?}}/, + next: "pop" + }, + { include: "expression" } + ] + }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }], + "statement": [{ + token: "keyword.control", + regex: /\b(block|endblock|extends|endif|elif|for|endfor|asyncEach|endeach|include|asyncAll|endall|macro|endmacro|set|endset|ignore missing|as|from|raw|verbatim|filter|endfilter)\b/ + }, + { include: "expression" } + ], + "expression": [{ + token: "constant.language", + regex: /\b(true|false|none)\b/ + }, { + token: "string", + regex: /"/, + push: [{ + token: "string", + regex: /"/, + next: "pop" + }, + { include: "escapeStrings" }, + { defaultToken: "string" } + ] + }, { + token: "string", + regex: /'/, + push: [{ + token: "string", + regex: /'/, + next: "pop" + }, + { include: "escapeStrings" }, + { defaultToken: "string" } + ] + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "keyword.operator", + regex: /\+|-|\/\/|\/|%|\*\*|\*|===|==|!==|!=|>=|>|<=|>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { defaultToken: "comment" } ], - "directive" : [ + "singleLineComment": [ { - token : "constant.other.multiline", - regex : /\\/ + token: "comment", + regex: /\\$/, + next: "singleLineComment" + }, { + token: "comment", + regex: /$/, + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ }, { - token : "constant.other.multiline", - regex : /.*\\/ + token: "constant.other.multiline", + regex: /.*\\/ }, { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" + token: "constant.other", + regex: "\\s*<.+?>", + next: "start" }, { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" + token: "constant.other", // single line + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next: "start" }, { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" + token: "constant.other", // single line + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; - oop.inherits(c_cppHighlightRules, TextHighlightRules); - exports.c_cppHighlightRules = c_cppHighlightRules; + }); -define("ace/mode/objectivec_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/c_cpp_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/objectivec_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/c_cpp_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var C_Highlight_File = require("./c_cpp_highlight_rules"); -var CHighlightRules = C_Highlight_File.c_cppHighlightRules; - -var ObjectiveCHighlightRules = function() { - - var escapedConstRe = "\\\\(?:[abefnrtv'\"?\\\\]|" + - "[0-3]\\d{1,2}|" + - "[4-7]\\d?|" + - "222|" + - "x[a-zA-Z0-9]+)"; - +var CHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; +var ObjectiveCHighlightRules = function () { + var NSKeywords = { + "support.function.cocoa.leopard": "NSRectToCGRect|NSRectFromCGRect|NSMakeCollectable|NSStringFromProtocol|NSSizeToCGSize|NSSizeFromCGSize|NSDrawNinePartImage|NSDrawThreePartImage|NSPointToCGPoint|NSPointFromCGPoint|NSProtocolFromString|NSEventMaskFromType|NSValue", + "support.function.cocoa": "NSRoundDownToMultipleOfPageSize|NSRoundUpToMultipleOfPageSize|NSRunCriticalAlertPanel|NSRunCriticalAlertPanelRelativeToWindow|NSRunInformationalAlertPanel|NSRunInformationalAlertPanelRelativeToWindow|NSRunAlertPanel|NSRunAlertPanelRelativeToWindow|NSResetMapTable|NSResetHashTable|NSRecycleZone|NSRectClip|NSRectClipList|NSRectFill|NSRectFillUsingOperation|NSRectFillList|NSRectFillListUsingOperation|NSRectFillListWithGrays|NSRectFillListWithColors|NSRectFillListWithColorsUsingOperation|NSRectFromString|NSRecordAllocationEvent|NSReturnAddress|NSReleaseAlertPanel|NSReadPixel|NSRealMemoryAvailable|NSReallocateCollectable|NSRegisterServicesProvider|NSRangeFromString|NSGetSizeAndAlignment|NSGetCriticalAlertPanel|NSGetInformationalAlertPanel|NSGetUncaughtExceptionHandler|NSGetFileType|NSGetFileTypes|NSGetWindowServerMemory|NSGetAlertPanel|NSMinX|NSMinY|NSMidX|NSMidY|NSMouseInRect|NSMapRemove|NSMapGet|NSMapMember|NSMapInsert|NSMapInsertIfAbsent|NSMapInsertKnownAbsent|NSMakeRect|NSMakeRange|NSMakeSize|NSMakePoint|NSMaxRange|NSMaxX|NSMaxY|NSBitsPerSampleFromDepth|NSBitsPerPixelFromDepth|NSBestDepth|NSBeep|NSBeginCriticalAlertSheet|NSBeginInformationalAlertSheet|NSBeginAlertSheet|NSShouldRetainWithZone|NSShowsServicesMenuItem|NSShowAnimationEffect|NSStringFromRect|NSStringFromRange|NSStringFromMapTable|NSStringFromSize|NSStringFromSelector|NSStringFromHashTable|NSStringFromClass|NSStringFromPoint|NSSizeFromString|NSSetShowsServicesMenuItem|NSSetZoneName|NSSetUncaughtExceptionHandler|NSSetFocusRingStyle|NSSelectorFromString|NSSearchPathForDirectoriesInDomains|NSSwapBigShortToHost|NSSwapBigIntToHost|NSSwapBigDoubleToHost|NSSwapBigFloatToHost|NSSwapBigLongToHost|NSSwapBigLongLongToHost|NSSwapShort|NSSwapHostShortToBig|NSSwapHostShortToLittle|NSSwapHostIntToBig|NSSwapHostIntToLittle|NSSwapHostDoubleToBig|NSSwapHostDoubleToLittle|NSSwapHostFloatToBig|NSSwapHostFloatToLittle|NSSwapHostLongToBig|NSSwapHostLongToLittle|NSSwapHostLongLongToBig|NSSwapHostLongLongToLittle|NSSwapInt|NSSwapDouble|NSSwapFloat|NSSwapLittleShortToHost|NSSwapLittleIntToHost|NSSwapLittleDoubleToHost|NSSwapLittleFloatToHost|NSSwapLittleLongToHost|NSSwapLittleLongLongToHost|NSSwapLong|NSSwapLongLong|NSHighlightRect|NSHostByteOrder|NSHomeDirectory|NSHomeDirectoryForUser|NSHeight|NSHashRemove|NSHashGet|NSHashInsert|NSHashInsertIfAbsent|NSHashInsertKnownAbsent|NSHFSTypeCodeFromFileType|NSHFSTypeOfFile|NSNumberOfColorComponents|NSNextMapEnumeratorPair|NSNextHashEnumeratorItem|NSContainsRect|NSConvertGlyphsToPackedGlyphs|NSConvertSwappedDoubleToHost|NSConvertSwappedFloatToHost|NSConvertHostDoubleToSwapped|NSConvertHostFloatToSwapped|NSCountMapTable|NSCountHashTable|NSCountFrames|NSCountWindows|NSCountWindowsForContext|NSCopyMemoryPages|NSCopyMapTableWithZone|NSCopyBits|NSCopyHashTableWithZone|NSCopyObject|NSColorSpaceFromDepth|NSCompareMapTables|NSCompareHashTables|NSClassFromString|NSCreateMapTable|NSCreateMapTableWithZone|NSCreateHashTable|NSCreateHashTableWithZone|NSCreateZone|NSCreateFilenamePboardType|NSCreateFileContentsPboardType|NSTemporaryDirectory|NSIsControllerMarker|NSIsEmptyRect|NSIsFreedObject|NSInsetRect|NSIncrementExtraRefCount|NSIntersectsRect|NSIntersectionRect|NSIntersectionRange|NSInterfaceStyleForKey|NSIntegralRect|NSZoneRealloc|NSZoneMalloc|NSZoneName|NSZoneCalloc|NSZoneFromPointer|NSZoneFree|NSOpenStepRootDirectory|NSOffsetRect|NSDisableScreenUpdates|NSDivideRect|NSDottedFrameRect|NSDecimalRound|NSDecimalMultiply|NSDecimalString|NSDecimalSubtract|NSDecimalNormalize|NSDecimalCopy|NSDecimalCompact|NSDecimalCompare|NSDecimalIsNotANumber|NSDecimalDivide|NSDecimalPower|NSDecimalAdd|NSDecrementExtraRefCountWasZero|NSDefaultMallocZone|NSDeallocateMemoryPages|NSDeallocateObject|NSDrawGroove|NSDrawGrayBezel|NSDrawBitmap|NSDrawButton|NSDrawColorTiledRects|NSDrawTiledRects|NSDrawDarkBezel|NSDrawWhiteBezel|NSDrawWindowBackground|NSDrawLightBezel|NSUserName|NSUnionRect|NSUnionRange|NSUnregisterServicesProvider|NSUpdateDynamicServices|NSJavaBundleSetup|NSJavaBundleCleanup|NSJavaSetup|NSJavaSetupVirtualMachine|NSJavaNeedsToLoadClasses|NSJavaNeedsVirtualMachine|NSJavaClassesForBundle|NSJavaClassesFromPath|NSJavaObjectNamedInPath|NSJavaProvidesClasses|NSPointInRect|NSPointFromString|NSPerformService|NSPlanarFromDepth|NSPageSize|NSEndMapTableEnumeration|NSEndHashTableEnumeration|NSEnumerateMapTable|NSEnumerateHashTable|NSEnableScreenUpdates|NSEqualRects|NSEqualRanges|NSEqualSizes|NSEqualPoints|NSEraseRect|NSExtraRefCount|NSFileTypeForHFSTypeCode|NSFullUserName|NSFreeMapTable|NSFreeHashTable|NSFrameRect|NSFrameRectWithWidth|NSFrameRectWithWidthUsingOperation|NSFrameAddress|NSWindowList|NSWindowListForContext|NSWidth|NSLocationInRange|NSLog|NSLogv|NSLogPageSize|NSAccessibilityRoleDescription|NSAccessibilityRoleDescriptionForUIElement|NSAccessibilityRaiseBadArgumentException|NSAccessibilityUnignoredChildren|NSAccessibilityUnignoredChildrenForOnlyChild|NSAccessibilityUnignoredDescendant|NSAccessibilityUnignoredAncestor|NSAccessibilityPostNotification|NSAccessibilityActionDescription|NSApplicationMain|NSApplicationLoad|NSAvailableWindowDepths|NSAllMapTableValues|NSAllMapTableKeys|NSAllHashTableObjects|NSAllocateMemoryPages|NSAllocateCollectable|NSAllocateObject", + "support.class.cocoa.leopard": "NSRuleEditor|NSGarbageCollector|NSGradient|NSMapTable|NSHashTable|NSCondition|NSCollectionView|NSCollectionViewItem|NSToolbarItemGroup|NSTextInputClient|NSTreeNode|NSTrackingArea|NSInvocationOperation|NSOperation|NSOperationQueue|NSDictionaryController|NSDockTile|NSPointerFunctions|NSPointerArray|NSPathControl|NSPathControlDelegate|NSPathComponentCell|NSPathCell|NSPathCellDelegate|NSPrintPanelAccessorizing|NSPredicateEditor|NSPredicateEditorRowTemplate|NSViewController|NSFastEnumeration|NSAnimationContext|NSAnimatablePropertyContainer", + "support.class.cocoa": "NSRunLoop|NSRulerMarker|NSRulerView|NSResponder|NSRecursiveLock|NSRelativeSpecifier|NSRandomSpecifier|NSRangeSpecifier|NSGetCommand|NSGlyphGenerator|NSGlyphStorage|NSGlyphInfo|NSGraphicsContext|NSXMLNode|NSXMLDocument|NSXMLDTD|NSXMLDTDNode|NSXMLParser|NSXMLElement|NSMiddleSpecifier|NSMovie|NSMovieView|NSMoveCommand|NSMutableString|NSMutableSet|NSMutableCharacterSet|NSMutableCopying|NSMutableIndexSet|NSMutableDictionary|NSMutableData|NSMutableURLRequest|NSMutableParagraphStyle|NSMutableAttributedString|NSMutableArray|NSMessagePort|NSMessagePortNameServer|NSMenu|NSMenuItem|NSMenuItemCell|NSMenuView|NSMethodSignature|NSMetadataItem|NSMetadataQuery|NSMetadataQueryResultGroup|NSMetadataQueryAttributeValueTuple|NSMachBootstrapServer|NSMachPort|NSMatrix|NSBitmapImageRep|NSBox|NSBundle|NSButton|NSButtonCell|NSBezierPath|NSBrowser|NSBrowserCell|NSShadow|NSScanner|NSScriptSuiteRegistry|NSScriptCoercionHandler|NSScriptCommand|NSScriptCommandDescription|NSScriptClassDescription|NSScriptObjectSpecifier|NSScriptExecutionContext|NSScriptWhoseTest|NSScroller|NSScrollView|NSScreen|NSStepper|NSStepperCell|NSStatusBar|NSStatusItem|NSString|NSStream|NSSimpleHorizontalTypesetter|NSSimpleCString|NSSocketPort|NSSocketPortNameServer|NSSound|NSSortDescriptor|NSSpecifierTest|NSSpeechRecognizer|NSSpeechSynthesizer|NSSpellServer|NSSpellChecker|NSSplitView|NSSecureTextField|NSSecureTextFieldCell|NSSet|NSSetCommand|NSSearchField|NSSearchFieldCell|NSSerializer|NSSegmentedControl|NSSegmentedCell|NSSlider|NSSliderCell|NSSavePanel|NSHost|NSHTTPCookie|NSHTTPCookieStorage|NSHTTPURLResponse|NSHelpManager|NSNib|NSNibConnector|NSNibControlConnector|NSNibOutletConnector|NSNotification|NSNotificationCenter|NSNotificationQueue|NSNull|NSNumber|NSNumberFormatter|NSNetService|NSNetServiceBrowser|NSNameSpecifier|NSChangeSpelling|NSCharacterSet|NSConstantString|NSConnection|NSControl|NSController|NSConditionLock|NSCoding|NSCoder|NSCountCommand|NSCountedSet|NSCopying|NSColor|NSColorSpace|NSColorPickingCustom|NSColorPickingDefault|NSColorPicker|NSColorPanel|NSColorWell|NSColorList|NSCompoundPredicate|NSComparisonPredicate|NSComboBox|NSComboBoxCell|NSCustomImageRep|NSCursor|NSCIImageRep|NSCell|NSClipView|NSCloseCommand|NSCloneCommand|NSClassDescription|NSCachedImageRep|NSCachedURLResponse|NSCalendar|NSCalendarDate|NSCreateCommand|NSThread|NSTypesetter|NSTimeZone|NSTimer|NSToolbar|NSToolbarItem|NSToolbarItemValidations|NSTokenField|NSTokenFieldCell|NSText|NSTextBlock|NSTextStorage|NSTextContainer|NSTextTab|NSTextTable|NSTextTableBlock|NSTextInput|NSTextView|NSTextField|NSTextFieldCell|NSTextList|NSTextAttachment|NSTextAttachmentCell|NSTask|NSTableHeaderCell|NSTableHeaderView|NSTableColumn|NSTableView|NSTabView|NSTabViewItem|NSTreeController|NSIndexSpecifier|NSIndexSet|NSIndexPath|NSInputManager|NSInputStream|NSInputServiceProvider|NSInputServer|NSInputServerMouseTracker|NSInvocation|NSIgnoreMisspelledWords|NSImage|NSImageRep|NSImageCell|NSImageView|NSOutputStream|NSOutlineView|NSOpenGLContext|NSOpenGLPixelBuffer|NSOpenGLPixelFormat|NSOpenGLView|NSOpenPanel|NSObjCTypeSerializationCallBack|NSObject|NSObjectController|NSDistantObject|NSDistantObjectRequest|NSDistributedNotificationCenter|NSDistributedLock|NSDictionary|NSDirectoryEnumerator|NSDocument|NSDocumentController|NSDeserializer|NSDecimalNumber|NSDecimalNumberBehaviors|NSDecimalNumberHandler|NSDeleteCommand|NSDate|NSDateComponents|NSDatePicker|NSDatePickerCell|NSDateFormatter|NSData|NSDrawer|NSDraggingInfo|NSUserInterfaceValidations|NSUserDefaults|NSUserDefaultsController|NSURL|NSURLResponse|NSURLRequest|NSURLHandle|NSURLHandleClient|NSURLConnection|NSURLCache|NSURLCredential|NSURLCredentialStorage|NSURLDownload|NSURLDownloadDelegate|NSURLProtocol|NSURLProtocolClient|NSURLProtectionSpace|NSURLAuthenticationChallenge|NSURLAuthenticationChallengeSender|NSUniqueIDSpecifier|NSUndoManager|NSUnarchiver|NSPipe|NSPositionalSpecifier|NSPopUpButton|NSPopUpButtonCell|NSPort|NSPortMessage|NSPortNameServer|NSPortCoder|NSPICTImageRep|NSPersistentDocument|NSPDFImageRep|NSPasteboard|NSPanel|NSParagraphStyle|NSPageLayout|NSPrintInfo|NSPrinter|NSPrintOperation|NSPrintPanel|NSProcessInfo|NSProtocolChecker|NSPropertySpecifier|NSPropertyListSerialization|NSProgressIndicator|NSProxy|NSPredicate|NSEnumerator|NSEvent|NSEPSImageRep|NSError|NSException|NSExistsCommand|NSExpression|NSView|NSViewAnimation|NSValidatedToobarItem|NSValidatedUserInterfaceItem|NSValueTransformer|NSKeyedUnarchiver|NSKeyedArchiver|NSQuickDrawView|NSQuitCommand|NSFileManager|NSFileHandle|NSFileWrapper|NSFont|NSFontManager|NSFontDescriptor|NSFontPanel|NSFormCell|NSFormatter|NSWhoseSpecifier|NSWindow|NSWindowController|NSWorkspace|NSLock|NSLocking|NSLocale|NSLogicalTest|NSLevelIndicator|NSLevelIndicatorCell|NSLayoutManager|NSAssertionHandler|NSAnimation|NSActionCell|NSAttributedString|NSAutoreleasePool|NSATSTypesetter|NSApplication|NSAppleScript|NSAppleEventManager|NSAppleEventDescriptor|NSAffineTransform|NSAlert|NSArchiver|NSArray|NSArrayController", + "support.type.cocoa.leopard": "", + "support.class.quartz": "CISampler|CIContext|CIColor|CIImage|CIImageAccumulator|CIPlugIn|CIPlugInRegistration|CIVector|CIKernel|CIFilter|CIFilterGenerator|CIFilterShape|CARenderer|CAMediaTiming|CAMediaTimingFunction|CABasicAnimation|CAScrollLayer|CAConstraint|CAConstraintLayoutManager|CATiledLayer|CATextLayer|CATransition|CATransaction|CAOpenGLLayer|CAPropertyAnimation|CAKeyframeAnimation|CALayer|CAAnimation|CAAnimationGroup|CAAction", + "support.type.quartz": "CGFloat|CGPoint|CGSize|CGRect|CIFormat|CAConstraintAttribute", + "support.type.cocoa": "NSRect|NSRectEdge|NSRange|NSGlyph|NSGlyphRelation|NSGlyphLayoutMode|NSGradientType|NSModalSession|NSMatrixMode|NSMapEnumerator|NSBitmapImageFileType|NSBorderType|NSButtonType|NSBezelStyle|NSBackingStoreType|NSBrowserColumnResizingType|NSScrollerPart|NSScrollerArrow|NSScrollArrowPosition|NSScreenAuxiliaryOpaque|NSStringEncoding|NSSize|NSSocketNativeHandle|NSSelectionGranularity|NSSelectionDirection|NSSelectionAffinity|NSSwappedDouble|NSSwappedFloat|NSSaveOperationType|NSHashEnumerator|NSHandler|NSHandler2|NSControlSize|NSControlTint|NSCompositingOperation|NSComparisonResult|NSCellState|NSCellType|NSCellImagePosition|NSCellAttribute|NSThreadPrivate|NSTypesetterGlyphInfo|NSTickMarkPosition|NSTitlePosition|NSTimeInterval|NSToolTipTag|NSToolbarSizeMode|NSToolbarDisplayMode|NSTokenStyle|NSTIFFCompression|NSTextTabType|NSTextAlignment|NSTabState|NSTableViewDropOperation|NSTabViewType|NSTrackingRectTag|NSImageInterpolation|NSZone|NSOpenGLContextAuxiliary|NSOpenGLPixelFormatAuxiliary|NSDocumentChangeType|NSDatePickerElementFlags|NSDrawerState|NSDragOperation|NSUsableScrollerParts|NSPoint|NSPrintingPageOrder|NSProgressIndicatorStyle|NSProgressIndicatorThickness|NSProgressIndicatorThreadInfo|NSEventType|NSKeyValueObservingOptions|NSFontSymbolicTraits|NSFontTraitMask|NSFontAction|NSFocusRingType|NSWindowOrderingMode|NSWindowDepth|NSWorkspaceIconCreationOptions|NSWorkspaceLaunchOptions|NSWritingDirection|NSLineBreakMode|NSLayoutStatus|NSLayoutDirection|NSAnimationProgress|NSAnimationEffect|NSApplicationTerminateReply|NSApplicationDelegateReply|NSApplicationPrintReply|NSAppleEventManagerSuspensionID|NSAffineTransformStruct|NSAlertStyle", + "support.constant.cocoa": "NSRGBModeColorPanel|NSRGBColorSpaceModel|NSRightMouseDown|NSRightMouseDownMask|NSRightMouseDragged|NSRightMouseDraggedMask|NSRightMouseUp|NSRightMouseUpMask|NSRightTextMovement|NSRightTextAlignment|NSRightTabsBezelBorder|NSRightTabStopType|NSRightArrowFunctionKey|NSRoundRectBezelStyle|NSRoundBankers|NSRoundedBezelStyle|NSRoundedTokenStyle|NSRoundedDisclosureBezelStyle|NSRoundDown|NSRoundUp|NSRoundPlain|NSRoundLineCapStyle|NSRoundLineJoinStyle|NSRunStoppedResponse|NSRunContinuesResponse|NSRunAbortedResponse|NSResizableWindowMask|NSResetCursorRectsRunLoopOrdering|NSResetFunctionKey|NSRecessedBezelStyle|NSReceiversCantHandleCommandScriptError|NSReceiverEvaluationScriptError|NSReturnTextMovement|NSRedoFunctionKey|NSRequiredArgumentsMissingScriptError|NSRelevancyLevelIndicatorStyle|NSRelativeBefore|NSRelativeAfter|NSRegularSquareBezelStyle|NSRegularControlSize|NSRemoveTraitFontAction|NSRandomSubelement|NSRangeDateMode|NSRatingLevelIndicatorStyle|NSRadioModeMatrix|NSRadioButton|NSGIFFileType|NSGlyphBelow|NSGlyphInscribeBelow|NSGlyphInscribeBase|NSGlyphInscribeOverstrike|NSGlyphInscribeOverBelow|NSGlyphInscribeAbove|NSGlyphLayoutWithPrevious|NSGlyphLayoutAtAPoint|NSGlyphLayoutAgainstAPoint|NSGlyphAttributeBidiLevel|NSGlyphAttributeSoft|NSGlyphAttributeInscribe|NSGlyphAttributeElastic|NSGlyphAbove|NSGrooveBorder|NSGreaterThanComparison|NSGreaterThanOrEqualToComparison|NSGreaterThanOrEqualToPredicateOperatorType|NSGreaterThanPredicateOperatorType|NSGrayModeColorPanel|NSGrayColorSpaceModel|NSGradientNone|NSGradientConcaveStrong|NSGradientConcaveWeak|NSGradientConvexStrong|NSGradientConvexWeak|NSGraphiteControlTint|NSXMLNotationDeclarationKind|NSXMLNodeCompactEmptyElement|NSXMLNodeIsCDATA|NSXMLNodeOptionsNone|NSXMLNodeUseSingleQuotes|NSXMLNodeUseDoubleQuotes|NSXMLNodePreserveNamespaceOrder|NSXMLNodePreserveCharacterReferences|NSXMLNodePreserveCDATA|NSXMLNodePreserveDTD|NSXMLNodePreservePrefixes|NSXMLNodePreserveEntities|NSXMLNodePreserveEmptyElements|NSXMLNodePreserveQuotes|NSXMLNodePreserveWhitespace|NSXMLNodePreserveAttributeOrder|NSXMLNodePreserveAll|NSXMLNodePrettyPrint|NSXMLNodeExpandEmptyElement|NSXMLNamespaceKind|NSXMLCommentKind|NSXMLTextKind|NSXMLInvalidKind|NSXMLDocumentXMLKind|NSXMLDocumentXHTMLKind|NSXMLDocumentXInclude|NSXMLDocumentHTMLKind|NSXMLDocumentTidyXML|NSXMLDocumentTidyHTML|NSXMLDocumentTextKind|NSXMLDocumentIncludeContentTypeDeclaration|NSXMLDocumentValidate|NSXMLDocumentKind|NSXMLDTDKind|NSXMLParserGTRequiredError|NSXMLParserXMLDeclNotStartedError|NSXMLParserXMLDeclNotFinishedError|NSXMLParserMisplacedXMLDeclarationError|NSXMLParserMisplacedCDATAEndStringError|NSXMLParserMixedContentDeclNotStartedError|NSXMLParserMixedContentDeclNotFinishedError|NSXMLParserStandaloneValueError|NSXMLParserStringNotStartedError|NSXMLParserStringNotClosedError|NSXMLParserSpaceRequiredError|NSXMLParserSeparatorRequiredError|NSXMLParserNMTOKENRequiredError|NSXMLParserNotationNotStartedError|NSXMLParserNotationNotFinishedError|NSXMLParserNotWellBalancedError|NSXMLParserNoDTDError|NSXMLParserNamespaceDeclarationError|NSXMLParserNAMERequiredError|NSXMLParserCharacterRefInDTDError|NSXMLParserCharacterRefInPrologError|NSXMLParserCharacterRefInEpilogError|NSXMLParserCharacterRefAtEOFError|NSXMLParserConditionalSectionNotStartedError|NSXMLParserConditionalSectionNotFinishedError|NSXMLParserCommentNotFinishedError|NSXMLParserCommentContainsDoubleHyphenError|NSXMLParserCDATANotFinishedError|NSXMLParserTagNameMismatchError|NSXMLParserInternalError|NSXMLParserInvalidHexCharacterRefError|NSXMLParserInvalidCharacterRefError|NSXMLParserInvalidCharacterInEntityError|NSXMLParserInvalidCharacterError|NSXMLParserInvalidConditionalSectionError|NSXMLParserInvalidDecimalCharacterRefError|NSXMLParserInvalidURIError|NSXMLParserInvalidEncodingNameError|NSXMLParserInvalidEncodingError|NSXMLParserOutOfMemoryError|NSXMLParserDocumentStartError|NSXMLParserDelegateAbortedParseError|NSXMLParserDOCTYPEDeclNotFinishedError|NSXMLParserURIRequiredError|NSXMLParserURIFragmentError|NSXMLParserUndeclaredEntityError|NSXMLParserUnparsedEntityError|NSXMLParserUnknownEncodingError|NSXMLParserUnfinishedTagError|NSXMLParserPCDATARequiredError|NSXMLParserPublicIdentifierRequiredError|NSXMLParserParsedEntityRefMissingSemiError|NSXMLParserParsedEntityRefNoNameError|NSXMLParserParsedEntityRefInInternalSubsetError|NSXMLParserParsedEntityRefInInternalError|NSXMLParserParsedEntityRefInPrologError|NSXMLParserParsedEntityRefInEpilogError|NSXMLParserParsedEntityRefAtEOFError|NSXMLParserProcessingInstructionNotStartedError|NSXMLParserProcessingInstructionNotFinishedError|NSXMLParserPrematureDocumentEndError|NSXMLParserEncodingNotSupportedError|NSXMLParserEntityRefInDTDError|NSXMLParserEntityRefInPrologError|NSXMLParserEntityRefInEpilogError|NSXMLParserEntityReferenceMissingSemiError|NSXMLParserEntityReferenceWithoutNameError|NSXMLParserEntityRefLoopError|NSXMLParserEntityRefAtEOFError|NSXMLParserEntityBoundaryError|NSXMLParserEntityNotStartedError|NSXMLParserEntityNotFinishedError|NSXMLParserEntityIsParameterError|NSXMLParserEntityIsExternalError|NSXMLParserEntityValueRequiredError|NSXMLParserEqualExpectedError|NSXMLParserElementContentDeclNotStartedError|NSXMLParserElementContentDeclNotFinishedError|NSXMLParserExternalStandaloneEntityError|NSXMLParserExternalSubsetNotFinishedError|NSXMLParserExtraContentError|NSXMLParserEmptyDocumentError|NSXMLParserLiteralNotStartedError|NSXMLParserLiteralNotFinishedError|NSXMLParserLTRequiredError|NSXMLParserLTSlashRequiredError|NSXMLParserLessThanSymbolInAttributeError|NSXMLParserAttributeRedefinedError|NSXMLParserAttributeHasNoValueError|NSXMLParserAttributeNotStartedError|NSXMLParserAttributeNotFinishedError|NSXMLParserAttributeListNotStartedError|NSXMLParserAttributeListNotFinishedError|NSXMLProcessingInstructionKind|NSXMLEntityGeneralKind|NSXMLEntityDeclarationKind|NSXMLEntityUnparsedKind|NSXMLEntityParsedKind|NSXMLEntityParameterKind|NSXMLEntityPredefined|NSXMLElementDeclarationMixedKind|NSXMLElementDeclarationUndefinedKind|NSXMLElementDeclarationElementKind|NSXMLElementDeclarationEmptyKind|NSXMLElementDeclarationKind|NSXMLElementDeclarationAnyKind|NSXMLElementKind|NSXMLAttributeNMTokensKind|NSXMLAttributeNMTokenKind|NSXMLAttributeNotationKind|NSXMLAttributeCDATAKind|NSXMLAttributeIDRefsKind|NSXMLAttributeIDRefKind|NSXMLAttributeIDKind|NSXMLAttributeDeclarationKind|NSXMLAttributeEntityKind|NSXMLAttributeEntitiesKind|NSXMLAttributeEnumerationKind|NSXMLAttributeKind|NSMinXEdge|NSMiniaturizableWindowMask|NSMinYEdge|NSMinuteCalendarUnit|NSMiterLineJoinStyle|NSMiddleSubelement|NSMixedState|NSMonthCalendarUnit|NSModeSwitchFunctionKey|NSMouseMoved|NSMouseMovedMask|NSMouseEntered|NSMouseEnteredMask|NSMouseEventSubtype|NSMouseExited|NSMouseExitedMask|NSMoveToBezierPathElement|NSMomentaryChangeButton|NSMomentaryPushButton|NSMomentaryPushInButton|NSMomentaryLight|NSMomentaryLightButton|NSMenuFunctionKey|NSMacintoshInterfaceStyle|NSMacOSRomanStringEncoding|NSMatchesPredicateOperatorType|NSMappedRead|NSMaxXEdge|NSMaxYEdge|NSMACHOperatingSystem|NSBMPFileType|NSBottomTabsBezelBorder|NSBoldFontMask|NSBorderlessWindowMask|NSBoxSecondary|NSBoxSeparator|NSBoxOldStyle|NSBoxPrimary|NSButtLineCapStyle|NSBezelBorder|NSBevelLineJoinStyle|NSBelowBottom|NSBelowTop|NSBeginsWithComparison|NSBeginsWithPredicateOperatorType|NSBeginFunctionKey|NSBlueControlTint|NSBackspaceCharacter|NSBacktabTextMovement|NSBackingStoreRetained|NSBackingStoreBuffered|NSBackingStoreNonretained|NSBackTabCharacter|NSBackwardsSearch|NSBackgroundTab|NSBrowserNoColumnResizing|NSBrowserUserColumnResizing|NSBrowserAutoColumnResizing|NSBreakFunctionKey|NSShiftJISStringEncoding|NSShiftKeyMask|NSShowControlGlyphs|NSShowInvisibleGlyphs|NSShadowlessSquareBezelStyle|NSSysReqFunctionKey|NSSystemDomainMask|NSSystemDefined|NSSystemDefinedMask|NSSystemFunctionKey|NSSymbolStringEncoding|NSScannedOption|NSScaleNone|NSScaleToFit|NSScaleProportionally|NSScrollerNoPart|NSScrollerIncrementPage|NSScrollerIncrementLine|NSScrollerIncrementArrow|NSScrollerDecrementPage|NSScrollerDecrementLine|NSScrollerDecrementArrow|NSScrollerKnob|NSScrollerKnobSlot|NSScrollerArrowsMinEnd|NSScrollerArrowsMaxEnd|NSScrollerArrowsNone|NSScrollerArrowsDefaultSetting|NSScrollWheel|NSScrollWheelMask|NSScrollLockFunctionKey|NSScreenChangedEventType|NSStopFunctionKey|NSStringDrawingOneShot|NSStringDrawingDisableScreenFontSubstitution|NSStringDrawingUsesDeviceMetrics|NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin|NSStreamStatusReading|NSStreamStatusNotOpen|NSStreamStatusClosed|NSStreamStatusOpen|NSStreamStatusOpening|NSStreamStatusError|NSStreamStatusWriting|NSStreamStatusAtEnd|NSStreamEventHasBytesAvailable|NSStreamEventHasSpaceAvailable|NSStreamEventNone|NSStreamEventOpenCompleted|NSStreamEventEndEncountered|NSStreamEventErrorOccurred|NSSingleDateMode|NSSingleUnderlineStyle|NSSizeDownFontAction|NSSizeUpFontAction|NSSolarisOperatingSystem|NSSunOSOperatingSystem|NSSpecialPageOrder|NSSecondCalendarUnit|NSSelectByCharacter|NSSelectByParagraph|NSSelectByWord|NSSelectingNext|NSSelectingPrevious|NSSelectionAffinityDownstream|NSSelectionAffinityUpstream|NSSelectedTab|NSSelectFunctionKey|NSSegmentSwitchTrackingMomentary|NSSegmentSwitchTrackingSelectOne|NSSegmentSwitchTrackingSelectAny|NSSquareLineCapStyle|NSSwitchButton|NSSaveToOperation|NSSaveOptionsYes|NSSaveOptionsNo|NSSaveOptionsAsk|NSSaveOperation|NSSaveAsOperation|NSSmallSquareBezelStyle|NSSmallControlSize|NSSmallCapsFontMask|NSSmallIconButtonBezelStyle|NSHighlightModeMatrix|NSHSBModeColorPanel|NSHourMinuteSecondDatePickerElementFlag|NSHourMinuteDatePickerElementFlag|NSHourCalendarUnit|NSHorizontalRuler|NSHomeFunctionKey|NSHTTPCookieAcceptPolicyNever|NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain|NSHTTPCookieAcceptPolicyAlways|NSHelpButtonBezelStyle|NSHelpKeyMask|NSHelpFunctionKey|NSHeavierFontAction|NSHPUXOperatingSystem|NSYearMonthDayDatePickerElementFlag|NSYearMonthDatePickerElementFlag|NSYearCalendarUnit|NSNonStandardCharacterSetFontMask|NSNonZeroWindingRule|NSNonactivatingPanelMask|NSNonLossyASCIIStringEncoding|NSNoBorder|NSNotificationSuspensionBehaviorHold|NSNotificationSuspensionBehaviorCoalesce|NSNotificationSuspensionBehaviorDeliverImmediately|NSNotificationSuspensionBehaviorDrop|NSNotificationNoCoalescing|NSNotificationCoalescingOnSender|NSNotificationCoalescingOnName|NSNotificationDeliverImmediately|NSNotificationPostToAllSessions|NSNotPredicateType|NSNotEqualToPredicateOperatorType|NSNoScriptError|NSNoScrollerParts|NSNoSubelement|NSNoSpecifierError|NSNoCellMask|NSNoTitle|NSNoTopLevelContainersSpecifierError|NSNoTabsBezelBorder|NSNoTabsNoBorder|NSNoTabsLineBorder|NSNoInterfaceStyle|NSNoImage|NSNoUnderlineStyle|NSNoFontChangeAction|NSNullGlyph|NSNullCellType|NSNumericSearch|NSNumericPadKeyMask|NSNumberFormatterRoundHalfDown|NSNumberFormatterRoundHalfUp|NSNumberFormatterRoundHalfEven|NSNumberFormatterRoundCeiling|NSNumberFormatterRoundDown|NSNumberFormatterRoundUp|NSNumberFormatterRoundFloor|NSNumberFormatterBehavior10|NSNumberFormatterBehaviorDefault|NSNumberFormatterScientificStyle|NSNumberFormatterSpellOutStyle|NSNumberFormatterNoStyle|NSNumberFormatterCurrencyStyle|NSNumberFormatterDecimalStyle|NSNumberFormatterPercentStyle|NSNumberFormatterPadBeforeSuffix|NSNumberFormatterPadBeforePrefix|NSNumberFormatterPadAfterSuffix|NSNumberFormatterPadAfterPrefix|NSNetServicesBadArgumentError|NSNetServicesNotFoundError|NSNetServicesCollisionError|NSNetServicesCancelledError|NSNetServicesTimeoutError|NSNetServicesInvalidError|NSNetServicesUnknownError|NSNetServicesActivityInProgress|NSNetworkDomainMask|NSNewlineCharacter|NSNextStepInterfaceStyle|NSNextFunctionKey|NSNEXTSTEPStringEncoding|NSNativeShortGlyphPacking|NSNaturalTextAlignment|NSNarrowFontMask|NSChangeReadOtherContents|NSChangeGrayCell|NSChangeGrayCellMask|NSChangeBackgroundCell|NSChangeBackgroundCellMask|NSChangeCleared|NSChangeDone|NSChangeUndone|NSChangeAutosaved|NSCMYKModeColorPanel|NSCMYKColorSpaceModel|NSCircularBezelStyle|NSCircularSlider|NSConstantValueExpressionType|NSContinuousCapacityLevelIndicatorStyle|NSContentsCellMask|NSContainsComparison|NSContainerSpecifierError|NSControlGlyph|NSControlKeyMask|NSCondensedFontMask|NSColorPanelRGBModeMask|NSColorPanelGrayModeMask|NSColorPanelHSBModeMask|NSColorPanelCMYKModeMask|NSColorPanelColorListModeMask|NSColorPanelCustomPaletteModeMask|NSColorPanelCrayonModeMask|NSColorPanelWheelModeMask|NSColorPanelAllModesMask|NSColorListModeColorPanel|NSCoreServiceDirectory|NSCompositeXOR|NSCompositeSourceIn|NSCompositeSourceOut|NSCompositeSourceOver|NSCompositeSourceAtop|NSCompositeHighlight|NSCompositeCopy|NSCompositeClear|NSCompositeDestinationIn|NSCompositeDestinationOut|NSCompositeDestinationOver|NSCompositeDestinationAtop|NSCompositePlusDarker|NSCompositePlusLighter|NSCompressedFontMask|NSCommandKeyMask|NSCustomSelectorPredicateOperatorType|NSCustomPaletteModeColorPanel|NSCursorUpdate|NSCursorUpdateMask|NSCursorPointingDevice|NSCurveToBezierPathElement|NSCenterTextAlignment|NSCenterTabStopType|NSCellHighlighted|NSCellHasImageHorizontal|NSCellHasImageOnLeftOrBottom|NSCellHasOverlappingImage|NSCellChangesContents|NSCellIsBordered|NSCellIsInsetButton|NSCellDisabled|NSCellEditable|NSCellLightsByGray|NSCellLightsByBackground|NSCellLightsByContents|NSCellAllowsMixedState|NSClipPagination|NSClosePathBezierPathElement|NSClosableWindowMask|NSClockAndCalendarDatePickerStyle|NSClearControlTint|NSClearDisplayFunctionKey|NSClearLineFunctionKey|NSCaseInsensitiveSearch|NSCaseInsensitivePredicateOption|NSCannotCreateScriptCommandError|NSCancelButton|NSCancelTextMovement|NSCachesDirectory|NSCalculationNoError|NSCalculationOverflow|NSCalculationDivideByZero|NSCalculationUnderflow|NSCalculationLossOfPrecision|NSCarriageReturnCharacter|NSCriticalRequest|NSCriticalAlertStyle|NSCrayonModeColorPanel|NSThickSquareBezelStyle|NSThickerSquareBezelStyle|NSTypesetterBehavior|NSTypesetterHorizontalTabAction|NSTypesetterContainerBreakAction|NSTypesetterZeroAdvancementAction|NSTypesetterOriginalBehavior|NSTypesetterParagraphBreakAction|NSTypesetterWhitespaceAction|NSTypesetterLineBreakAction|NSTypesetterLatestBehavior|NSTickMarkRight|NSTickMarkBelow|NSTickMarkLeft|NSTickMarkAbove|NSTitledWindowMask|NSTimeZoneDatePickerElementFlag|NSToolbarItemVisibilityPriorityStandard|NSToolbarItemVisibilityPriorityHigh|NSToolbarItemVisibilityPriorityUser|NSToolbarItemVisibilityPriorityLow|NSTopTabsBezelBorder|NSToggleButton|NSTIFFCompressionNone|NSTIFFCompressionNEXT|NSTIFFCompressionCCITTFAX3|NSTIFFCompressionCCITTFAX4|NSTIFFCompressionOldJPEG|NSTIFFCompressionJPEG|NSTIFFCompressionPackBits|NSTIFFCompressionLZW|NSTIFFFileType|NSTerminateNow|NSTerminateCancel|NSTerminateLater|NSTextReadInapplicableDocumentTypeError|NSTextReadWriteErrorMinimum|NSTextReadWriteErrorMaximum|NSTextBlockMinimumHeight|NSTextBlockMinimumWidth|NSTextBlockMiddleAlignment|NSTextBlockMargin|NSTextBlockMaximumHeight|NSTextBlockMaximumWidth|NSTextBlockBottomAlignment|NSTextBlockBorder|NSTextBlockBaselineAlignment|NSTextBlockHeight|NSTextBlockTopAlignment|NSTextBlockPercentageValueType|NSTextBlockPadding|NSTextBlockWidth|NSTextBlockAbsoluteValueType|NSTextStorageEditedCharacters|NSTextStorageEditedAttributes|NSTextCellType|NSTexturedRoundedBezelStyle|NSTexturedBackgroundWindowMask|NSTexturedSquareBezelStyle|NSTextTableFixedLayoutAlgorithm|NSTextTableAutomaticLayoutAlgorithm|NSTextFieldRoundedBezel|NSTextFieldSquareBezel|NSTextFieldAndStepperDatePickerStyle|NSTextWriteInapplicableDocumentTypeError|NSTextListPrependEnclosingMarker|NSTwoByteGlyphPacking|NSTabCharacter|NSTabTextMovement|NSTabletPoint|NSTabletPointMask|NSTabletPointEventSubtype|NSTabletProximity|NSTabletProximityMask|NSTabletProximityEventSubtype|NSTableColumnNoResizing|NSTableColumnUserResizingMask|NSTableColumnAutoresizingMask|NSTableViewReverseSequentialColumnAutoresizingStyle|NSTableViewGridNone|NSTableViewSolidHorizontalGridLineMask|NSTableViewSolidVerticalGridLineMask|NSTableViewSequentialColumnAutoresizingStyle|NSTableViewNoColumnAutoresizing|NSTableViewUniformColumnAutoresizingStyle|NSTableViewFirstColumnOnlyAutoresizingStyle|NSTableViewLastColumnOnlyAutoresizingStyle|NSTrackModeMatrix|NSInsertCharFunctionKey|NSInsertFunctionKey|NSInsertLineFunctionKey|NSIntType|NSInternalScriptError|NSInternalSpecifierError|NSIndexSubelement|NSInvalidIndexSpecifierError|NSInformationalRequest|NSInformationalAlertStyle|NSInPredicateOperatorType|NSItalicFontMask|NSISO2022JPStringEncoding|NSISOLatin1StringEncoding|NSISOLatin2StringEncoding|NSIdentityMappingCharacterCollection|NSIllegalTextMovement|NSImageRight|NSImageRepMatchesDevice|NSImageRepLoadStatusReadingHeader|NSImageRepLoadStatusCompleted|NSImageRepLoadStatusInvalidData|NSImageRepLoadStatusUnexpectedEOF|NSImageRepLoadStatusUnknownType|NSImageRepLoadStatusWillNeedAllData|NSImageBelow|NSImageCellType|NSImageCacheBySize|NSImageCacheNever|NSImageCacheDefault|NSImageCacheAlways|NSImageInterpolationHigh|NSImageInterpolationNone|NSImageInterpolationDefault|NSImageInterpolationLow|NSImageOnly|NSImageOverlaps|NSImageFrameGroove|NSImageFrameGrayBezel|NSImageFrameButton|NSImageFrameNone|NSImageFramePhoto|NSImageLoadStatusReadError|NSImageLoadStatusCompleted|NSImageLoadStatusCancelled|NSImageLoadStatusInvalidData|NSImageLoadStatusUnexpectedEOF|NSImageLeft|NSImageAlignRight|NSImageAlignBottom|NSImageAlignBottomRight|NSImageAlignBottomLeft|NSImageAlignCenter|NSImageAlignTop|NSImageAlignTopRight|NSImageAlignTopLeft|NSImageAlignLeft|NSImageAbove|NSOnState|NSOneByteGlyphPacking|NSOnOffButton|NSOnlyScrollerArrows|NSOtherMouseDown|NSOtherMouseDownMask|NSOtherMouseDragged|NSOtherMouseDraggedMask|NSOtherMouseUp|NSOtherMouseUpMask|NSOtherTextMovement|NSOSF1OperatingSystem|NSOpenGLGOResetLibrary|NSOpenGLGORetainRenderers|NSOpenGLGOClearFormatCache|NSOpenGLGOFormatCacheSize|NSOpenGLPFARobust|NSOpenGLPFARendererID|NSOpenGLPFAMinimumPolicy|NSOpenGLPFAMultisample|NSOpenGLPFAMultiScreen|NSOpenGLPFAMPSafe|NSOpenGLPFAMaximumPolicy|NSOpenGLPFABackingStore|NSOpenGLPFAScreenMask|NSOpenGLPFAStencilSize|NSOpenGLPFAStereo|NSOpenGLPFASingleRenderer|NSOpenGLPFASupersample|NSOpenGLPFASamples|NSOpenGLPFASampleBuffers|NSOpenGLPFASampleAlpha|NSOpenGLPFANoRecovery|NSOpenGLPFAColorSize|NSOpenGLPFAColorFloat|NSOpenGLPFACompliant|NSOpenGLPFAClosestPolicy|NSOpenGLPFAOffScreen|NSOpenGLPFADoubleBuffer|NSOpenGLPFADepthSize|NSOpenGLPFAPixelBuffer|NSOpenGLPFAVirtualScreenCount|NSOpenGLPFAFullScreen|NSOpenGLPFAWindow|NSOpenGLPFAAccumSize|NSOpenGLPFAAccelerated|NSOpenGLPFAAuxBuffers|NSOpenGLPFAAuxDepthStencil|NSOpenGLPFAAlphaSize|NSOpenGLPFAAllRenderers|NSOpenStepUnicodeReservedBase|NSOperationNotSupportedForKeyScriptError|NSOperationNotSupportedForKeySpecifierError|NSOffState|NSOKButton|NSOrPredicateType|NSObjCBitfield|NSObjCBoolType|NSObjCShortType|NSObjCStringType|NSObjCStructType|NSObjCSelectorType|NSObjCNoType|NSObjCCharType|NSObjCObjectType|NSObjCDoubleType|NSObjCUnionType|NSObjCPointerType|NSObjCVoidType|NSObjCFloatType|NSObjCLongType|NSObjCLonglongType|NSObjCArrayType|NSDisclosureBezelStyle|NSDiscreteCapacityLevelIndicatorStyle|NSDisplayWindowRunLoopOrdering|NSDiacriticInsensitivePredicateOption|NSDirectSelection|NSDirectPredicateModifier|NSDocModalWindowMask|NSDocumentDirectory|NSDocumentationDirectory|NSDoubleType|NSDownTextMovement|NSDownArrowFunctionKey|NSDescendingPageOrder|NSDesktopDirectory|NSDecimalTabStopType|NSDeviceNColorSpaceModel|NSDeviceIndependentModifierFlagsMask|NSDeveloperDirectory|NSDeveloperApplicationDirectory|NSDefaultControlTint|NSDefaultTokenStyle|NSDeleteCharacter|NSDeleteCharFunctionKey|NSDeleteFunctionKey|NSDeleteLineFunctionKey|NSDemoApplicationDirectory|NSDayCalendarUnit|NSDateFormatterMediumStyle|NSDateFormatterBehavior10|NSDateFormatterBehaviorDefault|NSDateFormatterShortStyle|NSDateFormatterNoStyle|NSDateFormatterFullStyle|NSDateFormatterLongStyle|NSDrawerClosingState|NSDrawerClosedState|NSDrawerOpeningState|NSDrawerOpenState|NSDragOperationGeneric|NSDragOperationMove|NSDragOperationNone|NSDragOperationCopy|NSDragOperationDelete|NSDragOperationPrivate|NSDragOperationEvery|NSDragOperationLink|NSDragOperationAll|NSUserCancelledError|NSUserDirectory|NSUserDomainMask|NSUserFunctionKey|NSURLHandleNotLoaded|NSURLHandleLoadSucceeded|NSURLHandleLoadInProgress|NSURLHandleLoadFailed|NSURLCredentialPersistenceNone|NSURLCredentialPersistencePermanent|NSURLCredentialPersistenceForSession|NSUnscaledWindowMask|NSUncachedRead|NSUnicodeStringEncoding|NSUnitalicFontMask|NSUnifiedTitleAndToolbarWindowMask|NSUndoCloseGroupingRunLoopOrdering|NSUndoFunctionKey|NSUndefinedDateComponent|NSUnderlineStyleSingle|NSUnderlineStyleNone|NSUnderlineStyleThick|NSUnderlineStyleDouble|NSUnderlinePatternSolid|NSUnderlinePatternDot|NSUnderlinePatternDash|NSUnderlinePatternDashDot|NSUnderlinePatternDashDotDot|NSUnknownColorSpaceModel|NSUnknownPointingDevice|NSUnknownPageOrder|NSUnknownKeyScriptError|NSUnknownKeySpecifierError|NSUnboldFontMask|NSUtilityWindowMask|NSUTF8StringEncoding|NSUpdateWindowsRunLoopOrdering|NSUpTextMovement|NSUpArrowFunctionKey|NSJustifiedTextAlignment|NSJPEG2000FileType|NSJPEGFileType|NSJapaneseEUCGlyphPacking|NSJapaneseEUCStringEncoding|NSPostNow|NSPosterFontMask|NSPostWhenIdle|NSPostASAP|NSPositionReplace|NSPositionBefore|NSPositionBeginning|NSPositionEnd|NSPositionAfter|NSPositiveIntType|NSPositiveDoubleType|NSPositiveFloatType|NSPopUpNoArrow|NSPopUpArrowAtBottom|NSPopUpArrowAtCenter|NSPowerOffEventType|NSPortraitOrientation|NSPNGFileType|NSPushInCell|NSPushInCellMask|NSPushOnPushOffButton|NSPenTipMask|NSPenUpperSideMask|NSPenPointingDevice|NSPenLowerSideMask|NSPeriodic|NSPeriodicMask|NSPPScaleField|NSPPStatusTitle|NSPPStatusField|NSPPSaveButton|NSPPNoteTitle|NSPPNoteField|NSPPNameTitle|NSPPNameField|NSPPCopiesField|NSPPTitleField|NSPPImageButton|NSPPOptionsButton|NSPPPaperFeedButton|NSPPPageRangeTo|NSPPPageRangeFrom|NSPPPageChoiceMatrix|NSPPPreviewButton|NSPPLayoutButton|NSPlainTextTokenStyle|NSPauseFunctionKey|NSParagraphSeparatorCharacter|NSPageDownFunctionKey|NSPageUpFunctionKey|NSPrintingReplyLater|NSPrintingSuccess|NSPrintingCancelled|NSPrintingFailure|NSPrintScreenFunctionKey|NSPrinterTableNotFound|NSPrinterTableOK|NSPrinterTableError|NSPrintFunctionKey|NSPropertyListXMLFormat|NSPropertyListMutableContainers|NSPropertyListMutableContainersAndLeaves|NSPropertyListBinaryFormat|NSPropertyListImmutable|NSPropertyListOpenStepFormat|NSProprietaryStringEncoding|NSProgressIndicatorBarStyle|NSProgressIndicatorSpinningStyle|NSProgressIndicatorPreferredSmallThickness|NSProgressIndicatorPreferredThickness|NSProgressIndicatorPreferredLargeThickness|NSProgressIndicatorPreferredAquaThickness|NSPressedTab|NSPrevFunctionKey|NSPLHeightForm|NSPLCancelButton|NSPLTitleField|NSPLImageButton|NSPLOKButton|NSPLOrientationMatrix|NSPLUnitsButton|NSPLPaperNameButton|NSPLWidthForm|NSEnterCharacter|NSEndsWithComparison|NSEndsWithPredicateOperatorType|NSEndFunctionKey|NSEvenOddWindingRule|NSEverySubelement|NSEvaluatedObjectExpressionType|NSEqualToComparison|NSEqualToPredicateOperatorType|NSEraserPointingDevice|NSEraCalendarUnit|NSEraDatePickerElementFlag|NSExclude10|NSExcludeQuickDrawElementsIconCreationOption|NSExpandedFontMask|NSExecuteFunctionKey|NSViewMinXMargin|NSViewMinYMargin|NSViewMaxXMargin|NSViewMaxYMargin|NSViewHeightSizable|NSViewNotSizable|NSViewWidthSizable|NSViaPanelFontAction|NSVerticalRuler|NSValidationErrorMinimum|NSValidationErrorMaximum|NSVariableExpressionType|NSKeySpecifierEvaluationScriptError|NSKeyDown|NSKeyDownMask|NSKeyUp|NSKeyUpMask|NSKeyPathExpressionType|NSKeyValueMinusSetMutation|NSKeyValueSetSetMutation|NSKeyValueChangeReplacement|NSKeyValueChangeRemoval|NSKeyValueChangeSetting|NSKeyValueChangeInsertion|NSKeyValueIntersectSetMutation|NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld|NSKeyValueUnionSetMutation|NSKeyValueValidationError|NSQTMovieNormalPlayback|NSQTMovieLoopingBackAndForthPlayback|NSQTMovieLoopingPlayback|NSF11FunctionKey|NSF17FunctionKey|NSF12FunctionKey|NSF18FunctionKey|NSF13FunctionKey|NSF19FunctionKey|NSF14FunctionKey|NSF15FunctionKey|NSF1FunctionKey|NSF10FunctionKey|NSF16FunctionKey|NSF7FunctionKey|NSFindPanelActionReplace|NSFindPanelActionReplaceAndFind|NSFindPanelActionReplaceAll|NSFindPanelActionReplaceAllInSelection|NSFindPanelActionShowFindPanel|NSFindPanelActionSetFindString|NSFindPanelActionSelectAll|NSFindPanelActionSelectAllInSelection|NSFindPanelActionNext|NSFindPanelActionPrevious|NSFindFunctionKey|NSFitPagination|NSFileReadNoSuchFileError|NSFileReadNoPermissionError|NSFileReadCorruptFileError|NSFileReadInvalidFileNameError|NSFileReadInapplicableStringEncodingError|NSFileReadUnsupportedSchemeError|NSFileReadUnknownError|NSFileHandlingPanelCancelButton|NSFileHandlingPanelOKButton|NSFileNoSuchFileError|NSFileErrorMinimum|NSFileErrorMaximum|NSFileWriteNoPermissionError|NSFileWriteInvalidFileNameError|NSFileWriteInapplicableStringEncodingError|NSFileWriteOutOfSpaceError|NSFileWriteUnsupportedSchemeError|NSFileWriteUnknownError|NSFileLockingError|NSFixedPitchFontMask|NSF21FunctionKey|NSF27FunctionKey|NSF22FunctionKey|NSF28FunctionKey|NSF23FunctionKey|NSF29FunctionKey|NSF24FunctionKey|NSF25FunctionKey|NSF2FunctionKey|NSF20FunctionKey|NSF26FunctionKey|NSFontMonoSpaceTrait|NSFontModernSerifsClass|NSFontBoldTrait|NSFontSymbolicClass|NSFontScriptsClass|NSFontSlabSerifsClass|NSFontSansSerifClass|NSFontCondensedTrait|NSFontCollectionApplicationOnlyMask|NSFontClarendonSerifsClass|NSFontTransitionalSerifsClass|NSFontIntegerAdvancementsRenderingMode|NSFontItalicTrait|NSFontOldStyleSerifsClass|NSFontOrnamentalsClass|NSFontDefaultRenderingMode|NSFontUnknownClass|NSFontUIOptimizedTrait|NSFontPanelShadowEffectModeMask|NSFontPanelStandardModesMask|NSFontPanelStrikethroughEffectModeMask|NSFontPanelSizeModeMask|NSFontPanelCollectionModeMask|NSFontPanelTextColorEffectModeMask|NSFontPanelDocumentColorEffectModeMask|NSFontPanelUnderlineEffectModeMask|NSFontPanelFaceModeMask|NSFontPanelAllModesMask|NSFontPanelAllEffectsModeMask|NSFontExpandedTrait|NSFontVerticalTrait|NSFontFamilyClassMask|NSFontFreeformSerifsClass|NSFontAntialiasedRenderingMode|NSFontAntialiasedIntegerAdvancementsRenderingMode|NSFocusRingBelow|NSFocusRingTypeNone|NSFocusRingTypeDefault|NSFocusRingTypeExterior|NSFocusRingOnly|NSFocusRingAbove|NSFourByteGlyphPacking|NSFormattingError|NSFormattingErrorMinimum|NSFormattingErrorMaximum|NSFormFeedCharacter|NSF8FunctionKey|NSFunctionExpressionType|NSFunctionKeyMask|NSF31FunctionKey|NSF32FunctionKey|NSF33FunctionKey|NSF34FunctionKey|NSF35FunctionKey|NSF3FunctionKey|NSF30FunctionKey|NSF9FunctionKey|NSF4FunctionKey|NSFPRevertButton|NSFPSizeTitle|NSFPSizeField|NSFPSetButton|NSFPCurrentField|NSFPPreviewButton|NSFPPreviewField|NSFloatingPointSamplesBitmapFormat|NSFloatType|NSFlagsChanged|NSFlagsChangedMask|NSFaxButton|NSF5FunctionKey|NSF6FunctionKey|NSWheelModeColorPanel|NSWindowsNTOperatingSystem|NSWindowsCP1251StringEncoding|NSWindowsCP1252StringEncoding|NSWindowsCP1253StringEncoding|NSWindowsCP1254StringEncoding|NSWindowsCP1250StringEncoding|NSWindows95InterfaceStyle|NSWindows95OperatingSystem|NSWindowMiniaturizeButton|NSWindowMovedEventType|NSWindowBelow|NSWindowCloseButton|NSWindowToolbarButton|NSWindowZoomButton|NSWindowOut|NSWindowDocumentIconButton|NSWindowExposedEventType|NSWindowAbove|NSWorkspaceLaunchNewInstance|NSWorkspaceLaunchInhibitingBackgroundOnly|NSWorkspaceLaunchDefault|NSWorkspaceLaunchPreferringClassic|NSWorkspaceLaunchWithoutActivation|NSWorkspaceLaunchWithoutAddingToRecents|NSWorkspaceLaunchAsync|NSWorkspaceLaunchAndHide|NSWorkspaceLaunchAndHideOthers|NSWorkspaceLaunchAndPrint|NSWorkspaceLaunchAllowingClassicStartup|NSWeekdayCalendarUnit|NSWeekdayOrdinalCalendarUnit|NSWeekCalendarUnit|NSWantsBidiLevels|NSWarningAlertStyle|NSWritingDirectionRightToLeft|NSWritingDirectionNatural|NSWritingDirectionLeftToRight|NSWrapCalendarComponents|NSListModeMatrix|NSLineMovesRight|NSLineMovesDown|NSLineMovesUp|NSLineMovesLeft|NSLineBorder|NSLineBreakByCharWrapping|NSLineBreakByClipping|NSLineBreakByTruncatingMiddle|NSLineBreakByTruncatingHead|NSLineBreakByTruncatingTail|NSLineBreakByWordWrapping|NSLineSeparatorCharacter|NSLineSweepRight|NSLineSweepDown|NSLineSweepUp|NSLineSweepLeft|NSLineToBezierPathElement|NSLineDoesntMove|NSLinearSlider|NSLiteralSearch|NSLikePredicateOperatorType|NSLighterFontAction|NSLibraryDirectory|NSLocalDomainMask|NSLessThanComparison|NSLessThanOrEqualToComparison|NSLessThanOrEqualToPredicateOperatorType|NSLessThanPredicateOperatorType|NSLeftMouseDown|NSLeftMouseDownMask|NSLeftMouseDragged|NSLeftMouseDraggedMask|NSLeftMouseUp|NSLeftMouseUpMask|NSLeftTextMovement|NSLeftTextAlignment|NSLeftTabsBezelBorder|NSLeftTabStopType|NSLeftArrowFunctionKey|NSLayoutRightToLeft|NSLayoutNotDone|NSLayoutCantFit|NSLayoutOutOfGlyphs|NSLayoutDone|NSLayoutLeftToRight|NSLandscapeOrientation|NSLABColorSpaceModel|NSAsciiWithDoubleByteEUCGlyphPacking|NSAscendingPageOrder|NSAnyType|NSAnyPredicateModifier|NSAnyEventMask|NSAnchoredSearch|NSAnimationBlocking|NSAnimationNonblocking|NSAnimationNonblockingThreaded|NSAnimationEffectDisappearingItemDefault|NSAnimationEffectPoof|NSAnimationEaseIn|NSAnimationEaseInOut|NSAnimationEaseOut|NSAnimationLinear|NSAndPredicateType|NSAtBottom|NSAttachmentCharacter|NSAtomicWrite|NSAtTop|NSASCIIStringEncoding|NSAdobeGB1CharacterCollection|NSAdobeCNS1CharacterCollection|NSAdobeJapan1CharacterCollection|NSAdobeJapan2CharacterCollection|NSAdobeKorea1CharacterCollection|NSAddTraitFontAction|NSAdminApplicationDirectory|NSAutosaveOperation|NSAutoPagination|NSApplicationSupportDirectory|NSApplicationDirectory|NSApplicationDefined|NSApplicationDefinedMask|NSApplicationDelegateReplySuccess|NSApplicationDelegateReplyCancel|NSApplicationDelegateReplyFailure|NSApplicationDeactivatedEventType|NSApplicationActivatedEventType|NSAppKitDefined|NSAppKitDefinedMask|NSAlternateKeyMask|NSAlphaShiftKeyMask|NSAlphaNonpremultipliedBitmapFormat|NSAlphaFirstBitmapFormat|NSAlertSecondButtonReturn|NSAlertThirdButtonReturn|NSAlertOtherReturn|NSAlertDefaultReturn|NSAlertErrorReturn|NSAlertFirstButtonReturn|NSAlertAlternateReturn|NSAllScrollerParts|NSAllDomainsMask|NSAllPredicateModifier|NSAllLibrariesDirectory|NSAllApplicationsDirectory|NSArgumentsWrongScriptError|NSArgumentEvaluationScriptError|NSAboveBottom|NSAboveTop|NSAWTEventType", + "support.constant.notification.cocoa.leopard": "NSMenuDidBeginTrackingNotification|NSViewDidUpdateTrackingAreasNotification", + "support.constant.notification.cocoa": "NSMenuDidRemoveItemNotification|NSMenuDidSendActionNotification|NSMenuDidChangeItemNotification|NSMenuDidEndTrackingNotification|NSMenuDidAddItemNotification|NSMenuWillSendActionNotification|NSSystemColorsDidChangeNotification|NSSplitViewDidResizeSubviewsNotification|NSSplitViewWillResizeSubviewsNotification|NSContextHelpModeDidDeactivateNotification|NSContextHelpModeDidActivateNotification|NSControlTintDidChangeNotification|NSControlTextDidBeginEditingNotification|NSControlTextDidChangeNotification|NSControlTextDidEndEditingNotification|NSColorPanelColorDidChangeNotification|NSColorListDidChangeNotification|NSComboBoxSelectionIsChangingNotification|NSComboBoxSelectionDidChangeNotification|NSComboBoxWillDismissNotification|NSComboBoxWillPopUpNotification|NSClassDescriptionNeededForClassNotification|NSToolbarDidRemoveItemNotification|NSToolbarWillAddItemNotification|NSTextStorageDidProcessEditingNotification|NSTextStorageWillProcessEditingNotification|NSTextDidBeginEditingNotification|NSTextDidChangeNotification|NSTextDidEndEditingNotification|NSTextViewDidChangeSelectionNotification|NSTextViewDidChangeTypingAttributesNotification|NSTextViewWillChangeNotifyingTextViewNotification|NSTableViewSelectionIsChangingNotification|NSTableViewSelectionDidChangeNotification|NSTableViewColumnDidResizeNotification|NSTableViewColumnDidMoveNotification|NSImageRepRegistryDidChangeNotification|NSOutlineViewSelectionIsChangingNotification|NSOutlineViewSelectionDidChangeNotification|NSOutlineViewColumnDidResizeNotification|NSOutlineViewColumnDidMoveNotification|NSOutlineViewItemDidCollapseNotification|NSOutlineViewItemDidExpandNotification|NSOutlineViewItemWillCollapseNotification|NSOutlineViewItemWillExpandNotification|NSDrawerDidCloseNotification|NSDrawerDidOpenNotification|NSDrawerWillCloseNotification|NSDrawerWillOpenNotification|NSPopUpButtonCellWillPopUpNotification|NSPopUpButtonWillPopUpNotification|NSViewGlobalFrameDidChangeNotification|NSViewBoundsDidChangeNotification|NSViewFocusDidChangeNotification|NSViewFrameDidChangeNotification|NSFontSetChangedNotification|NSWindowDidResizeNotification|NSWindowDidResignMainNotification|NSWindowDidResignKeyNotification|NSWindowDidMiniaturizeNotification|NSWindowDidMoveNotification|NSWindowDidBecomeMainNotification|NSWindowDidBecomeKeyNotification|NSWindowDidChangeScreenNotification|NSWindowDidChangeScreenProfileNotification|NSWindowDidDeminiaturizeNotification|NSWindowDidUpdateNotification|NSWindowDidEndSheetNotification|NSWindowDidExposeNotification|NSWindowWillMiniaturizeNotification|NSWindowWillMoveNotification|NSWindowWillBeginSheetNotification|NSWindowWillCloseNotification|NSWorkspaceSessionDidResignActiveNotification|NSWorkspaceSessionDidBecomeActiveNotification|NSWorkspaceDidMountNotification|NSWorkspaceDidTerminateApplicationNotification|NSWorkspaceDidUnmountNotification|NSWorkspaceDidPerformFileOperationNotification|NSWorkspaceDidWakeNotification|NSWorkspaceDidLaunchApplicationNotification|NSWorkspaceWillSleepNotification|NSWorkspaceWillUnmountNotification|NSWorkspaceWillPowerOffNotification|NSWorkspaceWillLaunchApplicationNotification|NSAntialiasThresholdChangedNotification|NSApplicationDidResignActiveNotification|NSApplicationDidBecomeActiveNotification|NSApplicationDidHideNotification|NSApplicationDidChangeScreenParametersNotification|NSApplicationDidUnhideNotification|NSApplicationDidUpdateNotification|NSApplicationDidFinishLaunchingNotification|NSApplicationWillResignActiveNotification|NSApplicationWillBecomeActiveNotification|NSApplicationWillHideNotification|NSApplicationWillTerminateNotification|NSApplicationWillUnhideNotification|NSApplicationWillUpdateNotification|NSApplicationWillFinishLaunchingNotification|NSAppleEventManagerWillProcessFirstEventNotification", + "support.constant.cocoa.leopard": "NSRuleEditorRowTypeSimple|NSRuleEditorRowTypeCompound|NSRuleEditorNestingModeSingle|NSRuleEditorNestingModeSimple|NSRuleEditorNestingModeCompound|NSRuleEditorNestingModeList|NSGradientDrawsBeforeStartingLocation|NSGradientDrawsAfterEndingLocation|NSMinusSetExpressionType|NSMachPortDeallocateReceiveRight|NSMachPortDeallocateSendRight|NSMachPortDeallocateNone|NSMapTableStrongMemory|NSMapTableCopyIn|NSMapTableZeroingWeakMemory|NSMapTableObjectPointerPersonality|NSBoxCustom|NSBundleExecutableArchitectureX86|NSBundleExecutableArchitectureI386|NSBundleExecutableArchitecturePPC|NSBundleExecutableArchitecturePPC64|NSBetweenPredicateOperatorType|NSBackgroundStyleRaised|NSBackgroundStyleDark|NSBackgroundStyleLight|NSBackgroundStyleLowered|NSStringDrawingTruncatesLastVisibleLine|NSStringEncodingConversionExternalRepresentation|NSStringEncodingConversionAllowLossy|NSSubqueryExpressionType|NSSpeechSentenceBoundary|NSSpeechImmediateBoundary|NSSpeechWordBoundary|NSSpellingStateGrammarFlag|NSSpellingStateSpellingFlag|NSSplitViewDividerStyleThin|NSSplitViewDividerStyleThick|NSServiceRequestTimedOutError|NSServiceMiscellaneousError|NSServiceMalformedServiceDictionaryError|NSServiceInvalidPasteboardDataError|NSServiceErrorMinimum|NSServiceErrorMaximum|NSServiceApplicationNotFoundError|NSServiceApplicationLaunchFailedError|NSSegmentStyleRoundRect|NSSegmentStyleRounded|NSSegmentStyleSmallSquare|NSSegmentStyleCapsule|NSSegmentStyleTexturedRounded|NSSegmentStyleTexturedSquare|NSSegmentStyleAutomatic|NSHUDWindowMask|NSHashTableStrongMemory|NSHashTableCopyIn|NSHashTableZeroingWeakMemory|NSHashTableObjectPointerPersonality|NSNoModeColorPanel|NSNetServiceNoAutoRename|NSChangeRedone|NSContainsPredicateOperatorType|NSColorRenderingIntentRelativeColorimetric|NSColorRenderingIntentSaturation|NSColorRenderingIntentDefault|NSColorRenderingIntentPerceptual|NSColorRenderingIntentAbsoluteColorimetric|NSCollectorDisabledOption|NSCellHitNone|NSCellHitContentArea|NSCellHitTrackableArea|NSCellHitEditableTextArea|NSTimeZoneNameStyleShortStandard|NSTimeZoneNameStyleShortDaylightSaving|NSTimeZoneNameStyleStandard|NSTimeZoneNameStyleDaylightSaving|NSTextFieldDatePickerStyle|NSTableViewSelectionHighlightStyleRegular|NSTableViewSelectionHighlightStyleSourceList|NSTrackingMouseMoved|NSTrackingMouseEnteredAndExited|NSTrackingCursorUpdate|NSTrackingInVisibleRect|NSTrackingEnabledDuringMouseDrag|NSTrackingAssumeInside|NSTrackingActiveInKeyWindow|NSTrackingActiveInActiveApp|NSTrackingActiveWhenFirstResponder|NSTrackingActiveAlways|NSIntersectSetExpressionType|NSIndexedColorSpaceModel|NSImageScaleNone|NSImageScaleProportionallyDown|NSImageScaleProportionallyUpOrDown|NSImageScaleAxesIndependently|NSOpenGLPFAAllowOfflineRenderers|NSOperationQueueDefaultMaxConcurrentOperationCount|NSOperationQueuePriorityHigh|NSOperationQueuePriorityNormal|NSOperationQueuePriorityVeryHigh|NSOperationQueuePriorityVeryLow|NSOperationQueuePriorityLow|NSDiacriticInsensitiveSearch|NSDownloadsDirectory|NSUnionSetExpressionType|NSUTF16BigEndianStringEncoding|NSUTF16StringEncoding|NSUTF16LittleEndianStringEncoding|NSUTF32BigEndianStringEncoding|NSUTF32StringEncoding|NSUTF32LittleEndianStringEncoding|NSPointerFunctionsMachVirtualMemory|NSPointerFunctionsMallocMemory|NSPointerFunctionsStrongMemory|NSPointerFunctionsStructPersonality|NSPointerFunctionsCStringPersonality|NSPointerFunctionsCopyIn|NSPointerFunctionsIntegerPersonality|NSPointerFunctionsZeroingWeakMemory|NSPointerFunctionsOpaqueMemory|NSPointerFunctionsOpaquePersonality|NSPointerFunctionsObjectPointerPersonality|NSPointerFunctionsObjectPersonality|NSPathStyleStandard|NSPathStyleNavigationBar|NSPathStylePopUp|NSPatternColorSpaceModel|NSPrintPanelShowsScaling|NSPrintPanelShowsCopies|NSPrintPanelShowsOrientation|NSPrintPanelShowsPaperSize|NSPrintPanelShowsPageRange|NSPrintPanelShowsPageSetupAccessory|NSPrintPanelShowsPreview|NSExecutableRuntimeMismatchError|NSExecutableNotLoadableError|NSExecutableErrorMinimum|NSExecutableErrorMaximum|NSExecutableLinkError|NSExecutableLoadError|NSExecutableArchitectureMismatchError|NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionPrior|NSFindPanelSubstringMatchTypeStartsWith|NSFindPanelSubstringMatchTypeContains|NSFindPanelSubstringMatchTypeEndsWith|NSFindPanelSubstringMatchTypeFullWord|NSFileReadTooLargeError|NSFileReadUnknownStringEncodingError|NSForcedOrderingSearch|NSWindowBackingLocationMainMemory|NSWindowBackingLocationDefault|NSWindowBackingLocationVideoMemory|NSWindowSharingReadOnly|NSWindowSharingReadWrite|NSWindowSharingNone|NSWindowCollectionBehaviorMoveToActiveSpace|NSWindowCollectionBehaviorCanJoinAllSpaces|NSWindowCollectionBehaviorDefault|NSWidthInsensitiveSearch|NSAggregateExpressionType" + }; + var escapedConstRe = "\\\\(?:[abefnrtv'\"?\\\\]|" + + "[0-3]\\d{1,2}|" + + "[4-7]\\d?|" + + "222|" + + "x[a-zA-Z0-9]+)"; var specialVariables = [{ regex: "\\b_cmd\\b", token: "variable.other.selector.objc" @@ -266,391 +239,305 @@ var ObjectiveCHighlightRules = function() { token: "variable.language.objc" } ]; - - var cObj = new CHighlightRules(); + var cObj = new CHighlightRules(NSKeywords); var cRules = cObj.getRules(); - + this.$keywordList = cObj.$keywordList; this.$rules = { - "start": [ - { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, - { - token: [ "storage.type.objc", "punctuation.definition.storage.type.objc", - "entity.name.type.objc", "text", "entity.other.inherited-class.objc" - ], - regex: "(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)" - }, - { - token: [ "storage.type.objc" ], - regex: "(@end)" - }, - { - token: [ "storage.type.objc", "entity.name.type.objc", - "entity.other.inherited-class.objc" - ], - regex: "(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?" - }, - { - token: "string.begin.objc", - regex: '@"', - next: "constant_NSString" - }, - { - token: "storage.type.objc", - regex: "\\bid\\s*<", - next: "protocol_list" - }, - { - token: "keyword.control.macro.objc", - regex: "\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b" - }, - { - token: ["punctuation.definition.keyword.objc", "keyword.control.exception.objc"], - regex: "(@)(try|catch|finally|throw)\\b" - }, - { - token: ["punctuation.definition.keyword.objc", "keyword.other.objc"], - regex: "(@)(defs|encode)\\b" - }, - { - token: ["storage.type.id.objc", "text"], - regex: "(\\bid\\b)(\\s|\\n)?" - }, - { - token: "storage.type.objc", - regex: "\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b" - }, - { - token: [ "punctuation.definition.storage.type.objc", "storage.type.objc"], - regex: "(@)(class|protocol)\\b" - }, - { - token: [ "punctuation.definition.storage.type.objc", "punctuation"], - regex: "(@selector)(\\s*\\()", - next: "selectors" - }, - { - token: [ "punctuation.definition.storage.modifier.objc", "storage.modifier.objc"], - regex: "(@)(synchronized|public|private|protected|package)\\b" - }, - { - token: "constant.language.objc", - regex: "\\bYES|NO|Nil|nil\\b" - }, - { - token: "support.variable.foundation", - regex: "\\bNSApp\\b" - }, - { - token: [ "support.function.cocoa.leopard"], - regex: "(?:\\b)(NS(?:Rect(?:ToCGRect|FromCGRect)|MakeCollectable|S(?:tringFromProtocol|ize(?:ToCGSize|FromCGSize))|Draw(?:NinePartImage|ThreePartImage)|P(?:oint(?:ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))(?:\\b)" - }, - { - token: ["support.function.cocoa"], - regex: "(?:\\b)(NS(?:R(?:ound(?:DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(?:CriticalAlertPanel(?:RelativeToWindow)?|InformationalAlertPanel(?:RelativeToWindow)?|AlertPanel(?:RelativeToWindow)?)|e(?:set(?:MapTable|HashTable)|c(?:ycleZone|t(?:Clip(?:List)?|F(?:ill(?:UsingOperation|List(?:UsingOperation|With(?:Grays|Colors(?:UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(?:dPixel|l(?:MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(?:SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(?:s)?|WindowServerMemory|AlertPanel)|M(?:i(?:n(?:X|Y)|d(?:X|Y))|ouseInRect|a(?:p(?:Remove|Get|Member|Insert(?:IfAbsent|KnownAbsent)?)|ke(?:R(?:ect|ange)|Size|Point)|x(?:Range|X|Y)))|B(?:itsPer(?:SampleFromDepth|PixelFromDepth)|e(?:stDepth|ep|gin(?:CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(?:ho(?:uldRetainWithZone|w(?:sServicesMenuItem|AnimationEffect))|tringFrom(?:R(?:ect|ange)|MapTable|S(?:ize|elector)|HashTable|Class|Point)|izeFromString|e(?:t(?:ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(?:Big(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|Short|Host(?:ShortTo(?:Big|Little)|IntTo(?:Big|Little)|DoubleTo(?:Big|Little)|FloatTo(?:Big|Little)|Long(?:To(?:Big|Little)|LongTo(?:Big|Little)))|Int|Double|Float|L(?:ittle(?:ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(?:ToHost|LongToHost))|ong(?:Long)?)))|H(?:ighlightRect|o(?:stByteOrder|meDirectory(?:ForUser)?)|eight|ash(?:Remove|Get|Insert(?:IfAbsent|KnownAbsent)?)|FSType(?:CodeFromFileType|OfFile))|N(?:umberOfColorComponents|ext(?:MapEnumeratorPair|HashEnumeratorItem))|C(?:o(?:n(?:tainsRect|vert(?:GlyphsToPackedGlyphs|Swapped(?:DoubleToHost|FloatToHost)|Host(?:DoubleToSwapped|FloatToSwapped)))|unt(?:MapTable|HashTable|Frames|Windows(?:ForContext)?)|py(?:M(?:emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(?:MapTables|HashTables))|lassFromString|reate(?:MapTable(?:WithZone)?|HashTable(?:WithZone)?|Zone|File(?:namePboardType|ContentsPboardType)))|TemporaryDirectory|I(?:s(?:ControllerMarker|EmptyRect|FreedObject)|n(?:setRect|crementExtraRefCount|te(?:r(?:sect(?:sRect|ionR(?:ect|ange))|faceStyleForKey)|gralRect)))|Zone(?:Realloc|Malloc|Name|Calloc|Fr(?:omPointer|ee))|O(?:penStepRootDirectory|ffsetRect)|D(?:i(?:sableScreenUpdates|videRect)|ottedFrameRect|e(?:c(?:imal(?:Round|Multiply|S(?:tring|ubtract)|Normalize|Co(?:py|mpa(?:ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(?:MemoryPages|Object))|raw(?:Gr(?:oove|ayBezel)|B(?:itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(?:hiteBezel|indowBackground)|LightBezel))|U(?:serName|n(?:ionR(?:ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(?:Bundle(?:Setup|Cleanup)|Setup(?:VirtualMachine)?|Needs(?:ToLoadClasses|VirtualMachine)|ClassesF(?:orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(?:oint(?:InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(?:n(?:d(?:MapTableEnumeration|HashTableEnumeration)|umerate(?:MapTable|HashTable)|ableScreenUpdates)|qual(?:R(?:ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(?:ileTypeForHFSTypeCode|ullUserName|r(?:ee(?:MapTable|HashTable)|ame(?:Rect(?:WithWidth(?:UsingOperation)?)?|Address)))|Wi(?:ndowList(?:ForContext)?|dth)|Lo(?:cationInRange|g(?:v|PageSize)?)|A(?:ccessibility(?:R(?:oleDescription(?:ForUIElement)?|aiseBadArgumentException)|Unignored(?:Children(?:ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(?:Main|Load)|vailableWindowDepths|ll(?:MapTable(?:Values|Keys)|HashTableObjects|ocate(?:MemoryPages|Collectable|Object)))))(?:\\b)" - }, - { - token: ["support.class.cocoa.leopard"], - regex: "(?:\\b)(NS(?:RuleEditor|G(?:arbageCollector|radient)|MapTable|HashTable|Co(?:ndition|llectionView(?:Item)?)|T(?:oolbarItemGroup|extInputClient|r(?:eeNode|ackingArea))|InvocationOperation|Operation(?:Queue)?|D(?:ictionaryController|ockTile)|P(?:ointer(?:Functions|Array)|athC(?:o(?:ntrol(?:Delegate)?|mponentCell)|ell(?:Delegate)?)|r(?:intPanelAccessorizing|edicateEditor(?:RowTemplate)?))|ViewController|FastEnumeration|Animat(?:ionContext|ablePropertyContainer)))(?:\\b)" - }, - { - token: ["support.class.cocoa"], - regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)" - }, - { - token: ["support.type.cocoa.leopard"], - regex: "(?:\\b)(NS(?:R(?:u(?:nLoop|ler(?:Marker|View))|e(?:sponder|cursiveLock|lativeSpecifier)|an(?:domSpecifier|geSpecifier))|G(?:etCommand|lyph(?:Generator|Storage|Info)|raphicsContext)|XML(?:Node|D(?:ocument|TD(?:Node)?)|Parser|Element)|M(?:iddleSpecifier|ov(?:ie(?:View)?|eCommand)|utable(?:S(?:tring|et)|C(?:haracterSet|opying)|IndexSet|D(?:ictionary|ata)|URLRequest|ParagraphStyle|A(?:ttributedString|rray))|e(?:ssagePort(?:NameServer)?|nu(?:Item(?:Cell)?|View)?|t(?:hodSignature|adata(?:Item|Query(?:ResultGroup|AttributeValueTuple)?)))|a(?:ch(?:BootstrapServer|Port)|trix))|B(?:itmapImageRep|ox|u(?:ndle|tton(?:Cell)?)|ezierPath|rowser(?:Cell)?)|S(?:hadow|c(?:anner|r(?:ipt(?:SuiteRegistry|C(?:o(?:ercionHandler|mmand(?:Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(?:er|View)|een))|t(?:epper(?:Cell)?|atus(?:Bar|Item)|r(?:ing|eam))|imple(?:HorizontalTypesetter|CString)|o(?:cketPort(?:NameServer)?|und|rtDescriptor)|p(?:e(?:cifierTest|ech(?:Recognizer|Synthesizer)|ll(?:Server|Checker))|litView)|e(?:cureTextField(?:Cell)?|t(?:Command)?|archField(?:Cell)?|rializer|gmentedC(?:ontrol|ell))|lider(?:Cell)?|avePanel)|H(?:ost|TTP(?:Cookie(?:Storage)?|URLResponse)|elpManager)|N(?:ib(?:Con(?:nector|trolConnector)|OutletConnector)?|otification(?:Center|Queue)?|u(?:ll|mber(?:Formatter)?)|etService(?:Browser)?|ameSpecifier)|C(?:ha(?:ngeSpelling|racterSet)|o(?:n(?:stantString|nection|trol(?:ler)?|ditionLock)|d(?:ing|er)|unt(?:Command|edSet)|pying|lor(?:Space|P(?:ick(?:ing(?:Custom|Default)|er)|anel)|Well|List)?|m(?:p(?:oundPredicate|arisonPredicate)|boBox(?:Cell)?))|u(?:stomImageRep|rsor)|IImageRep|ell|l(?:ipView|o(?:seCommand|neCommand)|assDescription)|a(?:ched(?:ImageRep|URLResponse)|lendar(?:Date)?)|reateCommand)|T(?:hread|ypesetter|ime(?:Zone|r)|o(?:olbar(?:Item(?:Validations)?)?|kenField(?:Cell)?)|ext(?:Block|Storage|Container|Tab(?:le(?:Block)?)?|Input|View|Field(?:Cell)?|List|Attachment(?:Cell)?)?|a(?:sk|b(?:le(?:Header(?:Cell|View)|Column|View)|View(?:Item)?))|reeController)|I(?:n(?:dex(?:S(?:pecifier|et)|Path)|put(?:Manager|S(?:tream|erv(?:iceProvider|er(?:MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(?:Rep|Cell|View)?)|O(?:ut(?:putStream|lineView)|pen(?:GL(?:Context|Pixel(?:Buffer|Format)|View)|Panel)|bj(?:CTypeSerializationCallBack|ect(?:Controller)?))|D(?:i(?:st(?:antObject(?:Request)?|ributed(?:NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(?:Controller)?|e(?:serializer|cimalNumber(?:Behaviors|Handler)?|leteCommand)|at(?:e(?:Components|Picker(?:Cell)?|Formatter)?|a)|ra(?:wer|ggingInfo))|U(?:ser(?:InterfaceValidations|Defaults(?:Controller)?)|RL(?:Re(?:sponse|quest)|Handle(?:Client)?|C(?:onnection|ache|redential(?:Storage)?)|Download(?:Delegate)?|Prot(?:ocol(?:Client)?|ectionSpace)|AuthenticationChallenge(?:Sender)?)?|n(?:iqueIDSpecifier|doManager|archiver))|P(?:ipe|o(?:sitionalSpecifier|pUpButton(?:Cell)?|rt(?:Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(?:steboard|nel|ragraphStyle|geLayout)|r(?:int(?:Info|er|Operation|Panel)|o(?:cessInfo|tocolChecker|perty(?:Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(?:numerator|vent|PSImageRep|rror|x(?:ception|istsCommand|pression))|V(?:iew(?:Animation)?|al(?:idated(?:ToobarItem|UserInterfaceItem)|ue(?:Transformer)?))|Keyed(?:Unarchiver|Archiver)|Qui(?:ckDrawView|tCommand)|F(?:ile(?:Manager|Handle|Wrapper)|o(?:nt(?:Manager|Descriptor|Panel)?|rm(?:Cell|atter)))|W(?:hoseSpecifier|indow(?:Controller)?|orkspace)|L(?:o(?:c(?:k(?:ing)?|ale)|gicalTest)|evelIndicator(?:Cell)?|ayoutManager)|A(?:ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(?:ication|e(?:Script|Event(?:Manager|Descriptor)))|ffineTransform|lert|r(?:chiver|ray(?:Controller)?))))(?:\\b)" - }, - { - token: ["support.class.quartz"], - regex: "(?:\\b)(C(?:I(?:Sampler|Co(?:ntext|lor)|Image(?:Accumulator)?|PlugIn(?:Registration)?|Vector|Kernel|Filter(?:Generator|Shape)?)|A(?:Renderer|MediaTiming(?:Function)?|BasicAnimation|ScrollLayer|Constraint(?:LayoutManager)?|T(?:iledLayer|extLayer|rans(?:ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(?:nimation(?:Group)?|ction))))(?:\\b)" - }, - { - token: ["support.type.quartz"], - regex: "(?:\\b)(C(?:G(?:Float|Point|Size|Rect)|IFormat|AConstraintAttribute))(?:\\b)" - }, - { - token: ["support.type.cocoa"], - regex: "(?:\\b)(NS(?:R(?:ect(?:Edge)?|ange)|G(?:lyph(?:Relation|LayoutMode)?|radientType)|M(?:odalSession|a(?:trixMode|p(?:Table|Enumerator)))|B(?:itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(?:cr(?:oll(?:er(?:Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(?:Granularity|Direction|Affinity)|wapped(?:Double|Float)|aveOperationType)|Ha(?:sh(?:Table|Enumerator)|ndler(?:2)?)|C(?:o(?:ntrol(?:Size|Tint)|mp(?:ositingOperation|arisonResult))|ell(?:State|Type|ImagePosition|Attribute))|T(?:hreadPrivate|ypesetterGlyphInfo|i(?:ckMarkPosition|tlePosition|meInterval)|o(?:ol(?:TipTag|bar(?:SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(?:TabType|Alignment)|ab(?:State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(?:ContextAuxiliary|PixelFormatAuxiliary)|D(?:ocumentChangeType|atePickerElementFlags|ra(?:werState|gOperation))|UsableScrollerParts|P(?:oint|r(?:intingPageOrder|ogressIndicator(?:Style|Th(?:ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(?:nt(?:SymbolicTraits|TraitMask|Action)|cusRingType)|W(?:indow(?:OrderingMode|Depth)|orkspace(?:IconCreationOptions|LaunchOptions)|ritingDirection)|L(?:ineBreakMode|ayout(?:Status|Direction))|A(?:nimation(?:Progress|Effect)|ppl(?:ication(?:TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle)))(?:\\b)" - }, - { - token: ["support.constant.cocoa"], - regex: "(?:\\b)(NS(?:NotFound|Ordered(?:Ascending|Descending|Same)))(?:\\b)" - }, - { - token: ["support.constant.notification.cocoa.leopard"], - regex: "(?:\\b)(NS(?:MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification)(?:\\b)" - }, - { - token: ["support.constant.notification.cocoa"], - regex: "(?:\\b)(NS(?:Menu(?:Did(?:RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(?:ystemColorsDidChange|plitView(?:DidResizeSubviews|WillResizeSubviews))|C(?:o(?:nt(?:extHelpModeDid(?:Deactivate|Activate)|rolT(?:intDidChange|extDid(?:BeginEditing|Change|EndEditing)))|lor(?:PanelColorDidChange|ListDidChange)|mboBox(?:Selection(?:IsChanging|DidChange)|Will(?:Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(?:oolbar(?:DidRemoveItem|WillAddItem)|ext(?:Storage(?:DidProcessEditing|WillProcessEditing)|Did(?:BeginEditing|Change|EndEditing)|View(?:DidChange(?:Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)))|ImageRepRegistryDidChange|OutlineView(?:Selection(?:IsChanging|DidChange)|ColumnDid(?:Resize|Move)|Item(?:Did(?:Collapse|Expand)|Will(?:Collapse|Expand)))|Drawer(?:Did(?:Close|Open)|Will(?:Close|Open))|PopUpButton(?:CellWillPopUp|WillPopUp)|View(?:GlobalFrameDidChange|BoundsDidChange|F(?:ocusDidChange|rameDidChange))|FontSetChanged|W(?:indow(?:Did(?:Resi(?:ze|gn(?:Main|Key))|M(?:iniaturize|ove)|Become(?:Main|Key)|ChangeScreen(?:|Profile)|Deminiaturize|Update|E(?:ndSheet|xpose))|Will(?:M(?:iniaturize|ove)|BeginSheet|Close))|orkspace(?:SessionDid(?:ResignActive|BecomeActive)|Did(?:Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(?:Sleep|Unmount|PowerOff|LaunchApplication)))|A(?:ntialiasThresholdChanged|ppl(?:ication(?:Did(?:ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(?:nhide|pdate)|FinishLaunching)|Will(?:ResignActive|BecomeActive|Hide|Terminate|U(?:nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification)(?:\\b)" - }, - { - token: ["support.constant.cocoa.leopard"], - regex: "(?:\\b)(NS(?:RuleEditor(?:RowType(?:Simple|Compound)|NestingMode(?:Si(?:ngle|mple)|Compound|List))|GradientDraws(?:BeforeStartingLocation|AfterEndingLocation)|M(?:inusSetExpressionType|a(?:chPortDeallocate(?:ReceiveRight|SendRight|None)|pTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(?:oxCustom|undleExecutableArchitecture(?:X86|I386|PPC(?:64)?)|etweenPredicateOperatorType|ackgroundStyle(?:Raised|Dark|L(?:ight|owered)))|S(?:tring(?:DrawingTruncatesLastVisibleLine|EncodingConversion(?:ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(?:e(?:ech(?:SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(?:GrammarFlag|SpellingFlag))|litViewDividerStyleThi(?:n|ck))|e(?:rvice(?:RequestTimedOutError|M(?:iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(?:inimum|aximum)|Application(?:NotFoundError|LaunchFailedError))|gmentStyle(?:Round(?:Rect|ed)|SmallSquare|Capsule|Textured(?:Rounded|Square)|Automatic)))|H(?:UDWindowMask|ashTable(?:StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(?:oModeColorPanel|etServiceNoAutoRename)|C(?:hangeRedone|o(?:ntainsPredicateOperatorType|l(?:orRenderingIntent(?:RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(?:None|ContentArea|TrackableArea|EditableTextArea))|T(?:imeZoneNameStyle(?:S(?:hort(?:Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(?:Regular|SourceList)|racking(?:Mouse(?:Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(?:ssumeInside|ctive(?:In(?:KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(?:n(?:tersectSetExpressionType|dexedColorSpaceModel)|mageScale(?:None|Proportionally(?:Down|UpOrDown)|AxesIndependently))|Ope(?:nGLPFAAllowOfflineRenderers|rationQueue(?:DefaultMaxConcurrentOperationCount|Priority(?:High|Normal|Very(?:High|Low)|Low)))|D(?:iacriticInsensitiveSearch|ownloadsDirectory)|U(?:nionSetExpressionType|TF(?:16(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(?:BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(?:ointerFunctions(?:Ma(?:chVirtualMemory|llocMemory)|Str(?:ongMemory|uctPersonality)|C(?:StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(?:paque(?:Memory|Personality)|bjectP(?:ointerPersonality|ersonality)))|at(?:hStyle(?:Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(?:Scaling|Copies|Orientation|P(?:a(?:perSize|ge(?:Range|SetupAccessory))|review)))|Executable(?:RuntimeMismatchError|NotLoadableError|ErrorM(?:inimum|aximum)|L(?:inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(?:Initial|Prior)|F(?:i(?:ndPanelSubstringMatchType(?:StartsWith|Contains|EndsWith|FullWord)|leRead(?:TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(?:ndow(?:BackingLocation(?:MainMemory|Default|VideoMemory)|Sharing(?:Read(?:Only|Write)|None)|CollectionBehavior(?:MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType))(?:\\b)" - }, - { - token: ["support.constant.cocoa"], - regex: "(?:\\b)(NS(?:R(?:GB(?:ModeColorPanel|ColorSpaceModel)|ight(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey)|ound(?:RectBezelStyle|Bankers|ed(?:BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(?:CapStyle|JoinStyle))|un(?:StoppedResponse|ContinuesResponse|AbortedResponse)|e(?:s(?:izableWindowMask|et(?:CursorRectsRunLoopOrdering|FunctionKey))|ce(?:ssedBezelStyle|iver(?:sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(?:evancyLevelIndicatorStyle|ative(?:Before|After))|gular(?:SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(?:n(?:domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(?:ModeMatrix|Button)))|G(?:IFFileType|lyph(?:Below|Inscribe(?:B(?:elow|ase)|Over(?:strike|Below)|Above)|Layout(?:WithPrevious|A(?:tAPoint|gainstAPoint))|A(?:ttribute(?:BidiLevel|Soft|Inscribe|Elastic)|bove))|r(?:ooveBorder|eaterThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|a(?:y(?:ModeColorPanel|ColorSpaceModel)|dient(?:None|Con(?:cave(?:Strong|Weak)|vex(?:Strong|Weak)))|phiteControlTint)))|XML(?:N(?:o(?:tationDeclarationKind|de(?:CompactEmptyElement|IsCDATA|OptionsNone|Use(?:SingleQuotes|DoubleQuotes)|Pre(?:serve(?:NamespaceOrder|C(?:haracterReferences|DATA)|DTD|Prefixes|E(?:ntities|mptyElements)|Quotes|Whitespace|A(?:ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(?:ocument(?:X(?:MLKind|HTMLKind|Include)|HTMLKind|T(?:idy(?:XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(?:arser(?:GTRequiredError|XMLDeclNot(?:StartedError|FinishedError)|Mi(?:splaced(?:XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(?:StartedError|FinishedError))|S(?:t(?:andaloneValueError|ringNot(?:StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(?:MTOKENRequiredError|o(?:t(?:ationNot(?:StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(?:haracterRef(?:In(?:DTDError|PrologError|EpilogError)|AtEOFError)|o(?:nditionalSectionNot(?:StartedError|FinishedError)|mment(?:NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(?:ternalError|valid(?:HexCharacterRefError|C(?:haracter(?:RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(?:NameError|Error)))|OutOfMemoryError|D(?:ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(?:RI(?:RequiredError|FragmentError)|n(?:declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(?:CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(?:MissingSemiError|NoNameError|In(?:Internal(?:SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(?:ocessingInstructionNot(?:StartedError|FinishedError)|ematureDocumentEndError))|E(?:n(?:codingNotSupportedError|tity(?:Ref(?:In(?:DTDError|PrologError|EpilogError)|erence(?:MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(?:StartedError|FinishedError)|Is(?:ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(?:StartedError|FinishedError)|xt(?:ernalS(?:tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(?:iteralNot(?:StartedError|FinishedError)|T(?:RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(?:RedefinedError|HasNoValueError|Not(?:StartedError|FinishedError)|ListNot(?:StartedError|FinishedError)))|rocessingInstructionKind)|E(?:ntity(?:GeneralKind|DeclarationKind|UnparsedKind|P(?:ar(?:sedKind|ameterKind)|redefined))|lement(?:Declaration(?:MixedKind|UndefinedKind|E(?:lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(?:N(?:MToken(?:sKind|Kind)|otationKind)|CDATAKind|ID(?:Ref(?:sKind|Kind)|Kind)|DeclarationKind|En(?:tit(?:yKind|iesKind)|umerationKind)|Kind))|M(?:i(?:n(?:XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(?:nthCalendarUnit|deSwitchFunctionKey|use(?:Moved(?:Mask)?|E(?:ntered(?:Mask)?|ventSubtype|xited(?:Mask)?))|veToBezierPathElement|mentary(?:ChangeButton|Push(?:Button|InButton)|Light(?:Button)?))|enuFunctionKey|a(?:c(?:intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(?:XEdge|YEdge))|ACHOperatingSystem)|B(?:MPFileType|o(?:ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(?:Se(?:condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(?:zelBorder|velLineJoinStyle|low(?:Bottom|Top)|gin(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(?:spaceCharacter|tabTextMovement|ingStore(?:Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(?:owser(?:NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(?:h(?:ift(?:JISStringEncoding|KeyMask)|ow(?:ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(?:s(?:ReqFunctionKey|tem(?:D(?:omainMask|efined(?:Mask)?)|FunctionKey))|mbolStringEncoding)|c(?:a(?:nnedOption|le(?:None|ToFit|Proportionally))|r(?:oll(?:er(?:NoPart|Increment(?:Page|Line|Arrow)|Decrement(?:Page|Line|Arrow)|Knob(?:Slot)?|Arrows(?:M(?:inEnd|axEnd)|None|DefaultSetting))|Wheel(?:Mask)?|LockFunctionKey)|eenChangedEventType))|t(?:opFunctionKey|r(?:ingDrawing(?:OneShot|DisableScreenFontSubstitution|Uses(?:DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(?:Status(?:Reading|NotOpen|Closed|Open(?:ing)?|Error|Writing|AtEnd)|Event(?:Has(?:BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(?:ndEncountered|rrorOccurred)))))|i(?:ngle(?:DateMode|UnderlineStyle)|ze(?:DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(?:condCalendarUnit|lect(?:By(?:Character|Paragraph|Word)|i(?:ng(?:Next|Previous)|onAffinity(?:Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(?:Momentary|Select(?:One|Any)))|quareLineCapStyle|witchButton|ave(?:ToOperation|Op(?:tions(?:Yes|No|Ask)|eration)|AsOperation)|mall(?:SquareBezelStyle|C(?:ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(?:ighlightModeMatrix|SBModeColorPanel|o(?:ur(?:Minute(?:SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(?:Never|OnlyFromMainDocumentDomain|Always)|e(?:lp(?:ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(?:MonthDa(?:yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(?:o(?:n(?:StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(?:ification(?:SuspensionBehavior(?:Hold|Coalesce|D(?:eliverImmediately|rop))|NoCoalescing|CoalescingOn(?:Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(?:cr(?:iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(?:itle|opLevelContainersSpecifierError|abs(?:BezelBorder|NoBorder|LineBorder))|I(?:nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(?:ll(?:Glyph|CellType)|m(?:eric(?:Search|PadKeyMask)|berFormatter(?:Round(?:Half(?:Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(?:10|Default)|S(?:cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(?:ercentStyle|ad(?:Before(?:Suffix|Prefix)|After(?:Suffix|Prefix))))))|e(?:t(?:Services(?:BadArgumentError|NotFoundError|C(?:ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(?:StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(?:t(?:iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(?:hange(?:ReadOtherContents|GrayCell(?:Mask)?|BackgroundCell(?:Mask)?|Cleared|Done|Undone|Autosaved)|MYK(?:ModeColorPanel|ColorSpaceModel)|ircular(?:BezelStyle|Slider)|o(?:n(?:stantValueExpressionType|t(?:inuousCapacityLevelIndicatorStyle|entsCellMask|ain(?:sComparison|erSpecifierError)|rol(?:Glyph|KeyMask))|densedFontMask)|lor(?:Panel(?:RGBModeMask|GrayModeMask|HSBModeMask|C(?:MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(?:p(?:osite(?:XOR|Source(?:In|O(?:ut|ver)|Atop)|Highlight|C(?:opy|lear)|Destination(?:In|O(?:ut|ver)|Atop)|Plus(?:Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(?:stom(?:SelectorPredicateOperatorType|PaletteModeColorPanel)|r(?:sor(?:Update(?:Mask)?|PointingDevice)|veToBezierPathElement))|e(?:nterT(?:extAlignment|abStopType)|ll(?:State|H(?:ighlighted|as(?:Image(?:Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(?:Bordered|InsetButton)|Disabled|Editable|LightsBy(?:Gray|Background|Contents)|AllowsMixedState))|l(?:ipPagination|o(?:s(?:ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(?:ControlTint|DisplayFunctionKey|LineFunctionKey))|a(?:seInsensitive(?:Search|PredicateOption)|n(?:notCreateScriptCommandError|cel(?:Button|TextMovement))|chesDirectory|lculation(?:NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(?:itical(?:Request|AlertStyle)|ayonModeColorPanel))|T(?:hick(?:SquareBezelStyle|erSquareBezelStyle)|ypesetter(?:Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(?:ineBreakAction|atestBehavior))|i(?:ckMark(?:Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(?:olbarItemVisibilityPriority(?:Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(?:Compression(?:N(?:one|EXT)|CCITTFAX(?:3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(?:rminate(?:Now|Cancel|Later)|xt(?:Read(?:InapplicableDocumentTypeError|WriteErrorM(?:inimum|aximum))|Block(?:M(?:i(?:nimum(?:Height|Width)|ddleAlignment)|a(?:rgin|ximum(?:Height|Width)))|B(?:o(?:ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(?:ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(?:Characters|Attributes)|CellType|ured(?:RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(?:FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(?:RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(?:Character|TextMovement|le(?:tP(?:oint(?:Mask|EventSubtype)?|roximity(?:Mask|EventSubtype)?)|Column(?:NoResizing|UserResizingMask|AutoresizingMask)|View(?:ReverseSequentialColumnAutoresizingStyle|GridNone|S(?:olid(?:HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(?:n(?:sert(?:CharFunctionKey|FunctionKey|LineFunctionKey)|t(?:Type|ernalS(?:criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(?:Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(?:2022JPStringEncoding|Latin(?:1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(?:R(?:ight|ep(?:MatchesDevice|LoadStatus(?:ReadingHeader|Completed|InvalidData|Un(?:expectedEOF|knownType)|WillNeedAllData)))|Below|C(?:ellType|ache(?:BySize|Never|Default|Always))|Interpolation(?:High|None|Default|Low)|O(?:nly|verlaps)|Frame(?:Gr(?:oove|ayBezel)|Button|None|Photo)|L(?:oadStatus(?:ReadError|C(?:ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(?:lign(?:Right|Bottom(?:Right|Left)?|Center|Top(?:Right|Left)?|Left)|bove)))|O(?:n(?:State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|TextMovement)|SF1OperatingSystem|pe(?:n(?:GL(?:GO(?:Re(?:setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(?:R(?:obust|endererID)|M(?:inimumPolicy|ulti(?:sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(?:creenMask|te(?:ncilSize|reo)|ingleRenderer|upersample|ample(?:s|Buffers|Alpha))|NoRecovery|C(?:o(?:lor(?:Size|Float)|mpliant)|losestPolicy)|OffScreen|D(?:oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(?:cc(?:umSize|elerated)|ux(?:Buffers|DepthStencil)|l(?:phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(?:criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(?:B(?:itfield|oolType)|S(?:hortType|tr(?:ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(?:Type|longType)|ArrayType))|D(?:i(?:s(?:c(?:losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(?:Selection|PredicateModifier))|o(?:c(?:ModalWindowMask|ument(?:Directory|ationDirectory))|ubleType|wn(?:TextMovement|ArrowFunctionKey))|e(?:s(?:cendingPageOrder|ktopDirectory)|cimalTabStopType|v(?:ice(?:NColorSpaceModel|IndependentModifierFlagsMask)|eloper(?:Directory|ApplicationDirectory))|fault(?:ControlTint|TokenStyle)|lete(?:Char(?:acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(?:yCalendarUnit|teFormatter(?:MediumStyle|Behavior(?:10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(?:wer(?:Clos(?:ingState|edState)|Open(?:ingState|State))|gOperation(?:Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(?:ser(?:CancelledError|D(?:irectory|omainMask)|FunctionKey)|RL(?:Handle(?:NotLoaded|Load(?:Succeeded|InProgress|Failed))|CredentialPersistence(?:None|Permanent|ForSession))|n(?:scaledWindowMask|cachedRead|i(?:codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(?:o(?:CloseGroupingRunLoopOrdering|FunctionKey)|e(?:finedDateComponent|rline(?:Style(?:Single|None|Thick|Double)|Pattern(?:Solid|D(?:ot|ash(?:Dot(?:Dot)?)?)))))|known(?:ColorSpaceModel|P(?:ointingDevice|ageOrder)|KeyS(?:criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(?:dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(?:ustifiedTextAlignment|PEG(?:2000FileType|FileType)|apaneseEUC(?:GlyphPacking|StringEncoding))|P(?:o(?:s(?:t(?:Now|erFontMask|WhenIdle|ASAP)|iti(?:on(?:Replace|Be(?:fore|ginning)|End|After)|ve(?:IntType|DoubleType|FloatType)))|pUp(?:NoArrow|ArrowAt(?:Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(?:InCell(?:Mask)?|OnPushOffButton)|e(?:n(?:TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(?:Mask)?)|P(?:S(?:caleField|tatus(?:Title|Field)|aveButton)|N(?:ote(?:Title|Field)|ame(?:Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(?:a(?:perFeedButton|ge(?:Range(?:To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(?:useFunctionKey|ragraphSeparatorCharacter|ge(?:DownFunctionKey|UpFunctionKey))|r(?:int(?:ing(?:ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(?:NotFound|OK|Error)|FunctionKey)|o(?:p(?:ertyList(?:XMLFormat|MutableContainers(?:AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(?:BarStyle|SpinningStyle|Preferred(?:SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(?:ssedTab|vFunctionKey))|L(?:HeightForm|CancelButton|TitleField|ImageButton|O(?:KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(?:n(?:terCharacter|d(?:sWith(?:Comparison|PredicateOperatorType)|FunctionKey))|v(?:e(?:nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(?:Comparison|PredicateOperatorType)|ra(?:serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(?:clude(?:10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(?:i(?:ew(?:M(?:in(?:XMargin|YMargin)|ax(?:XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(?:lidationErrorM(?:inimum|aximum)|riableExpressionType))|Key(?:SpecifierEvaluationScriptError|Down(?:Mask)?|Up(?:Mask)?|PathExpressionType|Value(?:MinusSetMutation|SetSetMutation|Change(?:Re(?:placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(?:New|Old)|UnionSetMutation|ValidationError))|QTMovie(?:NormalPlayback|Looping(?:BackAndForthPlayback|Playback))|F(?:1(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(?:nd(?:PanelAction(?:Replace(?:A(?:ndFind|ll(?:InSelection)?))?|S(?:howFindPanel|e(?:tFindString|lectAll(?:InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(?:Read(?:No(?:SuchFileError|PermissionError)|CorruptFileError|In(?:validFileNameError|applicableStringEncodingError)|Un(?:supportedSchemeError|knownError))|HandlingPanel(?:CancelButton|OKButton)|NoSuchFileError|ErrorM(?:inimum|aximum)|Write(?:NoPermissionError|In(?:validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(?:supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(?:1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(?:nt(?:Mo(?:noSpaceTrait|dernSerifsClass)|BoldTrait|S(?:ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(?:o(?:ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(?:ntegerAdvancementsRenderingMode|talicTrait)|O(?:ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(?:nknownClass|IOptimizedTrait)|Panel(?:S(?:hadowEffectModeMask|t(?:andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(?:ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(?:amilyClassMask|reeformSerifsClass)|Antialiased(?:RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(?:Below|Type(?:None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(?:attingError(?:M(?:inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(?:ExpressionType|KeyMask)|3(?:1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(?:RevertButton|S(?:ize(?:Title|Field)|etButton)|CurrentField|Preview(?:Button|Field))|l(?:oat(?:ingPointSamplesBitmapFormat|Type)|agsChanged(?:Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(?:heelModeColorPanel|indow(?:s(?:NTOperatingSystem|CP125(?:1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(?:InterfaceStyle|OperatingSystem))|M(?:iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(?:NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(?:ctivation|ddingToRecents)|A(?:sync|nd(?:Hide(?:Others)?|Print)|llowingClassicStartup))|eek(?:day(?:CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(?:ntsBidiLevels|rningAlertStyle)|r(?:itingDirection(?:RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(?:i(?:stModeMatrix|ne(?:Moves(?:Right|Down|Up|Left)|B(?:order|reakBy(?:C(?:harWrapping|lipping)|Truncating(?:Middle|Head|Tail)|WordWrapping))|S(?:eparatorCharacter|weep(?:Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(?:ssThan(?:Comparison|OrEqualTo(?:Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(?:Mouse(?:D(?:own(?:Mask)?|ragged(?:Mask)?)|Up(?:Mask)?)|T(?:ext(?:Movement|Alignment)|ab(?:sBezelBorder|StopType))|ArrowFunctionKey))|a(?:yout(?:RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(?:sc(?:iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(?:y(?:Type|PredicateModifier|EventMask)|choredSearch|imation(?:Blocking|Nonblocking(?:Threaded)?|E(?:ffect(?:DisappearingItemDefault|Poof)|ase(?:In(?:Out)?|Out))|Linear)|dPredicateType)|t(?:Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(?:obe(?:GB1CharacterCollection|CNS1CharacterCollection|Japan(?:1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(?:saveOperation|Pagination)|pp(?:lication(?:SupportDirectory|D(?:irectory|e(?:fined(?:Mask)?|legateReply(?:Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(?:Mask)?)|l(?:ternateKeyMask|pha(?:ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(?:SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(?:ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(?:sWrongScriptError|EvaluationScriptError)|bove(?:Bottom|Top)|WTEventType)))(?:\\b)" - }, - { - token: "support.function.C99.c", - regex: C_Highlight_File.cFunctions - }, - { - token : cObj.getKeywords(), - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token: "punctuation.section.scope.begin.objc", - regex: "\\[", - next: "bracketed_content" - }, - { - token: "meta.function.objc", - regex: "^(?:-|\\+)\\s*" - } - ], - "constant_NSString": [ - { - token: "constant.character.escape.objc", - regex: escapedConstRe - }, - { - token: "invalid.illegal.unknown-escape.objc", - regex: "\\\\." - }, - { - token: "string", - regex: '[^"\\\\]+' - }, - { - token: "punctuation.definition.string.end", - regex: "\"", - next: "start" - } - ], - "protocol_list": [ - { - token: "punctuation.section.scope.end.objc", - regex: ">", - next: "start" - }, - { - token: "support.other.protocol.objc", - regex: "\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b" - } - ], - "selectors": [ - { - token: "support.function.any-method.name-of-parameter.objc", - regex: "\\b(?:[a-zA-Z_:][\\w]*)+" - }, - { - token: "punctuation", - regex: "\\)", - next: "start" - } - ], - "bracketed_content": [ - { - token: "punctuation.section.scope.end.objc", - regex: "]", - next: "start" - }, - { - token: ["support.function.any-method.objc"], - regex: "(?:predicateWithFormat:| NSPredicate predicateWithFormat:)", - next: "start" - }, - { - token: "support.function.any-method.objc", - regex: "\\w+(?::|(?=]))", - next: "start" - } - ], - "bracketed_strings": [ - { - token: "punctuation.section.scope.end.objc", - regex: "]", - next: "start" - }, - { - token: "keyword.operator.logical.predicate.cocoa", - regex: "\\b(?:AND|OR|NOT|IN)\\b" - }, - { - token: ["invalid.illegal.unknown-method.objc", "punctuation.separator.arguments.objc"], - regex: "\\b(\\w+)(:)" - }, - { - regex: "\\b(?:ALL|ANY|SOME|NONE)\\b", - token: "constant.language.predicate.cocoa" - }, - { - regex: "\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b", - token: "constant.language.predicate.cocoa" - }, - { - regex: "\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b", - token: "keyword.operator.comparison.predicate.cocoa" - }, - { - regex: "\\bC(?:ASEINSENSITIVE|I)\\b", - token: "keyword.other.modifier.predicate.cocoa" - }, - { - regex: "\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b", - token: "keyword.other.predicate.cocoa" - }, - { - regex: escapedConstRe, - token: "constant.character.escape.objc" - }, - { - regex: "\\\\.", - token: "invalid.illegal.unknown-escape.objc" - }, - { - token: "string", - regex: '[^"\\\\]' - }, - { - token: "punctuation.definition.string.end.objc", - regex: "\"", - next: "predicates" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "methods" : [ - { - token : "meta.function.objc", - regex : "(?=\\{|#)|;", - next : "start" - } - ] -}; + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, + { + token: ["storage.type.objc", "punctuation.definition.storage.type.objc", + "entity.name.type.objc", "text", "entity.other.inherited-class.objc" + ], + regex: "(@)(interface|protocol)(?!.+;)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*:\\s*)([A-Za-z]+)" + }, + { + token: ["storage.type.objc"], + regex: "(@end)" + }, + { + token: ["storage.type.objc", "entity.name.type.objc", + "entity.other.inherited-class.objc" + ], + regex: "(@implementation)(\\s+[A-Za-z_][A-Za-z0-9_]*)(\\s*?::\\s*(?:[A-Za-z][A-Za-z0-9]*))?" + }, + { + token: "string.begin.objc", + regex: '@"', + next: "constant_NSString" + }, + { + token: "storage.type.objc", + regex: "\\bid\\s*<", + next: "protocol_list" + }, + { + token: "keyword.control.macro.objc", + regex: "\\bNS_DURING|NS_HANDLER|NS_ENDHANDLER\\b" + }, + { + token: ["punctuation.definition.keyword.objc", "keyword.control.exception.objc"], + regex: "(@)(try|catch|finally|throw)\\b" + }, + { + token: ["punctuation.definition.keyword.objc", "keyword.other.objc"], + regex: "(@)(defs|encode)\\b" + }, + { + token: ["storage.type.id.objc", "text"], + regex: "(\\bid\\b)(\\s|\\n)?" + }, + { + token: "storage.type.objc", + regex: "\\bIBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class\\b" + }, + { + token: ["punctuation.definition.storage.type.objc", "storage.type.objc"], + regex: "(@)(class|protocol)\\b" + }, + { + token: ["punctuation.definition.storage.type.objc", "punctuation"], + regex: "(@selector)(\\s*\\()", + next: "selectors" + }, + { + token: ["punctuation.definition.storage.modifier.objc", "storage.modifier.objc"], + regex: "(@)(synchronized|public|private|protected|package)\\b" + }, + { + token: "constant.language.objc", + regex: "\\bYES|NO|Nil|nil\\b" + }, + { + token: "support.variable.foundation", + regex: "\\bNSApp\\b" + }, + { + token: cObj.getKeywords(), + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token: "punctuation.section.scope.begin.objc", + regex: "\\[", + next: "bracketed_content" + }, + { + token: "meta.function.objc", + regex: "^(?:-|\\+)\\s*" + } + ], + "constant_NSString": [ + { + token: "constant.character.escape.objc", + regex: escapedConstRe + }, + { + token: "invalid.illegal.unknown-escape.objc", + regex: "\\\\." + }, + { + token: "string", + regex: '[^"\\\\]+' + }, + { + token: "punctuation.definition.string.end", + regex: "\"", + next: "start" + } + ], + "protocol_list": [ + { + token: "punctuation.section.scope.end.objc", + regex: ">", + next: "start" + }, + { + token: "support.other.protocol.objc", + regex: "\bNS(?:GlyphStorage|M(?:utableCopying|enuItem)|C(?:hangeSpelling|o(?:ding|pying|lorPicking(?:Custom|Default)))|T(?:oolbarItemValidations|ext(?:Input|AttachmentCell))|I(?:nputServ(?:iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(?:CTypeSerializationCallBack|ect)|D(?:ecimalNumberBehaviors|raggingInfo)|U(?:serInterfaceValidations|RL(?:HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(?:ToobarItem|UserInterfaceItem)|Locking)\b" + } + ], + "selectors": [ + { + token: "support.function.any-method.name-of-parameter.objc", + regex: "\\b(?:[a-zA-Z_:][\\w]*)+" + }, + { + token: "punctuation", + regex: "\\)", + next: "start" + } + ], + "bracketed_content": [ + { + token: "punctuation.section.scope.end.objc", + regex: "]", + next: "start" + }, + { + token: ["support.function.any-method.objc"], + regex: "(?:predicateWithFormat:| NSPredicate predicateWithFormat:)", + next: "start" + }, + { + token: "support.function.any-method.objc", + regex: "\\w+(?::|(?=]))", + next: "start" + } + ], + "bracketed_strings": [ + { + token: "punctuation.section.scope.end.objc", + regex: "]", + next: "start" + }, + { + token: "keyword.operator.logical.predicate.cocoa", + regex: "\\b(?:AND|OR|NOT|IN)\\b" + }, + { + token: ["invalid.illegal.unknown-method.objc", "punctuation.separator.arguments.objc"], + regex: "\\b(\\w+)(:)" + }, + { + regex: "\\b(?:ALL|ANY|SOME|NONE)\\b", + token: "constant.language.predicate.cocoa" + }, + { + regex: "\\b(?:NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b", + token: "constant.language.predicate.cocoa" + }, + { + regex: "\\b(?:MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b", + token: "keyword.operator.comparison.predicate.cocoa" + }, + { + regex: "\\bC(?:ASEINSENSITIVE|I)\\b", + token: "keyword.other.modifier.predicate.cocoa" + }, + { + regex: "\\b(?:ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b", + token: "keyword.other.predicate.cocoa" + }, + { + regex: escapedConstRe, + token: "constant.character.escape.objc" + }, + { + regex: "\\\\.", + token: "invalid.illegal.unknown-escape.objc" + }, + { + token: "string", + regex: '[^"\\\\]' + }, + { + token: "punctuation.definition.string.end.objc", + regex: "\"", + next: "predicates" + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: ".*?\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "methods": [ + { + token: "meta.function.objc", + regex: "(?=\\{|#)|;", + next: "start" + } + ] + }; for (var r in cRules) { if (this.$rules[r]) { if (this.$rules[r].push) this.$rules[r].push.apply(this.$rules[r], cRules[r]); - } else { + } + else { this.$rules[r] = cRules[r]; } } - - this.$rules.bracketed_content = this.$rules.bracketed_content.concat( - this.$rules.start, specialVariables - ); - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.$rules.bracketed_content = this.$rules.bracketed_content.concat(this.$rules.start, specialVariables); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - oop.inherits(ObjectiveCHighlightRules, CHighlightRules); - exports.ObjectiveCHighlightRules = ObjectiveCHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -663,71 +550,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/objectivec",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/objectivec_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/objectivec",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/objectivec_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ObjectiveCHighlightRules = require("./objectivec_highlight_rules").ObjectiveCHighlightRules; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ObjectiveCHighlightRules; this.foldingRules = new CStyleFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/objectivec"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/objectivec"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-ocaml.js b/vendor/assets/javascripts/ace/mode-ocaml.js index 48b1bbe5..1baf0284 100644 --- a/vendor/assets/javascripts/ace/mode-ocaml.js +++ b/vendor/assets/javascripts/ace/mode-ocaml.js @@ -1,23 +1,14 @@ -define("ace/mode/ocaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ocaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var OcamlHighlightRules = function() { - - var keywords = ( - "and|as|assert|begin|class|constraint|do|done|downto|else|end|" + - "exception|external|for|fun|function|functor|if|in|include|" + - "inherit|initializer|lazy|let|match|method|module|mutable|new|" + +var OcamlHighlightRules = function () { + var keywords = ("and|as|assert|begin|class|constraint|do|done|downto|else|end|" + + "exception|external|for|fun|function|functor|if|in|include|" + + "inherit|initializer|lazy|let|match|method|module|mutable|new|" + "object|of|open|or|private|rec|sig|struct|then|to|try|type|val|" + - "virtual|when|while|with" - ); - + "virtual|when|while|with"); var builtinConstants = ("true|false"); - - var builtinFunctions = ( - "abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|" + + var builtinFunctions = ("abs|abs_big_int|abs_float|abs_num|abstract_tag|accept|access|acos|add|" + "add_available_units|add_big_int|add_buffer|add_channel|add_char|" + "add_initializer|add_int_big_int|add_interfaces|add_num|add_string|" + "add_substitute|add_substring|alarm|allocated_bytes|allow_only|" + @@ -189,226 +180,199 @@ var OcamlHighlightRules = function() { "wait|wait|wait|wait_next_event|wait_pid|wait_read|wait_signal|" + "wait_timed_read|wait_timed_write|wait_write|waitpid|white|" + "widen|window_id|word_size|wrap|wrap_abort|write|yellow|yield|zero|zero_big_int|" + - "Arg|Arith_status|Array|Array1|Array2|Array3|ArrayLabels|Big_int|Bigarray|" + "Buffer|Callback|CamlinternalOO|Char|Complex|Condition|Dbm|Digest|Dynlink|" + "Event|Filename|Format|Gc|Genarray|Genlex|Graphics|GraphicsX11|Hashtbl|" + "Int32|Int64|LargeFile|Lazy|Lexing|List|ListLabels|Make|Map|Marshal|" + "MoreLabels|Mutex|Nativeint|Num|Obj|Oo|Parsing|Pervasives|Printexc|" + "Printf|Queue|Random|Scanf|Scanning|Set|Sort|Stack|State|StdLabels|Str|" + - "Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak" - ); - + "Stream|String|StringLabels|Sys|Thread|ThreadUnix|Tk|Unix|UnixLabels|Weak"); var keywordMapper = this.createKeywordMapper({ "variable.language": "this", "keyword": keywords, "constant.language": builtinConstants, "support.function": builtinFunctions }, "identifier"); - var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var octInteger = "(?:0[oO]?[0-7]+)"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var binInteger = "(?:0[bB][01]+)"; var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - var exponent = "(?:[eE][+-]?\\d+)"; var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : '\\(\\*.*?\\*\\)\\s*?$' + token: "comment", + regex: '\\(\\*.*?\\*\\)\\s*?$' }, { - token : "comment", - regex : '\\(\\*.*', - next : "comment" + token: "comment", + regex: '\\(\\*.*', + next: "comment" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // single char - regex : "'.'" + token: "string", // single char + regex: "'.'" }, { - token : "string", // " string - regex : '"', - next : "qstring" + token: "string", // " string + regex: '"', + next: "qstring" }, { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" + token: "constant.numeric", // imaginary + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" }, { - token : "constant.numeric", // float - regex : floatNumber + token: "constant.numeric", // float + regex: floatNumber }, { - token : "constant.numeric", // integer - regex : integer + "\\b" + token: "constant.numeric", // integer + regex: integer + "\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=" + token: "keyword.operator", + regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\)", - next : "start" + token: "comment", // closing comment + regex: "\\*\\)", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - - "qstring" : [ + "qstring": [ { - token : "string", - regex : '"', - next : "start" + token: "string", + regex: '"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ] }; }; - oop.inherits(OcamlHighlightRules, TextHighlightRules); - exports.OcamlHighlightRules = OcamlHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/ocaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ocaml_highlight_rules","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ocaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ocaml_highlight_rules","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var OcamlHighlightRules = require("./ocaml_highlight_rules").OcamlHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var Range = require("../range").Range; - -var Mode = function() { +var Mode = function () { this.HighlightRules = OcamlHighlightRules; this.$behaviour = this.$defaultBehaviour; - - this.$outdent = new MatchingBraceOutdent(); + this.$outdent = new MatchingBraceOutdent(); }; oop.inherits(Mode, TextMode); - var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|with))\s*$/; - -(function() { - - this.toggleCommentLines = function(state, doc, startRow, endRow) { +(function () { + this.toggleCommentLines = function (state, doc, startRow, endRow) { var i, line; var outdent = true; var re = /^\s*\(\*(.*)\*\)/; - - for (i=startRow; i<= endRow; i++) { + for (i = startRow; i <= endRow; i++) { if (!re.test(doc.getLine(i))) { outdent = false; break; } } - var range = new Range(0, 0, 0, 0); - for (i=startRow; i<= endRow; i++) { + for (i = startRow; i <= endRow; i++) { line = doc.getLine(i); - range.start.row = i; - range.end.row = i; + range.start.row = i; + range.end.row = i; range.end.column = line.length; - doc.replace(range, outdent ? line.match(re)[1] : "(*" + line + "*)"); } }; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && state === 'start' && indenter.test(line)) indent += tab; return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/ocaml"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/ocaml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-odin.js b/vendor/assets/javascripts/ace/mode-odin.js new file mode 100644 index 00000000..0077e6b8 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-odin.js @@ -0,0 +1,449 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +define("ace/mode/odin_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){var __read = (this && this.__read) || function (o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +}; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var OdinHighlightRules = function () { + var keywords = "using|transmute|cast|distinct|opaque|where|" + + "struct|enum|union|bit_field|bit_set|" + + "if|when|else|do|switch|case|break|fallthrough|" + + "size_of|offset_of|type_info_if|typeid_of|type_of|align_of|" + + "or_return|or_else|inline|no_inline|" + + "import|package|foreign|defer|auto_cast|map|matrix|proc|" + + "for|continue|not_in|in"; + var cartesian = function () { + var a = []; + for (var _i = 0; _i < arguments.length; _i++) { + a[_i] = arguments[_i]; + } + return a + .reduce(function (a, b) { return a.flatMap(function (d) { return b.map(function (e) { return [d, e].flat(); }); }); }) + .map(function (parts) { return parts.join(""); }); + }; + var builtinTypes = __spreadArray(__spreadArray(__spreadArray(__spreadArray([ + "int", + "uint", + "uintptr", + "typeid", + "rawptr", + "string", + "cstring", + "i8", + "u8", + "any", + "byte", + "rune", + "bool", + "b8", + "b16", + "b32", + "b64" + ], __read(cartesian(["i", "u"], ["16", "32", "64", "128"], ["", "le", "be"])), false), __read(cartesian(["f"], ["16", "32", "64"], ["", "le", "be"])), false), __read(cartesian(["complex"], ["32", "64", "128"])), false), __read(cartesian(["quaternion"], ["64", "128", "256"])), false).join("|"); + var operators = [ + "\\*", + "/", + "%", + "%%", + "<<", + ">>", + "&", + "&~", + "\\+", + "\\-", + "~", + "\\|", + ">", + "<", + "<=", + ">=", + "==", + "!=" + ] + .concat(":") + .map(function (operator) { return operator + "="; }) + .concat("=", ":=", "::", "->", "\\^", "&", ":") + .join("|"); + var builtinFunctions = "new|cap|copy|panic|len|make|delete|append|free"; + var builtinConstants = "nil|true|false"; + var keywordMapper = this.createKeywordMapper({ + keyword: keywords, + "constant.language": builtinConstants, + "support.function": builtinFunctions, + "support.type": builtinTypes + }, ""); + var stringEscapeRe = "\\\\(?:[0-7]{3}|x\\h{2}|u{4}|U\\h{6}|[abfnrtv'\"\\\\])".replace(/\\h/g, "[a-fA-F\\d]"); + this.$rules = { + start: [ + { + token: "comment", + regex: /\/\/.*$/ + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment.start", // multi line comment + regex: "\\/\\*", + next: "comment" + }, + { + token: "string", // single line + regex: /"(?:[^"\\]|\\.)*?"/ + }, + { + token: "string", // raw + regex: "`", + next: "bqstring" + }, + { + token: "support.constant", + regex: /#[a-z_]+/ + }, + { + token: "constant.numeric", // rune + regex: "'(?:[^\\'\uD800-\uDBFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|" + + stringEscapeRe.replace('"', "") + + ")'" + }, + { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, + { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, + { + token: [ + "entity.name.function", + "text", + "keyword.operator", + "text", + "keyword" + ], + regex: "([a-zA-Z_$][a-zA-Z0-9_$]*)(\\s+)(::)(\\s+)(proc)\\b" + }, + { + token: function (val) { + if (val[val.length - 1] == "(") { + return [ + { + type: keywordMapper(val.slice(0, -1)) || "support.function", + value: val.slice(0, -1) + }, + { + type: "paren.lparen", + value: val.slice(-1) + } + ]; + } + return keywordMapper(val) || "identifier"; + }, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b\\(?" + }, + { + token: "keyword.operator", + regex: operators + }, + { + token: "punctuation.operator", + regex: "\\?|\\,|\\;|\\." + }, + { + token: "paren.lparen", + regex: "[[({]" + }, + { + token: "paren.rparen", + regex: "[\\])}]" + }, + { + token: "text", + regex: "\\s+" + } + ], + comment: [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, + { + defaultToken: "comment" + } + ], + bqstring: [ + { + token: "string", + regex: "`", + next: "start" + }, + { + defaultToken: "string" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [ + DocCommentHighlightRules.getEndRule("start") + ]); +}; +oop.inherits(OdinHighlightRules, TextHighlightRules); +exports.OdinHighlightRules = OdinHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/odin",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/odin_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var OdinHighlightRules = require("./odin_highlight_rules").OdinHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = OdinHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; //end getNextLineIndent + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/odin"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/odin"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-partiql.js b/vendor/assets/javascripts/ace/mode-partiql.js new file mode 100644 index 00000000..a9d7ab15 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-partiql.js @@ -0,0 +1,750 @@ +define("ace/mode/ion_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS GENERATED BY 'ligand' USING 'mode_highlight_rules.js' +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var IonHighlightRules = function () { + var k_keywords_bool = "TRUE|FALSE"; + var k_bool = k_keywords_bool; + var k_keywords_null = "NULL.NULL|NULL.BOOL|NULL.INT|NULL.FLOAT|NULL.DECIMAL|NULL.TIMESTAMP|NULL.STRING|NULL.SYMBOL|NULL.BLOB|NULL.CLOB|" + + "NULL.STRUCT|NULL.LIST|NULL.SEXP|NULL"; + var k_null = k_keywords_null; + var keywordMapper = this.createKeywordMapper({ + "constant.language.bool.ion": k_bool, + "constant.language.null.ion": k_null + }, "constant.other.symbol.identifier.ion", true); + var keywordMapperRule = { + token: keywordMapper, + regex: "\\b\\w+(?:\\.\\w+)?\\b" + }; + this.$rules = { + "start": [ + { + "include": "value" + } + ], + "value": [ + { + "include": "whitespace" + }, + { + "include": "comment" + }, + { + "include": "annotation" + }, + { + "include": "string" + }, + { + "include": "number" + }, + { + "include": "keywords" + }, + { + "include": "symbol" + }, + { + "include": "clob" + }, + { + "include": "blob" + }, + { + "include": "struct" + }, + { + "include": "list" + }, + { + "include": "sexp" + } + ], + "sexp": [ + { + "token": "punctuation.definition.sexp.begin.ion", + "regex": "\\(", + "push": [ + { + "token": "punctuation.definition.sexp.end.ion", + "regex": "\\)", + "next": "pop" + }, + { + "include": "comment" + }, + { + "include": "value" + }, + { + "token": "storage.type.symbol.operator.ion", + "regex": "[\\!\\#\\%\\&\\*\\+\\-\\./\\;\\<\\=\\>\\?\\@\\^\\`\\|\\~]+" + } + ] + } + ], + "comment": [ + { + "token": "comment.line.ion", + "regex": "//[^\\n]*" + }, + { + "token": "comment.block.ion", + "regex": "/\\*", + "push": [ + { + "token": "comment.block.ion", + "regex": "[*]/", + "next": "pop" + }, + { + "token": "comment.block.ion", + "regex": "[^*/]+" + }, + { + "token": "comment.block.ion", + "regex": "[*/]+" + } + ] + } + ], + "list": [ + { + "token": "punctuation.definition.list.begin.ion", + "regex": "\\[", + "push": [ + { + "token": "punctuation.definition.list.end.ion", + "regex": "\\]", + "next": "pop" + }, + { + "include": "comment" + }, + { + "include": "value" + }, + { + "token": "punctuation.definition.list.separator.ion", + "regex": "," + } + ] + } + ], + "struct": [ + { + "token": "punctuation.definition.struct.begin.ion", + "regex": "\\{", + "push": [ + { + "token": "punctuation.definition.struct.end.ion", + "regex": "\\}", + "next": "pop" + }, + { + "include": "comment" + }, + { + "include": "value" + }, + { + "token": "punctuation.definition.struct.separator.ion", + "regex": ",|:" + } + ] + } + ], + "blob": [ + { + "token": [ + "punctuation.definition.blob.begin.ion", + "string.other.blob.ion", + "punctuation.definition.blob.end.ion" + ], + "regex": "(\\{\\{)([^\"]*)(\\}\\})" + } + ], + "clob": [ + { + "token": [ + "punctuation.definition.clob.begin.ion", + "string.other.clob.ion", + "punctuation.definition.clob.end.ion" + ], + "regex": "(\\{\\{)(\"[^\"]*\")(\\}\\})" + } + ], + "symbol": [ + { + "token": "storage.type.symbol.quoted.ion", + "regex": "(['])((?:(?:\\\\')|(?:[^']))*?)(['])" + }, + { + "token": "storage.type.symbol.identifier.ion", + "regex": "[\\$_a-zA-Z][\\$_a-zA-Z0-9]*" + } + ], + "number": [ + { + "token": "constant.numeric.timestamp.ion", + "regex": "\\d{4}(?:-\\d{2})?(?:-\\d{2})?T(?:\\d{2}:\\d{2})(?::\\d{2})?(?:\\.\\d+)?(?:Z|[-+]\\d{2}:\\d{2})?" + }, + { + "token": "constant.numeric.timestamp.ion", + "regex": "\\d{4}-\\d{2}-\\d{2}T?" + }, + { + "token": "constant.numeric.integer.binary.ion", + "regex": "-?0[bB][01](?:_?[01])*" + }, + { + "token": "constant.numeric.integer.hex.ion", + "regex": "-?0[xX][0-9a-fA-F](?:_?[0-9a-fA-F])*" + }, + { + "token": "constant.numeric.float.ion", + "regex": "-?(?:0|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?(?:[eE][+-]?\\d+)" + }, + { + "token": "constant.numeric.float.ion", + "regex": "(?:[-+]inf)|(?:nan)" + }, + { + "token": "constant.numeric.decimal.ion", + "regex": "-?(?:0|[1-9](?:_?\\d)*)(?:(?:(?:\\.(?:\\d(?:_?\\d)*)?)(?:[dD][+-]?\\d+)|\\.(?:\\d(?:_?\\d)*)?)|(?:[dD][+-]?\\d+))" + }, + { + "token": "constant.numeric.integer.ion", + "regex": "-?(?:0|[1-9](?:_?\\d)*)" + } + ], + "string": [ + { + "token": [ + "punctuation.definition.string.begin.ion", + "string.quoted.double.ion", + "punctuation.definition.string.end.ion" + ], + "regex": "([\"])((?:(?:\\\\\")|(?:[^\"]))*?)([\"])" + }, + { + "token": "punctuation.definition.string.begin.ion", + "regex": "'{3}", + "push": [ + { + "token": "punctuation.definition.string.end.ion", + "regex": "'{3}", + "next": "pop" + }, + { + "token": "string.quoted.triple.ion", + "regex": "(?:\\\\'|[^'])+" + }, + { + "token": "string.quoted.triple.ion", + "regex": "'" + } + ] + } + ], + "annotation": [ + { + "token": [ + "variable.language.annotation.ion", + "punctuation.definition.annotation.ion" + ], + "regex": /('(?:[^'\\]|\\.)*')\s*(::)/ + }, + { + "token": [ + "variable.language.annotation.ion", + "punctuation.definition.annotation.ion" + ], + "regex": "([\\$_a-zA-Z][\\$_a-zA-Z0-9]*)\\s*(::)" + } + ], + "whitespace": [ + { + "token": "text.ion", + "regex": "\\s+" + } + ] + }; + this.$rules["keywords"] = [keywordMapperRule]; + this.normalizeRules(); +}; +oop.inherits(IonHighlightRules, TextHighlightRules); +exports.IonHighlightRules = IonHighlightRules; + +}); + +define("ace/mode/partiql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/ion_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS GENERATED BY 'ligand' USING 'mode_highlight_rules.js' +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var IonHighlightRules = require("./ion_highlight_rules").IonHighlightRules; +var PartiqlHighlightRules = function () { + var k_partiql_constant = "MISSING"; + var k_sql_constant = "FALSE|NULL|TRUE"; + var k_constant = k_partiql_constant + "|" + k_sql_constant; + var k_partiql_keyword = "PIVOT|UNPIVOT|LIMIT|TUPLE|REMOVE|INDEX|CONFLICT|DO|NOTHING|RETURNING|" + + "MODIFIED|NEW|OLD|LET"; + var k_sql_keyword = "ABSOLUTE|ACTION|ADD|ALL|ALLOCATE|ALTER|AND|ANY|ARE|AS|" + + "ASC|ASSERTION|AT|AUTHORIZATION|BEGIN|BETWEEN|BIT_LENGTH|BY|CASCADE|CASCADED|" + + "CASE|CATALOG|CHAR|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CLOSE|COLLATE|COLLATION|COLUMN|" + + "COMMIT|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONTINUE|CONVERT|CORRESPONDING|CREATE|CROSS|" + + "CURRENT|CURSOR|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DESC|" + + "DESCRIBE|DESCRIPTOR|DIAGNOSTICS|DISCONNECT|DISTINCT|DOMAIN|DROP|ELSE|END|END-EXEC|" + + "ESCAPE|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXTERNAL|EXTRACT|FETCH|FIRST|FOR|" + + "FOREIGN|FOUND|FROM|FULL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|" + + "HAVING|IDENTITY|IMMEDIATE|IN|INDICATOR|INITIALLY|INNER|INPUT|INSENSITIVE|INSERT|" + + "INTERSECT|INTERVAL|INTO|IS|ISOLATION|JOIN|KEY|LANGUAGE|LAST|LEFT|" + + "LEVEL|LIKE|LOCAL|LOWER|MATCH|MODULE|NAMES|NATIONAL|NATURAL|NCHAR|" + + "NEXT|NO|NOT|OCTET_LENGTH|OF|ON|ONLY|OPEN|OPTION|OR|" + + "ORDER|OUTER|OUTPUT|OVERLAPS|PAD|PARTIAL|POSITION|PRECISION|PREPARE|PRESERVE|" + + "PRIMARY|PRIOR|PRIVILEGES|PROCEDURE|PUBLIC|READ|REAL|REFERENCES|RELATIVE|RESTRICT|" + + "REVOKE|RIGHT|ROLLBACK|ROWS|SCHEMA|SCROLL|SECTION|SELECT|SESSION|SET|" + + "SIZE|SOME|SPACE|SQL|SQLCODE|SQLERROR|SQLSTATE|TABLE|TEMPORARY|THEN|" + + "TIME|TO|TRANSACTION|TRANSLATE|TRANSLATION|UNION|UNIQUE|UNKNOWN|UPDATE|UPPER|" + + "USAGE|USER|USING|VALUE|VALUES|VIEW|WHEN|WHENEVER|WHERE|WITH|" + + "WORK|WRITE|ZONE"; + var k_keyword = k_partiql_keyword + "|" + k_sql_keyword; + var k_partiql_type = "BOOL|BOOLEAN|STRING|SYMBOL|CLOB|BLOB|STRUCT|LIST|SEXP|BAG"; + var k_sql_type = "CHARACTER|DATE|DECIMAL|DOUBLE|FLOAT|INT|INTEGER|NUMERIC|SMALLINT|TIMESTAMP|" + + "VARCHAR|VARYING"; + var k_type = k_partiql_type + "|" + k_sql_type; + var k_sql_aggfn = "AVG|COUNT|MAX|MIN|SUM"; + var k_aggfn = k_sql_aggfn; + var k_sql_fn = "CAST|COALESCE|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|EXISTS|DATE_ADD|DATE_DIFF|NULLIF|" + + "SESSION_USER|SUBSTRING|SYSTEM_USER|TRIM"; + var k_fn = k_sql_fn; + var keywordMapper = this.createKeywordMapper({ + "constant.language.partiql": k_constant, + "keyword.other.partiql": k_keyword, + "storage.type.partiql": k_type, + "support.function.aggregation.partiql": k_aggfn, + "support.function.partiql": k_fn + }, "variable.language.identifier.partiql", true); + var keywordMapperRule = { + token: keywordMapper, + regex: "\\b\\w+\\b" + }; + this.$rules = { + "start": [ + { + "include": "whitespace" + }, + { + "include": "comment" + }, + { + "include": "value" + } + ], + "value": [ + { + "include": "whitespace" + }, + { + "include": "comment" + }, + { + "include": "tuple_value" + }, + { + "include": "collection_value" + }, + { + "include": "scalar_value" + } + ], + "scalar_value": [ + { + "include": "string" + }, + { + "include": "number" + }, + { + "include": "keywords" + }, + { + "include": "identifier" + }, + { + "include": "embed-ion" + }, + { + "include": "operator" + }, + { + "include": "punctuation" + } + ], + "punctuation": [ + { + "token": "punctuation.partiql", + "regex": "[;:()\\[\\]\\{\\},.]" + } + ], + "operator": [ + { + "token": "keyword.operator.partiql", + "regex": "[+*/<>=~!@#%&|?^-]+" + } + ], + "identifier": [ + { + "token": "variable.language.identifier.quoted.partiql", + "regex": "([\"])((?:(?:\\\\.)|(?:[^\"\\\\]))*?)([\"])" + }, + { + "token": "variable.language.identifier.at.partiql", + "regex": "@\\w+" + }, + { + "token": "variable.language.identifier.partiql", + "regex": "\\b\\w+(?:\\.\\w+)?\\b" + } + ], + "number": [ + { + "token": "constant.numeric.partiql", + "regex": "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + } + ], + "string": [ + { + "token": [ + "punctuation.definition.string.begin.partiql", + "string.quoted.single.partiql", + "punctuation.definition.string.end.partiql" + ], + "regex": "(['])((?:(?:\\\\.)|(?:[^'\\\\]))*?)(['])" + } + ], + "collection_value": [ + { + "include": "array_value" + }, + { + "include": "bag_value" + } + ], + "bag_value": [ + { + "token": "punctuation.definition.bag.begin.partiql", + "regex": "<<", + "push": [ + { + "token": "punctuation.definition.bag.end.partiql", + "regex": ">>", + "next": "pop" + }, + { + "include": "comment" + }, + { + "token": "punctuation.definition.bag.separator.partiql", + "regex": "," + }, + { + "include": "value" + } + ] + } + ], + "comment": [ + { + "token": "comment.line.partiql", + "regex": "--.*" + }, + { + "token": "comment.block.partiql", + "regex": "/\\*", + "push": "comment__1" + } + ], + "comment__1": [ + { + "token": "comment.block.partiql", + "regex": "[*]/", + "next": "pop" + }, + { + "token": "comment.block.partiql", + "regex": "[^*/]+" + }, + { + "token": "comment.block.partiql", + "regex": "/\\*", + "push": "comment__1" + }, + { + "token": "comment.block.partiql", + "regex": "[*/]+" + } + ], + "array_value": [ + { + "token": "punctuation.definition.array.begin.partiql", + "regex": "\\[", + "push": [ + { + "token": "punctuation.definition.array.end.partiql", + "regex": "\\]", + "next": "pop" + }, + { + "include": "comment" + }, + { + "token": "punctuation.definition.array.separator.partiql", + "regex": "," + }, + { + "include": "value" + } + ] + } + ], + "tuple_value": [ + { + "token": "punctuation.definition.tuple.begin.partiql", + "regex": "\\{", + "push": [ + { + "token": "punctuation.definition.tuple.end.partiql", + "regex": "\\}", + "next": "pop" + }, + { + "include": "comment" + }, + { + "token": "punctuation.definition.tuple.separator.partiql", + "regex": ",|:" + }, + { + "include": "value" + } + ] + } + ], + "whitespace": [ + { + "token": "text.partiql", + "regex": "\\s+" + } + ] + }; + this.$rules["keywords"] = [keywordMapperRule]; + this.$rules["embed-ion"] = [{ token: "punctuation.definition.ion.begin.partiql", regex: "`", next: "ion-start" }]; + this.embedRules(IonHighlightRules, "ion-", [{ token: "punctuation.definition.ion.end.partiql", regex: "`", next: "start" }]); + this.normalizeRules(); +}; +oop.inherits(PartiqlHighlightRules, TextHighlightRules); +exports.PartiqlHighlightRules = PartiqlHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/partiql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/partiql_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS GENERATED BY 'ligand' USING 'mode.js' +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./partiql_highlight_rules").PartiqlHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = HighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = { + start: "/*", + end: "*/", + nestable: true + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/partiql"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/partiql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-pascal.js b/vendor/assets/javascripts/ace/mode-pascal.js index 233a426f..6cda957a 100644 --- a/vendor/assets/javascripts/ace/mode-pascal.js +++ b/vendor/assets/javascripts/ace/mode-pascal.js @@ -1,142 +1,146 @@ -define("ace/mode/pascal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/pascal_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PascalHighlightRules = function() { - - this.$rules = { start: - [ { caseInsensitive: true, - token: 'keyword.control.pascal', - regex: '\\b(?:(absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor))\\b' }, - { caseInsensitive: true, - token: - [ 'variable.pascal', "text", - 'storage.type.prototype.pascal', - 'entity.name.function.prototype.pascal' ], - regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))' }, - { caseInsensitive: true, - token: - [ 'variable.pascal', "text", - 'storage.type.function.pascal', - 'entity.name.function.pascal' ], - regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?' }, - { token: 'constant.numeric.pascal', - regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b' }, - { token: 'punctuation.definition.comment.pascal', - regex: '--.*$', - push_: - [ { token: 'comment.line.double-dash.pascal.one', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-dash.pascal.one' } ] }, - { token: 'punctuation.definition.comment.pascal', - regex: '//.*$', - push_: - [ { token: 'comment.line.double-slash.pascal.two', - regex: '$', - next: 'pop' }, - { defaultToken: 'comment.line.double-slash.pascal.two' } ] }, - { token: 'punctuation.definition.comment.pascal', - regex: '\\(\\*', - push: - [ { token: 'punctuation.definition.comment.pascal', - regex: '\\*\\)', - next: 'pop' }, - { defaultToken: 'comment.block.pascal.one' } ] }, - { token: 'punctuation.definition.comment.pascal', - regex: '\\{', - push: - [ { token: 'punctuation.definition.comment.pascal', - regex: '\\}', - next: 'pop' }, - { defaultToken: 'comment.block.pascal.two' } ] }, - { token: 'punctuation.definition.string.begin.pascal', - regex: '"', - push: - [ { token: 'constant.character.escape.pascal', regex: '\\\\.' }, - { token: 'punctuation.definition.string.end.pascal', +var PascalHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword.control": "absolute|abstract|all|and|and_then|array|as|asm|attribute|begin|bindable|case|class" + + "|const|constructor|destructor|div|do|do|else|end|except|export|exports|external|far|file|finalization" + + "|finally|for|forward|goto|if|implementation|import|in|inherited|initialization|interface|interrupt|is" + + "|label|library|mod|module|name|near|nil|not|object|of|only|operator|or|or_else|otherwise|packed|pow|private" + + "|program|property|protected|public|published|qualified|record|repeat|resident|restricted|segment|set|shl|shr" + + "|then|to|try|type|unit|until|uses|value|var|view|virtual|while|with|xor" + }, "identifier", true); + this.$rules = { + start: [{ + caseInsensitive: true, + token: ['variable', "text", + 'storage.type.prototype', + 'entity.name.function.prototype' + ], + regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?(?=(?:\\(.*?\\))?;\\s*(?:attribute|forward|external))' + }, { + caseInsensitive: true, + token: ['variable', "text", 'storage.type.function', 'entity.name.function'], + regex: '\\b(function|procedure)(\\s+)(\\w+)(\\.\\w+)?' + }, { + caseInsensitive: true, + token: keywordMapper, + regex: /\b[a-z_]+\b/ + }, { + token: 'constant.numeric', + regex: '\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b' + }, { + token: 'punctuation.definition.comment', + regex: '--.*$' + }, { + token: 'punctuation.definition.comment', + regex: '//.*$' + }, { + token: 'punctuation.definition.comment', + regex: '\\(\\*', + push: [{ + token: 'punctuation.definition.comment', + regex: '\\*\\)', + next: 'pop' + }, + { defaultToken: 'comment.block.one' } + ] + }, { + token: 'punctuation.definition.comment', + regex: '\\{', + push: [{ + token: 'punctuation.definition.comment', + regex: '\\}', + next: 'pop' + }, + { defaultToken: 'comment.block.two' } + ] + }, { + token: 'punctuation.definition.string.begin', regex: '"', - next: 'pop' }, - { defaultToken: 'string.quoted.double.pascal' } ] - }, - { token: 'punctuation.definition.string.begin.pascal', - regex: '\'', - push: - [ { token: 'constant.character.escape.apostrophe.pascal', - regex: '\'\'' }, - { token: 'punctuation.definition.string.end.pascal', + push: [{ token: 'constant.character.escape', regex: '\\\\.' }, + { + token: 'punctuation.definition.string.end', + regex: '"', + next: 'pop' + }, + { defaultToken: 'string.quoted.double' } + ] + }, { + token: 'punctuation.definition.string.begin', regex: '\'', - next: 'pop' }, - { defaultToken: 'string.quoted.single.pascal' } ] }, - { token: 'keyword.operator', - regex: '[+\\-;,/*%]|:=|=' } ] }; - + push: [{ + token: 'constant.character.escape.apostrophe', + regex: '\'\'' + }, + { + token: 'punctuation.definition.string.end', + regex: '\'', + next: 'pop' + }, + { defaultToken: 'string.quoted.single' } + ] + }, { + token: 'keyword.operator', + regex: '[+\\-;,/*%]|:=|=' + } + ] + }; this.normalizeRules(); }; - oop.inherits(PascalHighlightRules, TextHighlightRules); - exports.PascalHighlightRules = PascalHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -145,54 +149,56 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/pascal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pascal_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { +define("ace/mode/pascal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pascal_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PascalHighlightRules = require("./pascal_highlight_rules").PascalHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PascalHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ["--", "//"]; this.blockComment = [ - {start: "(*", end: "*)"}, - {start: "{", end: "}"} + { start: "(*", end: "*)" }, + { start: "{", end: "}" } ]; - this.$id = "ace/mode/pascal"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/pascal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-perl.js b/vendor/assets/javascripts/ace/mode-perl.js index 9e9d4c87..8d39aa49 100644 --- a/vendor/assets/javascripts/ace/mode-perl.js +++ b/vendor/assets/javascripts/ace/mode-perl.js @@ -1,121 +1,109 @@ -define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PerlHighlightRules = function() { - - var keywords = ( - "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + - "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars" - ); - +var PerlHighlightRules = function () { + var keywords = ("base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + + "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars"); var buildinConstants = ("ARGV|ENV|INC|SIG"); - - var builtinFunctions = ( - "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + - "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + - "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + - "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + - "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + - "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + - "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + - "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + - "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + - "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + - "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + - "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + - "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + - "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + - "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + - "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + - "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + - "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + - "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + - "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + - "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + - "map|die|uc|lc|do" - ); - + var builtinFunctions = ("getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + + "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + + "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + + "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + + "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + + "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + + "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + + "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + + "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + + "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + + "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + + "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + + "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + + "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + + "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + + "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + + "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + + "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + + "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + + "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + + "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + + "map|die|uc|lc|do"); var keywordMapper = this.createKeywordMapper({ "keyword": keywords, "constant.language": buildinConstants, "support.function": builtinFunctions }, "identifier"); - this.$rules = { - "start" : [ + "start": [ { - token : "comment.doc", - regex : "^=(?:begin|item)\\b", - next : "block_comment" + token: "comment.doc", + regex: "^=(?:begin|item)\\b", + next: "block_comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" + token: "string", // multi line string start + regex: '["].*\\\\$', + next: "qqstring" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" + token: "string", // multi line string start + regex: "['].*\\\\$", + next: "qstring" }, { - token : "constant.numeric", // hex - regex : "0x[0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0x[0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" + token: "keyword.operator", + regex: "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" }, { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "lparen", - regex : "[[({]" + token: "lparen", + regex: "[[({]" }, { - token : "rparen", - regex : "[\\])}]" + token: "rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "qqstring" : [ + "qqstring": [ { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ], - "qstring" : [ + "qstring": [ { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ], "block_comment": [ { - token: "comment.doc", + token: "comment.doc", regex: "^=cut\\b", next: "start" }, @@ -125,135 +113,99 @@ var PerlHighlightRules = function() { ] }; }; - oop.inherits(PerlHighlightRules, TextHighlightRules); - exports.PerlHighlightRules = PerlHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -266,108 +218,101 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PerlHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.foldingRules = new CStyleFoldMode({start: "^=(begin|item)\\b", end: "^=(cut)\\b"}); + this.foldingRules = new CStyleFoldMode({ start: "^=(begin|item)\\b", end: "^=(cut)\\b" }); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "#"; this.blockComment = [ - {start: "=begin", end: "=cut", lineStartOnly: true}, - {start: "=item", end: "=cut", lineStartOnly: true} + { start: "=begin", end: "=cut", lineStartOnly: true }, + { start: "=item", end: "=cut", lineStartOnly: true } ]; - - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/perl"; + this.snippetFileId = "ace/snippets/perl"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/perl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-pgsql.js b/vendor/assets/javascripts/ace/mode-pgsql.js index 9bb3cb39..6de60099 100644 --- a/vendor/assets/javascripts/ace/mode-pgsql.js +++ b/vendor/assets/javascripts/ace/mode-pgsql.js @@ -1,171 +1,150 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/perl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PerlHighlightRules = function() { - - var keywords = ( - "base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + - "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars" - ); - +var PerlHighlightRules = function () { + var keywords = ("base|constant|continue|else|elsif|for|foreach|format|goto|if|last|local|my|next|" + + "no|package|parent|redo|require|scalar|sub|unless|until|while|use|vars"); var buildinConstants = ("ARGV|ENV|INC|SIG"); - - var builtinFunctions = ( - "getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + - "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + - "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + - "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + - "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + - "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + - "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + - "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + - "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + - "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + - "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + - "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + - "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + - "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + - "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + - "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + - "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + - "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + - "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + - "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + - "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + - "map|die|uc|lc|do" - ); - + var builtinFunctions = ("getprotobynumber|getprotobyname|getservbyname|gethostbyaddr|" + + "gethostbyname|getservbyport|getnetbyaddr|getnetbyname|getsockname|" + + "getpeername|setpriority|getprotoent|setprotoent|getpriority|" + + "endprotoent|getservent|setservent|endservent|sethostent|socketpair|" + + "getsockopt|gethostent|endhostent|setsockopt|setnetent|quotemeta|" + + "localtime|prototype|getnetent|endnetent|rewinddir|wantarray|getpwuid|" + + "closedir|getlogin|readlink|endgrent|getgrgid|getgrnam|shmwrite|" + + "shutdown|readline|endpwent|setgrent|readpipe|formline|truncate|" + + "dbmclose|syswrite|setpwent|getpwnam|getgrent|getpwent|ucfirst|sysread|" + + "setpgrp|shmread|sysseek|sysopen|telldir|defined|opendir|connect|" + + "lcfirst|getppid|binmode|syscall|sprintf|getpgrp|readdir|seekdir|" + + "waitpid|reverse|unshift|symlink|dbmopen|semget|msgrcv|rename|listen|" + + "chroot|msgsnd|shmctl|accept|unpack|exists|fileno|shmget|system|" + + "unlink|printf|gmtime|msgctl|semctl|values|rindex|substr|splice|" + + "length|msgget|select|socket|return|caller|delete|alarm|ioctl|index|" + + "undef|lstat|times|srand|chown|fcntl|close|write|umask|rmdir|study|" + + "sleep|chomp|untie|print|utime|mkdir|atan2|split|crypt|flock|chmod|" + + "BEGIN|bless|chdir|semop|shift|reset|link|stat|chop|grep|fork|dump|" + + "join|open|tell|pipe|exit|glob|warn|each|bind|sort|pack|eval|push|" + + "keys|getc|kill|seek|sqrt|send|wait|rand|tied|read|time|exec|recv|" + + "eof|chr|int|ord|exp|pos|pop|sin|log|abs|oct|hex|tie|cos|vec|END|ref|" + + "map|die|uc|lc|do"); var keywordMapper = this.createKeywordMapper({ "keyword": keywords, "constant.language": buildinConstants, "support.function": builtinFunctions }, "identifier"); - this.$rules = { - "start" : [ + "start": [ { - token : "comment.doc", - regex : "^=(?:begin|item)\\b", - next : "block_comment" + token: "comment.doc", + regex: "^=(?:begin|item)\\b", + next: "block_comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" + token: "string", // multi line string start + regex: '["].*\\\\$', + next: "qqstring" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" + token: "string", // multi line string start + regex: "['].*\\\\$", + next: "qstring" }, { - token : "constant.numeric", // hex - regex : "0x[0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0x[0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" + token: "keyword.operator", + regex: "%#|\\$#|\\.\\.\\.|\\|\\|=|>>=|<<=|<=>|&&=|=>|!~|\\^=|&=|\\|=|\\.=|x=|%=|\\/=|\\*=|\\-=|\\+=|=~|\\*\\*|\\-\\-|\\.\\.|\\|\\||&&|\\+\\+|\\->|!=|==|>=|<=|>>|<<|,|=|\\?\\:|\\^|\\||x|%|\\/|\\*|<|&|\\\\|~|!|>|\\.|\\-|\\+|\\-C|\\-b|\\-S|\\-u|\\-t|\\-p|\\-l|\\-d|\\-f|\\-g|\\-s|\\-z|\\-k|\\-e|\\-O|\\-T|\\-B|\\-M|\\-A|\\-X|\\-W|\\-c|\\-R|\\-o|\\-x|\\-w|\\-r|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)" }, { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "lparen", - regex : "[[({]" + token: "lparen", + regex: "[[({]" }, { - token : "rparen", - regex : "[\\])}]" + token: "rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "qqstring" : [ + "qqstring": [ { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ], - "qstring" : [ + "qstring": [ { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ], "block_comment": [ { - token: "comment.doc", + token: "comment.doc", regex: "^=cut\\b", next: "start" }, @@ -175,281 +154,616 @@ var PerlHighlightRules = function() { ] }; }; - oop.inherits(PerlHighlightRules, TextHighlightRules); - exports.PerlHighlightRules = PerlHighlightRules; + }); -define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * TODO: python delimiters + */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PythonHighlightRules = function() { - - var keywords = ( - "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + +var PythonHighlightRules = function () { + var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield|async|await" - ); - - var builtinConstants = ( - "True|False|None|NotImplemented|Ellipsis|__debug__" - ); - - var builtinFunctions = ( - "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + + "raise|return|try|while|with|yield|async|await|nonlocal"); + var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); + var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|" + + "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|set|apply|delattr|help|next|setattr|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern" - ); + "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + + "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + + "ascii|breakpoint|bytes"); var keywordMapper = this.createKeywordMapper({ "invalid.deprecated": "debugger", "support.function": builtinFunctions, + "variable.language": "self|cls", "constant.language": builtinConstants, "keyword": keywords }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - + var strPre = "[uU]?"; + var strRawPre = "[rR]"; + var strFormatPre = "[fF]"; + var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var octInteger = "(?:0[oO]?[0-7]+)"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var binInteger = "(?:0[bB][01]+)"; var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - var exponent = "(?:[eE][+-]?\\d+)"; var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line ''' string end - regex : "'{3}", - next : "start" - }, { - defaultToken : "string" - } ], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "qstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "start" - }, { - defaultToken: "string" - }] + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "string", // multi line """ string start + regex: strPre + '"{3}', + next: "qqstring3" + }, { + token: "string", // " string + regex: strPre + '"(?=.)', + next: "qqstring" + }, { + token: "string", // multi line ''' string start + regex: strPre + "'{3}", + next: "qstring3" + }, { + token: "string", // ' string + regex: strPre + "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: strRawPre + '"{3}', + next: "rawqqstring3" + }, { + token: "string", + regex: strRawPre + '"(?=.)', + next: "rawqqstring" + }, { + token: "string", + regex: strRawPre + "'{3}", + next: "rawqstring3" + }, { + token: "string", + regex: strRawPre + "'(?=.)", + next: "rawqstring" + }, { + token: "string", + regex: strFormatPre + '"{3}', + next: "fqqstring3" + }, { + token: "string", + regex: strFormatPre + '"(?=.)', + next: "fqqstring" + }, { + token: "string", + regex: strFormatPre + "'{3}", + next: "fqstring3" + }, { + token: "string", + regex: strFormatPre + "'(?=.)", + next: "fqstring" + }, { + token: "string", + regex: strRawFormatPre + '"{3}', + next: "rfqqstring3" + }, { + token: "string", + regex: strRawFormatPre + '"(?=.)', + next: "rfqqstring" + }, { + token: "string", + regex: strRawFormatPre + "'{3}", + next: "rfqstring3" + }, { + token: "string", + regex: strRawFormatPre + "'(?=.)", + next: "rfqstring" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "punctuation", + regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" + }, { + token: "text", + regex: "\\s+" + }, { + include: "constants" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "qstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring3": [{ + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring3": [{ + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "fqqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "fqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring3": [{ + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring3": [{ + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rfqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring": [{ + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstringParRules": [{ + token: "paren.lparen", + regex: "[\\[\\(]" + }, { + token: "paren.rparen", + regex: "[\\]\\)]" + }, { + token: "string", + regex: "\\s+" + }, { + token: "string", + regex: "'[^']*'" + }, { + token: "string", + regex: '"[^"]*"' + }, { + token: "function.support", + regex: "(!s|!r|!a)" + }, { + include: "constants" + }, { + token: 'paren.rparen', + regex: "}", + next: 'pop' + }, { + token: 'paren.lparen', + regex: "{", + push: "fqstringParRules" + }], + "constants": [{ + token: "constant.numeric", // imaginary + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // long integer + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: ["punctuation", "function.support"], // method + regex: "(\\.)([a-zA-Z_]+)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] }; + this.normalizeRules(); }; - oop.inherits(PythonHighlightRules, TextHighlightRules); - exports.PythonHighlightRules = PythonHighlightRules; + }); -define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var JsonHighlightRules = function() { +var JsonHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "variable", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + token: "variable", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' }, { - token : "string", // single line - regex : '"', - next : "string" + token: "string", // single line + regex: '"', + next: "string" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : "text", // single quoted strings are not allowed - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "text", // single quoted strings are not allowed + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "comment", // comments are not allowed, but who cares? - regex : "\\/\\/.*$" + token: "comment", // comments are not allowed, but who cares? + regex: "\\/\\/.*$" }, { - token : "comment.start", // comments are not allowed, but who cares? - regex : "\\/\\*", - next : "comment" + token: "comment.start", // comments are not allowed, but who cares? + regex: "\\/\\*", + next: "comment" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" } ], - "string" : [ + "string": [ { - token : "constant.language.escape", - regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ }, { - token : "string", - regex : '"|$', - next : "start" + token: "string", + regex: '"|$', + next: "start" }, { - defaultToken : "string" + defaultToken: "string" } ], - "comment" : [ + "comment": [ { - token : "comment.end", // comments are not allowed, but who cares? - regex : "\\*\\/", - next : "start" + token: "comment.end", // comments are not allowed, but who cares? + regex: "\\*\\/", + next: "start" }, { defaultToken: "comment" } ] }; - }; - oop.inherits(JsonHighlightRules, TextHighlightRules); - exports.JsonHighlightRules = JsonHighlightRules; + }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -457,142 +771,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -607,9 +921,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -625,13 +939,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -664,13 +978,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -680,44 +1028,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -732,40 +1098,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -773,7 +1159,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -783,14 +1170,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); +define("ace/mode/pgsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/perl_highlight_rules","ace/mode/python_highlight_rules","ace/mode/json_highlight_rules","ace/mode/javascript_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); var lang = require("../lib/lang"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; @@ -896,10 +1281,8 @@ var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var PgsqlHighlightRules = function() { - var keywords = ( - "abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|" + +var PgsqlHighlightRules = function () { + var keywords = ("abort|absolute|abstime|access|aclitem|action|add|admin|after|aggregate|all|also|alter|always|" + "analyse|analyze|and|any|anyarray|anyelement|anyenum|anynonarray|anyrange|array|as|asc|" + "assertion|assignment|asymmetric|at|attribute|authorization|backward|before|begin|between|" + "bigint|binary|bit|bool|boolean|both|box|bpchar|by|bytea|cache|called|cascade|cascaded|case|cast|" + @@ -940,12 +1323,8 @@ var PgsqlHighlightRules = function() { "unlogged|until|update|user|using|uuid|vacuum|valid|validate|validator|value|values|varbit|" + "varchar|variadic|varying|verbose|version|view|void|volatile|when|where|whitespace|window|" + "with|without|work|wrapper|write|xid|xml|xmlattributes|xmlconcat|xmlelement|xmlexists|" + - "xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone" - ); - - - var builtinFunctions = ( - "RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|" + + "xmlforest|xmlparse|xmlpi|xmlroot|xmlserialize|year|yes|zone|ties"); + var builtinFunctions = ("RI_FKey_cascade_del|RI_FKey_cascade_upd|RI_FKey_check_ins|RI_FKey_check_upd|" + "RI_FKey_noaction_del|RI_FKey_noaction_upd|RI_FKey_restrict_del|RI_FKey_restrict_upd|" + "RI_FKey_setdefault_del|RI_FKey_setdefault_upd|RI_FKey_setnull_del|" + "RI_FKey_setnull_upd|abbrev|abs|abstime|abstimeeq|abstimege|abstimegt|abstimein|abstimele|" + @@ -1293,208 +1672,195 @@ var PgsqlHighlightRules = function() { "win866_to_iso|win866_to_koi8r|win866_to_mic|win866_to_win1251|win_to_utf8|xideq|" + "xideqint4|xidin|xidout|xidrecv|xidsend|xml|xml_in|xml_is_well_formed|" + "xml_is_well_formed_content|xml_is_well_formed_document|xml_out|xml_recv|xml_send|" + - "xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists" - ); - + "xmlagg|xmlcomment|xmlconcat2|xmlexists|xmlvalidate|xpath|xpath_exists"); var keywordMapper = this.createKeywordMapper({ "support.function": builtinFunctions, "keyword": keywords }, "identifier", true); - - var sqlRules = [{ - token : "string", // single line string -- assume dollar strings if multi-line for now - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line string -- assume dollar strings if multi-line for now + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "variable.language", // pg identifier - regex : '".*?"' + token: "variable.language", // pg identifier + regex: '".*?"' }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers }, { - token : "keyword.operator", - regex : "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + - "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + - "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + - "~=|~>=~|~>~|~~|~~\\*" + token: "keyword.operator", + regex: "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + + "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + + "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + + "~=|~>=~|~>~|~~|~~\\*" }, { - token : "paren.lparen", - regex : "[\\(]" + token: "paren.lparen", + regex: "[\\(]" }, { - token : "paren.rparen", - regex : "[\\)]" + token: "paren.rparen", + regex: "[\\)]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ]; - - this.$rules = { - "start" : [{ - token : "comment", - regex : "--.*$" + "start": [{ + token: "comment", + regex: "--.*$" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "comment" - },{ - token : "keyword.statementBegin", - regex : "[a-zA-Z]+", // Could enumerate starting keywords but this allows things to work when new statements are added. - next : "statement" - },{ - token : "support.buildin", // psql directive - regex : "^\\\\[\\S]+.*$" + token: "comment", // multi-line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "keyword.statementBegin", + regex: "[a-zA-Z]+", // Could enumerate starting keywords but this allows things to work when new statements are added. + next: "statement" + }, { + token: "support.buildin", // psql directive + regex: "^\\\\[\\S]+.*$" } ], - - "statement" : [{ - token : "comment", - regex : "--.*$" + "statement": [{ + token: "comment", + regex: "--.*$" }, { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "commentStatement" + token: "comment", // multi-line comment + regex: "\\/\\*", + next: "commentStatement" }, { - token : "statementEnd", - regex : ";", - next : "start" + token: "statementEnd", + regex: ";", + next: "start" }, { - token : "string", - regex : "\\$perl\\$", - next : "perl-start" + token: "string", + regex: "\\$perl\\$", + next: "perl-start" }, { - token : "string", - regex : "\\$python\\$", - next : "python-start" + token: "string", + regex: "\\$python\\$", + next: "python-start" }, { - token : "string", - regex : "\\$json\\$", - next : "json-start" + token: "string", + regex: "\\$json\\$", + next: "json-start" }, { - token : "string", - regex : "\\$(js|javascript)\\$", - next : "javascript-start" + token: "string", + regex: "\\$(js|javascript)\\$", + next: "javascript-start" }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$$", // dollar quote at the end of a line - next : "dollarSql" + token: "string", + regex: "\\$\\$$", + next: "dollarSql" }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$", - next : "dollarStatementString" + token: "string", + regex: "\\$[\\w_0-9]*\\$", + next: "dollarStatementString" } ].concat(sqlRules), - - "dollarSql" : [{ - token : "comment", - regex : "--.*$" + "dollarSql": [{ + token: "comment", + regex: "--.*$" }, { - token : "comment", // multi-line comment - regex : "\\/\\*", - next : "commentDollarSql" + token: "comment", // multi-line comment + regex: "\\/\\*", + next: "commentDollarSql" }, { - token : "string", // end quoting with dollar at the start of a line - regex : "^\\$[\\w_0-9]*\\$", - next : "statement" + token: ["keyword", "statementEnd", "text", "string"], // end quoting with dollar at the start of a line + regex: "(^|END)(;)?(\\s*)(\\$\\$)", + next: "statement" }, { - token : "string", - regex : "\\$[\\w_0-9]*\\$", - next : "dollarSqlString" + token: "string", + regex: "\\$[\\w_0-9]*\\$", + next: "dollarSqlString" } ].concat(sqlRules), - - "comment" : [{ - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + "comment": [{ + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - - "commentStatement" : [{ - token : "comment", // closing comment - regex : "\\*\\/", - next : "statement" + "commentStatement": [{ + token: "comment", // closing comment + regex: "\\*\\/", + next: "statement" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - - "commentDollarSql" : [{ - token : "comment", // closing comment - regex : "\\*\\/", - next : "dollarSql" + "commentDollarSql": [{ + token: "comment", // closing comment + regex: "\\*\\/", + next: "dollarSql" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - - "dollarStatementString" : [{ - token : "string", // closing dollarstring - regex : ".*?\\$[\\w_0-9]*\\$", - next : "statement" + "dollarStatementString": [{ + token: "string", // closing dollarstring + regex: ".*?\\$[\\w_0-9]*\\$", + next: "statement" }, { - token : "string", // dollarstring spanning whole line - regex : ".+" + token: "string", // dollarstring spanning whole line + regex: ".+" } ], - - "dollarSqlString" : [{ - token : "string", // closing dollarstring - regex : ".*?\\$[\\w_0-9]*\\$", - next : "dollarSql" + "dollarSqlString": [{ + token: "string", // closing dollarstring + regex: ".*?\\$[\\w_0-9]*\\$", + next: "dollarSql" }, { - token : "string", // dollarstring spanning whole line - regex : ".+" + token: "string", // dollarstring spanning whole line + regex: ".+" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("start") ]); - this.embedRules(PerlHighlightRules, "perl-", [{token : "string", regex : "\\$perl\\$", next : "statement"}]); - this.embedRules(PythonHighlightRules, "python-", [{token : "string", regex : "\\$python\\$", next : "statement"}]); - this.embedRules(JsonHighlightRules, "json-", [{token : "string", regex : "\\$json\\$", next : "statement"}]); - this.embedRules(JavaScriptHighlightRules, "javascript-", [{token : "string", regex : "\\$(js|javascript)\\$", next : "statement"}]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.embedRules(PerlHighlightRules, "perl-", [{ token: "string", regex: "\\$perl\\$", next: "statement" }]); + this.embedRules(PythonHighlightRules, "python-", [{ token: "string", regex: "\\$python\\$", next: "statement" }]); + this.embedRules(JsonHighlightRules, "json-", [{ token: "string", regex: "\\$json\\$", next: "statement" }]); + this.embedRules(JavaScriptHighlightRules, "javascript-", [{ token: "string", regex: "\\$(js|javascript)\\$", next: "statement" }]); }; - oop.inherits(PgsqlHighlightRules, TextHighlightRules); - exports.PgsqlHighlightRules = PgsqlHighlightRules; + }); -define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules"], function(require, exports, module) { - -var oop = require("../lib/oop"); +define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); var TextMode = require("../mode/text").Mode; var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PgsqlHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { if (state == "start" || state == "keyword.statementEnd") { return ""; - } else { + } + else { return this.$getIndent(line); // Keep whatever indent the previous line has } }; - this.$id = "ace/mode/pgsql"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/pgsql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-php.js b/vendor/assets/javascripts/ace/mode-php.js index 88b39a34..c468a423 100644 --- a/vendor/assets/javascripts/ace/mode-php.js +++ b/vendor/assets/javascripts/ace/mode-php.js @@ -1,71 +1,57 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -73,210 +59,317 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -284,142 +377,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -434,9 +527,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -452,13 +545,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -491,13 +584,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -507,44 +634,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -559,40 +704,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -600,7 +765,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -610,14 +776,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var PhpLangHighlightRules = function() { +var PhpLangHighlightRules = function () { var docComment = DocCommentHighlightRules; - var builtinFunctions = lang.arrayToMap( - ('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|' + - 'aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|' + - 'apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|' + - 'apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|' + - 'apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|' + - 'apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|' + - 'apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|' + - 'apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|' + - 'array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|' + - 'array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|' + - 'array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|' + - 'array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|' + - 'array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|' + - 'array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|' + - 'atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|' + - 'bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|' + - 'bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|' + - 'bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|' + - 'bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|' + - 'bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|' + - 'cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|' + - 'cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|' + - 'cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|' + - 'cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|' + - 'cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|' + - 'cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|' + - 'cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|' + - 'cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|' + - 'cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|' + - 'cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|' + - 'cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|' + - 'cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|' + - 'cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|' + - 'cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|' + - 'cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|' + - 'cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|' + - 'cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|' + - 'cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|' + - 'cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|' + - 'cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|' + - 'cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|' + - 'cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|' + - 'cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|' + - 'cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|' + - 'cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|' + - 'cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|' + - 'cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|' + - 'cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|' + - 'chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|' + - 'class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|' + - 'classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|' + - 'com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|' + - 'com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|' + - 'convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|' + - 'counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|' + - 'crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|' + - 'ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|' + - 'cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|' + - 'cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|' + - 'cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|' + - 'cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|' + - 'cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|' + - 'cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|' + - 'cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|' + - 'cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|' + - 'cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|' + - 'cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|' + - 'cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|' + - 'curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|' + - 'curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|' + - 'curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|' + - 'date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|' + - 'date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|' + - 'date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|' + - 'dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|' + - 'db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|' + - 'db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|' + - 'db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|' + - 'db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|' + - 'db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|' + - 'db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|' + - 'dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|' + - 'dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|' + - 'dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|' + - 'dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|' + - 'dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|' + - 'dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|' + - 'dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|' + - 'dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|' + - 'dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|' + - 'define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|' + - 'dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|' + - 'dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|' + - 'domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|' + - 'domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|' + - 'domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|' + - 'domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|' + - 'domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|' + - 'domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|' + - 'domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|' + - 'domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|' + - 'domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|' + - 'domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|' + - 'domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|' + - 'domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|' + - 'domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|' + - 'domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|' + - 'domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|' + - 'domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|' + - 'domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|' + - 'enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|' + - 'enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|' + - 'enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|' + - 'enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|' + - 'eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|' + - 'event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|' + - 'event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|' + - 'event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|' + - 'event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|' + - 'expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|' + - 'fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|' + - 'fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|' + - 'fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|' + - 'fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|' + - 'fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|' + - 'fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|' + - 'fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|' + - 'fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|' + - 'fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|' + - 'fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|' + - 'fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|' + - 'fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|' + - 'fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|' + - 'file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|' + - 'filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|' + - 'filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|' + - 'finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|' + - 'forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|' + - 'ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|' + - 'ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|' + - 'ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|' + - 'func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|' + - 'gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|' + - 'geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|' + - 'geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|' + - 'get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|' + - 'get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|' + - 'get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|' + - 'get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|' + - 'getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|' + - 'gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|' + - 'getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|' + - 'getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|' + - 'gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|' + - 'gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|' + - 'gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|' + - 'gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|' + - 'gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|' + - 'gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|' + - 'gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|' + - 'grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|' + - 'gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|' + - 'gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|' + - 'gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|' + - 'gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|' + - 'gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|' + - 'gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|' + - 'gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|' + - 'gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|' + - 'gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|' + - 'gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|' + - 'halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|' + - 'haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|' + - 'harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|' + - 'harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|' + - 'harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|' + - 'harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|' + - 'harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|' + - 'harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|' + - 'harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|' + - 'harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|' + - 'haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|' + - 'harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|' + - 'harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|' + - 'haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|' + - 'haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|' + - 'harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|' + - 'harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|' + - 'harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|' + - 'harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|' + - 'harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|' + - 'harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|' + - 'harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|' + - 'harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|' + - 'harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|' + - 'harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|' + - 'harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|' + - 'harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|' + - 'harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|' + - 'harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|' + - 'hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|' + - 'header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|' + - 'html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|' + - 'http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|' + - 'http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|' + - 'http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|' + - 'http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|' + - 'http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|' + - 'http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|' + - 'http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|' + - 'http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|' + - 'httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|' + - 'httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|' + - 'httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|' + - 'httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|' + - 'httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|' + - 'httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|' + - 'httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|' + - 'httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|' + - 'httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|' + - 'httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|' + - 'httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|' + - 'httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|' + - 'httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|' + - 'httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|' + - 'httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|' + - 'httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|' + - 'httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|' + - 'httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|' + - 'httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|' + - 'httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|' + - 'httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|' + - 'httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|' + - 'httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|' + - 'httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|' + - 'httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|' + - 'httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|' + - 'httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|' + - 'httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|' + - 'httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|' + - 'hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|' + - 'hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|' + - 'hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|' + - 'hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|' + - 'hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|' + - 'hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|' + - 'hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|' + - 'hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|' + - 'hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|' + - 'hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|' + - 'hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|' + - 'hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|' + - 'hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|' + - 'hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|' + - 'ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|' + - 'ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|' + - 'ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|' + - 'ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|' + - 'ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|' + - 'ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|' + - 'ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|' + - 'iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|' + - 'id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|' + - 'idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|' + - 'ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|' + - 'ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|' + - 'ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|' + - 'ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|' + - 'iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|' + - 'iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|' + - 'iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|' + - 'imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|' + - 'imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|' + - 'imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|' + - 'imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|' + - 'imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|' + - 'imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|' + - 'imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|' + - 'imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|' + - 'imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|' + - 'imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|' + - 'imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|' + - 'imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|' + - 'imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|' + - 'imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|' + - 'imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|' + - 'imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|' + - 'imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|' + - 'imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|' + - 'imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|' + - 'imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|' + - 'imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|' + - 'imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|' + - 'imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|' + - 'imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|' + - 'imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|' + - 'imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|' + - 'imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|' + - 'imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|' + - 'imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|' + - 'imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|' + - 'imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|' + - 'imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|' + - 'imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|' + - 'imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|' + - 'imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|' + - 'imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|' + - 'imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|' + - 'imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|' + - 'imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|' + - 'imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|' + - 'imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|' + - 'imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|' + - 'imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|' + - 'imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|' + - 'imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|' + - 'imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|' + - 'imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|' + - 'imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|' + - 'imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|' + - 'imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|' + - 'imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|' + - 'imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|' + - 'imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|' + - 'imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|' + - 'imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|' + - 'imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|' + - 'imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|' + - 'imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|' + - 'imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|' + - 'imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|' + - 'imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|' + - 'imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|' + - 'imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|' + - 'imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|' + - 'imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|' + - 'imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|' + - 'imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|' + - 'imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|' + - 'imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|' + - 'imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|' + - 'imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|' + - 'imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|' + - 'imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|' + - 'imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|' + - 'imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|' + - 'imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|' + - 'imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|' + - 'imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|' + - 'imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|' + - 'imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|' + - 'imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|' + - 'imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|' + - 'imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|' + - 'imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|' + - 'imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|' + - 'imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|' + - 'imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|' + - 'imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|' + - 'imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|' + - 'imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|' + - 'imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|' + - 'imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|' + - 'imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|' + - 'imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|' + - 'imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|' + - 'imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|' + - 'imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|' + - 'imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|' + - 'imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|' + - 'imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|' + - 'imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|' + - 'imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|' + - 'imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|' + - 'imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|' + - 'imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|' + - 'imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|' + - 'imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|' + - 'imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|' + - 'imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|' + - 'imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|' + - 'include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|' + - 'ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|' + - 'ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|' + - 'ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|' + - 'ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|' + - 'ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|' + - 'inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|' + - 'intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|' + - 'is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|' + - 'is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|' + - 'iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|' + - 'iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|' + - 'jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|' + - 'json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|' + - 'kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|' + - 'kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|' + - 'ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|' + - 'ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|' + - 'ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|' + - 'ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|' + - 'ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|' + - 'libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|' + - 'limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|' + - 'lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|' + - 'm_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|' + - 'm_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|' + - 'm_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|' + - 'm_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|' + - 'mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|' + - 'mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|' + - 'mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|' + - 'maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|' + - 'maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|' + - 'maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|' + - 'maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|' + - 'maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|' + - 'maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|' + - 'maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|' + - 'maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|' + - 'maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|' + - 'maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|' + - 'maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|' + - 'maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|' + - 'maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|' + - 'maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|' + - 'maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|' + - 'mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|' + - 'mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|' + - 'mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|' + - 'mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|' + - 'mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|' + - 'mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|' + - 'mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|' + - 'mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|' + - 'mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|' + - 'mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|' + - 'mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|' + - 'mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|' + - 'mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|' + - 'mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|' + - 'mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|' + - 'ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|' + - 'mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|' + - 'mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|' + - 'mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|' + - 'mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|' + - 'mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|' + - 'msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|' + - 'msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|' + - 'msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|' + - 'msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|' + - 'msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|' + - 'msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|' + - 'msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|' + - 'mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|' + - 'mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|' + - 'mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|' + - 'mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|' + - 'mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|' + - 'mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|' + - 'mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|' + - 'mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|' + - 'mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|' + - 'mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|' + - 'mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|' + - 'mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|' + - 'mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|' + - 'mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|' + - 'mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|' + - 'mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|' + - 'mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|' + - 'mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|' + - 'mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|' + - 'mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|' + - 'mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|' + - 'mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|' + - 'mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|' + - 'mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|' + - 'mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|' + - 'mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|' + - 'mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|' + - 'mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|' + - 'mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|' + - 'mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|' + - 'mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|' + - 'mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|' + - 'ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|' + - 'ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|' + - 'ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|' + - 'ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|' + - 'ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|' + - 'ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|' + - 'ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|' + - 'ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|' + - 'ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|' + - 'ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|' + - 'ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|' + - 'ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|' + - 'ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|' + - 'ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|' + - 'ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|' + - 'ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|' + - 'ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|' + - 'ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|' + - 'ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|' + - 'ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|' + - 'ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|' + - 'ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|' + - 'newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|' + - 'newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|' + - 'newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|' + - 'newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|' + - 'newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|' + - 'newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|' + - 'newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|' + - 'newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|' + - 'newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|' + - 'newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|' + - 'newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|' + - 'newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|' + - 'newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|' + - 'newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|' + - 'newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|' + - 'newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|' + - 'newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|' + - 'newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|' + - 'newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|' + - 'notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|' + - 'notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|' + - 'numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|' + - 'ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|' + - 'ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|' + - 'oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|' + - 'oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|' + - 'oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|' + - 'oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|' + - 'oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|' + - 'oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|' + - 'oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|' + - 'oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|' + - 'oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|' + - 'ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|' + - 'ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|' + - 'ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|' + - 'ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|' + - 'ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|' + - 'octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|' + - 'odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|' + - 'odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|' + - 'odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|' + - 'odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|' + - 'odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|' + - 'openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|' + - 'openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|' + - 'openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|' + - 'openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|' + - 'openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|' + - 'openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|' + - 'openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|' + - 'openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|' + - 'openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|' + - 'openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|' + - 'openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|' + - 'outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|' + - 'ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|' + - 'ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|' + - 'ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|' + - 'parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|' + - 'pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|' + - 'pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|' + - 'pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|' + - 'pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|' + - 'pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|' + - 'pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|' + - 'pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|' + - 'pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|' + - 'pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|' + - 'pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|' + - 'pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|' + - 'pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|' + - 'pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|' + - 'pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|' + - 'pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|' + - 'pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|' + - 'pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|' + - 'pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|' + - 'pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|' + - 'pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|' + - 'pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|' + - 'pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|' + - 'pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|' + - 'pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|' + - 'pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|' + - 'pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|' + - 'pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|' + - 'pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|' + - 'pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|' + - 'pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|' + - 'pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|' + - 'pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|' + - 'pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|' + - 'pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|' + - 'pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|' + - 'php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|' + - 'png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|' + - 'posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|' + - 'posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|' + - 'posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|' + - 'preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|' + - 'printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|' + - 'printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|' + - 'printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|' + - 'printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|' + - 'printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|' + - 'ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|' + - 'ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|' + - 'ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|' + - 'ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|' + - 'ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|' + - 'ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|' + - 'ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|' + - 'ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|' + - 'ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|' + - 'pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|' + - 'pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|' + - 'pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|' + - 'px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|' + - 'px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|' + - 'px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|' + - 'radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|' + - 'radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|' + - 'radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|' + - 'radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|' + - 'rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|' + - 'readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|' + - 'readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|' + - 'readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|' + - 'recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|' + - 'recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|' + - 'reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|' + - 'regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|' + - 'resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|' + - 'rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|' + - 'rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|' + - 'runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|' + - 'runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|' + - 'runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|' + - 'runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|' + - 'samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|' + - 'samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|' + - 'sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|' + - 'sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|' + - 'sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|' + - 'sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|' + - 'sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|' + - 'sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|' + - 'sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|' + - 'sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|' + - 'sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|' + - 'sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|' + - 'sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|' + - 'sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|' + - 'sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|' + - 'sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|' + - 'sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|' + - 'sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|' + - 'sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|' + - 'sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|' + - 'sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|' + - 'sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|' + - 'session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|' + - 'session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|' + - 'session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|' + - 'session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|' + - 'set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|' + - 'setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|' + - 'shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|' + - 'similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|' + - 'snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|' + - 'snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|' + - 'snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|' + - 'soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|' + - 'socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|' + - 'socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|' + - 'socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|' + - 'solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|' + - 'solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|' + - 'solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|' + - 'spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|' + - 'splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|' + - 'splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|' + - 'sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|' + - 'sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|' + - 'sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|' + - 'sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|' + - 'sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|' + - 'sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|' + - 'ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|' + - 'ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|' + - 'ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|' + - 'ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|' + - 'stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|' + - 'stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|' + - 'stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|' + - 'stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|' + - 'stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|' + - 'stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|' + - 'stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|' + - 'stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|' + - 'stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|' + - 'stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|' + - 'stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|' + - 'stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|' + - 'str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|' + - 'stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|' + - 'stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|' + - 'stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|' + - 'stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|' + - 'stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|' + - 'stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|' + - 'stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|' + - 'stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|' + - 'stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|' + - 'strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|' + - 'svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|' + - 'svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|' + - 'svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|' + - 'svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|' + - 'svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|' + - 'svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|' + - 'swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|' + - 'swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|' + - 'swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|' + - 'swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|' + - 'swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|' + - 'swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|' + - 'swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|' + - 'swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|' + - 'swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|' + - 'swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|' + - 'swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|' + - 'swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|' + - 'swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|' + - 'sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|' + - 'sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|' + - 'sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|' + - 'sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|' + - 'tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|' + - 'tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|' + - 'time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|' + - 'timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|' + - 'tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|' + - 'ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|' + - 'udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|' + - 'udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|' + - 'uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|' + - 'urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|' + - 'variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|' + - 'variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|' + - 'variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|' + - 'vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|' + - 'vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|' + - 'vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|' + - 'w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|' + - 'wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|' + - 'win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|' + - 'win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|' + - 'wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|' + - 'wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|' + - 'wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|' + - 'wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|' + - 'xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|' + - 'xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|' + - 'xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|' + - 'xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|' + - 'xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|' + - 'xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|' + - 'xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|' + - 'xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|' + - 'xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|' + - 'xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|' + - 'xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|' + - 'xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|' + - 'xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|' + - 'xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|' + - 'xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|' + - 'xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|' + - 'xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|' + - 'xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|' + - 'xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|' + - 'xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|' + - 'xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|' + - 'xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|' + - 'yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|' + - 'yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|' + - 'yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|' + - 'yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|' + - 'zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|' + - 'ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|' + - 'ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|' + - 'ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|' + - 'ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|' + - 'ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|' + - 'ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type').split('|') - ); - var keywords = lang.arrayToMap( - ('abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|' + - 'endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|' + - 'public|static|switch|throw|trait|try|use|var|while|xor').split('|') - ); - var languageConstructs = lang.arrayToMap( - ('die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|') - ); - - var builtinConstants = lang.arrayToMap( - ('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__').split('|') - ); - - var builtinVariables = lang.arrayToMap( - ('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|' + - '$http_response_header|$argc|$argv').split('|') - ); - var builtinFunctionsDeprecated = lang.arrayToMap( - ('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|' + - 'com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|' + - 'cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|' + - 'hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|' + - 'maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|' + - 'mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|' + - 'mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|' + - 'mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|' + - 'mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|' + - 'mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|' + - 'mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|' + - 'ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|' + - 'ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|' + - 'ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|' + - 'ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|' + - 'ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|' + - 'PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|' + - 'PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|' + - 'PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|' + - 'PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|' + - 'PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|' + - 'PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|' + - 'PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|' + - 'PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|' + - 'px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister' + - 'set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|' + - 'sql_regcase').split('|') - ); - - var keywordsDeprecated = lang.arrayToMap( - ('cfunction|old_function').split('|') - ); - + var builtinFunctions = lang.arrayToMap('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|\ +aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|\ +apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|\ +apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|\ +apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|\ +apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|\ +apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|\ +apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_column|array_combine|\ +array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|\ +array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|\ +array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|\ +array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|\ +array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|\ +array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|\ +atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|\ +bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|\ +bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|\ +bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|\ +bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|\ +bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|\ +cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|\ +cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|\ +cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|\ +cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|\ +cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|\ +cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|\ +cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|\ +cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|\ +cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|\ +cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|\ +cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|\ +cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|\ +cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|\ +cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|\ +cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|\ +cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|\ +cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|\ +cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|\ +cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|\ +cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|\ +cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|\ +cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|\ +cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|\ +cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|\ +cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|\ +cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|\ +cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|\ +cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|\ +chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|\ +class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|\ +classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|\ +com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|\ +com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|\ +convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|\ +counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|\ +crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|\ +ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|\ +cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|\ +cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|\ +cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|\ +cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|\ +cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|\ +cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|\ +cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|\ +cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|\ +cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|\ +cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|\ +cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|\ +curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|\ +curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|\ +curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|\ +date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|\ +date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|\ +date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|\ +dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|\ +db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|\ +db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|\ +db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|\ +db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|\ +db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|\ +db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|\ +dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|\ +dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|\ +dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|\ +dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|\ +dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|\ +dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|\ +dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|\ +dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|\ +dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|\ +define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|\ +dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|\ +dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|\ +domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|\ +domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|\ +domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|\ +domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|\ +domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|\ +domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|\ +domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|\ +domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|\ +domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|\ +domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|\ +domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|\ +domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|\ +domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|\ +domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|\ +domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|\ +domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|\ +domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|\ +enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|\ +enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|\ +enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|\ +enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|\ +eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|\ +event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|\ +event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|\ +event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|\ +event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|\ +expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|\ +fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|\ +fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|\ +fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|\ +fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|\ +fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|\ +fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|\ +fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|\ +fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|\ +fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|\ +fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|\ +fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|\ +fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|\ +fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|\ +file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|\ +filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|\ +filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|\ +finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|\ +forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|\ +ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|\ +ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|\ +ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|\ +func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|\ +gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|\ +geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|\ +geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|\ +get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|\ +get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|\ +get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|\ +get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|\ +getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|\ +gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|\ +getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|\ +getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|\ +gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|\ +gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|\ +gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|\ +gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|\ +gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|\ +gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|\ +gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|\ +grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|\ +gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|\ +gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|\ +gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|\ +gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|\ +gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|\ +gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|\ +gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|\ +gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|\ +gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|\ +gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|\ +halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|\ +haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|\ +harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|\ +harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|\ +harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|\ +harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|\ +harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|\ +harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|\ +harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|\ +harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|\ +haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|\ +harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|\ +harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|\ +haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|\ +haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|\ +harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|\ +harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|\ +harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|\ +harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|\ +harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|\ +harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|\ +harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|\ +harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|\ +harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|\ +harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|\ +harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|\ +harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|\ +harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|\ +harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|\ +hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|\ +header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|\ +html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|\ +http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|\ +http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|\ +http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|\ +http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|\ +http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|\ +http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|\ +http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|\ +http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|\ +httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|\ +httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|\ +httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|\ +httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|\ +httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|\ +httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|\ +httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|\ +httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|\ +httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|\ +httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|\ +httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|\ +httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|\ +httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|\ +httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|\ +httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|\ +httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|\ +httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|\ +httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|\ +httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|\ +httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|\ +httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|\ +httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|\ +httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|\ +httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|\ +httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|\ +httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|\ +httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|\ +httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|\ +httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|\ +hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|\ +hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|\ +hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|\ +hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|\ +hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|\ +hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|\ +hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|\ +hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|\ +hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|\ +hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|\ +hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|\ +hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|\ +hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|\ +hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|\ +ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|\ +ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|\ +ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|\ +ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|\ +ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|\ +ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|\ +ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|\ +iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|\ +id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|\ +idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|\ +ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|\ +ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|\ +ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|\ +ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|\ +iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|\ +iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|\ +iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|\ +imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|\ +imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|\ +imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|\ +imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|\ +imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|\ +imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|\ +imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|\ +imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|\ +imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|\ +imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|\ +imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|\ +imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|\ +imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|\ +imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|\ +imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|\ +imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|\ +imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|\ +imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|\ +imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|\ +imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|\ +imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|\ +imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|\ +imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|\ +imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|\ +imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|\ +imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|\ +imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|\ +imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|\ +imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|\ +imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|\ +imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|\ +imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|\ +imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|\ +imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|\ +imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|\ +imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|\ +imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|\ +imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|\ +imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|\ +imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|\ +imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|\ +imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|\ +imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|\ +imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|\ +imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|\ +imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|\ +imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|\ +imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|\ +imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|\ +imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|\ +imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|\ +imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|\ +imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|\ +imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|\ +imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|\ +imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|\ +imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|\ +imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|\ +imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|\ +imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|\ +imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|\ +imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|\ +imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|\ +imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|\ +imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|\ +imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|\ +imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|\ +imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|\ +imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|\ +imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|\ +imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|\ +imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|\ +imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|\ +imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|\ +imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|\ +imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|\ +imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|\ +imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|\ +imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|\ +imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|\ +imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|\ +imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|\ +imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|\ +imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|\ +imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|\ +imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|\ +imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|\ +imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|\ +imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|\ +imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|\ +imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|\ +imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|\ +imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|\ +imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|\ +imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|\ +imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|\ +imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|\ +imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|\ +imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|\ +imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|\ +imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|\ +imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|\ +imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|\ +imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|\ +imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|\ +imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|\ +imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|\ +imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|\ +imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|\ +imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|\ +include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|\ +ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|\ +ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|\ +ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|\ +ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|\ +ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|\ +inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|\ +intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|\ +is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|\ +is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|\ +iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|\ +iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|\ +jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|\ +json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|\ +kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|\ +kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|\ +ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|\ +ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|\ +ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|\ +ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|\ +ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|\ +libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|\ +limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|\ +lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|\ +m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|\ +m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|\ +m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|\ +m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|\ +mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|\ +mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|\ +mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|\ +maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|\ +maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|\ +maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|\ +maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|\ +maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|\ +maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|\ +maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|\ +maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|\ +maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|\ +maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|\ +maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|\ +maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|\ +maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|\ +maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|\ +maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|\ +mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|\ +mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|\ +mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|\ +mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|\ +mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|\ +mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|\ +mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|\ +mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|\ +mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|\ +mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|\ +mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|\ +mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|\ +mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|\ +mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|\ +mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|\ +ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|\ +mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|\ +mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|\ +mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|\ +mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|\ +mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|\ +msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|\ +msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|\ +msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|\ +msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|\ +msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|\ +msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|\ +msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|\ +mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|\ +mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|\ +mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|\ +mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|\ +mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|\ +mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|\ +mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|\ +mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|\ +mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|\ +mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|\ +mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|\ +mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|\ +mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|\ +mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|\ +mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|\ +mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|\ +mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|\ +mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|\ +mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|\ +mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|\ +mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|\ +mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|\ +mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|\ +mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|\ +mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|\ +mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|\ +mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|\ +mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|\ +mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|\ +mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|\ +mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|\ +mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|\ +ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|\ +ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|\ +ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|\ +ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|\ +ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|\ +ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|\ +ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|\ +ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|\ +ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|\ +ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|\ +ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|\ +ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|\ +ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|\ +ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|\ +ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|\ +ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|\ +ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|\ +ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|\ +ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|\ +ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|\ +ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|\ +ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|\ +newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|\ +newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|\ +newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|\ +newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|\ +newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|\ +newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|\ +newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|\ +newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|\ +newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|\ +newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|\ +newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|\ +newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|\ +newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|\ +newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|\ +newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|\ +newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|\ +newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|\ +newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|\ +newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|\ +notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|\ +notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|\ +numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|\ +ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|\ +ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|\ +oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|\ +oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|\ +oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|\ +oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|\ +oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|\ +oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|\ +oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|\ +oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|\ +oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|\ +ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|\ +ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|\ +ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|\ +ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|\ +ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|\ +octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|\ +odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|\ +odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|\ +odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|\ +odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|\ +odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|\ +openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|\ +openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|\ +openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|\ +openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|\ +openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|\ +openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|\ +openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|\ +openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|\ +openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|\ +openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|\ +openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|\ +outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|\ +ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|\ +ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|\ +ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|\ +parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|\ +pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|\ +pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|\ +pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|\ +pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|\ +pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|\ +pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|\ +pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|\ +pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|\ +pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|\ +pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|\ +pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|\ +pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|\ +pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|\ +pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|\ +pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|\ +pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|\ +pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|\ +pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|\ +pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|\ +pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|\ +pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|\ +pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|\ +pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|\ +pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|\ +pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|\ +pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|\ +pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|\ +pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|\ +pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|\ +pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|\ +pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|\ +pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|\ +pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|\ +pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|\ +pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|\ +php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|\ +png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|\ +posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|\ +posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|\ +posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|\ +preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|\ +printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|\ +printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|\ +printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|\ +printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|\ +printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|\ +ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|\ +ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|\ +ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|\ +ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|\ +ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|\ +ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|\ +ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|\ +ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|\ +ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|\ +pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|\ +pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|\ +pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|\ +px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|\ +px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|\ +px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|\ +radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|\ +radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|\ +radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|\ +radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|\ +rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|\ +readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|\ +readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|\ +readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|\ +recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|\ +recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|\ +reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|\ +regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|\ +resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|\ +rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|\ +rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|\ +runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|\ +runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|\ +runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|\ +runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|\ +samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|\ +samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|\ +sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|\ +sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|\ +sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|\ +sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|\ +sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|\ +sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|\ +sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|\ +sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|\ +sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|\ +sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|\ +sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|\ +sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|\ +sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|\ +sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|\ +sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|\ +sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|\ +sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|\ +sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|\ +sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|\ +sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|\ +session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|\ +session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|\ +session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|\ +session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|\ +set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|\ +setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|\ +shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|\ +similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|\ +snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|\ +snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|\ +snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|\ +soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|\ +socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|\ +socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|\ +socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|\ +solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|\ +solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|\ +solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|\ +spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|\ +splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|\ +splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|\ +sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|\ +sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|\ +sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|\ +sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|\ +sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|\ +sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|\ +ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|\ +ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|\ +ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|\ +ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|\ +stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|\ +stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|\ +stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|\ +stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|\ +stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|\ +stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|\ +stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|\ +stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|\ +stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|\ +stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|\ +stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|\ +stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|\ +str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|\ +stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|\ +stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|\ +stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|\ +stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|\ +stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|\ +stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|\ +stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|\ +stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|\ +stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|\ +strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|\ +svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|\ +svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|\ +svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|\ +svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|\ +svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|\ +svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|\ +swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|\ +swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|\ +swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|\ +swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|\ +swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|\ +swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|\ +swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|\ +swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|\ +swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|\ +swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|\ +swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|\ +swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|\ +swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|\ +sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|\ +sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|\ +sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|\ +sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|\ +tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|\ +tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|\ +time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|\ +timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|\ +tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|\ +ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|\ +udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|\ +udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|\ +uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|\ +urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|\ +variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|\ +variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|\ +variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|\ +vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|\ +vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|\ +vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|\ +w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|\ +wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|\ +win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|\ +win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|\ +wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|\ +wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|\ +wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|\ +wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|\ +xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|\ +xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|\ +xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|\ +xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|\ +xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|\ +xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|\ +xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|\ +xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|\ +xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|\ +xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|\ +xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|\ +xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|\ +xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|\ +xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|\ +xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|\ +xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|\ +xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|\ +xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|\ +xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|\ +xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|\ +xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|\ +xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|\ +yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|\ +yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|\ +yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|\ +yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|\ +zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|\ +ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|\ +ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|\ +ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|\ +ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|\ +ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|\ +ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type'.split('|')); + var keywords = lang.arrayToMap('abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|\ +endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|\ +public|static|switch|throw|trait|try|use|var|while|xor|yield'.split('|')); + var languageConstructs = lang.arrayToMap(('__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|')); + var builtinConstants = lang.arrayToMap(('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__').split('|')); + var builtinVariables = lang.arrayToMap('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|\ +$http_response_header|$argc|$argv'.split('|')); + var builtinFunctionsDeprecated = lang.arrayToMap('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|\ +com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|\ +cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|\ +hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|\ +maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|\ +mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|\ +mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|\ +mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|\ +mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|\ +mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|\ +mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|\ +ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|\ +ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|\ +ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|\ +ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|\ +ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|\ +PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|\ +PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|\ +PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|\ +PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|\ +PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|\ +PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|\ +PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|\ +PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|\ +px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister\ +set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|\ +sql_regcase'.split('|')); + var keywordsDeprecated = lang.arrayToMap(('cfunction|old_function').split('|')); var futureReserved = lang.arrayToMap([]); - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : /(?:#|\/\/)(?:[^?]|\?[^>])*/ + token: "comment", + regex: /(?:#|\/\/)(?:[^?]|\?[^>])*/ }, docComment.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" }, { - token : "string", // " string start - regex : '"', - next : "qqstring" + token: "string", // " string start + regex: '"', + next: "qqstring" }, { - token : "string", // ' string start - regex : "'", - next : "qstring" + token: "string", // ' string start + regex: "'", + next: "qstring" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : "constant.language", // constants - regex : "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + - "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + - "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + - "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + - "VERSION))|__COMPILER_HALT_OFFSET__)\\b" + token: "constant.language", // constants + regex: "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + + "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + + "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + + "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + + "VERSION))|__COMPILER_HALT_OFFSET__)\\b" }, { - token : ["keyword", "text", "support.class"], - regex : "\\b(new)(\\s+)(\\w+)" + token: ["keyword", "text", "support.class"], + regex: "\\b(new)(\\s+)(\\w+)" }, { - token : ["support.class", "keyword.operator"], - regex : "\\b(\\w+)(::)" + token: ["support.class", "keyword.operator"], + regex: "\\b(\\w+)(::)" }, { - token : "constant.language", // constants - regex : "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + - "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + - "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + - "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + - "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + - "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + - "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + - "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + - "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + - "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + - "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + - "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + - "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + - "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + - "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + - "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" + token: "constant.language", // constants + regex: "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + + "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + + "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + + "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + + "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + + "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + + "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + + "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + + "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + + "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + + "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + + "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + + "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + + "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + + "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + + "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" }, { - token : function(value) { + token: function (value) { if (keywords.hasOwnProperty(value)) return "keyword"; else if (builtinConstants.hasOwnProperty(value)) @@ -1942,165 +2055,177 @@ var PhpLangHighlightRules = function() { return "support.function"; else if (value == "debugger") return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)) - return "variable"; - return "identifier"; + else if (value.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)) + return "variable"; + return "identifier"; }, - regex : /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ + regex: /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ }, { - onMatch : function(value, currentSate, state) { + onMatch: function (value, currentSate, state) { value = value.substr(3); if (value[0] == "'" || value[0] == '"') value = value.slice(1, -1); state.unshift(this.next, value); return "markup.list"; }, - regex : /<<<(?:\w+|'\w+'|"\w+")$/, + regex: /<<<(?:\w+|'\w+'|"\w+")$/, next: "heredoc" }, { - token : "keyword.operator", - regex : "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|=|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: "keyword.operator", + regex: "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" }, { - token : "paren.lparen", - regex : "[[({]" + token: "punctuation.operator", + regex: /[,;]/ }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "text", - regex : "\\s+" + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" } ], - "heredoc" : [ + "heredoc": [ { - onMatch : function(value, currentSate, stack) { - if (stack[1] != value) + onMatch: function (value, currentState, stack) { + if (stack[1] != value) { + this.next = ""; return "string"; + } stack.shift(); stack.shift(); + this.next = this.nextState; return "markup.list"; }, - regex : "^\\w+(?=;?$)", - next: "start" + regex: "^\\w+(?=;?$)", + nextState: "start" }, { token: "string", - regex : ".*" + regex: ".*" } ], - "comment" : [ + "comment": [ { - token : "comment", - regex : "\\*\\/", - next : "start" + token: "comment", + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - "qqstring" : [ + "qqstring": [ { - token : "constant.language.escape", - regex : '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' + token: "constant.language.escape", + regex: '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' }, { - token : "variable", - regex : /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ + token: "variable", + regex: /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ }, { - token : "variable", - regex : /\$\{[^"\}]+\}?/ // this is wrong but ok for now + token: "variable", + regex: /\$\{[^"\}]+\}?/ // this is wrong but ok for now }, - {token : "string", regex : '"', next : "start"}, - {defaultToken : "string"} + { token: "string", regex: '"', next: "start" }, + { defaultToken: "string" } ], - "qstring" : [ - {token : "constant.language.escape", regex : /\\['\\]/}, - {token : "string", regex : "'", next : "start"}, - {defaultToken : "string"} + "qstring": [ + { token: "constant.language.escape", regex: /\\['\\]/ }, + { token: "string", regex: "'", next: "start" }, + { defaultToken: "string" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - oop.inherits(PhpLangHighlightRules, TextHighlightRules); - - -var PhpHighlightRules = function() { +var PhpHighlightRules = function () { HtmlHighlightRules.call(this); - var startRules = [ { - token : "support.php_tag", // php open tag - regex : "<\\?(?:php|=)?", - push : "php-start" + token: "support.php_tag", // php open tag + regex: "<\\?(?:php|=)?", + push: "php-start" } ]; - var endRules = [ { - token : "support.php_tag", // php close tag - regex : "\\?>", - next : "pop" + token: "support.php_tag", // php close tag + regex: "\\?>", + next: "pop" } ]; - for (var key in this.$rules) this.$rules[key].unshift.apply(this.$rules[key], startRules); - this.embedRules(PhpLangHighlightRules, "php-", endRules, ["start"]); - this.normalizeRules(); }; - oop.inherits(PhpHighlightRules, HtmlHighlightRules); - exports.PhpHighlightRules = PhpHighlightRules; exports.PhpLangHighlightRules = PhpLangHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/php_completions",["require","exports","module"], function(require, exports, module) { +define("ace/mode/php_completions",["require","exports","module"], function(require, exports, module){/** + * ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** + */ "use strict"; - var functionMap = { "abs": [ "int abs(int number)", @@ -2131,15 +2256,15 @@ var functionMap = { "Escapes single quote, double quotes and backslash characters in a string with backslashes" ], "apache_child_terminate": [ - "bool apache_child_terminate(void)", + "bool apache_child_terminate()", "Terminate apache process after this request" ], "apache_get_modules": [ - "array apache_get_modules(void)", + "array apache_get_modules()", "Get a list of loaded Apache modules" ], "apache_get_version": [ - "string apache_get_version(void)", + "string apache_get_version()", "Fetch Apache version" ], "apache_getenv": [ @@ -2171,7 +2296,7 @@ var functionMap = { "* fetch all headers that go out in case of an error or a subrequest" ], "apache_request_headers": [ - "array apache_request_headers(void)", + "array apache_request_headers()", "Fetch all HTTP request headers" ], "apache_request_headers_in": [ @@ -2187,7 +2312,7 @@ var functionMap = { "" ], "apache_request_log_error": [ - "boolean apache_request_log_error(string message, [long facility])", + "bool apache_request_log_error(string message, [long facility])", "" ], "apache_request_meets_conditions": [ @@ -2239,11 +2364,11 @@ var functionMap = { "" ], "apache_reset_timeout": [ - "bool apache_reset_timeout(void)", + "bool apache_reset_timeout()", "Reset the Apache write timer" ], "apache_response_headers": [ - "array apache_response_headers(void)", + "array apache_response_headers()", "Fetch all HTTP response headers" ], "apache_setenv": [ @@ -2330,6 +2455,14 @@ var functionMap = { "array array_keys(array input [, mixed search_value[, bool strict]])", "Return just the keys from the input array, optionally only for the specified search_value" ], + "array_key_first": [ + "mixed array_key_first(array arr)", + "Returns the first key of arr if the array is not empty; NULL otherwise" + ], + "array_key_last": [ + "mixed array_key_last(array arr)", + "Returns the last key of arr if the array is not empty; NULL otherwise" + ], "array_map": [ "array array_map(mixed callback, array input1 [, array input2 ,...])", "Applies the callback to the elements in given arrays." @@ -2687,7 +2820,7 @@ var functionMap = { "Change file mode" ], "chown": [ - "bool chown (string filename, mixed user)", + "bool chown(string filename, mixed user)", "Change file owner" ], "chr": [ @@ -2715,7 +2848,7 @@ var functionMap = { "Return all classes and interfaces implemented by SPL" ], "class_parents": [ - "array class_parents(object instance [, boolean autoload = true])", + "array class_parents(object instance [, bool autoload = true])", "Return an array containing the names of all parent classes" ], "clearstatcache": [ @@ -2727,7 +2860,7 @@ var functionMap = { "Close directory connection identified by the dir_handle" ], "closelog": [ - "bool closelog(void)", + "bool closelog()", "Close connection to system logger" ], "collator_asort": [ @@ -2819,11 +2952,11 @@ var functionMap = { "Return a string to confirm that the module is compiled in" ], "connection_aborted": [ - "int connection_aborted(void)", + "int connection_aborted()", "Returns true if client disconnected" ], "connection_status": [ - "int connection_status(void)", + "int connection_status()", "Returns the connection status bitfield" ], "constant": [ @@ -2868,7 +3001,7 @@ var functionMap = { ], "create_function": [ "string create_function(string args, string code)", - "Creates an anonymous function, and returns its name (funny, eh?)" + "Creates an anonymous function, and returns its name" ], "crypt": [ "string crypt(string str [, string salt])", @@ -2967,7 +3100,7 @@ var functionMap = { "Get information about the current transfers" ], "curl_multi_init": [ - "resource curl_multi_init(void)", + "resource curl_multi_init()", "Returns a new cURL multi handle" ], "curl_multi_remove_handle": [ @@ -3163,7 +3296,7 @@ var functionMap = { "* Set formatter pattern." ], "datefmt_set_timezone_id": [ - "boolean datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", + "bool datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", "* Set formatter timezone_id." ], "dba_close": [ @@ -3231,7 +3364,7 @@ var functionMap = { "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist" ], "dcngettext": [ - "string dcngettext (string domain, string msgid1, string msgid2, int n, int category)", + "string dcngettext(string domain, string msgid1, string msgid2, int n, int category)", "Plural version of dcgettext()" ], "debug_backtrace": [ @@ -3239,44 +3372,231 @@ var functionMap = { "Return backtrace as array" ], "debug_print_backtrace": [ - "void debug_print_backtrace(void) */", - "ZEND_FUNCTION(debug_print_backtrace) { zend_execute_data *ptr, *skip; int lineno; char *function_name; char *filename; char *class_name = NULL; char *call_type; char *include_filename = NULL; zval *arg_array = NULL; int indent = 0; if (zend_parse_parameters_none() == FAILURE) { return; } ptr = EG(current_execute_data);", + "void debug_print_backtrace()", + "Prints a PHP backtrace" + ], + "debug_zval_dump": [ + "void debug_zval_dump(mixed var)", + "Dumps a string representation of an internal Zend value to output" + ], + "decbin": [ + "string decbin(int decimal_number)", + "Returns a string containing a binary representation of the number" + ], + "dechex": [ + "string dechex(int decimal_number)", + "Returns a string containing a hexadecimal representation of the given number" + ], + "decoct": [ + "string decoct(int decimal_number)", + "Returns a string containing an octal representation of the given number" + ], + "define": [ + "bool define(string constant_name, mixed value, bool case_insensitive=false)", + "Define a new constant" + ], + "define_syslog_variables": [ + "void define_syslog_variables()", + "Initializes all syslog-related variables" + ], + "defined": [ + "bool defined(string constant_name)", + "Check whether a constant exists" + ], + "deg2rad": [ + "float deg2rad(float number)", + "Converts the number in degrees to the radian equivalent" + ], + "dgettext": [ + "string dgettext(string domain_name, string msgid)", + "Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist" + ], + "die": [ + "void die([mixed status])", + "Output a message and terminate the current script" + ], + "dir": [ + "object dir(string directory[, resource context])", + "Directory class with properties, handle and class and methods read, rewind and close" + ], + "dirname": [ + "string dirname(string path)", + "Returns the directory name component of the path" + ], + "disk_free_space": [ + "float disk_free_space(string path)", + "Get free disk space for filesystem that path is on" + ], + "disk_total_space": [ + "float disk_total_space(string path)", + "Get total disk space for filesystem that path is on" + ], + "display_disabled_function": [ + "void display_disabled_function()", + "Dummy function which displays an error when a disabled function is called." + ], + "dl": [ + "int dl(string extension_filename)", + "Load a PHP extension at runtime" + ], + "dngettext": [ + "string dngettext(string domain, string msgid1, string msgid2, int count)", + "Plural version of dgettext()" + ], + "dns_check_record": [ + "bool dns_check_record(string host [, string type])", + "Check DNS records corresponding to a given Internet host name or IP address" + ], + "dns_get_mx": [ + "bool dns_get_mx(string hostname, array mxhosts [, array weight])", + "Get MX records corresponding to a given Internet host name" + ], + "dns_get_record": [ + "array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])", + "Get any Resource Record corresponding to a given Internet host name" + ], + "dom_attr_is_id": [ + "bool dom_attr_is_id()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3" + ], + "dom_characterdata_append_data": [ + "void dom_characterdata_append_data(string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:" + ], + "dom_characterdata_delete_data": [ + "void dom_characterdata_delete_data(int offset, int count)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:" + ], + "dom_characterdata_insert_data": [ + "void dom_characterdata_insert_data(int offset, string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:" + ], + "dom_characterdata_replace_data": [ + "void dom_characterdata_replace_data(int offset, int count, string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:" + ], + "dom_characterdata_substring_data": [ + "string dom_characterdata_substring_data(int offset, int count)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:" + ], + "dom_document_adopt_node": [ + "DOMNode dom_document_adopt_node(DOMNode source)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3" + ], + "dom_document_create_attribute": [ + "DOMAttr dom_document_create_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:" + ], + "dom_document_create_attribute_ns": [ + "DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2" + ], + "dom_document_create_cdatasection": [ + "DOMCdataSection dom_document_create_cdatasection(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:" + ], + "dom_document_create_comment": [ + "DOMComment dom_document_create_comment(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:" + ], + "dom_document_create_document_fragment": [ + "DOMDocumentFragment dom_document_create_document_fragment()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:" + ], + "dom_document_create_element": [ + "DOMElement dom_document_create_element(string tagName [, string value])", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:" + ], + "dom_document_create_element_ns": [ + "DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value])", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2" + ], + "dom_document_create_entity_reference": [ + "DOMEntityReference dom_document_create_entity_reference(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:" + ], + "dom_document_create_processing_instruction": [ + "DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:" + ], + "dom_document_create_text_node": [ + "DOMText dom_document_create_text_node(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:" + ], + "dom_document_get_element_by_id": [ + "DOMElement dom_document_get_element_by_id(string elementId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2" + ], + "dom_document_get_elements_by_tag_name": [ + "DOMNodeList dom_document_get_elements_by_tag_name(string tagname)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:" + ], + "dom_document_get_elements_by_tag_name_ns": [ + "DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2" + ], + "dom_document_import_node": [ + "DOMNode dom_document_import_node(DOMNode importedNode, bool deep)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2" + ], + "dom_document_load": [ + "DOMNode dom_document_load(string source [, int options])", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3" + ], + "dom_document_load_html": [ + "DOMNode dom_document_load_html(string source)", + "Since: DOM extended" + ], + "dom_document_load_html_file": [ + "DOMNode dom_document_load_html_file(string source)", + "Since: DOM extended" + ], + "dom_document_loadxml": [ + "DOMNode dom_document_loadxml(string source [, int options])", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3" + ], + "dom_document_normalize_document": [ + "void dom_document_normalize_document()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3" + ], + "dom_document_relaxNG_validate_file": [ + "bool dom_document_relaxNG_validate_file(string filename); */", "PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file" ], "dom_document_relaxNG_validate_xml": [ - "boolean dom_document_relaxNG_validate_xml(string source); */", + "bool dom_document_relaxNG_validate_xml(string source); */", "PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml" ], "dom_document_rename_node": [ - "DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName);", + "DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3" ], "dom_document_save": [ - "int dom_document_save(string file);", + "int dom_document_save(string file)", "Convenience method to save to file" ], "dom_document_save_html": [ - "string dom_document_save_html();", + "string dom_document_save_html()", "Convenience method to output as html" ], "dom_document_save_html_file": [ - "int dom_document_save_html_file(string file);", + "int dom_document_save_html_file(string file)", "Convenience method to save to file as html" ], "dom_document_savexml": [ - "string dom_document_savexml([node n]);", + "string dom_document_savexml([node n])", "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3" ], "dom_document_schema_validate": [ - "boolean dom_document_schema_validate(string source); */", + "bool dom_document_schema_validate(string source); */", "PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate" ], "dom_document_schema_validate_file": [ - "boolean dom_document_schema_validate_file(string filename); */", + "bool dom_document_schema_validate_file(string filename); */", "PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file" ], "dom_document_validate": [ - "boolean dom_document_validate();", + "bool dom_document_validate()", "Since: DOM extended" ], "dom_document_xinclude": [ @@ -3284,123 +3604,123 @@ var functionMap = { "Substitutues xincludes in a DomDocument" ], "dom_domconfiguration_can_set_parameter": [ - "boolean dom_domconfiguration_can_set_parameter(string name, domuserdata value);", + "bool dom_domconfiguration_can_set_parameter(string name, domuserdata value)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:" ], "dom_domconfiguration_get_parameter": [ - "domdomuserdata dom_domconfiguration_get_parameter(string name);", + "domdomuserdata dom_domconfiguration_get_parameter(string name)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:" ], "dom_domconfiguration_set_parameter": [ - "dom_void dom_domconfiguration_set_parameter(string name, domuserdata value);", + "dom_void dom_domconfiguration_set_parameter(string name, domuserdata value)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:" ], "dom_domerrorhandler_handle_error": [ - "dom_boolean dom_domerrorhandler_handle_error(domerror error);", + "dom_bool dom_domerrorhandler_handle_error(domerror error)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:" ], "dom_domimplementation_create_document": [ - "DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype);", + "DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2" ], "dom_domimplementation_create_document_type": [ - "DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId);", + "DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2" ], "dom_domimplementation_get_feature": [ - "DOMNode dom_domimplementation_get_feature(string feature, string version);", + "DOMNode dom_domimplementation_get_feature(string feature, string version)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3" ], "dom_domimplementation_has_feature": [ - "boolean dom_domimplementation_has_feature(string feature, string version);", + "bool dom_domimplementation_has_feature(string feature, string version)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:" ], "dom_domimplementationlist_item": [ - "domdomimplementation dom_domimplementationlist_item(int index);", + "domdomimplementation dom_domimplementationlist_item(int index)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:" ], "dom_domimplementationsource_get_domimplementation": [ - "domdomimplementation dom_domimplementationsource_get_domimplementation(string features);", + "domdomimplementation dom_domimplementationsource_get_domimplementation(string features)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:" ], "dom_domimplementationsource_get_domimplementations": [ - "domimplementationlist dom_domimplementationsource_get_domimplementations(string features);", + "domimplementationlist dom_domimplementationsource_get_domimplementations(string features)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:" ], "dom_domstringlist_item": [ - "domstring dom_domstringlist_item(int index);", + "domstring dom_domstringlist_item(int index)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:" ], "dom_element_get_attribute": [ - "string dom_element_get_attribute(string name);", + "string dom_element_get_attribute(string name)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:" ], "dom_element_get_attribute_node": [ - "DOMAttr dom_element_get_attribute_node(string name);", + "DOMAttr dom_element_get_attribute_node(string name)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:" ], "dom_element_get_attribute_node_ns": [ - "DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName);", + "DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2" ], "dom_element_get_attribute_ns": [ - "string dom_element_get_attribute_ns(string namespaceURI, string localName);", + "string dom_element_get_attribute_ns(string namespaceURI, string localName)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2" ], "dom_element_get_elements_by_tag_name": [ - "DOMNodeList dom_element_get_elements_by_tag_name(string name);", + "DOMNodeList dom_element_get_elements_by_tag_name(string name)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:" ], "dom_element_get_elements_by_tag_name_ns": [ - "DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName);", + "DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2" ], "dom_element_has_attribute": [ - "boolean dom_element_has_attribute(string name);", + "bool dom_element_has_attribute(string name)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2" ], "dom_element_has_attribute_ns": [ - "boolean dom_element_has_attribute_ns(string namespaceURI, string localName);", + "bool dom_element_has_attribute_ns(string namespaceURI, string localName)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2" ], "dom_element_remove_attribute": [ - "void dom_element_remove_attribute(string name);", + "void dom_element_remove_attribute(string name)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:" ], "dom_element_remove_attribute_node": [ - "DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr);", + "DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:" ], "dom_element_remove_attribute_ns": [ - "void dom_element_remove_attribute_ns(string namespaceURI, string localName);", + "void dom_element_remove_attribute_ns(string namespaceURI, string localName)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2" ], "dom_element_set_attribute": [ - "void dom_element_set_attribute(string name, string value);", + "void dom_element_set_attribute(string name, string value)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:" ], "dom_element_set_attribute_node": [ - "DOMAttr dom_element_set_attribute_node(DOMAttr newAttr);", + "DOMAttr dom_element_set_attribute_node(DOMAttr newAttr)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:" ], "dom_element_set_attribute_node_ns": [ - "DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr);", + "DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2" ], "dom_element_set_attribute_ns": [ - "void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value);", + "void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2" ], "dom_element_set_id_attribute": [ - "void dom_element_set_id_attribute(string name, boolean isId);", + "void dom_element_set_id_attribute(string name, bool isId)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3" ], "dom_element_set_id_attribute_node": [ - "void dom_element_set_id_attribute_node(attr idAttr, boolean isId);", + "void dom_element_set_id_attribute_node(attr idAttr, bool isId)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3" ], "dom_element_set_id_attribute_ns": [ - "void dom_element_set_id_attribute_ns(string namespaceURI, string localName, boolean isId);", + "void dom_element_set_id_attribute_ns(string namespaceURI, string localName, bool isId)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3" ], "dom_import_simplexml": [ @@ -3408,156 +3728,156 @@ var functionMap = { "Get a simplexml_element object from dom to allow for processing" ], "dom_namednodemap_get_named_item": [ - "DOMNode dom_namednodemap_get_named_item(string name);", + "DOMNode dom_namednodemap_get_named_item(string name)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:" ], "dom_namednodemap_get_named_item_ns": [ - "DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName);", + "DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2" ], "dom_namednodemap_item": [ - "DOMNode dom_namednodemap_item(int index);", + "DOMNode dom_namednodemap_item(int index)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:" ], "dom_namednodemap_remove_named_item": [ - "DOMNode dom_namednodemap_remove_named_item(string name);", + "DOMNode dom_namednodemap_remove_named_item(string name)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:" ], "dom_namednodemap_remove_named_item_ns": [ - "DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName);", + "DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2" ], "dom_namednodemap_set_named_item": [ - "DOMNode dom_namednodemap_set_named_item(DOMNode arg);", + "DOMNode dom_namednodemap_set_named_item(DOMNode arg)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:" ], "dom_namednodemap_set_named_item_ns": [ - "DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg);", + "DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2" ], "dom_namelist_get_name": [ - "string dom_namelist_get_name(int index);", + "string dom_namelist_get_name(int index)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:" ], "dom_namelist_get_namespace_uri": [ - "string dom_namelist_get_namespace_uri(int index);", + "string dom_namelist_get_namespace_uri(int index)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:" ], "dom_node_append_child": [ - "DomNode dom_node_append_child(DomNode newChild);", + "DomNode dom_node_append_child(DomNode newChild)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:" ], "dom_node_clone_node": [ - "DomNode dom_node_clone_node(boolean deep);", + "DomNode dom_node_clone_node(bool deep)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:" ], "dom_node_compare_document_position": [ - "short dom_node_compare_document_position(DomNode other);", + "short dom_node_compare_document_position(DomNode other)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3" ], "dom_node_get_feature": [ - "DomNode dom_node_get_feature(string feature, string version);", + "DomNode dom_node_get_feature(string feature, string version)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3" ], "dom_node_get_user_data": [ - "mixed dom_node_get_user_data(string key);", + "mixed dom_node_get_user_data(string key)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3" ], "dom_node_has_attributes": [ - "boolean dom_node_has_attributes();", + "bool dom_node_has_attributes()", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2" ], "dom_node_has_child_nodes": [ - "boolean dom_node_has_child_nodes();", + "bool dom_node_has_child_nodes()", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:" ], "dom_node_insert_before": [ - "domnode dom_node_insert_before(DomNode newChild, DomNode refChild);", + "domnode dom_node_insert_before(DomNode newChild, DomNode refChild)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:" ], "dom_node_is_default_namespace": [ - "boolean dom_node_is_default_namespace(string namespaceURI);", + "bool dom_node_is_default_namespace(string namespaceURI)", "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3" ], "dom_node_is_equal_node": [ - "boolean dom_node_is_equal_node(DomNode arg);", + "bool dom_node_is_equal_node(DomNode arg)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3" ], "dom_node_is_same_node": [ - "boolean dom_node_is_same_node(DomNode other);", + "bool dom_node_is_same_node(DomNode other)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3" ], "dom_node_is_supported": [ - "boolean dom_node_is_supported(string feature, string version);", + "bool dom_node_is_supported(string feature, string version)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2" ], "dom_node_lookup_namespace_uri": [ - "string dom_node_lookup_namespace_uri(string prefix);", + "string dom_node_lookup_namespace_uri(string prefix)", "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3" ], "dom_node_lookup_prefix": [ - "string dom_node_lookup_prefix(string namespaceURI);", + "string dom_node_lookup_prefix(string namespaceURI)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3" ], "dom_node_normalize": [ - "void dom_node_normalize();", + "void dom_node_normalize()", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:" ], "dom_node_remove_child": [ - "DomNode dom_node_remove_child(DomNode oldChild);", + "DomNode dom_node_remove_child(DomNode oldChild)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:" ], "dom_node_replace_child": [ - "DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild);", + "DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:" ], "dom_node_set_user_data": [ - "mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler);", + "mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3" ], "dom_nodelist_item": [ - "DOMNode dom_nodelist_item(int index);", + "DOMNode dom_nodelist_item(int index)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:" ], "dom_string_extend_find_offset16": [ - "int dom_string_extend_find_offset16(int offset32);", + "int dom_string_extend_find_offset16(int offset32)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:" ], "dom_string_extend_find_offset32": [ - "int dom_string_extend_find_offset32(int offset16);", + "int dom_string_extend_find_offset32(int offset16)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:" ], "dom_text_is_whitespace_in_element_content": [ - "boolean dom_text_is_whitespace_in_element_content();", + "bool dom_text_is_whitespace_in_element_content()", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3" ], "dom_text_replace_whole_text": [ - "DOMText dom_text_replace_whole_text(string content);", + "DOMText dom_text_replace_whole_text(string content)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3" ], "dom_text_split_text": [ - "DOMText dom_text_split_text(int offset);", + "DOMText dom_text_split_text(int offset)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:" ], "dom_userdatahandler_handle": [ - "dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst);", + "dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst)", "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:" ], "dom_xpath_evaluate": [ - "mixed dom_xpath_evaluate(string expr [,DOMNode context]); */", - "PHP_FUNCTION(dom_xpath_evaluate) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_EVALUATE); } /* }}} end dom_xpath_evaluate" + "mixed dom_xpath_evaluate(string expr [,DOMNode context])", + "" ], "dom_xpath_query": [ - "DOMNodeList dom_xpath_query(string expr [,DOMNode context]); */", - "PHP_FUNCTION(dom_xpath_query) { php_xpath_eval(INTERNAL_FUNCTION_PARAM_PASSTHRU, PHP_DOM_XPATH_QUERY); } /* }}} end dom_xpath_query" + "DOMNodeList dom_xpath_query(string expr [,DOMNode context])", + "" ], "dom_xpath_register_ns": [ - "boolean dom_xpath_register_ns(string prefix, string uri); */", - "PHP_FUNCTION(dom_xpath_register_ns) { zval *id; xmlXPathContextPtr ctxp; int prefix_len, ns_uri_len; dom_xpath_object *intern; unsigned char *prefix, *ns_uri; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"Oss\", &id, dom_xpath_class_entry, &prefix, &prefix_len, &ns_uri, &ns_uri_len) == FAILURE) { return; } intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); ctxp = (xmlXPathContextPtr) intern->ptr; if (ctxp == NULL) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Invalid XPath Context\"); RETURN_FALSE; } if (xmlXPathRegisterNs(ctxp, prefix, ns_uri) != 0) { RETURN_FALSE } RETURN_TRUE; } /* }}}" + "bool dom_xpath_register_ns(string prefix, string uri)", + "" ], "dom_xpath_register_php_functions": [ - "void dom_xpath_register_php_functions() */", - "PHP_FUNCTION(dom_xpath_register_php_functions) { zval *id; dom_xpath_object *intern; zval *array_value, **entry, *new_string; int name_len = 0; char *name; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"a\", &array_value) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); zend_hash_internal_pointer_reset(Z_ARRVAL_P(array_value)); while (zend_hash_get_current_data(Z_ARRVAL_P(array_value), (void **)&entry) == SUCCESS) { SEPARATE_ZVAL(entry); convert_to_string_ex(entry); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, Z_STRVAL_PP(entry), Z_STRLEN_PP(entry) + 1, &new_string, sizeof(zval*), NULL); zend_hash_move_forward(Z_ARRVAL_P(array_value)); } intern->registerPhpFunctions = 2; RETURN_TRUE; } else if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"s\", &name, &name_len) == SUCCESS) { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); MAKE_STD_ZVAL(new_string); ZVAL_LONG(new_string,1); zend_hash_update(intern->registered_phpfunctions, name, name_len + 1, &new_string, sizeof(zval*), NULL); intern->registerPhpFunctions = 2; } else { intern = (dom_xpath_object *)zend_object_store_get_object(id TSRMLS_CC); intern->registerPhpFunctions = 1; } } /* }}} end dom_xpath_register_php_functions" + "void dom_xpath_register_php_functions()", + "" ], "each": [ "array each(array arr)", @@ -3576,7 +3896,7 @@ var functionMap = { "Output one or more strings" ], "empty": [ - "bool empty( mixed var )", + "bool empty(mixed var)", "Determine whether a variable is empty" ], "enchant_broker_describe": [ @@ -3585,10 +3905,10 @@ var functionMap = { ], "enchant_broker_dict_exists": [ "bool enchant_broker_dict_exists(resource broker, string tag)", - "Wether a dictionary exists or not. Using non-empty tag" + "Whether a dictionary exists or not. Using non-empty tag" ], "enchant_broker_free": [ - "boolean enchant_broker_free(resource broker)", + "bool enchant_broker_free(resource broker)", "Destroys the broker object and its dictionnaries" ], "enchant_broker_free_dict": [ @@ -3884,7 +4204,7 @@ var functionMap = { "Returns the next lowest integer value from the number" ], "flush": [ - "void flush(void)", + "void flush()", "Flush the output buffer" ], "fmod": [ @@ -4092,9 +4412,11 @@ var functionMap = { "Get an array of the arguments that were passed to the function" ], "func_num_args": [ - "int func_num_args(void)", + "int func_num_args()", "Get the number of arguments that were passed to the function" ], + "function ": ["", ""], + "foreach ": ["", ""], "function_exists": [ "bool function_exists(string function_name)", "Checks if the function exists" @@ -4104,19 +4426,19 @@ var functionMap = { "Binary-safe file write" ], "gc_collect_cycles": [ - "int gc_collect_cycles(void)", + "int gc_collect_cycles()", "Forces collection of any existing garbage cycles. Returns number of freed zvals" ], "gc_disable": [ - "void gc_disable(void)", + "void gc_disable()", "Deactivates the circular reference collector" ], "gc_enable": [ - "void gc_enable(void)", + "void gc_enable()", "Activates the circular reference collector" ], "gc_enabled": [ - "void gc_enabled(void)", + "void gc_enabled()", "Returns status of the circular reference collector" ], "gd_info": [ @@ -4125,7 +4447,7 @@ var functionMap = { ], "getKeywords": [ "static array getKeywords(string $locale) {", - "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!) * }}}" + "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array * }}}" ], "get_browser": [ "mixed get_browser([string browser_name [, bool return_array]])", @@ -4152,7 +4474,7 @@ var functionMap = { "Returns an array of default properties of the class." ], "get_current_user": [ - "string get_current_user(void)", + "string get_current_user()", "Get the name of the owner of the current PHP script" ], "get_declared_classes": [ @@ -4168,11 +4490,11 @@ var functionMap = { "Return an array containing the names and values of all defined constants" ], "get_defined_functions": [ - "array get_defined_functions(void)", + "array get_defined_functions()", "Returns an array of all defined functions" ], "get_defined_vars": [ - "array get_defined_vars(void)", + "array get_defined_vars()", "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)" ], "get_display_language": [ @@ -4208,7 +4530,7 @@ var functionMap = { "Get the current include_path configuration option" ], "get_included_files": [ - "array get_included_files(void)", + "array get_included_files()", "Returns an array with the file names that were include_once()'d" ], "get_loaded_extensions": [ @@ -4216,11 +4538,11 @@ var functionMap = { "Return an array containing names of loaded extensions" ], "get_magic_quotes_gpc": [ - "int get_magic_quotes_gpc(void)", + "int get_magic_quotes_gpc()", "Get the current active configuration setting of magic_quotes_gpc" ], "get_magic_quotes_runtime": [ - "int get_magic_quotes_runtime(void)", + "int get_magic_quotes_runtime()", "Get the current active configuration setting of magic_quotes_runtime" ], "get_meta_tags": [ @@ -4240,11 +4562,11 @@ var functionMap = { "Get the resource type name for a given resource" ], "getallheaders": [ - "array getallheaders(void)", + "array getallheaders()", "" ], "getcwd": [ - "mixed getcwd(void)", + "mixed getcwd()", "Gets the current directory" ], "getdate": [ @@ -4276,23 +4598,23 @@ var functionMap = { "Get the size of an image as 4-element array" ], "getlastmod": [ - "int getlastmod(void)", + "int getlastmod()", "Get time of last page modification" ], "getmygid": [ - "int getmygid(void)", + "int getmygid()", "Get PHP script owner's GID" ], "getmyinode": [ - "int getmyinode(void)", + "int getmyinode()", "Get the inode of the current script being parsed" ], "getmypid": [ - "int getmypid(void)", + "int getmypid()", "Get current process ID" ], "getmyuid": [ - "int getmyuid(void)", + "int getmyuid()", "Get PHP script owner's UID" ], "getopt": [ @@ -4308,7 +4630,7 @@ var functionMap = { "Returns protocol name associated with protocol number proto" ], "getrandmax": [ - "int getrandmax(void)", + "int getrandmax()", "Returns the maximum value a random number can have" ], "getrusage": [ @@ -4584,7 +4906,7 @@ var functionMap = { "Generate a hash of a given input string Returns lowercase hexits by default" ], "hash_algos": [ - "array hash_algos(void)", + "array hash_algos()", "Return a list of registered hashing algorithms" ], "hash_copy": [ @@ -4632,7 +4954,7 @@ var functionMap = { "Removes an HTTP header previously set using header()" ], "headers_list": [ - "array headers_list(void)", + "array headers_list()", "Return list of headers to be sent / already sent" ], "headers_sent": [ @@ -4760,11 +5082,11 @@ var functionMap = { "Drop an InterBase database" ], "ibase_errcode": [ - "int ibase_errcode(void)", + "int ibase_errcode()", "Return error code" ], "ibase_errmsg": [ - "string ibase_errmsg(void)", + "string ibase_errmsg()", "Return error message" ], "ibase_execute": [ @@ -5233,7 +5555,7 @@ var functionMap = { ], "imagepsextendfont": [ "bool imagepsextendfont(resource font_index, float extend)", - "Extend or or condense (if extend < 1) a font" + "Extend or or condense if (extend < 1) a font" ], "imagepsfreefont": [ "bool imagepsfreefont(resource font_index)", @@ -5312,7 +5634,7 @@ var functionMap = { "Write text to the image using a TrueType font" ], "imagetypes": [ - "int imagetypes(void)", + "int imagetypes()", "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM" ], "imagewbmp": [ @@ -5328,7 +5650,7 @@ var functionMap = { "Convert an 8-bit string to a quoted-printable string" ], "imap_alerts": [ - "array imap_alerts(void)", + "array imap_alerts()", "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called." ], "imap_append": [ @@ -5376,7 +5698,7 @@ var functionMap = { "Delete a mailbox" ], "imap_errors": [ - "array imap_errors(void)", + "array imap_errors()", "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called." ], "imap_expunge": [ @@ -5432,7 +5754,7 @@ var functionMap = { "Returns headers for all messages in a mailbox" ], "imap_last_error": [ - "string imap_last_error(void)", + "string imap_last_error()", "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call." ], "imap_list": [ @@ -5683,6 +6005,10 @@ var functionMap = { "bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", "Returns true if var is callable." ], + "is_countable": [ + "bool is_countable(mixed var)", + "Returns true if var is countable, false otherwise" + ], "is_dir": [ "bool is_dir(string filename)", "Returns true if file is directory" @@ -5764,15 +6090,15 @@ var functionMap = { "Determine whether a variable is set" ], "iterator_apply": [ - "int iterator_apply(Traversable it, mixed function [, mixed params])", + "int iterator_apply(Traversable iterator, callable function [, array args = null)", "Calls a function for every element in an iterator" ], "iterator_count": [ - "int iterator_count(Traversable it)", + "int iterator_count(Traversable iterator)", "Count the elements in an iterator" ], "iterator_to_array": [ - "array iterator_to_array(Traversable it [, bool use_keys = true])", + "array iterator_to_array(Traversable iterator [, bool use_keys = true])", "Copy the iterator into an array" ], "jddayofweek": [ @@ -5808,11 +6134,11 @@ var functionMap = { "Converts a jewish calendar date to a julian day count" ], "join": [ - "string join(array src, string glue)", - "An alias for implode" + "string join([string glue,] array pieces)", + "Returns a string containing a string representation of all the arrayelements in the same order, with the glue string between each element" ], "jpeg2wbmp": [ - "bool jpeg2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", + "bool jpeg2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", "Convert JPEG image to WBMP image" ], "json_decode": [ @@ -5980,7 +6306,7 @@ var functionMap = { "Read an entry" ], "ldap_rename": [ - "bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn);", + "bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn)", "Modify the name of an entry" ], "ldap_sasl_bind": [ @@ -6028,7 +6354,7 @@ var functionMap = { "Clear last error from libxml" ], "libxml_disable_entity_loader": [ - "bool libxml_disable_entity_loader([boolean disable])", + "bool libxml_disable_entity_loader([bool disable])", "Disable/Enable ability to load external entities" ], "libxml_get_errors": [ @@ -6044,7 +6370,7 @@ var functionMap = { "Set the streams context for the next libxml document load or write" ], "libxml_use_internal_errors": [ - "bool libxml_use_internal_errors([boolean use_errors])", + "bool libxml_use_internal_errors([bool use_errors])", "Disable libxml errors and allow user to fetch error information as needed" ], "link": [ @@ -6056,11 +6382,11 @@ var functionMap = { "Returns the st_dev field of the UNIX C stat structure describing the link" ], "litespeed_request_headers": [ - "array litespeed_request_headers(void)", + "array litespeed_request_headers()", "Fetch all HTTP request headers" ], "litespeed_response_headers": [ - "array litespeed_response_headers(void)", + "array litespeed_response_headers()", "Fetch all HTTP response headers" ], "locale_accept_from_http": [ @@ -6072,7 +6398,7 @@ var functionMap = { "* @param string $locale The locale string to canonicalize" ], "locale_filter_matches": [ - "boolean locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", + "bool locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm" ], "locale_get_all_variants": [ @@ -6085,7 +6411,7 @@ var functionMap = { ], "locale_get_keywords": [ "static array locale_get_keywords(string $locale) {", - "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array (doh!)" + "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array" ], "locale_get_primary_language": [ "static string locale_get_primary_language($locale)", @@ -6108,7 +6434,7 @@ var functionMap = { "Set default locale" ], "localeconv": [ - "array localeconv(void)", + "array localeconv()", "Returns numeric formatting information based on the current locale" ], "localtime": [ @@ -6212,11 +6538,11 @@ var functionMap = { "Regular expression search for multibyte string" ], "mb_ereg_search_getpos": [ - "int mb_ereg_search_getpos(void)", + "int mb_ereg_search_getpos()", "Get search start position" ], "mb_ereg_search_getregs": [ - "array mb_ereg_search_getregs(void)", + "array mb_ereg_search_getregs()", "Get matched substring of the last time" ], "mb_ereg_search_init": [ @@ -6536,7 +6862,7 @@ var functionMap = { "Hash data with hash" ], "mhash_count": [ - "int mhash_count(void)", + "int mhash_count()", "Gets the number of available hashes" ], "mhash_get_block_size": [ @@ -6585,7 +6911,7 @@ var functionMap = { ], "msg_queue_exists": [ "bool msg_queue_exists(int key)", - "Check wether a message queue exists" + "Check whether a message queue exists" ], "msg_receive": [ "mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", @@ -6712,7 +7038,7 @@ var functionMap = { "Free a MS-SQL statement index" ], "mssql_get_last_message": [ - "string mssql_get_last_message(void)", + "string mssql_get_last_message()", "Gets the last message from the MS-SQL server" ], "mssql_guid_string": [ @@ -6764,7 +7090,7 @@ var functionMap = { "Select a MS-SQL database" ], "mt_getrandmax": [ - "int mt_getrandmax(void)", + "int mt_getrandmax()", "Returns the maximum value a random number from Mersenne Twister can have" ], "mt_rand": [ @@ -6872,7 +7198,7 @@ var functionMap = { "Free result memory" ], "mysql_get_client_info": [ - "string mysql_get_client_info(void)", + "string mysql_get_client_info()", "Returns a string that represents the client library version" ], "mysql_get_host_info": [ @@ -6968,7 +7294,7 @@ var functionMap = { "Turn auto commit on or of" ], "mysqli_cache_stats": [ - "array mysqli_cache_stats(void)", + "array mysqli_cache_stats()", "Returns statistics about the zval cache" ], "mysqli_change_user": [ @@ -6992,11 +7318,11 @@ var functionMap = { "Open a connection to a mysql server" ], "mysqli_connect_errno": [ - "int mysqli_connect_errno(void)", + "int mysqli_connect_errno()", "Returns the numerical value of the error message from last connect command" ], "mysqli_connect_error": [ - "string mysqli_connect_error(void)", + "string mysqli_connect_error()", "Returns the text of the error message from previous MySQL operation" ], "mysqli_data_seek": [ @@ -7012,7 +7338,7 @@ var functionMap = { "" ], "mysqli_embedded_server_end": [ - "void mysqli_embedded_server_end(void)", + "void mysqli_embedded_server_end()", "" ], "mysqli_embedded_server_start": [ @@ -7028,39 +7354,39 @@ var functionMap = { "Returns the text of the error message from previous MySQL operation" ], "mysqli_fetch_all": [ - "mixed mysqli_fetch_all (object result [,int resulttype])", + "mixed mysqli_fetch_all(object result [,int resulttype])", "Fetches all result rows as an associative array, a numeric array, or both" ], "mysqli_fetch_array": [ - "mixed mysqli_fetch_array (object result [,int resulttype])", + "mixed mysqli_fetch_array(object result [,int resulttype])", "Fetch a result row as an associative array, a numeric array, or both" ], "mysqli_fetch_assoc": [ - "mixed mysqli_fetch_assoc (object result)", + "mixed mysqli_fetch_assoc(object result)", "Fetch a result row as an associative array" ], "mysqli_fetch_field": [ - "mixed mysqli_fetch_field (object result)", + "mixed mysqli_fetch_field(object result)", "Get column information from a result and return as an object" ], "mysqli_fetch_field_direct": [ - "mixed mysqli_fetch_field_direct (object result, int offset)", + "mixed mysqli_fetch_field_direct(object result, int offset)", "Fetch meta-data for a single field" ], "mysqli_fetch_fields": [ - "mixed mysqli_fetch_fields (object result)", + "mixed mysqli_fetch_fields(object result)", "Return array of objects containing field meta-data" ], "mysqli_fetch_lengths": [ - "mixed mysqli_fetch_lengths (object result)", + "mixed mysqli_fetch_lengths(object result)", "Get the length of each output in a result" ], "mysqli_fetch_object": [ - "mixed mysqli_fetch_object (object result [, string class_name [, NULL|array ctor_params]])", + "mixed mysqli_fetch_object(object result [, string class_name [, NULL|array ctor_params]])", "Fetch a result row as an object" ], "mysqli_fetch_row": [ - "array mysqli_fetch_row (object result)", + "array mysqli_fetch_row(object result)", "Get a result row as an enumerated array" ], "mysqli_field_count": [ @@ -7084,23 +7410,23 @@ var functionMap = { "returns a character set object" ], "mysqli_get_client_info": [ - "string mysqli_get_client_info(void)", + "string mysqli_get_client_info()", "Get MySQL client info" ], "mysqli_get_client_stats": [ - "array mysqli_get_client_stats(void)", + "array mysqli_get_client_stats()", "Returns statistics about the zval cache" ], "mysqli_get_client_version": [ - "int mysqli_get_client_version(void)", + "int mysqli_get_client_version()", "Get MySQL client info" ], "mysqli_get_connection_stats": [ - "array mysqli_get_connection_stats(void)", + "array mysqli_get_connection_stats()", "Returns statistics about the zval cache" ], "mysqli_get_host_info": [ - "string mysqli_get_host_info (object link)", + "string mysqli_get_host_info(object link)", "Get MySQL host info" ], "mysqli_get_proto_info": [ @@ -7116,15 +7442,15 @@ var functionMap = { "Return the MySQL version for the server referenced by the given link" ], "mysqli_get_warnings": [ - "object mysqli_get_warnings(object link) */", - "PHP_FUNCTION(mysqli_get_warnings) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"O\", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, \"mysqli_link\", MYSQLI_STATUS_VALID); if (mysql_warning_count(mysql->mysql)) { w = php_get_warnings(mysql->mysql TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}" + "object mysqli_get_warnings(object link)", + "" ], "mysqli_info": [ "string mysqli_info(object link)", "Get information about the most recent query" ], "mysqli_init": [ - "resource mysqli_init(void)", + "resource mysqli_init()", "Initialize mysqli and return a resource for use with mysql_real_connect" ], "mysqli_insert_id": [ @@ -7176,8 +7502,8 @@ var functionMap = { "Prepare a SQL statement for execution" ], "mysqli_query": [ - "mixed mysqli_query(object link, string query [,int resultmode]) */", - "PHP_FUNCTION(mysqli_query) { MY_MYSQL *mysql; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; MYSQL_RES *result; char *query = NULL; unsigned int query_len; unsigned long resultmode = MYSQLI_STORE_RESULT; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"Os|l\", &mysql_link, mysqli_link_class_entry, &query, &query_len, &resultmode) == FAILURE) { return; } if (!query_len) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Empty query\"); RETURN_FALSE; } if ((resultmode & ~MYSQLI_ASYNC) != MYSQLI_USE_RESULT && (resultmode & ~MYSQLI_ASYNC) != MYSQLI_STORE_RESULT) { php_error_docref(NULL TSRMLS_CC, E_WARNING, \"Invalid value for resultmode\"); RETURN_FALSE; } MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL*, &mysql_link, \"mysqli_link\", MYSQLI_STATUS_VALID); MYSQLI_DISABLE_MQ; #ifdef MYSQLI_USE_MYSQLND if (resultmode & MYSQLI_ASYNC) { if (mysqli_async_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } mysql->async_result_fetch_type = resultmode & ~MYSQLI_ASYNC; RETURN_TRUE; } #endif if (mysql_real_query(mysql->mysql, query, query_len)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } if (!mysql_field_count(mysql->mysql)) { /* no result set - not a SELECT" + "mixed mysqli_query(object link, string query [,int resultmode])", + "" ], "mysqli_real_connect": [ "bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", @@ -7292,8 +7618,8 @@ var functionMap = { "Buffer result set on client" ], "mysqli_stmt_get_warnings": [ - "object mysqli_stmt_get_warnings(object link) */", - "PHP_FUNCTION(mysqli_stmt_get_warnings) { MY_STMT *stmt; zval *stmt_link; MYSQLI_RESOURCE *mysqli_resource; MYSQLI_WARNING *w; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), \"O\", &stmt_link, mysqli_stmt_class_entry) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(stmt, MY_STMT*, &stmt_link, \"mysqli_stmt\", MYSQLI_STATUS_VALID); if (mysqli_stmt_warning_count(stmt->stmt)) { w = php_get_warnings(mysqli_stmt_get_connection(stmt->stmt) TSRMLS_CC); } else { RETURN_FALSE; } mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = mysqli_resource->info = (void *)w; mysqli_resource->status = MYSQLI_STATUS_VALID; MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_warning_class_entry); } /* }}}" + "object mysqli_stmt_get_warnings(object link)", + "" ], "mysqli_stmt_init": [ "mixed mysqli_stmt_init(object link)", @@ -7348,7 +7674,7 @@ var functionMap = { "Return the current thread ID" ], "mysqli_thread_safe": [ - "bool mysqli_thread_safe(void)", + "bool mysqli_thread_safe()", "Return whether thread safety is given or not" ], "mysqli_use_result": [ @@ -7356,7 +7682,7 @@ var functionMap = { "Directly retrieve query results - do not buffer results on client side" ], "mysqli_warning_count": [ - "int mysqli_warning_count (object link)", + "int mysqli_warning_count(object link)", "Return number of warnings from the last query for the given link" ], "natcasesort": [ @@ -7392,11 +7718,11 @@ var functionMap = { "* Normalize a string." ], "nsapi_request_headers": [ - "array nsapi_request_headers(void)", + "array nsapi_request_headers()", "Get all headers from the request" ], "nsapi_response_headers": [ - "array nsapi_response_headers(void)", + "array nsapi_response_headers()", "Get all headers from the response" ], "nsapi_virtual": [ @@ -7476,39 +7802,39 @@ var functionMap = { "* Get formatter attribute value." ], "ob_clean": [ - "bool ob_clean(void)", + "bool ob_clean()", "Clean (delete) the current output buffer" ], "ob_end_clean": [ - "bool ob_end_clean(void)", + "bool ob_end_clean()", "Clean the output buffer, and delete current output buffer" ], "ob_end_flush": [ - "bool ob_end_flush(void)", + "bool ob_end_flush()", "Flush (send) the output buffer, and delete current output buffer" ], "ob_flush": [ - "bool ob_flush(void)", + "bool ob_flush()", "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer" ], "ob_get_clean": [ - "bool ob_get_clean(void)", + "bool ob_get_clean()", "Get current buffer contents and delete current output buffer" ], "ob_get_contents": [ - "string ob_get_contents(void)", + "string ob_get_contents()", "Return the contents of the output buffer" ], "ob_get_flush": [ - "bool ob_get_flush(void)", + "bool ob_get_flush()", "Get current buffer contents, flush (send) the output buffer, and delete current output buffer" ], "ob_get_length": [ - "int ob_get_length(void)", + "int ob_get_length()", "Return the length of the output buffer" ], "ob_get_level": [ - "int ob_get_level(void)", + "int ob_get_level()", "Return the nesting level of the output buffer" ], "ob_get_status": [ @@ -7828,7 +8154,7 @@ var functionMap = { "Returns current state of buffering for a LOB" ], "ocisetbufferinglob": [ - "bool ocisetbufferinglob( boolean flag )", + "bool ocisetbufferinglob( bool flag )", "Enables/disables buffering for a LOB" ], "octdec": [ @@ -7848,7 +8174,7 @@ var functionMap = { "Close an ODBC connection" ], "odbc_close_all": [ - "void odbc_close_all(void)", + "void odbc_close_all()", "Close all ODBC connections" ], "odbc_columnprivileges": [ @@ -8056,7 +8382,7 @@ var functionMap = { "Encrypts given data with given method and key, returns raw or base64 encoded string" ], "openssl_error_string": [ - "mixed openssl_error_string(void)", + "mixed openssl_error_string()", "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages" ], "openssl_get_cipher_methods": [ @@ -8196,7 +8522,7 @@ var functionMap = { "Add URL rewriter values" ], "output_reset_rewrite_vars": [ - "bool output_reset_rewrite_vars(void)", + "bool output_reset_rewrite_vars()", "Reset(clear) URL rewriter values" ], "pack": [ @@ -8248,7 +8574,7 @@ var functionMap = { "Executes specified program in current process space as defined by exec(2)" ], "pcntl_fork": [ - "int pcntl_fork(void)", + "int pcntl_fork()", "Forks the currently running process following the same behavior as the UNIX fork() system call" ], "pcntl_getpriority": [ @@ -8365,7 +8691,7 @@ var functionMap = { ], "pg_delete": [ "mixed pg_delete(resource db, string table, array ids[, int options])", - "Delete records has ids (id=>value)" + "Delete records has ids (id => value)" ], "pg_end_copy": [ "bool pg_end_copy([resource connection])", @@ -8465,7 +8791,7 @@ var functionMap = { ], "pg_insert": [ "mixed pg_insert(resource db, string table, array values[, int options])", - "Insert values (filed=>value) to table" + "Insert values (filed => value) to table" ], "pg_last_error": [ "string pg_last_error([resource connection])", @@ -8589,7 +8915,7 @@ var functionMap = { ], "pg_select": [ "mixed pg_select(resource db, string table, array ids[, int options])", - "Select records that has ids (id=>value)" + "Select records that has ids (id => value)" ], "pg_send_execute": [ "bool pg_send_execute(resource connection, string stmtname, array params)", @@ -8637,34 +8963,34 @@ var functionMap = { ], "pg_update": [ "mixed pg_update(resource db, string table, array fields, array ids[, int options])", - "Update table using values (field=>value) and ids (id=>value)" + "Update table using values (field => value) and ids (id => value)" ], "pg_version": [ "array pg_version([resource connection])", "Returns an array with client, protocol and server version (when available)" ], "php_egg_logo_guid": [ - "string php_egg_logo_guid(void)", + "string php_egg_logo_guid()", "Return the special ID used to request the PHP logo in phpinfo screens" ], "php_ini_loaded_file": [ - "string php_ini_loaded_file(void)", + "string php_ini_loaded_file()", "Return the actual loaded ini filename" ], "php_ini_scanned_files": [ - "string php_ini_scanned_files(void)", + "string php_ini_scanned_files()", "Return comma-separated string of .ini files parsed from the additional ini dir" ], "php_logo_guid": [ - "string php_logo_guid(void)", + "string php_logo_guid()", "Return the special ID used to request the PHP logo in phpinfo screens" ], "php_real_logo_guid": [ - "string php_real_logo_guid(void)", + "string php_real_logo_guid()", "Return the special ID used to request the PHP logo in phpinfo screens" ], "php_sapi_name": [ - "string php_sapi_name(void)", + "string php_sapi_name()", "Return the current SAPI module name" ], "php_snmpv3": [ @@ -8676,7 +9002,7 @@ var functionMap = { "Return source with stripped comments and whitespace" ], "php_uname": [ - "string php_uname(void)", + "string php_uname()", "Return information about the system PHP was built on" ], "phpcredits": [ @@ -8692,11 +9018,11 @@ var functionMap = { "Return the current PHP version" ], "pi": [ - "float pi(void)", + "float pi()", "Returns an approximation of pi" ], "png2wbmp": [ - "bool png2wbmp (string f_org, string f_dest, int d_height, int d_width, int threshold)", + "bool png2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", "Convert PNG image to WBMP image" ], "popen": [ @@ -8708,27 +9034,27 @@ var functionMap = { "Determine accessibility of a file (POSIX.1 5.6.3)" ], "posix_ctermid": [ - "string posix_ctermid(void)", + "string posix_ctermid()", "Generate terminal path name (POSIX.1, 4.7.1)" ], "posix_get_last_error": [ - "int posix_get_last_error(void)", + "int posix_get_last_error()", "Retrieve the error number set by the last posix function which failed." ], "posix_getcwd": [ - "string posix_getcwd(void)", + "string posix_getcwd()", "Get working directory pathname (POSIX.1, 5.2.2)" ], "posix_getegid": [ - "int posix_getegid(void)", + "int posix_getegid()", "Get the current effective group id (POSIX.1, 4.2.1)" ], "posix_geteuid": [ - "int posix_geteuid(void)", + "int posix_geteuid()", "Get the current effective user id (POSIX.1, 4.2.1)" ], "posix_getgid": [ - "int posix_getgid(void)", + "int posix_getgid()", "Get the current group id (POSIX.1, 4.2.1)" ], "posix_getgrgid": [ @@ -8740,27 +9066,27 @@ var functionMap = { "Group database access (POSIX.1, 9.2.1)" ], "posix_getgroups": [ - "array posix_getgroups(void)", + "array posix_getgroups()", "Get supplementary group id's (POSIX.1, 4.2.3)" ], "posix_getlogin": [ - "string posix_getlogin(void)", + "string posix_getlogin()", "Get user name (POSIX.1, 4.2.4)" ], "posix_getpgid": [ - "int posix_getpgid(void)", + "int posix_getpgid()", "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)" ], "posix_getpgrp": [ - "int posix_getpgrp(void)", + "int posix_getpgrp()", "Get current process group id (POSIX.1, 4.3.1)" ], "posix_getpid": [ - "int posix_getpid(void)", + "int posix_getpid()", "Get the current process id (POSIX.1, 4.1.1)" ], "posix_getppid": [ - "int posix_getppid(void)", + "int posix_getppid()", "Get the parent process id (POSIX.1, 4.1.1)" ], "posix_getpwnam": [ @@ -8772,15 +9098,15 @@ var functionMap = { "User database access (POSIX.1, 9.2.2)" ], "posix_getrlimit": [ - "array posix_getrlimit(void)", + "array posix_getrlimit()", "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)" ], "posix_getsid": [ - "int posix_getsid(void)", + "int posix_getsid()", "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)" ], "posix_getuid": [ - "int posix_getuid(void)", + "int posix_getuid()", "Get the current user id (POSIX.1, 4.2.1)" ], "posix_initgroups": [ @@ -8820,7 +9146,7 @@ var functionMap = { "Set process group id for job control (POSIX.1, 4.3.3)" ], "posix_setsid": [ - "int posix_setsid(void)", + "int posix_setsid()", "Create session and set process group id (POSIX.1, 4.3.2)" ], "posix_setuid": [ @@ -8832,7 +9158,7 @@ var functionMap = { "Retrieve the system error message associated with the given errno." ], "posix_times": [ - "array posix_times(void)", + "array posix_times()", "Get process times (POSIX.1, 4.5.2)" ], "posix_ttyname": [ @@ -8840,7 +9166,7 @@ var functionMap = { "Determine terminal device name (POSIX.1, 4.7.2)" ], "posix_uname": [ - "array posix_uname(void)", + "array posix_uname()", "Get system name (POSIX.1, 4.4.1)" ], "pow": [ @@ -9008,8 +9334,8 @@ var functionMap = { "Convert a quoted-printable string to an 8 bit string" ], "quoted_printable_encode": [ - "string quoted_printable_encode(string str) */", - "PHP_FUNCTION(quoted_printable_encode) { char *str, *new_str; int str_len; size_t new_str_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, \"s\", &str, &str_len) != SUCCESS) { return; } if (!str_len) { RETURN_EMPTY_STRING(); } new_str = (char *)php_quot_print_encode((unsigned char *)str, (size_t)str_len, &new_str_len); RETURN_STRINGL(new_str, new_str_len, 0); } /* }}}" + "string quoted_printable_encode(string str)", + "" ], "quotemeta": [ "string quotemeta(string str)", @@ -9068,7 +9394,7 @@ var functionMap = { "Informs the readline callback interface that a character is ready for input" ], "readline_clear_history": [ - "bool readline_clear_history(void)", + "bool readline_clear_history()", "Clears the history" ], "readline_completion_function": [ @@ -9080,11 +9406,11 @@ var functionMap = { "Gets/sets various internal readline variables." ], "readline_list_history": [ - "array readline_list_history(void)", + "array readline_list_history()", "Lists the history" ], "readline_on_new_line": [ - "void readline_on_new_line(void)", + "void readline_on_new_line()", "Inform readline that the cursor has moved to a new line" ], "readline_read_history": [ @@ -9092,7 +9418,7 @@ var functionMap = { "Reads the history" ], "readline_redisplay": [ - "void readline_redisplay(void)", + "void readline_redisplay()", "Ask readline to redraw the display" ], "readline_write_history": [ @@ -9148,11 +9474,11 @@ var functionMap = { "Set array argument's internal pointer to the first element and return it" ], "restore_error_handler": [ - "void restore_error_handler(void)", + "void restore_error_handler()", "Restores the previously defined error handler function" ], "restore_exception_handler": [ - "void restore_exception_handler(void)", + "void restore_exception_handler()", "Restores the previously defined exception handler function" ], "restore_include_path": [ @@ -9220,15 +9546,15 @@ var functionMap = { "Deserializes data and reinitializes the variables" ], "session_destroy": [ - "bool session_destroy(void)", + "bool session_destroy()", "Destroy the current session and all data associated with it" ], "session_encode": [ - "string session_encode(void)", + "string session_encode()", "Serializes the current setup and returns the serialized representation" ], "session_get_cookie_params": [ - "array session_get_cookie_params(void)", + "array session_get_cookie_params()", "Return the session cookie parameters" ], "session_id": [ @@ -9268,7 +9594,7 @@ var functionMap = { "Sets user-level functions" ], "session_start": [ - "bool session_start(void)", + "bool session_start()", "Begin session - reinitializes freezed variables, registers browsers etc" ], "session_unregister": [ @@ -9276,11 +9602,11 @@ var functionMap = { "Removes varname from the list of variables which are freezed at the session end" ], "session_unset": [ - "void session_unset(void)", + "void session_unset()", "Unset all registered variables" ], "session_write_close": [ - "void session_write_close(void)", + "void session_write_close()", "Write session data and end session" ], "set_error_handler": [ @@ -9360,27 +9686,27 @@ var functionMap = { "Removes variable from shared memory" ], "shmop_close": [ - "void shmop_close (int shmid)", + "void shmop_close(int shmid)", "closes a shared memory segment" ], "shmop_delete": [ - "bool shmop_delete (int shmid)", + "bool shmop_delete(int shmid)", "mark segment for deletion" ], "shmop_open": [ - "int shmop_open (int key, string flags, int mode, int size)", + "int shmop_open(int key, string flags, int mode, int size)", "gets and attaches a shared memory segment" ], "shmop_read": [ - "string shmop_read (int shmid, int start, int count)", + "string shmop_read(int shmid, int start, int count)", "reads from a shm segment" ], "shmop_size": [ - "int shmop_size (int shmid)", + "int shmop_size(int shmid)", "returns the shm size" ], "shmop_write": [ - "int shmop_write (int shmid, string data, int offset)", + "int shmop_write(int shmid, string data, int offset)", "writes to a shared memory segment" ], "shuffle": [ @@ -9492,7 +9818,7 @@ var functionMap = { "Fetch the value of a SNMP object" ], "snmp_get_quick_print": [ - "bool snmp_get_quick_print(void)", + "bool snmp_get_quick_print()", "Return the current status of quick_print" ], "snmp_get_valueretrieval": [ @@ -9740,7 +10066,7 @@ var functionMap = { "Escapes a string for use as a query parameter." ], "sqlite_exec": [ - "boolean sqlite_exec(string query, resource db[, string &error_message])", + "bool sqlite_exec(string query, resource db[, string &error_message])", "Executes a result-less query against a given database" ], "sqlite_factory": [ @@ -9992,7 +10318,7 @@ var functionMap = { "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string." ], "stream_get_filters": [ - "array stream_get_filters(void)", + "array stream_get_filters()", "Returns a list of registered filters" ], "stream_get_line": [ @@ -10073,7 +10399,7 @@ var functionMap = { ], "stream_supports_lock": [ "bool stream_supports_lock(resource stream)", - "Tells wether the stream supports locking through flock()." + "Tells whether the stream supports locking through flock()." ], "stream_wrapper_register": [ "bool stream_wrapper_register(string protocol, string classname[, integer flags])", @@ -10256,7 +10582,7 @@ var functionMap = { "Free result memory" ], "sybase_get_last_message": [ - "string sybase_get_last_message(void)", + "string sybase_get_last_message()", "Returns the last message from server (over min_message_severity)" ], "sybase_min_client_severity": [ @@ -10340,7 +10666,7 @@ var functionMap = { "Returns the Number of Tidy accessibility warnings encountered for specified document." ], "tidy_clean_repair": [ - "boolean tidy_clean_repair()", + "bool tidy_clean_repair()", "Execute configured cleanup and repair operations on parsed markup" ], "tidy_config_count": [ @@ -10348,7 +10674,7 @@ var functionMap = { "Returns the Number of Tidy configuration errors encountered for specified document." ], "tidy_diagnose": [ - "boolean tidy_diagnose()", + "bool tidy_diagnose()", "Run configured diagnostics on parsed and repaired markup." ], "tidy_error_count": [ @@ -10364,7 +10690,7 @@ var functionMap = { "Get current Tidy configuarion" ], "tidy_get_error_buffer": [ - "string tidy_get_error_buffer([boolean detailed])", + "string tidy_get_error_buffer([bool detailed])", "Return warnings and errors which occured parsing the specified document" ], "tidy_get_head": [ @@ -10404,15 +10730,15 @@ var functionMap = { "Returns the value of the specified configuration option for the tidy document." ], "tidy_is_xhtml": [ - "boolean tidy_is_xhtml()", + "bool tidy_is_xhtml()", "Indicates if the document is a XHTML document." ], "tidy_is_xml": [ - "boolean tidy_is_xml()", + "bool tidy_is_xml()", "Indicates if the document is a generic (non HTML/XHTML) XML document." ], "tidy_parse_file": [ - "boolean tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", + "bool tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", "Parse markup in file or URI" ], "tidy_parse_string": [ @@ -10420,11 +10746,11 @@ var functionMap = { "Parse a document stored in a string" ], "tidy_repair_file": [ - "boolean tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", + "bool tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", "Repair a file using an optionally provided configuration file" ], "tidy_repair_string": [ - "boolean tidy_repair_string(string data [, mixed config_file [, string encoding]])", + "bool tidy_repair_string(string data [, mixed config_file [, string encoding]])", "Repair a string using an optionally provided configuration file" ], "tidy_warning_count": [ @@ -10432,7 +10758,7 @@ var functionMap = { "Returns the Number of Tidy warnings encountered for specified document." ], "time": [ - "int time(void)", + "int time()", "Return current UNIX timestamp" ], "time_nanosleep": [ @@ -10480,7 +10806,7 @@ var functionMap = { "Returns the Olson database version number." ], "tmpfile": [ - "resource tmpfile(void)", + "resource tmpfile()", "Create a temporary file that will be deleted automatically after use" ], "token_get_all": [ @@ -10548,7 +10874,7 @@ var functionMap = { "Takes a string representation of variable and recreates it" ], "unset": [ - "void unset (mixed var [, mixed var])", + "void unset(mixed var [, mixed var])", "Unset a given variable" ], "urldecode": [ @@ -10580,7 +10906,7 @@ var functionMap = { "Dumps a string representation of variable to output" ], "var_export": [ - "mixed var_export(mixed var [, bool return])", + "string var_export(mixed var [, bool return])", "Outputs or returns a string representation of a variable" ], "variant_abs": [ @@ -10708,7 +11034,7 @@ var functionMap = { "Return a formatted string" ], "wddx_add_vars": [ - "int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])", + "int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])", "Serializes given variables and adds them to packet given by packet_id" ], "wddx_deserialize": [ @@ -10732,7 +11058,7 @@ var functionMap = { "Creates a new packet and serializes given variables into a struct" ], "wordwrap": [ - "string wordwrap(string str [, int width [, string break [, boolean cut]]])", + "string wordwrap(string str [, int width [, string break [, bool cut]]])", "Wraps buffer to selected number of characters using string break char" ], "xml_error_string": [ @@ -10860,7 +11186,7 @@ var functionMap = { "Parses XML requests and call methods" ], "xmlrpc_server_create": [ - "resource xmlrpc_server_create(void)", + "resource xmlrpc_server_create()", "Creates an xmlrpc server" ], "xmlrpc_server_destroy": [ @@ -11037,7 +11363,7 @@ var functionMap = { ], "xmlwriter_write_element_ns": [ "bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", - "Write full namesapced element tag - returns FALSE on error" + "Write full namespaced element tag - returns FALSE on error" ], "xmlwriter_write_pi": [ "bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", @@ -11048,51 +11374,51 @@ var functionMap = { "Write text - returns FALSE on error" ], "xsl_xsltprocessor_get_parameter": [ - "string xsl_xsltprocessor_get_parameter(string namespace, string name);", + "string xsl_xsltprocessor_get_parameter(string namespace, string name)", "" ], "xsl_xsltprocessor_has_exslt_support": [ - "bool xsl_xsltprocessor_has_exslt_support();", + "bool xsl_xsltprocessor_has_exslt_support()", "" ], "xsl_xsltprocessor_import_stylesheet": [ - "void xsl_xsltprocessor_import_stylesheet(domdocument doc);", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:" + "void xsl_xsltprocessor_import_stylesheet(domdocument doc)", + "" ], "xsl_xsltprocessor_register_php_functions": [ - "void xsl_xsltprocessor_register_php_functions([mixed $restrict]);", + "void xsl_xsltprocessor_register_php_functions([mixed $restrict])", "" ], "xsl_xsltprocessor_remove_parameter": [ - "bool xsl_xsltprocessor_remove_parameter(string namespace, string name);", + "bool xsl_xsltprocessor_remove_parameter(string namespace, string name)", "" ], "xsl_xsltprocessor_set_parameter": [ - "bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value]);", + "bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value])", "" ], "xsl_xsltprocessor_set_profiling": [ - "bool xsl_xsltprocessor_set_profiling(string filename) */", - "PHP_FUNCTION(xsl_xsltprocessor_set_profiling) { zval *id; xsl_object *intern; char *filename = NULL; int filename_len; DOM_GET_THIS(id); if (zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET, ZEND_NUM_ARGS() TSRMLS_CC, \"s!\", &filename, &filename_len) == SUCCESS) { intern = (xsl_object *)zend_object_store_get_object(id TSRMLS_CC); if (intern->profiling) { efree(intern->profiling); } if (filename != NULL) { intern->profiling = estrndup(filename,filename_len); } else { intern->profiling = NULL; } RETURN_TRUE; } else { WRONG_PARAM_COUNT; } } /* }}} end xsl_xsltprocessor_set_profiling" + "bool xsl_xsltprocessor_set_profiling(string filename)", + "" ], "xsl_xsltprocessor_transform_to_doc": [ - "domdocument xsl_xsltprocessor_transform_to_doc(domnode doc);", - "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html# Since:" + "domdocument xsl_xsltprocessor_transform_to_doc(domnode doc)", + "" ], "xsl_xsltprocessor_transform_to_uri": [ - "int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri);", + "int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri)", "" ], "xsl_xsltprocessor_transform_to_xml": [ - "string xsl_xsltprocessor_transform_to_xml(domdocument doc);", + "string xsl_xsltprocessor_transform_to_xml(domdocument doc)", "" ], "zend_logo_guid": [ - "string zend_logo_guid(void)", + "string zend_logo_guid()", "Return the special ID used to request the Zend logo in phpinfo screens" ], "zend_version": [ - "string zend_version(void)", + "string zend_version()", "Get the version of the Zend Engine" ], "zip_close": [ @@ -11136,11 +11462,1022 @@ var functionMap = { "Returns the next file in the archive" ], "zlib_get_coding_type": [ - "string zlib_get_coding_type(void)", + "string zlib_get_coding_type()", "Returns the coding type used for output compression" + ], + "array_column": [ + "array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array", + "Return the values from a single column in the input array" + ], + "boolval": [ + "boolval(mixed $value): bool", + "Get the boolean value of a variable" + ], + "bzclose": [ + "bzclose(resource $bz): bool", + "Close a bzip2 file" + ], + "bzflush": [ + "bzflush(resource $bz): bool", + "Do nothing" + ], + "bzwrite": [ + "bzwrite(resource $bz, string $data, ?int $length = null): int|false", + "Binary safe bzip2 file write" + ], + "checkdnsrr": [ + "checkdnsrr(string $hostname, string $type = "MX"): bool", + "Check DNS records corresponding to a given Internet host name or IP address" + ], + "chop": [ + "chop()", + "Alias of rtrim()" + ], + "class_uses": [ + "class_uses(object|string $object_or_class, bool $autoload = true): array|false", + "" + ], + "curl_escape": [ + "curl_escape(CurlHandle $handle, string $string): string|false", + "URL encodes the given string" + ], + "curl_file_create": [ + "curl_file_create()", + "Create a CURLFile object" + ], + "curl_multi_errno": [ + "curl_multi_errno(CurlMultiHandle $multi_handle): int", + "Return the last multi curl error number" + ], + "curl_multi_setopt": [ + "curl_multi_setopt(CurlMultiHandle $multi_handle, int $option, mixed $value): bool", + "Set an option for the cURL multi handle" + ], + "curl_multi_strerror": [ + "curl_multi_strerror(int $error_code): ?string", + "Return string describing error code" + ], + "curl_pause": [ + "curl_pause(CurlHandle $handle, int $flags): int", + "Pause and unpause a connection" + ], + "curl_reset": [ + "curl_reset(CurlHandle $handle): void", + "Reset all options of a libcurl session handle" + ], + "curl_share_close": [ + "curl_share_close(CurlShareHandle $share_handle): void", + "Close a cURL share handle" + ], + "curl_share_errno": [ + "curl_share_errno(CurlShareHandle $share_handle): int", + "Return the last share curl error number" + ], + "curl_share_init": [ + "curl_share_init(): CurlShareHandle", + "Initialize a cURL share handle" + ], + "curl_share_setopt": [ + "curl_share_setopt(CurlShareHandle $share_handle, int $option, mixed $value): bool", + "Set an option for a cURL share handle" + ], + "curl_share_strerror": [ + "curl_share_strerror(int $error_code): ?string", + "Return string describing the given error code" + ], + "curl_strerror": [ + "curl_strerror(int $error_code): ?string", + "Return string describing the given error code" + ], + "curl_unescape": [ + "curl_unescape(CurlHandle $handle, string $string): string|false", + "Decodes the given URL encoded string" + ], + "date_create_immutable_from_format": [ + "date_create_immutable_from_format()", + "Alias of DateTimeImmutable::createFromFormat()" + ], + "date_create_immutable": [ + "date_create_immutable()", + "Alias of DateTimeImmutable::__construct()" + ], + "deflate_add": [ + "deflate_add(DeflateContext $context, string $data, int $flush_mode = ZLIB_SYNC_FLUSH): string|false", + "Incrementally deflate data" + ], + "deflate_init": [ + "deflate_init(int $encoding, array $options = []): DeflateContext|false", + "Initialize an incremental deflate context" + ], + "delete": [ + "delete()", + "See unlink()" + ], + "diskfreespace": [ + "diskfreespace()", + "Alias of disk_free_space()" + ], + "doubleval": [ + "doubleval()", + "Alias of floatval()" + ], + "enchant_dict_add": [ + "enchant_dict_add(EnchantDictionary $dictionary, string $word): void", + "Add a word to personal word list" + ], + "enchant_dict_is_added": [ + "enchant_dict_is_added(EnchantDictionary $dictionary, string $word): bool", + "Whether or not 'word' exists in this spelling-session" + ], + "error_clear_last": [ + "error_clear_last(): void", + "Clear the most recent error" + ], + "eval": [ + "eval(string $code): mixed", + "Evaluate a string as PHP code" + ], + "expect_expectl": [ + "expect_expectl(resource $expect, array $cases, array &$match = ?): int", + "" + ], + "expect_popen": [ + "expect_popen(string $command): resource", + "" + ], + "fdiv": [ + "fdiv(float $num1, float $num2): float", + "Divides two numbers, according to IEEE 754" + ], + "filter_id": [ + "filter_id(string $name): int|false", + "Returns the filter ID belonging to a named filter" + ], + "filter_list": [ + "filter_list(): array", + "Returns a list of all supported filters" + ], + "forward_static_call_array": [ + "forward_static_call_array(callable $callback, array $args): mixed", + "Call a static method and pass the arguments as array" + ], + "fputs": [ + "fputs()", + "Alias of fwrite()" + ], + "ftp_append": [ + "ftp_append(FTP\\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY): bool", + "Append the contents of a file to another file on the FTP server" + ], + "ftp_mlsd": [ + "ftp_mlsd(FTP\\Connection $ftp, string $directory): array|false", + "Returns a list of files in the given directory" + ], + "ftp_quit": [ + "ftp_quit()", + "Alias of ftp_close()" + ], + "gc_mem_caches": [ + "gc_mem_caches(): int", + "" + ], + "gc_status": [ + "gc_status(): array", + "Gets information about the garbage collector" + ], + "get_debug_type": [ + "get_debug_type(mixed $value): string", + "Gets the type name of a variable in a way that is suitable for debugging" + ], + "get_declared_traits": [ + "get_declared_traits(): array", + "Returns an array of all declared traits" + ], + "get_required_files": [ + "get_required_files()", + "Alias of get_included_files()" + ], + "get_resource_id": [ + "get_resource_id(resource $resource): int", + "" + ], + "get_resources": [ + "get_resources(?string $type = null): array", + "Returns active resources" + ], + "getimagesizefromstring": [ + "getimagesizefromstring(string $string, array &$image_info = null): array|false", + "Get the size of an image from a string" + ], + "getmxrr": [ + "getmxrr(string $hostname, array &$hosts, array &$weights = null): bool", + "Get MX records corresponding to a given Internet host name" + ], + "gmp_binomial": [ + "gmp_binomial(GMP|int|string $n, int $k): GMP", + "Calculates binomial coefficient" + ], + "gmp_div": [ + "gmp_div()", + "Alias of gmp_div_q()" + ], + "gmp_export": [ + "gmp_export(GMP|int|string $num, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): string", + "Export to a binary string" + ], + "gmp_import": [ + "gmp_import(string $data, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): GMP", + "Import from a binary string" + ], + "gmp_kronecker": [ + "gmp_kronecker(GMP|int|string $num1, GMP|int|string $num2): int", + "Kronecker symbol" + ], + "gmp_lcm": [ + "gmp_lcm(GMP|int|string $num1, GMP|int|string $num2): GMP", + "Calculate LCM" + ], + "gmp_perfect_power": [ + "gmp_perfect_power(GMP|int|string $num): bool", + "Perfect power check" + ], + "gmp_random_bits": [ + "gmp_random_bits(int $bits): GMP", + "Random number" + ], + "gmp_random_range": [ + "gmp_random_range(GMP|int|string $min, GMP|int|string $max): GMP", + "Random number" + ], + "gmp_random_seed": [ + "gmp_random_seed(GMP|int|string $seed): void", + "Sets the RNG seed" + ], + "gmp_root": [ + "gmp_root(GMP|int|string $num, int $nth): GMP", + "Take the integer part of nth root" + ], + "gmp_rootrem": [ + "gmp_rootrem(GMP|int|string $num, int $nth): array", + "Take the integer part and remainder of nth root" + ], + "gzclose": [ + "gzclose(resource $stream): bool", + "Close an open gz-file pointer" + ], + "gzdecode": [ + "gzdecode(string $data, int $max_length = 0): string|false", + "Decodes a gzip compressed string" + ], + "gzeof": [ + "gzeof(resource $stream): bool", + "Test for EOF on a gz-file pointer" + ], + "gzgetc": [ + "gzgetc(resource $stream): string|false", + "Get character from gz-file pointer" + ], + "gzgets": [ + "gzgets(resource $stream, ?int $length = null): string|false", + "Get line from file pointer" + ], + "gzgetss": [ + "gzgetss(resource $zp, int $length, string $allowable_tags = ?): string", + "" + ], + "gzpassthru": [ + "gzpassthru(resource $stream): int", + "" + ], + "gzputs": [ + "gzputs()", + "Alias of gzwrite()" + ], + "gzread": [ + "gzread(resource $stream, int $length): string|false", + "Binary-safe gz-file read" + ], + "gzrewind": [ + "gzrewind(resource $stream): bool", + "Rewind the position of a gz-file pointer" + ], + "gzseek": [ + "gzseek(resource $stream, int $offset, int $whence = SEEK_SET): int", + "Seek on a gz-file pointer" + ], + "gztell": [ + "gztell(resource $stream): int|false", + "Tell gz-file pointer read/write position" + ], + "gzwrite": [ + "gzwrite(resource $stream, string $data, ?int $length = null): int|false", + "Binary-safe gz-file write" + ], + "halt_compiler": [ + "__halt_compiler(): void", + "" + ], + "hash_equals": [ + "hash_equals(string $known_string, string $user_string): bool", + "Timing attack safe string comparison" + ], + "hash_hkdf": [ + "hash_hkdf(string $algo, string $key, int $length = 0, string $info = \"\", string $salt = \"\"): string", + "Generate a HKDF key derivation of a supplied key input" + ], + "hash_hmac_algos": [ + "hash_hmac_algos(): array", + "Return a list of registered hashing algorithms suitable for hash_hmac" + ], + "hash_pbkdf2": [ + "hash_pbkdf2(string $algo, string $password, string $salt, int $iterations, int $length = 0, bool $binary = false): string", + "Generate a PBKDF2 key derivation of a supplied password" + ], + "header_register_callback": [ + "header_register_callback(callable $callback): bool", + "Call a header function" + ], + "hex2bin": [ + "hex2bin(string $string): string|false", + "Decodes a hexadecimally encoded binary string" + ], + "hrtime": [ + "hrtime(bool $as_number = false): array|int|float|false", + "Get the system's high resolution time" + ], + "http_response_code": [ + "http_response_code(int $response_code = 0): int|bool", + "Get or Set the HTTP response code" + ], + "imageaffine": [ + "imageaffine(GdImage $image, array $affine, ?array $clip = null): GdImage|false", + "Return an image containing the affine transformed src image, using an optional clipping area" + ], + "imageaffinematrixconcat": [ + "imageaffinematrixconcat(array $matrix1, array $matrix2): array|false", + "Concatenate two affine transformation matrices" + ], + "imageaffinematrixget": [ + "imageaffinematrixget(int $type, array|float $options): array|false", + "Get an affine transformation matrix" + ], + "imagebmp": [ + "imagebmp(GdImage $image, resource|string|null $file = null, bool $compressed = true): bool", + "Output a BMP image to browser or file" + ], + "imagecreatefrombmp": [ + "imagecreatefrombmp(string $filename): GdImage|false", + "Create a new image from file or URL" + ], + "imagecreatefromwebp": [ + "imagecreatefromwebp(string $filename): GdImage|false", + "Create a new image from file or URL" + ], + "imagecrop": [ + "imagecrop(GdImage $image, array $rectangle): GdImage|false", + "Crop an image to the given rectangle" + ], + "imagecropauto": [ + "imagecropauto(GdImage $image, int $mode = IMG_CROP_DEFAULT, float $threshold = 0.5, int $color = -1): GdImage|false", + "Crop an image automatically using one of the available modes" + ], + "imageflip": [ + "imageflip(GdImage $image, int $mode): bool", + "Flips an image using a given mode" + ], + "imagegetclip": [ + "imagegetclip(GdImage $image): array", + "Get the clipping rectangle" + ], + "imagegetinterpolation": [ + "imagegetinterpolation(GdImage $image): int", + "Get the interpolation method" + ], + "imageopenpolygon": [ + "imageopenpolygon(GdImage $image, array $points, int $color): bool", + "Draws an open polygon" + ], + "imagepalettetotruecolor": [ + "imagepalettetotruecolor(GdImage $image): bool", + "Converts a palette based image to true color" + ], + "imageresolution": [ + "imageresolution(GdImage $image, ?int $resolution_x = null, ?int $resolution_y = null): array|bool", + "Get or set the resolution of the image" + ], + "imagescale": [ + "imagescale(GdImage $image, int $width, int $height = -1, int $mode = IMG_BILINEAR_FIXED): GdImage|false", + "Scale an image using the given new width and height" + ], + "imagesetclip": [ + "imagesetclip(GdImage $image, int $x1, int $y1, int $x2, int $y2): bool", + "Set the clipping rectangle" + ], + "imagesetinterpolation": [ + "imagesetinterpolation(GdImage $image, int $method = IMG_BILINEAR_FIXED): bool", + "Set the interpolation method" + ], + "imagewebp": [ + "imagewebp(GdImage $image, resource|string|null $file = null, int $quality = -1): bool", + "Output a WebP image to browser or file" + ], + "imap_create": [ + "", + "Alias of imap_createmailbox()" + ], + "imap_fetchmime": [ + "imap_fetchmime(IMAP\\Connection $imap, int $message_num, string $section, int $flags = 0): string|false", + "Fetch MIME headers for a particular section of the message" + ], + "imap_fetchtext": [ + "imap_fetchtext()", + "Alias of imap_body()" + ], + "imap_header": [ + "imap_header()", + "Alias of imap_headerinfo()" + ], + "imap_listmailbox": [ + "imap_listmailbox()", + "Alias of imap_list()" + ], + "imap_listsubscribed": [ + "imap_listsubscribed()", + "Alias of imap_lsub()" + ], + "imap_rename": [ + "imap_rename()", + "Alias of imap_renamemailbox()" + ], + "imap_scan": [ + "imap_scan()", + "Alias of imap_listscan()" + ], + "imap_scanmailbox": [ + "imap_scanmailbox()", + "Alias of imap_listscan()" + ], + "ini_alter": [ + "ini_alter()", + "Alias of ini_set()" + ], + "intdiv": [ + "intdiv(int $num1, int $num2): int", + "Integer division" + ], + "is_double": [ + "is_double()", + "Alias of is_float()" + ], + "is_int": [ + "is_int(mixed $value): bool", + "Find whether the type of a variable is integer" + ], + "is_integer": [ + "is_integer()", + "Alias of is_int()" + ], + "is_iterable": [ + "is_iterable(mixed $value): bool", + "" + ], + "is_real": [ + "is_real()", + "Alias of is_float()" + ], + "is_soap_fault": [ + "is_soap_fault(mixed $object): bool", + "Checks if a SOAP call has failed" + ], + "is_tainted": [ + "is_tainted(string $string): bool", + "Checks whether a string is tainted" + ], + "is_writeable": [ + "is_writeable()", + "Alias of is_writable()" + ], + "json_last_error_msg": [ + "json_last_error_msg(): string", + "Returns the error string of the last json_encode() or json_decode() call" + ], + "key_exists": [ + "key_exists()", + "Alias of array_key_exists()" + ], + "lchown": [ + "lchown(string $filename, string|int $user): bool", + "Changes user ownership of symlink" + ], + "libxml_set_external_entity_loader": [ + "libxml_set_external_entity_loader(?callable $resolver_function): bool", + "Changes the default external entity loader" + ], + "mb_chr": [ + "mb_chr(int $codepoint, ?string $encoding = null): string|false", + "Return character by Unicode code point value" + ], + "mb_ereg_replace_callback": [ + "mb_ereg_replace_callback(string $pattern, callable $callback, string $string, ?string $options = null): string|false|null", + "" + ], + "mb_ord": [ + "mb_ord(string $string, ?string $encoding = null): int|false", + "Get Unicode code point of character" + ], + "mb_scrub": [ + "mb_scrub(string $string, ?string $encoding = null): string", + "Description" + ], + "mb_str_split": [ + "mb_str_split(string $string, int $length = 1, ?string $encoding = null): array", + "Given a multibyte string, return an array of its characters" + ], + "memcache_debug": [ + "memcache_debug(bool $on_off): bool", + "Turn debug output on/off" + ], + "mysql_db_name": [ + "mysql_db_name(resource $result, int $row, mixed $field = NULL): string", + "Retrieves database name from the call to mysql_list_dbs()" + ], + "mysql_tablename": [ + "mysql_tablename(resource $result, int $i): string|false", + "Get table name of field" + ], + "mysql_xdevapi_expression": [ + "mysql_xdevapi\\expression(string $expression): object", + "Bind prepared statement variables as parameters" + ], + "mysql_xdevapi_getsession": [ + "mysql_xdevapi\\getSession(string $uri): mysql_xdevapi\\Session", + "Connect to a MySQL server" + ], + "mysqli_escape_string": [ + "mysqli_escape_string()", + "Alias of mysqli_real_escape_string()" + ], + "mysqli_execute": [ + "mysqli_execute()", + "Alias for mysqli_stmt_execute()" + ], + "mysqli_get_links_stats": [ + "mysqli_get_links_stats(): array", + "Return information about open and cached links" + ], + "mysqli_set_opt": [ + "mysqli_set_opt()", + "Alias of mysqli_options()" + ], + "ob_tidyhandler": [ + "ob_tidyhandler(string $input, int $mode = ?): string", + "ob_start callback function to repair the buffer" + ], + "odbc_do": [ + "odbc_do()", + "Alias of odbc_exec()" + ], + "odbc_field_precision": [ + "odbc_field_precision()", + "Alias of odbc_field_len()" + ], + "opcache_compile_file": [ + "opcache_compile_file(string $filename): bool", + "Compiles and caches a PHP script without executing it" + ], + "opcache_get_configuration": [ + "opcache_get_configuration(): array|false", + "Get configuration information about the cache" + ], + "opcache_get_status": [ + "opcache_get_status(bool $include_scripts = true): array|false", + "Get status information about the cache" + ], + "opcache_invalidate": [ + "opcache_invalidate(string $filename, bool $force = false): bool", + "Invalidates a cached script" + ], + "opcache_is_script_cached": [ + "opcache_is_script_cached(string $filename): bool", + "Tells whether a script is cached in OPCache" + ], + "opcache_reset": [ + "opcache_reset(): bool", + "Resets the contents of the opcode cache" + ], + "password_algos": [ + "password_algos(): array", + "Get available password hashing algorithm IDs" + ], + "password_get_info": [ + "password_get_info(string $hash): array", + "Returns information about the given hash" + ], + "password_hash": [ + "password_hash(string $password, string|int|null $algo, array $options = []): string", + "Creates a password hash" + ], + "password_needs_rehash": [ + "password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool", + "Checks if the given hash matches the given options" + ], + "password_verify": [ + "password_verify(string $password, string $hash): bool", + "Verifies that a password matches a hash" + ], + "pcntl_async_signals": [ + "pcntl_async_signals(?bool $enable = null): bool", + "Enable/disable asynchronous signal handling or return the old setting" + ], + "pcntl_errno": [ + "pcntl_errno()", + "Alias of pcntl_get_last_error()" + ], + "pcntl_get_last_error": [ + "pcntl_get_last_error(): int", + "Retrieve the error number set by the last pcntl function which failed" + ], + "pcntl_signal_get_handler": [ + "pcntl_signal_get_handler(int $signal): callable|int", + "Get the current handler for specified signal" + ], + "pcntl_sigwaitinfo": [ + "pcntl_sigwaitinfo(array $signals, array &$info = []): int|false", + "Waits for signals" + ], + "pcntl_strerror": [ + "pcntl_strerror(int $error_code): string", + "Retrieve the system error message associated with the given errno" + ], + "pg_connect_poll": [ + "pg_connect_poll(PgSql\\Connection $connection): int", + "" + ], + "pg_consume_input": [ + "pg_consume_input(PgSql\\Connection $connection): bool", + "Reads input on the connection" + ], + "pg_escape_identifier": [ + "pg_escape_identifier(PgSql\\Connection $connection = ?, string $data): string", + "" + ], + "pg_escape_literal": [ + "pg_escape_literal(PgSql\\Connection $connection = ?, string $data): string", + "" + ], + "pg_flush": [ + "pg_flush(PgSql\\Connection $connection): int|bool", + "Flush outbound query data on the connection" + ], + "pg_lo_truncate": [ + "pg_lo_truncate(PgSql\\Lob $lob, int $size): bool", + "" + ], + "pg_socket": [ + "pg_socket(PgSql\\Connection $connection): resource|false", + "" + ], + "pos": [ + "pos()", + "Alias of current()" + ], + "posix_errno": [ + "posix_errno()", + "Alias of posix_get_last_error()" + ], + "posix_setrlimit": [ + "posix_setrlimit(int $resource, int $soft_limit, int $hard_limit): bool", + "Set system resource limits" + ], + "preg_last_error_msg": [ + "preg_last_error_msg(): string", + "Returns the error message of the last PCRE regex execution" + ], + "preg_replace_callback_array": [ + "preg_replace_callback_array(array $pattern, string|array $subject, int $limit = -1, int &$count = null, int $flags = 0): string|array|null", + "Perform a regular expression search and replace using callbacks" + ], + "ps_translate": [ + "ps_translate(resource $psdoc, float $x, float $y): bool", + "Sets translation" + ], + "random_bytes": [ + "random_bytes(int $length): string", + "Generates cryptographically secure pseudo-random bytes" + ], + "random_int": [ + "random_int(int $min, int $max): int", + "Generates cryptographically secure pseudo-random integers" + ], + "read_exif_data": [ + "read_exif_data()", + "Alias of exif_read_data()" + ], + "recode": [ + "recode()", + "Alias of recode_string()" + ], + "session_abort": [ + "session_abort(): bool", + "Discard session array changes and finish session" + ], + "session_commit": [ + "session_commit()", + "Alias of session_write_close()" + ], + "session_create_id": [ + "session_create_id(string $prefix = \"\"): string|false", + "Create new session id" + ], + "session_gc": [ + "session_gc(): int|false", + "Perform session data garbage collection" + ], + "session_register_shutdown": [ + "session_register_shutdown(): void", + "Session shutdown function" + ], + "session_reset": [ + "session_reset(): bool", + "Re-initialize session array with original values" + ], + "session_status": [ + "session_status(): int", + "Returns the current session status" + ], + "set_file_buffer": [ + "set_file_buffer()", + "Alias of stream_set_write_buffer()" + ], + "show_source": [ + "show_source()", + "Alias of highlight_file()" + ], + "sizeof": [ + "sizeof()", + "Alias of count()" + ], + "snmp_set_oid_numeric_print": [ + "snmp_set_oid_numeric_print(int $format): bool", + "" + ], + "snmpwalkoid": [ + "snmpwalkoid(string $hostname, string $community, array|string $object_id, int $timeout = -1, int $retries = -1): array|false", + "" + ], + "socket_addrinfo_bind": [ + "socket_addrinfo_bind(AddressInfo $address): Socket|false", + "Create and bind to a socket from a given addrinfo" + ], + "socket_addrinfo_connect": [ + "socket_addrinfo_connect(AddressInfo $address): Socket|false", + "Create and connect to a socket from a given addrinfo" + ], + "socket_addrinfo_explain": [ + "socket_addrinfo_explain(AddressInfo $address): array", + "Get information about addrinfo" + ], + "socket_addrinfo_lookup": [ + "socket_addrinfo_lookup(string $host, ?string $service = null, array $hints = []): array|false", + "Get array with contents of getaddrinfo about the given hostname" + ], + "socket_cmsg_space": [ + "socket_cmsg_space(int $level, int $type, int $num = 0): ?int", + "Calculate message buffer size" + ], + "socket_export_stream": [ + "socket_export_stream(Socket $socket): resource|false", + "Export a socket into a stream that encapsulates a socket" + ], + "socket_get_status": [ + "socket_get_status()", + "Alias of stream_get_meta_data()" + ], + "socket_getopt": [ + "socket_getopt()", + "Alias of socket_get_option()" + ], + "socket_import_stream": [ + "socket_import_stream(resource $stream): Socket|false", + "Import a stream" + ], + "socket_recvmsg": [ + "socket_recvmsg(Socket $socket, array &$message, int $flags = 0): int|false", + "Read a message" + ], + "socket_sendmsg": [ + "socket_sendmsg(Socket $socket, array $message, int $flags = 0): int|false", + "Send a message" + ], + "socket_set_blocking": [ + "socket_set_blocking()", + "Alias of stream_set_blocking()" + ], + "socket_set_timeout": [ + "socket_set_timeout()", + "Alias of stream_set_timeout()" + ], + "socket_setopt": [ + "socket_setopt()", + "Alias of socket_set_option()" + ], + "socket_wsaprotocol_info_export": [ + "socket_wsaprotocol_info_export(Socket $socket, int $process_id): string|false", + "Exports the WSAPROTOCOL_INFO Structure" + ], + "socket_wsaprotocol_info_import": [ + "socket_wsaprotocol_info_import(string $info_id): Socket|false", + "Imports a Socket from another Process" + ], + "socket_wsaprotocol_info_release": [ + "socket_wsaprotocol_info_release(string $info_id): bool", + "Releases an exported WSAPROTOCOL_INFO Structure" + ], + "spl_object_id": [ + "spl_object_id(object $object): int", + "" + ], + "sqlsrv_begin_transaction": [ + "sqlsrv_begin_transaction(resource $conn): bool", + "Begins a database transaction" + ], + "sqlsrv_cancel": [ + "sqlsrv_cancel(resource $stmt): bool", + "Cancels a statement" + ], + "sqlsrv_client_info": [ + "sqlsrv_client_info(resource $conn): array", + "Returns information about the client and specified connection" + ], + "sqlsrv_close": [ + "sqlsrv_close(resource $conn): bool", + "Closes an open connection and releases resourses associated with the connection" + ], + "sqlsrv_commit": [ + "sqlsrv_commit(resource $conn): bool", + "Commits a transaction that was begun with sqlsrv_begin_transaction()" + ], + "sqlsrv_configure": [ + "sqlsrv_configure(string $setting, mixed $value): bool", + "Changes the driver error handling and logging configurations" + ], + "sqlsrv_connect": [ + "sqlsrv_connect(string $serverName, array $connectionInfo = ?): resource", + "Opens a connection to a Microsoft SQL Server database" + ], + "sqlsrv_errors": [ + "sqlsrv_errors(int $errorsOrWarnings = ?): mixed", + "Returns error and warning information about the last SQLSRV operation performed" + ], + "sqlsrv_execute": [ + "sqlsrv_execute(resource $stmt): bool", + "Executes a statement prepared with sqlsrv_prepare()" + ], + "sqlsrv_fetch_array": [ + "sqlsrv_fetch_array(resource $stmt, int $fetchType = ?, int $row = ?, int $offset = ?): array", + "Returns a row as an array" + ], + "sqlsrv_fetch_object": [ + "sqlsrv_fetch_object(resource $stmt, string $className = ?, array $ctorParams = ?, int $row = ?, int $offset = ?): mixed", + "Retrieves the next row of data in a result set as an object" + ], + "sqlsrv_fetch": [ + "sqlsrv_fetch(resource $stmt, int $row = ?, int $offset = ?): mixed", + "Makes the next row in a result set available for reading" + ], + "sqlsrv_field_metadata": [ + "sqlsrv_field_metadata(resource $stmt): mixed", + "" + ], + "sqlsrv_free_stmt": [ + "sqlsrv_free_stmt(resource $stmt): bool", + "Frees all resources for the specified statement" + ], + "sqlsrv_get_config": [ + "sqlsrv_get_config(string $setting): mixed", + "Returns the value of the specified configuration setting" + ], + "sqlsrv_get_field": [ + "sqlsrv_get_field(resource $stmt, int $fieldIndex, int $getAsType = ?): mixed", + "Gets field data from the currently selected row" + ], + "sqlsrv_has_rows": [ + "sqlsrv_has_rows(resource $stmt): bool", + "Indicates whether the specified statement has rows" + ], + "sqlsrv_next_result": [ + "sqlsrv_next_result(resource $stmt): mixed", + "Makes the next result of the specified statement active" + ], + "sqlsrv_num_fields": [ + "sqlsrv_num_fields(resource $stmt): mixed", + "Retrieves the number of fields (columns) on a statement" + ], + "sqlsrv_num_rows": [ + "sqlsrv_num_rows(resource $stmt): mixed", + "Retrieves the number of rows in a result set" + ], + "sqlsrv_prepare": [ + "sqlsrv_prepare(resource $conn, string $sql, array $params = ?, array $options = ?): mixed", + "Prepares a query for execution" + ], + "sqlsrv_query": [ + "sqlsrv_query(resource $conn, string $sql, array $params = ?, array $options = ?): mixed", + "Prepares and executes a query" + ], + "sqlsrv_rollback": [ + "sqlsrv_rollback(resource $conn): bool", + "" + ], + "sqlsrv_rows_affected": [ + "sqlsrv_rows_affected(resource $stmt): int|false", + "" + ], + "sqlsrv_send_stream_data": [ + "sqlsrv_send_stream_data(resource $stmt): bool", + "Sends data from parameter streams to the server" + ], + "sqlsrv_server_info": [ + "sqlsrv_server_info(resource $conn): array", + "Returns information about the server" + ], + "str_contains": [ + "str_contains(string $haystack, string $needle): bool", + "Determine if a string contains a given substring" + ], + "str_ends_with": [ + "str_ends_with(string $haystack, string $needle): bool", + "Checks if a string ends with a given substring" + ], + "str_starts_with": [ + "str_starts_with(string $haystack, string $needle): bool", + "Checks if a string starts with a given substring" + ], + "stream_isatty": [ + "stream_isatty(resource $stream): bool", + "Check if a stream is a TTY" + ], + "stream_notification_callback": [ + "stream_notification_callback(int $notification_code, int $severity, string $message, int $message_code, int $bytes_transferred, int $bytes_max): void", + "A callback function for the notification context parameter" + ], + "stream_register_wrapper": [ + "stream_register_wrapper()", + "Alias of stream_wrapper_register()" + ], + "stream_set_chunk_size": [ + "stream_set_chunk_size(resource $stream, int $size): int", + "Set the stream chunk size" + ], + "stream_set_read_buffer": [ + "stream_set_read_buffer(resource $stream, int $size): int", + "Set read file buffering on the given stream" + ], + "tcpwrap_check": [ + "tcpwrap_check(string $daemon, string $address, string $user = ?, bool $nodns = false): bool", + "Performs a tcpwrap check" + ], + "trait_exists": [ + "trait_exists(string $trait, bool $autoload = true): bool", + "Checks if the trait exists" + ], + "use_soap_error_handler": [ + "use_soap_error_handler(bool $enable = true): bool", + "Set whether to use the SOAP error handler" + ], + "user_error": [ + "user_error()", + "Alias of trigger_error()" + ], + "yaml_emit_file": [ + "yaml_emit_file(string $filename, mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): bool", + "Send the YAML representation of a value to a file" + ], + "yaml_emit": [ + "yaml_emit(mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): string", + "Returns the YAML representation of a value" + ], + "yaml_parse_file": [ + "yaml_parse_file(string $filename, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a YAML stream from a file" + ], + "yaml_parse_url": [ + "yaml_parse_url(string $url, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a Yaml stream from a URL" + ], + "yaml_parse": [ + "yaml_parse(string $input, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a YAML stream" + ], + "zlib_decode": [ + "zlib_decode(string $data, int $max_length = 0): string|false", + "Uncompress any raw/gzip/zlib encoded data" + ], + "zlib_encode": [ + "zlib_encode(string $data, int $encoding, int $level = -1): string|false", + "Compress data with the specified encoding" ] }; - var variableMap = { "$_COOKIE": { type: "array" @@ -11163,31 +12500,33 @@ var variableMap = { "$_SERVER": { type: "array", value: { - "DOCUMENT_ROOT": 1, - "GATEWAY_INTERFACE": 1, - "HTTP_ACCEPT": 1, - "HTTP_ACCEPT_CHARSET": 1, - "HTTP_ACCEPT_ENCODING": 1 , - "HTTP_ACCEPT_LANGUAGE": 1, - "HTTP_CONNECTION": 1, - "HTTP_HOST": 1, - "HTTP_REFERER": 1, - "HTTP_USER_AGENT": 1, - "PATH_TRANSLATED": 1, - "PHP_SELF": 1, - "QUERY_STRING": 1, - "REMOTE_ADDR": 1, - "REMOTE_PORT": 1, - "REQUEST_METHOD": 1, - "REQUEST_URI": 1, - "SCRIPT_FILENAME": 1, - "SCRIPT_NAME": 1, - "SERVER_ADMIN": 1, - "SERVER_NAME": 1, - "SERVER_PORT": 1, - "SERVER_PROTOCOL": 1, - "SERVER_SIGNATURE": 1, - "SERVER_SOFTWARE": 1 + "DOCUMENT_ROOT": 1, + "GATEWAY_INTERFACE": 1, + "HTTP_ACCEPT": 1, + "HTTP_ACCEPT_CHARSET": 1, + "HTTP_ACCEPT_ENCODING": 1, + "HTTP_ACCEPT_LANGUAGE": 1, + "HTTP_CONNECTION": 1, + "HTTP_HOST": 1, + "HTTP_REFERER": 1, + "HTTP_USER_AGENT": 1, + "PATH_TRANSLATED": 1, + "PHP_SELF": 1, + "QUERY_STRING": 1, + "REMOTE_ADDR": 1, + "REMOTE_PORT": 1, + "REQUEST_METHOD": 1, + "REQUEST_URI": 1, + "SCRIPT_FILENAME": 1, + "SCRIPT_NAME": 1, + "SERVER_ADMIN": 1, + "SERVER_NAME": 1, + "SERVER_PORT": 1, + "SERVER_PROTOCOL": 1, + "SERVER_SIGNATURE": 1, + "SERVER_SOFTWARE": 1, + "argv": 1, + "argc": 1 } }, "$_SESSION": { @@ -11195,170 +12534,160 @@ var variableMap = { }, "$GLOBALS": { type: "array" + }, + '$argv': { + type: "array" + }, + '$argc': { + type: "int" } }; - function is(token, type) { return token.type.lastIndexOf(type) > -1; } - -var PhpCompletions = function() { - +var PhpCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; - if (token.type==='identifier') + if (token.type === 'support.php_tag' && token.value === ' 0) { + var prevToken = session.getTokenAt(pos.row, token.start); + if (prevToken.type === 'support.php_tag') { + return this.getTagCompletions(state, session, pos, prefix); + } + } return this.getFunctionCompletions(state, session, pos, prefix); + } if (is(token, "variable")) return this.getVariableCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (token.type==='string' && /(\$[\w]*)\[["']([^'"]*)$/i.test(line)) + if (token.type === 'string' && /(\$[\w]*)\[["']([^'"]*)$/i.test(line)) return this.getArrayKeyCompletions(state, session, pos, prefix); - return []; }; - - this.getFunctionCompletions = function(state, session, pos, prefix) { + this.getTagCompletions = function (state, session, pos, prefix) { + return [{ + caption: 'php', + value: 'php', + meta: "php tag", + score: 1000000 + }, { + caption: '=', + value: '=', + meta: "php tag", + score: 1000000 + }]; + }; + this.getFunctionCompletions = function (state, session, pos, prefix) { var functions = Object.keys(functionMap); - return functions.map(function(func){ + return functions.map(function (func) { return { caption: func, snippet: func + '($0)', meta: "php function", - score: Number.MAX_VALUE, + score: 1000000, docHTML: functionMap[func][1] }; }); }; - - this.getVariableCompletions = function(state, session, pos, prefix) { + this.getVariableCompletions = function (state, session, pos, prefix) { var variables = Object.keys(variableMap); - return variables.map(function(variable){ + return variables.map(function (variable) { return { caption: variable, value: variable, meta: "php variable", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getArrayKeyCompletions = function(state, session, pos, prefix) { + this.getArrayKeyCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var variable = line.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1]; - if (!variableMap[variable]) { return []; } - var keys = []; - if (variableMap[variable].type==='array' && variableMap[variable].value) + if (variableMap[variable].type === 'array' && variableMap[variable].value) keys = Object.keys(variableMap[variable].value); - - return keys.map(function(key) { + return keys.map(function (key) { return { caption: key, value: key, meta: "php array key", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(PhpCompletions.prototype); - exports.PhpCompletions = PhpCompletions; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -11371,54 +12700,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -11426,39 +12753,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -11470,108 +12793,98 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -11584,113 +12897,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -11702,20 +12995,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -11729,36 +13021,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -11767,8 +13067,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -11776,75 +13075,57 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -11855,26 +13136,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -11887,8 +13163,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -11899,7 +13174,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -11910,14 +13184,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -11925,63 +13203,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -12157,174 +13391,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -12348,7 +13445,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -12406,161 +13502,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -12572,21 +13658,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -12594,57 +13677,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -12657,130 +13733,93 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/php_completions","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"], function(require, exports, module) { -"use strict"; - +define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/php_completions","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; var PhpLangHighlightRules = require("./php_highlight_rules").PhpLangHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var PhpCompletions = require("./php_completions").PhpCompletions; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var unicode = require("../unicode"); var HtmlMode = require("./html").Mode; var JavaScriptMode = require("./javascript").Mode; var CssMode = require("./css").Mode; - -var PhpMode = function(opts) { +var PhpMode = function (opts) { this.HighlightRules = PhpLangHighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.$completer = new PhpCompletions(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(PhpMode, TextMode); - -(function() { - - this.tokenRe = new RegExp("^[" - + unicode.packages.L - + unicode.packages.Mn + unicode.packages.Mc - + unicode.packages.Nd - + unicode.packages.Pc + "_]+", "g" - ); - - this.nonTokenRe = new RegExp("^(?:[^" - + unicode.packages.L - + unicode.packages.Mn + unicode.packages.Mc - + unicode.packages.Nd - + unicode.packages.Pc + "_]|\\s])+", "g" - ); - - +(function () { + this.tokenRe = new RegExp("^[" + unicode.wordChars + "_]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "_]|\\s])+", "g"); this.lineCommentStart = ["//", "#"]; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState != "doc-start") { return ""; } @@ -12792,26 +13831,20 @@ oop.inherits(PhpMode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - this.$id = "ace/mode/php-inline"; }).call(PhpMode.prototype); - -var Mode = function(opts) { +var Mode = function (opts) { if (opts && opts.inline) { var mode = new PhpMode(); mode.createWorker = this.createWorker; @@ -12828,29 +13861,30 @@ var Mode = function(opts) { this.foldingRules.subModes["php-"] = new CStyleFoldMode(); }; oop.inherits(Mode, HtmlMode); - -(function() { - - this.createWorker = function(session) { +(function () { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/php_worker", "PhpWorker"); worker.attachToDocument(session.getDocument()); - if (this.inlinePhp) - worker.call("setOptions", [{inline: true}]); - - worker.on("annotate", function(e) { + worker.call("setOptions", [{ inline: true }]); + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/php"; + this.snippetFileId = "ace/snippets/php"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/php"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-php_laravel_blade.js b/vendor/assets/javascripts/ace/mode-php_laravel_blade.js new file mode 100644 index 00000000..7b90b668 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-php_laravel_blade.js @@ -0,0 +1,14078 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", // multi line comment + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var PhpLangHighlightRules = function () { + var docComment = DocCommentHighlightRules; + var builtinFunctions = lang.arrayToMap('abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|\ +aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|\ +apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|\ +apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|\ +apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|\ +apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|\ +apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|\ +apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_column|array_combine|\ +array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|\ +array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|\ +array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|\ +array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|\ +array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|\ +array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|\ +atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|\ +bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|\ +bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|\ +bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|\ +bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|\ +bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|\ +cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|\ +cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|\ +cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|\ +cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|\ +cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|\ +cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|\ +cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|\ +cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|\ +cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|\ +cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|\ +cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|\ +cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|\ +cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|\ +cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|\ +cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|\ +cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|\ +cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|\ +cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|\ +cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|\ +cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|\ +cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|\ +cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|\ +cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|\ +cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|\ +cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|\ +cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|\ +cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|\ +cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|\ +chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|\ +class_parents|class_uses|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|\ +classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|\ +com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|\ +com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|\ +convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|\ +counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|\ +crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|\ +ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|\ +cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|\ +cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|\ +cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|\ +cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|\ +cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|\ +cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|\ +cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|\ +cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|\ +cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|\ +cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|\ +cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|\ +curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|\ +curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|\ +curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|\ +date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|\ +date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|\ +date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|\ +dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|\ +db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|\ +db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|\ +db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|\ +db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|\ +db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|\ +db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|\ +dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|\ +dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|\ +dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|\ +dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|\ +dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|\ +dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|\ +dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|\ +dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|\ +dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|\ +define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|\ +dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|\ +dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|\ +domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|\ +domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|\ +domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|\ +domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|\ +domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|\ +domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|\ +domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|\ +domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|\ +domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|\ +domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|\ +domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|\ +domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|\ +domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|\ +domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|\ +domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|\ +domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|\ +domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|\ +enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|\ +enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|\ +enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|\ +enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|\ +eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|\ +event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|\ +event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|\ +event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|\ +event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|\ +expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|\ +fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|\ +fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|\ +fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|\ +fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|\ +fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|\ +fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|\ +fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|\ +fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|\ +fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|\ +fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|\ +fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|\ +fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|\ +fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|\ +file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|\ +filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|\ +filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|\ +finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|\ +forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|\ +ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|\ +ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|\ +ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|\ +func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|\ +gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|\ +geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|\ +geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|\ +get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|\ +get_declared_interfaces|get_declared_traits|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|\ +get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|\ +get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|\ +getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|\ +gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|\ +getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|\ +getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|\ +gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|\ +gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|\ +gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|\ +gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|\ +gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|\ +gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|\ +gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|\ +grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|\ +gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|\ +gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|\ +gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|\ +gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|\ +gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|\ +gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|\ +gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|\ +gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|\ +gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|\ +gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|\ +halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|\ +haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|\ +harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|\ +harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|\ +harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|\ +harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|\ +harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|\ +harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|\ +harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|\ +harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|\ +haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|\ +harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|\ +harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|\ +haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|\ +haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|\ +harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|\ +harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|\ +harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|\ +harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|\ +harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|\ +harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|\ +harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|\ +harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|\ +harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|\ +harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|\ +harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|\ +harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|\ +harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|\ +harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|\ +hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|\ +header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|\ +html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|\ +http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|\ +http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|\ +http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|\ +http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|\ +http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|\ +http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|\ +http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|\ +http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|\ +httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|\ +httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|\ +httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|\ +httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|\ +httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|\ +httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|\ +httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|\ +httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|\ +httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|\ +httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|\ +httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|\ +httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|\ +httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|\ +httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|\ +httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|\ +httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|\ +httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|\ +httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|\ +httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|\ +httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|\ +httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|\ +httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|\ +httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|\ +httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|\ +httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|\ +httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|\ +httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|\ +httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|\ +httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|\ +hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|\ +hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|\ +hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|\ +hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|\ +hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|\ +hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|\ +hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|\ +hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|\ +hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|\ +hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|\ +hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|\ +hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|\ +hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|\ +hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|\ +ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|\ +ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|\ +ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|\ +ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|\ +ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|\ +ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|\ +ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|\ +iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|\ +id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|\ +idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|\ +ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|\ +ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|\ +ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|\ +ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|\ +iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|\ +iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|\ +iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|\ +imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|\ +imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|\ +imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|\ +imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|\ +imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|\ +imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|\ +imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|\ +imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|\ +imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|\ +imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|\ +imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|\ +imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|\ +imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|\ +imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|\ +imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|\ +imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|\ +imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|\ +imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|\ +imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|\ +imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|\ +imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|\ +imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|\ +imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|\ +imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|\ +imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|\ +imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|\ +imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|\ +imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|\ +imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|\ +imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|\ +imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|\ +imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|\ +imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|\ +imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|\ +imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|\ +imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|\ +imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|\ +imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|\ +imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|\ +imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|\ +imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|\ +imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|\ +imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|\ +imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|\ +imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|\ +imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|\ +imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|\ +imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|\ +imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|\ +imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|\ +imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|\ +imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|\ +imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|\ +imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|\ +imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|\ +imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|\ +imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|\ +imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|\ +imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|\ +imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|\ +imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|\ +imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|\ +imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|\ +imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|\ +imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|\ +imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|\ +imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|\ +imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|\ +imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|\ +imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|\ +imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|\ +imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|\ +imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|\ +imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|\ +imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|\ +imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|\ +imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|\ +imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|\ +imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|\ +imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|\ +imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|\ +imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|\ +imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|\ +imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|\ +imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|\ +imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|\ +imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|\ +imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|\ +imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|\ +imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|\ +imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|\ +imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|\ +imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|\ +imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|\ +imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|\ +imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|\ +imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|\ +imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|\ +imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|\ +imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|\ +imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|\ +imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|\ +imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|\ +imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|\ +imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|\ +imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|\ +imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|\ +imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|\ +imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|\ +imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|\ +include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|\ +ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|\ +ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|\ +ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|\ +ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|\ +ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|\ +inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|\ +intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|\ +is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|\ +is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|\ +iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|\ +iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|\ +jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|\ +json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|\ +kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|\ +kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|\ +ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|\ +ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|\ +ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|\ +ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|\ +ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|\ +libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|\ +limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|\ +lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|\ +m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|\ +m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|\ +m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|\ +m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|\ +mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|\ +mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|\ +mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|\ +maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|\ +maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|\ +maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|\ +maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|\ +maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|\ +maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|\ +maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|\ +maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|\ +maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|\ +maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|\ +maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|\ +maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|\ +maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|\ +maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|\ +maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|\ +mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|\ +mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|\ +mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|\ +mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|\ +mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|\ +mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|\ +mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|\ +mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|\ +mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|\ +mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|\ +mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|\ +mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|\ +mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|\ +mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|\ +mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|\ +ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|\ +mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|\ +mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|\ +mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|\ +mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|\ +mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|\ +msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|\ +msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|\ +msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|\ +msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|\ +msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|\ +msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|\ +msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|\ +mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|\ +mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|\ +mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|\ +mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|\ +mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|\ +mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|\ +mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|\ +mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|\ +mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|\ +mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|\ +mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_affected_rows|\ +mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_cache_stats|mysqli_change_user|mysqli_character_set_name|\ +mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|\ +mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_dump_debug_info|mysqli_embedded_server_end|\ +mysqli_embedded_server_start|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|\ +mysqli_execute|mysqli_fetch|mysqli_fetch_all|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|\ +mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|\ +mysqli_free_result|mysqli_get_charset|mysqli_get_client_info|mysqli_get_client_stats|mysqli_get_client_version|mysqli_get_connection_stats|\ +mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_get_warnings|\ +mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_link_construct|mysqli_master_query|mysqli_more_results|mysqli_multi_query|\ +mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_poll|mysqli_prepare|\ +mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_reap_async_query|mysqli_refresh|mysqli_report|\ +mysqli_result|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|\ +mysqli_send_query|mysqli_set_charset|mysqli_set_local_infile_default|mysqli_set_local_infile_handler|mysqli_set_opt|mysqli_slave_query|\ +mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt|mysqli_stmt_affected_rows|mysqli_stmt_attr_get|mysqli_stmt_attr_set|\ +mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|\ +mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_field_count|mysqli_stmt_free_result|mysqli_stmt_get_result|mysqli_stmt_get_warnings|\ +mysqli_stmt_init|mysqli_stmt_insert_id|mysqli_stmt_next_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|\ +mysqli_stmt_reset|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|\ +mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning|mysqli_warning_count|mysqlnd_ms_get_stats|\ +mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|\ +mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|\ +ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|\ +ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|\ +ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|\ +ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|\ +ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|\ +ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|\ +ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|\ +ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|\ +ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|\ +ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|\ +ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|\ +ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|\ +ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|\ +ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|\ +ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|\ +ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|\ +ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|\ +ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|\ +ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|\ +ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|\ +ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|\ +ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|\ +newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|\ +newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|\ +newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|\ +newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|\ +newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|\ +newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|\ +newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|\ +newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|\ +newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|\ +newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|\ +newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|\ +newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|\ +newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|\ +newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|\ +newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|\ +newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|\ +newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|\ +newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|\ +newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|\ +notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|\ +notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|\ +numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|\ +ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|\ +ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|\ +oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|\ +oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|\ +oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|\ +oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|\ +oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|\ +oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|\ +oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|\ +oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|\ +oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|\ +ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|\ +ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|\ +ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|\ +ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|\ +ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|\ +octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|\ +odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|\ +odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|\ +odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|\ +odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|\ +odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|\ +openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|\ +openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|\ +openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|\ +openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|\ +openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|\ +openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|\ +openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|\ +openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|\ +openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|\ +openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|\ +openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|\ +outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|\ +ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|\ +ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|\ +ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|\ +parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|\ +pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|\ +pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|\ +pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|\ +pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|\ +pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|\ +pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|\ +pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|\ +pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|\ +pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|\ +pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|\ +pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|\ +pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|\ +pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|\ +pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|\ +pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|\ +pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|\ +pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|\ +pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|\ +pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|\ +pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|\ +pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|\ +pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|\ +pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|\ +pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|\ +pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|\ +pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|\ +pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|\ +pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|\ +pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|\ +pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|\ +pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|\ +pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|\ +pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|\ +pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|\ +pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|\ +php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|\ +png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|\ +posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|\ +posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|\ +posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|\ +preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|\ +printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|\ +printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|\ +printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|\ +printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|\ +printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|\ +ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|\ +ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|\ +ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|\ +ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|\ +ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|\ +ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|\ +ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|\ +ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|\ +ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|\ +pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|\ +pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|\ +pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|\ +px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|\ +px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|\ +px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|\ +radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|\ +radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|\ +radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|\ +radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|\ +rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|\ +readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|\ +readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|\ +readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|\ +recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|\ +recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|\ +reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|\ +regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|\ +resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|\ +rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|\ +rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|\ +runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|\ +runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|\ +runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|\ +runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|\ +samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|\ +samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|\ +sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|\ +sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|\ +sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|\ +sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|\ +sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|\ +sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|\ +sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|\ +sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|\ +sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|\ +sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|\ +sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|\ +sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|\ +sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|\ +sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|\ +sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|\ +sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|\ +sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|\ +sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|\ +sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|\ +sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|\ +session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|\ +session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|\ +session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|\ +session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|\ +set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|\ +setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|\ +shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|\ +similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|\ +snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|\ +snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|\ +snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|\ +soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|\ +socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|\ +socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|\ +socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|\ +solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|\ +solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|\ +solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|\ +spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|\ +splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|\ +splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|\ +sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|\ +sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|\ +sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|\ +sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|\ +sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|\ +sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|\ +ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|\ +ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|\ +ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|\ +ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|\ +stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|\ +stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|\ +stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|\ +stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|\ +stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|\ +stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|\ +stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|\ +stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|\ +stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|\ +stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|\ +stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|\ +stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|\ +str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|\ +stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|\ +stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|\ +stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|\ +stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|\ +stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|\ +stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|\ +stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|\ +stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|\ +stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|\ +strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|\ +svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|\ +svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|\ +svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|\ +svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|\ +svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|\ +svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|\ +swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|\ +swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|\ +swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|\ +swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|\ +swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|\ +swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|\ +swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|\ +swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|\ +swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|\ +swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|\ +swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|\ +swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|\ +swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|\ +sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|\ +sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|\ +sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|\ +sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|\ +tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|\ +tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|\ +time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|\ +timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|\ +tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|trait_exists|transliterator|traversable|trigger_error|trim|uasort|ucfirst|\ +ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|\ +udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|\ +udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|\ +uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|\ +urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|\ +variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|\ +variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|\ +variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|\ +vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|\ +vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|\ +vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|\ +w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|\ +wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|\ +win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|\ +win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|\ +wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|\ +wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|\ +wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|\ +wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|\ +xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|\ +xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|\ +xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|\ +xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|\ +xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|\ +xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|\ +xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|\ +xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|\ +xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|\ +xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|\ +xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|\ +xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|\ +xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|\ +xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|\ +xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|\ +xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|\ +xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|\ +xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|\ +xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|\ +xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|\ +xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|\ +xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|\ +yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|\ +yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|\ +yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|\ +yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|\ +zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|\ +ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|\ +ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|\ +ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|\ +ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|\ +ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|\ +ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type'.split('|')); + var keywords = lang.arrayToMap('abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|\ +endif|endswitch|endwhile|extends|final|finally|for|foreach|function|global|goto|if|implements|instanceof|insteadof|interface|namespace|new|or|private|protected|\ +public|static|switch|throw|trait|try|use|var|while|xor|yield'.split('|')); + var languageConstructs = lang.arrayToMap(('__halt_compiler|die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset').split('|')); + var builtinConstants = lang.arrayToMap(('true|TRUE|false|FALSE|null|NULL|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__|__TRAIT__').split('|')); + var builtinVariables = lang.arrayToMap('$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|\ +$http_response_header|$argc|$argv'.split('|')); + var builtinFunctionsDeprecated = lang.arrayToMap('key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|\ +com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|\ +cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|\ +hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|\ +maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|\ +mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|\ +mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|\ +mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|\ +mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|\ +mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|\ +mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|\ +ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|\ +ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|\ +ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|\ +ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|\ +ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|\ +PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|\ +PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|\ +PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|\ +PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|\ +PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|\ +PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|\ +PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|\ +PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|\ +px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregister\ +set_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|\ +sql_regcase'.split('|')); + var keywordsDeprecated = lang.arrayToMap(('cfunction|old_function').split('|')); + var futureReserved = lang.arrayToMap([]); + this.$rules = { + "start": [ + { + token: "comment", + regex: /(?:#|\/\/)(?:[^?]|\?[^>])*/ + }, + docComment.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)" + }, { + token: "string", // " string start + regex: '"', + next: "qqstring" + }, { + token: "string", // ' string start + regex: "'", + next: "qstring" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language", // constants + regex: "\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|" + + "ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|" + + "HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|" + + "L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|" + + "VERSION))|__COMPILER_HALT_OFFSET__)\\b" + }, { + token: ["keyword", "text", "support.class"], + regex: "\\b(new)(\\s+)(\\w+)" + }, { + token: ["support.class", "keyword.operator"], + regex: "\\b(\\w+)(::)" + }, { + token: "constant.language", // constants + regex: "\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|" + + "SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|" + + "O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|" + + "R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|" + + "YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|" + + "ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|" + + "T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|" + + "HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|" + + "I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|" + + "O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|" + + "L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|" + + "M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|" + + "OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + + "P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|" + + "RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|" + + "T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b" + }, { + token: function (value) { + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (builtinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (builtinVariables.hasOwnProperty(value)) + return "variable.language"; + else if (futureReserved.hasOwnProperty(value)) + return "invalid.illegal"; + else if (builtinFunctions.hasOwnProperty(value)) + return "support.function"; + else if (value == "debugger") + return "invalid.deprecated"; + else if (value.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)) + return "variable"; + return "identifier"; + }, + regex: /[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ + }, { + onMatch: function (value, currentSate, state) { + value = value.substr(3); + if (value[0] == "'" || value[0] == '"') + value = value.slice(1, -1); + state.unshift(this.next, value); + return "markup.list"; + }, + regex: /<<<(?:\w+|'\w+'|"\w+")$/, + next: "heredoc" + }, { + token: "keyword.operator", + regex: "::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|\\.=|=|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "punctuation.operator", + regex: /[,;]/ + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "heredoc": [ + { + onMatch: function (value, currentState, stack) { + if (stack[1] != value) { + this.next = ""; + return "string"; + } + stack.shift(); + stack.shift(); + this.next = this.nextState; + return "markup.list"; + }, + regex: "^\\w+(?=;?$)", + nextState: "start" + }, { + token: "string", + regex: ".*" + } + ], + "comment": [ + { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: '\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' + }, { + token: "variable", + regex: /\$[\w]+(?:\[[\w\]+]|[=\-]>\w+)?/ + }, { + token: "variable", + regex: /\$\{[^"\}]+\}?/ // this is wrong but ok for now + }, + { token: "string", regex: '"', next: "start" }, + { defaultToken: "string" } + ], + "qstring": [ + { token: "constant.language.escape", regex: /\\['\\]/ }, + { token: "string", regex: "'", next: "start" }, + { defaultToken: "string" } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); +}; +oop.inherits(PhpLangHighlightRules, TextHighlightRules); +var PhpHighlightRules = function () { + HtmlHighlightRules.call(this); + var startRules = [ + { + token: "support.php_tag", // php open tag + regex: "<\\?(?:php|=)?", + push: "php-start" + } + ]; + var endRules = [ + { + token: "support.php_tag", // php close tag + regex: "\\?>", + next: "pop" + } + ]; + for (var key in this.$rules) + this.$rules[key].unshift.apply(this.$rules[key], startRules); + this.embedRules(PhpLangHighlightRules, "php-", endRules, ["start"]); + this.normalizeRules(); +}; +oop.inherits(PhpHighlightRules, HtmlHighlightRules); +exports.PhpHighlightRules = PhpHighlightRules; +exports.PhpLangHighlightRules = PhpLangHighlightRules; + +}); + +define("ace/mode/php_laravel_blade_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/php_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; +var PHPLaravelBladeHighlightRules = function () { + PhpHighlightRules.call(this); + var bladeRules = { + start: [{ + include: "bladeComments" + }, { + include: "directives" + }, { + include: "parenthesis" + }], + comments: [{ + include: "bladeComments" + }, { + token: "punctuation.definition.comment.blade", + regex: "(\\/\\/(.)*)|(\\#(.)*)" + }, { + token: "punctuation.definition.comment.begin.php", + regex: "(?:\\/\\*)", + push: [{ + token: "punctuation.definition.comment.end.php", + regex: "(?:\\*\\/)", + next: "pop" + }, { + defaultToken: "comment.block.blade" + }] + }], + bladeComments: [{ + token: "punctuation.definition.comment.begin.blade", + regex: "(?:\\{\\{\\-\\-)", + push: [{ + token: "punctuation.definition.comment.end.blade", + regex: "(?:\\-\\-\\}\\})", + next: "pop" + }, { + defaultToken: "comment.block.blade" + }] + }], + parenthesis: [{ + token: "parenthesis.begin.blade", + regex: "\\(", + push: [{ + token: "parenthesis.end.blade", + regex: "\\)", + next: "pop" + }, { + include: "strings" + }, { + include: "variables" + }, { + include: "lang" + }, { + include: "parenthesis" + }, { + include: "comments" + }, { + defaultToken: "source.blade" + }] + }], + directives: [{ + token: ["directive.declaration.blade", "keyword.directives.blade"], + regex: "(@)(endunless|endisset|endempty|endauth|endguest|endcomponent|endslot|endalert|endverbatim|endsection|show|php|endphp|endpush|endprepend|endenv|endforelse|isset|empty|component|slot|alert|json|verbatim|section|auth|guest|hasSection|forelse|includeIf|includeWhen|includeFirst|each|push|stack|prepend|inject|env|elseenv|unless|yield|extends|parent|include|acfrepeater|block|can|cannot|choice|debug|elsecan|elsecannot|embed|hipchat|lang|layout|macro|macrodef|minify|partial|render|servers|set|slack|story|task|unset|wpposts|acfend|after|append|breakpoint|endafter|endcan|endcannot|endembed|endmacro|endmarkdown|endminify|endpartial|endsetup|endstory|endtask|endunless|markdown|overwrite|setup|stop|wpempty|wpend|wpquery)" + }, { + token: ["directive.declaration.blade", "keyword.control.blade"], + regex: "(@)(if|else|elseif|endif|foreach|endforeach|switch|case|break|default|endswitch|for|endfor|while|endwhile|continue)" + }, { + token: ["directive.ignore.blade", "injections.begin.blade"], + regex: "(@?)(\\{\\{)", + push: [{ + token: "injections.end.blade", + regex: "\\}\\}", + next: "pop" + }, { + include: "strings" + }, { + include: "variables" + }, { + include: "comments" + }, { + defaultToken: "source.blade" + }] + }, { + token: "injections.unescaped.begin.blade", + regex: "\\{\\!\\!", + push: [{ + token: "injections.unescaped.end.blade", + regex: "\\!\\!\\}", + next: "pop" + }, { + include: "strings" + }, { + include: "variables" + }, { + defaultToken: "source.blade" + }] + } + ], + lang: [{ + token: "keyword.operator.blade", + regex: "(?:!=|!|<=|>=|<|>|===|==|=|\\+\\+|\\;|\\,|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod|as)\\b" + }, { + token: "constant.language.blade", + regex: "\\b(?:TRUE|FALSE|true|false)\\b" + }], + strings: [{ + token: "punctuation.definition.string.begin.blade", + regex: "\"", + push: [{ + token: "punctuation.definition.string.end.blade", + regex: "\"", + next: "pop" + }, { + token: "string.character.escape.blade", + regex: "\\\\." + }, { + defaultToken: "string.quoted.single.blade" + }] + }, { + token: "punctuation.definition.string.begin.blade", + regex: "'", + push: [{ + token: "punctuation.definition.string.end.blade", + regex: "'", + next: "pop" + }, { + token: "string.character.escape.blade", + regex: "\\\\." + }, { + defaultToken: "string.quoted.double.blade" + }] + }], + variables: [{ + token: "variable.blade", + regex: "\\$([a-zA-Z_][a-zA-Z0-9_]*)\\b" + }, { + token: ["keyword.operator.blade", "constant.other.property.blade"], + regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b" + }, { + token: ["keyword.operator.blade", + "meta.function-call.object.blade", + "punctuation.definition.variable.blade", + "variable.blade", + "punctuation.definition.variable.blade" + ], + regex: "(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))" + }] + }; + var bladeStart = bladeRules.start; + for (var rule in this.$rules) { + this.$rules[rule].unshift.apply(this.$rules[rule], bladeStart); + } + Object.keys(bladeRules).forEach(function (x) { + if (!this.$rules[x]) + this.$rules[x] = bladeRules[x]; + }, this); + this.normalizeRules(); +}; +oop.inherits(PHPLaravelBladeHighlightRules, PhpHighlightRules); +exports.PHPLaravelBladeHighlightRules = PHPLaravelBladeHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/php_completions",["require","exports","module"], function(require, exports, module){/** + * ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** + */ +"use strict"; +var functionMap = { + "abs": [ + "int abs(int number)", + "Return the absolute value of the number" + ], + "acos": [ + "float acos(float number)", + "Return the arc cosine of the number in radians" + ], + "acosh": [ + "float acosh(float number)", + "Returns the inverse hyperbolic cosine of the number, i.e. the value whose hyperbolic cosine is number" + ], + "addGlob": [ + "bool addGlob(string pattern[,int flags [, array options]])", + "Add files matching the glob pattern. See php's glob for the pattern syntax." + ], + "addPattern": [ + "bool addPattern(string pattern[, string path [, array options]])", + "Add files matching the pcre pattern. See php's pcre for the pattern syntax." + ], + "addcslashes": [ + "string addcslashes(string str, string charlist)", + "Escapes all chars mentioned in charlist with backslash. It creates octal representations if asked to backslash characters with 8th bit set or with ASCII<32 (except '\\n', '\\r', '\\t' etc...)" + ], + "addslashes": [ + "string addslashes(string str)", + "Escapes single quote, double quotes and backslash characters in a string with backslashes" + ], + "apache_child_terminate": [ + "bool apache_child_terminate()", + "Terminate apache process after this request" + ], + "apache_get_modules": [ + "array apache_get_modules()", + "Get a list of loaded Apache modules" + ], + "apache_get_version": [ + "string apache_get_version()", + "Fetch Apache version" + ], + "apache_getenv": [ + "bool apache_getenv(string variable [, bool walk_to_top])", + "Get an Apache subprocess_env variable" + ], + "apache_lookup_uri": [ + "object apache_lookup_uri(string URI)", + "Perform a partial request of the given URI to obtain information about it" + ], + "apache_note": [ + "string apache_note(string note_name [, string note_value])", + "Get and set Apache request notes" + ], + "apache_request_auth_name": [ + "string apache_request_auth_name()", + "" + ], + "apache_request_auth_type": [ + "string apache_request_auth_type()", + "" + ], + "apache_request_discard_request_body": [ + "long apache_request_discard_request_body()", + "" + ], + "apache_request_err_headers_out": [ + "array apache_request_err_headers_out([{string name|array list} [, string value [, bool replace = false]]])", + "* fetch all headers that go out in case of an error or a subrequest" + ], + "apache_request_headers": [ + "array apache_request_headers()", + "Fetch all HTTP request headers" + ], + "apache_request_headers_in": [ + "array apache_request_headers_in()", + "* fetch all incoming request headers" + ], + "apache_request_headers_out": [ + "array apache_request_headers_out([{string name|array list} [, string value [, bool replace = false]]])", + "* fetch all outgoing request headers" + ], + "apache_request_is_initial_req": [ + "bool apache_request_is_initial_req()", + "" + ], + "apache_request_log_error": [ + "bool apache_request_log_error(string message, [long facility])", + "" + ], + "apache_request_meets_conditions": [ + "long apache_request_meets_conditions()", + "" + ], + "apache_request_remote_host": [ + "int apache_request_remote_host([int type])", + "" + ], + "apache_request_run": [ + "long apache_request_run()", + "This is a wrapper for ap_sub_run_req and ap_destory_sub_req. It takes sub_request, runs it, destroys it, and returns it's status." + ], + "apache_request_satisfies": [ + "long apache_request_satisfies()", + "" + ], + "apache_request_server_port": [ + "int apache_request_server_port()", + "" + ], + "apache_request_set_etag": [ + "void apache_request_set_etag()", + "" + ], + "apache_request_set_last_modified": [ + "void apache_request_set_last_modified()", + "" + ], + "apache_request_some_auth_required": [ + "bool apache_request_some_auth_required()", + "" + ], + "apache_request_sub_req_lookup_file": [ + "object apache_request_sub_req_lookup_file(string file)", + "Returns sub-request for the specified file. You would need to run it yourself with run()." + ], + "apache_request_sub_req_lookup_uri": [ + "object apache_request_sub_req_lookup_uri(string uri)", + "Returns sub-request for the specified uri. You would need to run it yourself with run()" + ], + "apache_request_sub_req_method_uri": [ + "object apache_request_sub_req_method_uri(string method, string uri)", + "Returns sub-request for the specified file. You would need to run it yourself with run()." + ], + "apache_request_update_mtime": [ + "long apache_request_update_mtime([int dependency_mtime])", + "" + ], + "apache_reset_timeout": [ + "bool apache_reset_timeout()", + "Reset the Apache write timer" + ], + "apache_response_headers": [ + "array apache_response_headers()", + "Fetch all HTTP response headers" + ], + "apache_setenv": [ + "bool apache_setenv(string variable, string value [, bool walk_to_top])", + "Set an Apache subprocess_env variable" + ], + "array_change_key_case": [ + "array array_change_key_case(array input [, int case=CASE_LOWER])", + "Retuns an array with all string keys lowercased [or uppercased]" + ], + "array_chunk": [ + "array array_chunk(array input, int size [, bool preserve_keys])", + "Split array into chunks" + ], + "array_combine": [ + "array array_combine(array keys, array values)", + "Creates an array by using the elements of the first parameter as keys and the elements of the second as the corresponding values" + ], + "array_count_values": [ + "array array_count_values(array input)", + "Return the value as key and the frequency of that value in input as value" + ], + "array_diff": [ + "array array_diff(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are not present in any of the others arguments." + ], + "array_diff_assoc": [ + "array array_diff_assoc(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal" + ], + "array_diff_key": [ + "array array_diff_key(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have keys which are not present in any of the others arguments. This function is like array_diff() but works on the keys instead of the values. The associativity is preserved." + ], + "array_diff_uassoc": [ + "array array_diff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Elements are compared by user supplied function." + ], + "array_diff_ukey": [ + "array array_diff_ukey(array arr1, array arr2 [, array ...], callback key_comp_func)", + "Returns the entries of arr1 that have keys which are not present in any of the others arguments. User supplied function is used for comparing the keys. This function is like array_udiff() but works on the keys instead of the values. The associativity is preserved." + ], + "array_fill": [ + "array array_fill(int start_key, int num, mixed val)", + "Create an array containing num elements starting with index start_key each initialized to val" + ], + "array_fill_keys": [ + "array array_fill_keys(array keys, mixed val)", + "Create an array using the elements of the first parameter as keys each initialized to val" + ], + "array_filter": [ + "array array_filter(array input [, mixed callback])", + "Filters elements from the array via the callback." + ], + "array_flip": [ + "array array_flip(array input)", + "Return array with key <-> value flipped" + ], + "array_intersect": [ + "array array_intersect(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are present in all the other arguments" + ], + "array_intersect_assoc": [ + "array array_intersect_assoc(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check" + ], + "array_intersect_key": [ + "array array_intersect_key(array arr1, array arr2 [, array ...])", + "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). Equivalent of array_intersect_assoc() but does not do compare of the data." + ], + "array_intersect_uassoc": [ + "array array_intersect_uassoc(array arr1, array arr2 [, array ...], callback key_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check and they are compared by using an user-supplied callback." + ], + "array_intersect_ukey": [ + "array array_intersect_ukey(array arr1, array arr2 [, array ...], callback key_compare_func)", + "Returns the entries of arr1 that have keys which are present in all the other arguments. Kind of equivalent to array_diff(array_keys($arr1), array_keys($arr2)[,array_keys(...)]). The comparison of the keys is performed by a user supplied function. Equivalent of array_intersect_uassoc() but does not do compare of the data." + ], + "array_key_exists": [ + "bool array_key_exists(mixed key, array search)", + "Checks if the given key or index exists in the array" + ], + "array_keys": [ + "array array_keys(array input [, mixed search_value[, bool strict]])", + "Return just the keys from the input array, optionally only for the specified search_value" + ], + "array_key_first": [ + "mixed array_key_first(array arr)", + "Returns the first key of arr if the array is not empty; NULL otherwise" + ], + "array_key_last": [ + "mixed array_key_last(array arr)", + "Returns the last key of arr if the array is not empty; NULL otherwise" + ], + "array_map": [ + "array array_map(mixed callback, array input1 [, array input2 ,...])", + "Applies the callback to the elements in given arrays." + ], + "array_merge": [ + "array array_merge(array arr1, array arr2 [, array ...])", + "Merges elements from passed arrays into one array" + ], + "array_merge_recursive": [ + "array array_merge_recursive(array arr1, array arr2 [, array ...])", + "Recursively merges elements from passed arrays into one array" + ], + "array_multisort": [ + "bool array_multisort(array ar1 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]] [, array ar2 [, SORT_ASC|SORT_DESC [, SORT_REGULAR|SORT_NUMERIC|SORT_STRING]], ...])", + "Sort multiple arrays at once similar to how ORDER BY clause works in SQL" + ], + "array_pad": [ + "array array_pad(array input, int pad_size, mixed pad_value)", + "Returns a copy of input array padded with pad_value to size pad_size" + ], + "array_pop": [ + "mixed array_pop(array stack)", + "Pops an element off the end of the array" + ], + "array_product": [ + "mixed array_product(array input)", + "Returns the product of the array entries" + ], + "array_push": [ + "int array_push(array stack, mixed var [, mixed ...])", + "Pushes elements onto the end of the array" + ], + "array_rand": [ + "mixed array_rand(array input [, int num_req])", + "Return key/keys for random entry/entries in the array" + ], + "array_reduce": [ + "mixed array_reduce(array input, mixed callback [, mixed initial])", + "Iteratively reduce the array to a single value via the callback." + ], + "array_replace": [ + "array array_replace(array arr1, array arr2 [, array ...])", + "Replaces elements from passed arrays into one array" + ], + "array_replace_recursive": [ + "array array_replace_recursive(array arr1, array arr2 [, array ...])", + "Recursively replaces elements from passed arrays into one array" + ], + "array_reverse": [ + "array array_reverse(array input [, bool preserve keys])", + "Return input as a new array with the order of the entries reversed" + ], + "array_search": [ + "mixed array_search(mixed needle, array haystack [, bool strict])", + "Searches the array for a given value and returns the corresponding key if successful" + ], + "array_shift": [ + "mixed array_shift(array stack)", + "Pops an element off the beginning of the array" + ], + "array_slice": [ + "array array_slice(array input, int offset [, int length [, bool preserve_keys]])", + "Returns elements specified by offset and length" + ], + "array_splice": [ + "array array_splice(array input, int offset [, int length [, array replacement]])", + "Removes the elements designated by offset and length and replace them with supplied array" + ], + "array_sum": [ + "mixed array_sum(array input)", + "Returns the sum of the array entries" + ], + "array_udiff": [ + "array array_udiff(array arr1, array arr2 [, array ...], callback data_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments. Elements are compared by user supplied function." + ], + "array_udiff_assoc": [ + "array array_udiff_assoc(array arr1, array arr2 [, array ...], callback key_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys are compared by user supplied function." + ], + "array_udiff_uassoc": [ + "array array_udiff_uassoc(array arr1, array arr2 [, array ...], callback data_comp_func, callback key_comp_func)", + "Returns the entries of arr1 that have values which are not present in any of the others arguments but do additional checks whether the keys are equal. Keys and elements are compared by user supplied functions." + ], + "array_uintersect": [ + "array array_uintersect(array arr1, array arr2 [, array ...], callback data_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Data is compared by using an user-supplied callback." + ], + "array_uintersect_assoc": [ + "array array_uintersect_assoc(array arr1, array arr2 [, array ...], callback data_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Data is compared by using an user-supplied callback." + ], + "array_uintersect_uassoc": [ + "array array_uintersect_uassoc(array arr1, array arr2 [, array ...], callback data_compare_func, callback key_compare_func)", + "Returns the entries of arr1 that have values which are present in all the other arguments. Keys are used to do more restrictive check. Both data and keys are compared by using user-supplied callbacks." + ], + "array_unique": [ + "array array_unique(array input [, int sort_flags])", + "Removes duplicate values from array" + ], + "array_unshift": [ + "int array_unshift(array stack, mixed var [, mixed ...])", + "Pushes elements onto the beginning of the array" + ], + "array_values": [ + "array array_values(array input)", + "Return just the values from the input array" + ], + "array_walk": [ + "bool array_walk(array input, string funcname [, mixed userdata])", + "Apply a user function to every member of an array" + ], + "array_walk_recursive": [ + "bool array_walk_recursive(array input, string funcname [, mixed userdata])", + "Apply a user function recursively to every member of an array" + ], + "arsort": [ + "bool arsort(array &array_arg [, int sort_flags])", + "Sort an array in reverse order and maintain index association" + ], + "asin": [ + "float asin(float number)", + "Returns the arc sine of the number in radians" + ], + "asinh": [ + "float asinh(float number)", + "Returns the inverse hyperbolic sine of the number, i.e. the value whose hyperbolic sine is number" + ], + "asort": [ + "bool asort(array &array_arg [, int sort_flags])", + "Sort an array and maintain index association" + ], + "assert": [ + "int assert(string|bool assertion)", + "Checks if assertion is false" + ], + "assert_options": [ + "mixed assert_options(int what [, mixed value])", + "Set/get the various assert flags" + ], + "atan": [ + "float atan(float number)", + "Returns the arc tangent of the number in radians" + ], + "atan2": [ + "float atan2(float y, float x)", + "Returns the arc tangent of y/x, with the resulting quadrant determined by the signs of y and x" + ], + "atanh": [ + "float atanh(float number)", + "Returns the inverse hyperbolic tangent of the number, i.e. the value whose hyperbolic tangent is number" + ], + "attachIterator": [ + "void attachIterator(Iterator iterator[, mixed info])", + "Attach a new iterator" + ], + "base64_decode": [ + "string base64_decode(string str[, bool strict])", + "Decodes string using MIME base64 algorithm" + ], + "base64_encode": [ + "string base64_encode(string str)", + "Encodes string using MIME base64 algorithm" + ], + "base_convert": [ + "string base_convert(string number, int frombase, int tobase)", + "Converts a number in a string from any base <= 36 to any base <= 36" + ], + "basename": [ + "string basename(string path [, string suffix])", + "Returns the filename component of the path" + ], + "bcadd": [ + "string bcadd(string left_operand, string right_operand [, int scale])", + "Returns the sum of two arbitrary precision numbers" + ], + "bccomp": [ + "int bccomp(string left_operand, string right_operand [, int scale])", + "Compares two arbitrary precision numbers" + ], + "bcdiv": [ + "string bcdiv(string left_operand, string right_operand [, int scale])", + "Returns the quotient of two arbitrary precision numbers (division)" + ], + "bcmod": [ + "string bcmod(string left_operand, string right_operand)", + "Returns the modulus of the two arbitrary precision operands" + ], + "bcmul": [ + "string bcmul(string left_operand, string right_operand [, int scale])", + "Returns the multiplication of two arbitrary precision numbers" + ], + "bcpow": [ + "string bcpow(string x, string y [, int scale])", + "Returns the value of an arbitrary precision number raised to the power of another" + ], + "bcpowmod": [ + "string bcpowmod(string x, string y, string mod [, int scale])", + "Returns the value of an arbitrary precision number raised to the power of another reduced by a modulous" + ], + "bcscale": [ + "bool bcscale(int scale)", + "Sets default scale parameter for all bc math functions" + ], + "bcsqrt": [ + "string bcsqrt(string operand [, int scale])", + "Returns the square root of an arbitray precision number" + ], + "bcsub": [ + "string bcsub(string left_operand, string right_operand [, int scale])", + "Returns the difference between two arbitrary precision numbers" + ], + "bin2hex": [ + "string bin2hex(string data)", + "Converts the binary representation of data to hex" + ], + "bind_textdomain_codeset": [ + "string bind_textdomain_codeset (string domain, string codeset)", + "Specify the character encoding in which the messages from the DOMAIN message catalog will be returned." + ], + "bindec": [ + "int bindec(string binary_number)", + "Returns the decimal equivalent of the binary number" + ], + "bindtextdomain": [ + "string bindtextdomain(string domain_name, string dir)", + "Bind to the text domain domain_name, looking for translations in dir. Returns the current domain" + ], + "birdstep_autocommit": [ + "bool birdstep_autocommit(int index)", + "" + ], + "birdstep_close": [ + "bool birdstep_close(int id)", + "" + ], + "birdstep_commit": [ + "bool birdstep_commit(int index)", + "" + ], + "birdstep_connect": [ + "int birdstep_connect(string server, string user, string pass)", + "" + ], + "birdstep_exec": [ + "int birdstep_exec(int index, string exec_str)", + "" + ], + "birdstep_fetch": [ + "bool birdstep_fetch(int index)", + "" + ], + "birdstep_fieldname": [ + "string birdstep_fieldname(int index, int col)", + "" + ], + "birdstep_fieldnum": [ + "int birdstep_fieldnum(int index)", + "" + ], + "birdstep_freeresult": [ + "bool birdstep_freeresult(int index)", + "" + ], + "birdstep_off_autocommit": [ + "bool birdstep_off_autocommit(int index)", + "" + ], + "birdstep_result": [ + "mixed birdstep_result(int index, mixed col)", + "" + ], + "birdstep_rollback": [ + "bool birdstep_rollback(int index)", + "" + ], + "bzcompress": [ + "string bzcompress(string source [, int blocksize100k [, int workfactor]])", + "Compresses a string into BZip2 encoded data" + ], + "bzdecompress": [ + "string bzdecompress(string source [, int small])", + "Decompresses BZip2 compressed data" + ], + "bzerrno": [ + "int bzerrno(resource bz)", + "Returns the error number" + ], + "bzerror": [ + "array bzerror(resource bz)", + "Returns the error number and error string in an associative array" + ], + "bzerrstr": [ + "string bzerrstr(resource bz)", + "Returns the error string" + ], + "bzopen": [ + "resource bzopen(string|int file|fp, string mode)", + "Opens a new BZip2 stream" + ], + "bzread": [ + "string bzread(resource bz[, int length])", + "Reads up to length bytes from a BZip2 stream, or 1024 bytes if length is not specified" + ], + "cal_days_in_month": [ + "int cal_days_in_month(int calendar, int month, int year)", + "Returns the number of days in a month for a given year and calendar" + ], + "cal_from_jd": [ + "array cal_from_jd(int jd, int calendar)", + "Converts from Julian Day Count to a supported calendar and return extended information" + ], + "cal_info": [ + "array cal_info([int calendar])", + "Returns information about a particular calendar" + ], + "cal_to_jd": [ + "int cal_to_jd(int calendar, int month, int day, int year)", + "Converts from a supported calendar to Julian Day Count" + ], + "call_user_func": [ + "mixed call_user_func(mixed function_name [, mixed parmeter] [, mixed ...])", + "Call a user function which is the first parameter" + ], + "call_user_func_array": [ + "mixed call_user_func_array(string function_name, array parameters)", + "Call a user function which is the first parameter with the arguments contained in array" + ], + "call_user_method": [ + "mixed call_user_method(string method_name, mixed object [, mixed parameter] [, mixed ...])", + "Call a user method on a specific object or class" + ], + "call_user_method_array": [ + "mixed call_user_method_array(string method_name, mixed object, array params)", + "Call a user method on a specific object or class using a parameter array" + ], + "ceil": [ + "float ceil(float number)", + "Returns the next highest integer value of the number" + ], + "chdir": [ + "bool chdir(string directory)", + "Change the current directory" + ], + "checkdate": [ + "bool checkdate(int month, int day, int year)", + "Returns true(1) if it is a valid date in gregorian calendar" + ], + "chgrp": [ + "bool chgrp(string filename, mixed group)", + "Change file group" + ], + "chmod": [ + "bool chmod(string filename, int mode)", + "Change file mode" + ], + "chown": [ + "bool chown(string filename, mixed user)", + "Change file owner" + ], + "chr": [ + "string chr(int ascii)", + "Converts ASCII code to a character" + ], + "chroot": [ + "bool chroot(string directory)", + "Change root directory" + ], + "chunk_split": [ + "string chunk_split(string str [, int chunklen [, string ending]])", + "Returns split line" + ], + "class_alias": [ + "bool class_alias(string user_class_name , string alias_name [, bool autoload])", + "Creates an alias for user defined class" + ], + "class_exists": [ + "bool class_exists(string classname [, bool autoload])", + "Checks if the class exists" + ], + "class_implements": [ + "array class_implements(mixed what [, bool autoload ])", + "Return all classes and interfaces implemented by SPL" + ], + "class_parents": [ + "array class_parents(object instance [, bool autoload = true])", + "Return an array containing the names of all parent classes" + ], + "clearstatcache": [ + "void clearstatcache([bool clear_realpath_cache[, string filename]])", + "Clear file stat cache" + ], + "closedir": [ + "void closedir([resource dir_handle])", + "Close directory connection identified by the dir_handle" + ], + "closelog": [ + "bool closelog()", + "Close connection to system logger" + ], + "collator_asort": [ + "bool collator_asort( Collator $coll, array(string) $arr )", + "* Sort array using specified collator, maintaining index association." + ], + "collator_compare": [ + "int collator_compare( Collator $coll, string $str1, string $str2 )", + "* Compare two strings." + ], + "collator_create": [ + "Collator collator_create( string $locale )", + "* Create collator." + ], + "collator_get_attribute": [ + "int collator_get_attribute( Collator $coll, int $attr )", + "* Get collation attribute value." + ], + "collator_get_error_code": [ + "int collator_get_error_code( Collator $coll )", + "* Get collator's last error code." + ], + "collator_get_error_message": [ + "string collator_get_error_message( Collator $coll )", + "* Get text description for collator's last error code." + ], + "collator_get_locale": [ + "string collator_get_locale( Collator $coll, int $type )", + "* Gets the locale name of the collator." + ], + "collator_get_sort_key": [ + "bool collator_get_sort_key( Collator $coll, string $str )", + "* Get a sort key for a string from a Collator. }}}" + ], + "collator_get_strength": [ + "int collator_get_strength(Collator coll)", + "* Returns the current collation strength." + ], + "collator_set_attribute": [ + "bool collator_set_attribute( Collator $coll, int $attr, int $val )", + "* Set collation attribute." + ], + "collator_set_strength": [ + "bool collator_set_strength(Collator coll, int strength)", + "* Set the collation strength." + ], + "collator_sort": [ + "bool collator_sort( Collator $coll, array(string) $arr [, int $sort_flags] )", + "* Sort array using specified collator." + ], + "collator_sort_with_sort_keys": [ + "bool collator_sort_with_sort_keys( Collator $coll, array(string) $arr )", + "* Equivalent to standard PHP sort using Collator. * Uses ICU ucol_getSortKey for performance." + ], + "com_create_guid": [ + "string com_create_guid()", + "Generate a globally unique identifier (GUID)" + ], + "com_event_sink": [ + "bool com_event_sink(object comobject, object sinkobject [, mixed sinkinterface])", + "Connect events from a COM object to a PHP object" + ], + "com_get_active_object": [ + "object com_get_active_object(string progid [, int code_page ])", + "Returns a handle to an already running instance of a COM object" + ], + "com_load_typelib": [ + "bool com_load_typelib(string typelib_name [, int case_insensitive])", + "Loads a Typelibrary and registers its constants" + ], + "com_message_pump": [ + "bool com_message_pump([int timeoutms])", + "Process COM messages, sleeping for up to timeoutms milliseconds" + ], + "com_print_typeinfo": [ + "bool com_print_typeinfo(object comobject | string typelib, string dispinterface, bool wantsink)", + "Print out a PHP class definition for a dispatchable interface" + ], + "compact": [ + "array compact(mixed var_names [, mixed ...])", + "Creates a hash containing variables and their values" + ], + "compose_locale": [ + "static string compose_locale($array)", + "* Creates a locale by combining the parts of locale-ID passed * }}}" + ], + "confirm_extname_compiled": [ + "string confirm_extname_compiled(string arg)", + "Return a string to confirm that the module is compiled in" + ], + "connection_aborted": [ + "int connection_aborted()", + "Returns true if client disconnected" + ], + "connection_status": [ + "int connection_status()", + "Returns the connection status bitfield" + ], + "constant": [ + "mixed constant(string const_name)", + "Given the name of a constant this function will return the constant's associated value" + ], + "convert_cyr_string": [ + "string convert_cyr_string(string str, string from, string to)", + "Convert from one Cyrillic character set to another" + ], + "convert_uudecode": [ + "string convert_uudecode(string data)", + "decode a uuencoded string" + ], + "convert_uuencode": [ + "string convert_uuencode(string data)", + "uuencode a string" + ], + "copy": [ + "bool copy(string source_file, string destination_file [, resource context])", + "Copy a file" + ], + "cos": [ + "float cos(float number)", + "Returns the cosine of the number in radians" + ], + "cosh": [ + "float cosh(float number)", + "Returns the hyperbolic cosine of the number, defined as (exp(number) + exp(-number))/2" + ], + "count": [ + "int count(mixed var [, int mode])", + "Count the number of elements in a variable (usually an array)" + ], + "count_chars": [ + "mixed count_chars(string input [, int mode])", + "Returns info about what characters are used in input" + ], + "crc32": [ + "string crc32(string str)", + "Calculate the crc32 polynomial of a string" + ], + "create_function": [ + "string create_function(string args, string code)", + "Creates an anonymous function, and returns its name" + ], + "crypt": [ + "string crypt(string str [, string salt])", + "Hash a string" + ], + "ctype_alnum": [ + "bool ctype_alnum(mixed c)", + "Checks for alphanumeric character(s)" + ], + "ctype_alpha": [ + "bool ctype_alpha(mixed c)", + "Checks for alphabetic character(s)" + ], + "ctype_cntrl": [ + "bool ctype_cntrl(mixed c)", + "Checks for control character(s)" + ], + "ctype_digit": [ + "bool ctype_digit(mixed c)", + "Checks for numeric character(s)" + ], + "ctype_graph": [ + "bool ctype_graph(mixed c)", + "Checks for any printable character(s) except space" + ], + "ctype_lower": [ + "bool ctype_lower(mixed c)", + "Checks for lowercase character(s)" + ], + "ctype_print": [ + "bool ctype_print(mixed c)", + "Checks for printable character(s)" + ], + "ctype_punct": [ + "bool ctype_punct(mixed c)", + "Checks for any printable character which is not whitespace or an alphanumeric character" + ], + "ctype_space": [ + "bool ctype_space(mixed c)", + "Checks for whitespace character(s)" + ], + "ctype_upper": [ + "bool ctype_upper(mixed c)", + "Checks for uppercase character(s)" + ], + "ctype_xdigit": [ + "bool ctype_xdigit(mixed c)", + "Checks for character(s) representing a hexadecimal digit" + ], + "curl_close": [ + "void curl_close(resource ch)", + "Close a cURL session" + ], + "curl_copy_handle": [ + "resource curl_copy_handle(resource ch)", + "Copy a cURL handle along with all of it's preferences" + ], + "curl_errno": [ + "int curl_errno(resource ch)", + "Return an integer containing the last error number" + ], + "curl_error": [ + "string curl_error(resource ch)", + "Return a string contain the last error for the current session" + ], + "curl_exec": [ + "bool curl_exec(resource ch)", + "Perform a cURL session" + ], + "curl_getinfo": [ + "mixed curl_getinfo(resource ch [, int option])", + "Get information regarding a specific transfer" + ], + "curl_init": [ + "resource curl_init([string url])", + "Initialize a cURL session" + ], + "curl_multi_add_handle": [ + "int curl_multi_add_handle(resource mh, resource ch)", + "Add a normal cURL handle to a cURL multi handle" + ], + "curl_multi_close": [ + "void curl_multi_close(resource mh)", + "Close a set of cURL handles" + ], + "curl_multi_exec": [ + "int curl_multi_exec(resource mh, int &still_running)", + "Run the sub-connections of the current cURL handle" + ], + "curl_multi_getcontent": [ + "string curl_multi_getcontent(resource ch)", + "Return the content of a cURL handle if CURLOPT_RETURNTRANSFER is set" + ], + "curl_multi_info_read": [ + "array curl_multi_info_read(resource mh [, long msgs_in_queue])", + "Get information about the current transfers" + ], + "curl_multi_init": [ + "resource curl_multi_init()", + "Returns a new cURL multi handle" + ], + "curl_multi_remove_handle": [ + "int curl_multi_remove_handle(resource mh, resource ch)", + "Remove a multi handle from a set of cURL handles" + ], + "curl_multi_select": [ + "int curl_multi_select(resource mh[, double timeout])", + "Get all the sockets associated with the cURL extension, which can then be \"selected\"" + ], + "curl_setopt": [ + "bool curl_setopt(resource ch, int option, mixed value)", + "Set an option for a cURL transfer" + ], + "curl_setopt_array": [ + "bool curl_setopt_array(resource ch, array options)", + "Set an array of option for a cURL transfer" + ], + "curl_version": [ + "array curl_version([int version])", + "Return cURL version information." + ], + "current": [ + "mixed current(array array_arg)", + "Return the element currently pointed to by the internal array pointer" + ], + "date": [ + "string date(string format [, long timestamp])", + "Format a local date/time" + ], + "date_add": [ + "DateTime date_add(DateTime object, DateInterval interval)", + "Adds an interval to the current date in object." + ], + "date_create": [ + "DateTime date_create([string time[, DateTimeZone object]])", + "Returns new DateTime object" + ], + "date_create_from_format": [ + "DateTime date_create_from_format(string format, string time[, DateTimeZone object])", + "Returns new DateTime object formatted according to the specified format" + ], + "date_date_set": [ + "DateTime date_date_set(DateTime object, long year, long month, long day)", + "Sets the date." + ], + "date_default_timezone_get": [ + "string date_default_timezone_get()", + "Gets the default timezone used by all date/time functions in a script" + ], + "date_default_timezone_set": [ + "bool date_default_timezone_set(string timezone_identifier)", + "Sets the default timezone used by all date/time functions in a script" + ], + "date_diff": [ + "DateInterval date_diff(DateTime object [, bool absolute])", + "Returns the difference between two DateTime objects." + ], + "date_format": [ + "string date_format(DateTime object, string format)", + "Returns date formatted according to given format" + ], + "date_get_last_errors": [ + "array date_get_last_errors()", + "Returns the warnings and errors found while parsing a date/time string." + ], + "date_interval_create_from_date_string": [ + "DateInterval date_interval_create_from_date_string(string time)", + "Uses the normal date parsers and sets up a DateInterval from the relative parts of the parsed string" + ], + "date_interval_format": [ + "string date_interval_format(DateInterval object, string format)", + "Formats the interval." + ], + "date_isodate_set": [ + "DateTime date_isodate_set(DateTime object, long year, long week[, long day])", + "Sets the ISO date." + ], + "date_modify": [ + "DateTime date_modify(DateTime object, string modify)", + "Alters the timestamp." + ], + "date_offset_get": [ + "long date_offset_get(DateTime object)", + "Returns the DST offset." + ], + "date_parse": [ + "array date_parse(string date)", + "Returns associative array with detailed info about given date" + ], + "date_parse_from_format": [ + "array date_parse_from_format(string format, string date)", + "Returns associative array with detailed info about given date" + ], + "date_sub": [ + "DateTime date_sub(DateTime object, DateInterval interval)", + "Subtracts an interval to the current date in object." + ], + "date_sun_info": [ + "array date_sun_info(long time, float latitude, float longitude)", + "Returns an array with information about sun set/rise and twilight begin/end" + ], + "date_sunrise": [ + "mixed date_sunrise(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", + "Returns time of sunrise for a given day and location" + ], + "date_sunset": [ + "mixed date_sunset(mixed time [, int format [, float latitude [, float longitude [, float zenith [, float gmt_offset]]]]])", + "Returns time of sunset for a given day and location" + ], + "date_time_set": [ + "DateTime date_time_set(DateTime object, long hour, long minute[, long second])", + "Sets the time." + ], + "date_timestamp_get": [ + "long date_timestamp_get(DateTime object)", + "Gets the Unix timestamp." + ], + "date_timestamp_set": [ + "DateTime date_timestamp_set(DateTime object, long unixTimestamp)", + "Sets the date and time based on an Unix timestamp." + ], + "date_timezone_get": [ + "DateTimeZone date_timezone_get(DateTime object)", + "Return new DateTimeZone object relative to give DateTime" + ], + "date_timezone_set": [ + "DateTime date_timezone_set(DateTime object, DateTimeZone object)", + "Sets the timezone for the DateTime object." + ], + "datefmt_create": [ + "IntlDateFormatter datefmt_create(string $locale, long date_type, long time_type[, string $timezone_str, long $calendar, string $pattern] )", + "* Create formatter." + ], + "datefmt_format": [ + "string datefmt_format( [mixed]int $args or array $args )", + "* Format the time value as a string. }}}" + ], + "datefmt_get_calendar": [ + "string datefmt_get_calendar( IntlDateFormatter $mf )", + "* Get formatter calendar." + ], + "datefmt_get_datetype": [ + "string datefmt_get_datetype( IntlDateFormatter $mf )", + "* Get formatter datetype." + ], + "datefmt_get_error_code": [ + "int datefmt_get_error_code( IntlDateFormatter $nf )", + "* Get formatter's last error code." + ], + "datefmt_get_error_message": [ + "string datefmt_get_error_message( IntlDateFormatter $coll )", + "* Get text description for formatter's last error code." + ], + "datefmt_get_locale": [ + "string datefmt_get_locale(IntlDateFormatter $mf)", + "* Get formatter locale." + ], + "datefmt_get_pattern": [ + "string datefmt_get_pattern( IntlDateFormatter $mf )", + "* Get formatter pattern." + ], + "datefmt_get_timetype": [ + "string datefmt_get_timetype( IntlDateFormatter $mf )", + "* Get formatter timetype." + ], + "datefmt_get_timezone_id": [ + "string datefmt_get_timezone_id( IntlDateFormatter $mf )", + "* Get formatter timezone_id." + ], + "datefmt_isLenient": [ + "string datefmt_isLenient(IntlDateFormatter $mf)", + "* Get formatter locale." + ], + "datefmt_localtime": [ + "integer datefmt_localtime( IntlDateFormatter $fmt, string $text_to_parse[, int $parse_pos ])", + "* Parse the string $value to a localtime array }}}" + ], + "datefmt_parse": [ + "integer datefmt_parse( IntlDateFormatter $fmt, string $text_to_parse [, int $parse_pos] )", + "* Parse the string $value starting at parse_pos to a Unix timestamp -int }}}" + ], + "datefmt_setLenient": [ + "string datefmt_setLenient(IntlDateFormatter $mf)", + "* Set formatter lenient." + ], + "datefmt_set_calendar": [ + "bool datefmt_set_calendar( IntlDateFormatter $mf, int $calendar )", + "* Set formatter calendar." + ], + "datefmt_set_pattern": [ + "bool datefmt_set_pattern( IntlDateFormatter $mf, string $pattern )", + "* Set formatter pattern." + ], + "datefmt_set_timezone_id": [ + "bool datefmt_set_timezone_id( IntlDateFormatter $mf,$timezone_id)", + "* Set formatter timezone_id." + ], + "dba_close": [ + "void dba_close(resource handle)", + "Closes database" + ], + "dba_delete": [ + "bool dba_delete(string key, resource handle)", + "Deletes the entry associated with key If inifile: remove all other key lines" + ], + "dba_exists": [ + "bool dba_exists(string key, resource handle)", + "Checks, if the specified key exists" + ], + "dba_fetch": [ + "string dba_fetch(string key, [int skip ,] resource handle)", + "Fetches the data associated with key" + ], + "dba_firstkey": [ + "string dba_firstkey(resource handle)", + "Resets the internal key pointer and returns the first key" + ], + "dba_handlers": [ + "array dba_handlers([bool full_info])", + "List configured database handlers" + ], + "dba_insert": [ + "bool dba_insert(string key, string value, resource handle)", + "If not inifile: Insert value as key, return false, if key exists already If inifile: Add vakue as key (next instance of key)" + ], + "dba_key_split": [ + "array|false dba_key_split(string key)", + "Splits an inifile key into an array of the form array(0=>group,1=>value_name) but returns false if input is false or null" + ], + "dba_list": [ + "array dba_list()", + "List opened databases" + ], + "dba_nextkey": [ + "string dba_nextkey(resource handle)", + "Returns the next key" + ], + "dba_open": [ + "resource dba_open(string path, string mode [, string handlername, string ...])", + "Opens path using the specified handler in mode" + ], + "dba_optimize": [ + "bool dba_optimize(resource handle)", + "Optimizes (e.g. clean up, vacuum) database" + ], + "dba_popen": [ + "resource dba_popen(string path, string mode [, string handlername, string ...])", + "Opens path using the specified handler in mode persistently" + ], + "dba_replace": [ + "bool dba_replace(string key, string value, resource handle)", + "Inserts value as key, replaces key, if key exists already If inifile: remove all other key lines" + ], + "dba_sync": [ + "bool dba_sync(resource handle)", + "Synchronizes database" + ], + "dcgettext": [ + "string dcgettext(string domain_name, string msgid, long category)", + "Return the translation of msgid for domain_name and category, or msgid unaltered if a translation does not exist" + ], + "dcngettext": [ + "string dcngettext(string domain, string msgid1, string msgid2, int n, int category)", + "Plural version of dcgettext()" + ], + "debug_backtrace": [ + "array debug_backtrace([bool provide_object])", + "Return backtrace as array" + ], + "debug_print_backtrace": [ + "void debug_print_backtrace()", + "Prints a PHP backtrace" + ], + "debug_zval_dump": [ + "void debug_zval_dump(mixed var)", + "Dumps a string representation of an internal Zend value to output" + ], + "decbin": [ + "string decbin(int decimal_number)", + "Returns a string containing a binary representation of the number" + ], + "dechex": [ + "string dechex(int decimal_number)", + "Returns a string containing a hexadecimal representation of the given number" + ], + "decoct": [ + "string decoct(int decimal_number)", + "Returns a string containing an octal representation of the given number" + ], + "define": [ + "bool define(string constant_name, mixed value, bool case_insensitive=false)", + "Define a new constant" + ], + "define_syslog_variables": [ + "void define_syslog_variables()", + "Initializes all syslog-related variables" + ], + "defined": [ + "bool defined(string constant_name)", + "Check whether a constant exists" + ], + "deg2rad": [ + "float deg2rad(float number)", + "Converts the number in degrees to the radian equivalent" + ], + "dgettext": [ + "string dgettext(string domain_name, string msgid)", + "Return the translation of msgid for domain_name, or msgid unaltered if a translation does not exist" + ], + "die": [ + "void die([mixed status])", + "Output a message and terminate the current script" + ], + "dir": [ + "object dir(string directory[, resource context])", + "Directory class with properties, handle and class and methods read, rewind and close" + ], + "dirname": [ + "string dirname(string path)", + "Returns the directory name component of the path" + ], + "disk_free_space": [ + "float disk_free_space(string path)", + "Get free disk space for filesystem that path is on" + ], + "disk_total_space": [ + "float disk_total_space(string path)", + "Get total disk space for filesystem that path is on" + ], + "display_disabled_function": [ + "void display_disabled_function()", + "Dummy function which displays an error when a disabled function is called." + ], + "dl": [ + "int dl(string extension_filename)", + "Load a PHP extension at runtime" + ], + "dngettext": [ + "string dngettext(string domain, string msgid1, string msgid2, int count)", + "Plural version of dgettext()" + ], + "dns_check_record": [ + "bool dns_check_record(string host [, string type])", + "Check DNS records corresponding to a given Internet host name or IP address" + ], + "dns_get_mx": [ + "bool dns_get_mx(string hostname, array mxhosts [, array weight])", + "Get MX records corresponding to a given Internet host name" + ], + "dns_get_record": [ + "array|false dns_get_record(string hostname [, int type[, array authns, array addtl]])", + "Get any Resource Record corresponding to a given Internet host name" + ], + "dom_attr_is_id": [ + "bool dom_attr_is_id()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Attr-isId Since: DOM Level 3" + ], + "dom_characterdata_append_data": [ + "void dom_characterdata_append_data(string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-32791A2F Since:" + ], + "dom_characterdata_delete_data": [ + "void dom_characterdata_delete_data(int offset, int count)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-7C603781 Since:" + ], + "dom_characterdata_insert_data": [ + "void dom_characterdata_insert_data(int offset, string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3EDB695F Since:" + ], + "dom_characterdata_replace_data": [ + "void dom_characterdata_replace_data(int offset, int count, string arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-E5CBA7FB Since:" + ], + "dom_characterdata_substring_data": [ + "string dom_characterdata_substring_data(int offset, int count)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6531BCCF Since:" + ], + "dom_document_adopt_node": [ + "DOMNode dom_document_adopt_node(DOMNode source)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-adoptNode Since: DOM Level 3" + ], + "dom_document_create_attribute": [ + "DOMAttr dom_document_create_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1084891198 Since:" + ], + "dom_document_create_attribute_ns": [ + "DOMAttr dom_document_create_attribute_ns(string namespaceURI, string qualifiedName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrAttrNS Since: DOM Level 2" + ], + "dom_document_create_cdatasection": [ + "DOMCdataSection dom_document_create_cdatasection(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D26C0AF8 Since:" + ], + "dom_document_create_comment": [ + "DOMComment dom_document_create_comment(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1334481328 Since:" + ], + "dom_document_create_document_fragment": [ + "DOMDocumentFragment dom_document_create_document_fragment()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-35CB04B5 Since:" + ], + "dom_document_create_element": [ + "DOMElement dom_document_create_element(string tagName [, string value])", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547 Since:" + ], + "dom_document_create_element_ns": [ + "DOMElement dom_document_create_element_ns(string namespaceURI, string qualifiedName [,string value])", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-DocCrElNS Since: DOM Level 2" + ], + "dom_document_create_entity_reference": [ + "DOMEntityReference dom_document_create_entity_reference(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-392B75AE Since:" + ], + "dom_document_create_processing_instruction": [ + "DOMProcessingInstruction dom_document_create_processing_instruction(string target, string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-135944439 Since:" + ], + "dom_document_create_text_node": [ + "DOMText dom_document_create_text_node(string data)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1975348127 Since:" + ], + "dom_document_get_element_by_id": [ + "DOMElement dom_document_get_element_by_id(string elementId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBId Since: DOM Level 2" + ], + "dom_document_get_elements_by_tag_name": [ + "DOMNodeList dom_document_get_elements_by_tag_name(string tagname)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C9094 Since:" + ], + "dom_document_get_elements_by_tag_name_ns": [ + "DOMNodeList dom_document_get_elements_by_tag_name_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getElBTNNS Since: DOM Level 2" + ], + "dom_document_import_node": [ + "DOMNode dom_document_import_node(DOMNode importedNode, bool deep)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Core-Document-importNode Since: DOM Level 2" + ], + "dom_document_load": [ + "DOMNode dom_document_load(string source [, int options])", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-load Since: DOM Level 3" + ], + "dom_document_load_html": [ + "DOMNode dom_document_load_html(string source)", + "Since: DOM extended" + ], + "dom_document_load_html_file": [ + "DOMNode dom_document_load_html_file(string source)", + "Since: DOM extended" + ], + "dom_document_loadxml": [ + "DOMNode dom_document_loadxml(string source [, int options])", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-loadXML Since: DOM Level 3" + ], + "dom_document_normalize_document": [ + "void dom_document_normalize_document()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-normalizeDocument Since: DOM Level 3" + ], + "dom_document_relaxNG_validate_file": [ + "bool dom_document_relaxNG_validate_file(string filename); */", + "PHP_FUNCTION(dom_document_relaxNG_validate_file) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_relaxNG_validate_file" + ], + "dom_document_relaxNG_validate_xml": [ + "bool dom_document_relaxNG_validate_xml(string source); */", + "PHP_FUNCTION(dom_document_relaxNG_validate_xml) { _dom_document_relaxNG_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_relaxNG_validate_xml" + ], + "dom_document_rename_node": [ + "DOMNode dom_document_rename_node(node n, string namespaceURI, string qualifiedName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Document3-renameNode Since: DOM Level 3" + ], + "dom_document_save": [ + "int dom_document_save(string file)", + "Convenience method to save to file" + ], + "dom_document_save_html": [ + "string dom_document_save_html()", + "Convenience method to output as html" + ], + "dom_document_save_html_file": [ + "int dom_document_save_html_file(string file)", + "Convenience method to save to file as html" + ], + "dom_document_savexml": [ + "string dom_document_savexml([node n])", + "URL: http://www.w3.org/TR/DOM-Level-3-LS/load-save.html#LS-DocumentLS-saveXML Since: DOM Level 3" + ], + "dom_document_schema_validate": [ + "bool dom_document_schema_validate(string source); */", + "PHP_FUNCTION(dom_document_schema_validate_xml) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_STRING); } /* }}} end dom_document_schema_validate" + ], + "dom_document_schema_validate_file": [ + "bool dom_document_schema_validate_file(string filename); */", + "PHP_FUNCTION(dom_document_schema_validate_file) { _dom_document_schema_validate(INTERNAL_FUNCTION_PARAM_PASSTHRU, DOM_LOAD_FILE); } /* }}} end dom_document_schema_validate_file" + ], + "dom_document_validate": [ + "bool dom_document_validate()", + "Since: DOM extended" + ], + "dom_document_xinclude": [ + "int dom_document_xinclude([int options])", + "Substitutues xincludes in a DomDocument" + ], + "dom_domconfiguration_can_set_parameter": [ + "bool dom_domconfiguration_can_set_parameter(string name, domuserdata value)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-canSetParameter Since:" + ], + "dom_domconfiguration_get_parameter": [ + "domdomuserdata dom_domconfiguration_get_parameter(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-getParameter Since:" + ], + "dom_domconfiguration_set_parameter": [ + "dom_void dom_domconfiguration_set_parameter(string name, domuserdata value)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMConfiguration-property Since:" + ], + "dom_domerrorhandler_handle_error": [ + "dom_bool dom_domerrorhandler_handle_error(domerror error)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-ERRORS-DOMErrorHandler-handleError Since:" + ], + "dom_domimplementation_create_document": [ + "DOMDocument dom_domimplementation_create_document(string namespaceURI, string qualifiedName, DOMDocumentType doctype)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocument Since: DOM Level 2" + ], + "dom_domimplementation_create_document_type": [ + "DOMDocumentType dom_domimplementation_create_document_type(string qualifiedName, string publicId, string systemId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Level-2-Core-DOM-createDocType Since: DOM Level 2" + ], + "dom_domimplementation_get_feature": [ + "DOMNode dom_domimplementation_get_feature(string feature, string version)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementation3-getFeature Since: DOM Level 3" + ], + "dom_domimplementation_has_feature": [ + "bool dom_domimplementation_has_feature(string feature, string version)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-5CED94D7 Since:" + ], + "dom_domimplementationlist_item": [ + "domdomimplementation dom_domimplementationlist_item(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMImplementationList-item Since:" + ], + "dom_domimplementationsource_get_domimplementation": [ + "domdomimplementation dom_domimplementationsource_get_domimplementation(string features)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpl Since:" + ], + "dom_domimplementationsource_get_domimplementations": [ + "domimplementationlist dom_domimplementationsource_get_domimplementations(string features)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-getDOMImpls Since:" + ], + "dom_domstringlist_item": [ + "domstring dom_domstringlist_item(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#DOMStringList-item Since:" + ], + "dom_element_get_attribute": [ + "string dom_element_get_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-666EE0F9 Since:" + ], + "dom_element_get_attribute_node": [ + "DOMAttr dom_element_get_attribute_node(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-217A91B8 Since:" + ], + "dom_element_get_attribute_node_ns": [ + "DOMAttr dom_element_get_attribute_node_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAtNodeNS Since: DOM Level 2" + ], + "dom_element_get_attribute_ns": [ + "string dom_element_get_attribute_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElGetAttrNS Since: DOM Level 2" + ], + "dom_element_get_elements_by_tag_name": [ + "DOMNodeList dom_element_get_elements_by_tag_name(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1938918D Since:" + ], + "dom_element_get_elements_by_tag_name_ns": [ + "DOMNodeList dom_element_get_elements_by_tag_name_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-A6C90942 Since: DOM Level 2" + ], + "dom_element_has_attribute": [ + "bool dom_element_has_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttr Since: DOM Level 2" + ], + "dom_element_has_attribute_ns": [ + "bool dom_element_has_attribute_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElHasAttrNS Since: DOM Level 2" + ], + "dom_element_remove_attribute": [ + "void dom_element_remove_attribute(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-6D6AC0F9 Since:" + ], + "dom_element_remove_attribute_node": [ + "DOMAttr dom_element_remove_attribute_node(DOMAttr oldAttr)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D589198 Since:" + ], + "dom_element_remove_attribute_ns": [ + "void dom_element_remove_attribute_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElRemAtNS Since: DOM Level 2" + ], + "dom_element_set_attribute": [ + "void dom_element_set_attribute(string name, string value)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-F68F082 Since:" + ], + "dom_element_set_attribute_node": [ + "DOMAttr dom_element_set_attribute_node(DOMAttr newAttr)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-887236154 Since:" + ], + "dom_element_set_attribute_node_ns": [ + "DOMAttr dom_element_set_attribute_node_ns(DOMAttr newAttr)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAtNodeNS Since: DOM Level 2" + ], + "dom_element_set_attribute_ns": [ + "void dom_element_set_attribute_ns(string namespaceURI, string qualifiedName, string value)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetAttrNS Since: DOM Level 2" + ], + "dom_element_set_id_attribute": [ + "void dom_element_set_id_attribute(string name, bool isId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttr Since: DOM Level 3" + ], + "dom_element_set_id_attribute_node": [ + "void dom_element_set_id_attribute_node(attr idAttr, bool isId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNode Since: DOM Level 3" + ], + "dom_element_set_id_attribute_ns": [ + "void dom_element_set_id_attribute_ns(string namespaceURI, string localName, bool isId)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-ElSetIdAttrNS Since: DOM Level 3" + ], + "dom_import_simplexml": [ + "somNode dom_import_simplexml(sxeobject node)", + "Get a simplexml_element object from dom to allow for processing" + ], + "dom_namednodemap_get_named_item": [ + "DOMNode dom_namednodemap_get_named_item(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1074577549 Since:" + ], + "dom_namednodemap_get_named_item_ns": [ + "DOMNode dom_namednodemap_get_named_item_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-getNamedItemNS Since: DOM Level 2" + ], + "dom_namednodemap_item": [ + "DOMNode dom_namednodemap_item(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-349467F9 Since:" + ], + "dom_namednodemap_remove_named_item": [ + "DOMNode dom_namednodemap_remove_named_item(string name)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-D58B193 Since:" + ], + "dom_namednodemap_remove_named_item_ns": [ + "DOMNode dom_namednodemap_remove_named_item_ns(string namespaceURI, string localName)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-removeNamedItemNS Since: DOM Level 2" + ], + "dom_namednodemap_set_named_item": [ + "DOMNode dom_namednodemap_set_named_item(DOMNode arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1025163788 Since:" + ], + "dom_namednodemap_set_named_item_ns": [ + "DOMNode dom_namednodemap_set_named_item_ns(DOMNode arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-setNamedItemNS Since: DOM Level 2" + ], + "dom_namelist_get_name": [ + "string dom_namelist_get_name(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getName Since:" + ], + "dom_namelist_get_namespace_uri": [ + "string dom_namelist_get_namespace_uri(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#NameList-getNamespaceURI Since:" + ], + "dom_node_append_child": [ + "DomNode dom_node_append_child(DomNode newChild)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-184E7107 Since:" + ], + "dom_node_clone_node": [ + "DomNode dom_node_clone_node(bool deep)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-3A0ED0A4 Since:" + ], + "dom_node_compare_document_position": [ + "short dom_node_compare_document_position(DomNode other)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-compareDocumentPosition Since: DOM Level 3" + ], + "dom_node_get_feature": [ + "DomNode dom_node_get_feature(string feature, string version)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getFeature Since: DOM Level 3" + ], + "dom_node_get_user_data": [ + "mixed dom_node_get_user_data(string key)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-getUserData Since: DOM Level 3" + ], + "dom_node_has_attributes": [ + "bool dom_node_has_attributes()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-NodeHasAttrs Since: DOM Level 2" + ], + "dom_node_has_child_nodes": [ + "bool dom_node_has_child_nodes()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-810594187 Since:" + ], + "dom_node_insert_before": [ + "domnode dom_node_insert_before(DomNode newChild, DomNode refChild)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-952280727 Since:" + ], + "dom_node_is_default_namespace": [ + "bool dom_node_is_default_namespace(string namespaceURI)", + "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-isDefaultNamespace Since: DOM Level 3" + ], + "dom_node_is_equal_node": [ + "bool dom_node_is_equal_node(DomNode arg)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isEqualNode Since: DOM Level 3" + ], + "dom_node_is_same_node": [ + "bool dom_node_is_same_node(DomNode other)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-isSameNode Since: DOM Level 3" + ], + "dom_node_is_supported": [ + "bool dom_node_is_supported(string feature, string version)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Level-2-Core-Node-supports Since: DOM Level 2" + ], + "dom_node_lookup_namespace_uri": [ + "string dom_node_lookup_namespace_uri(string prefix)", + "URL: http://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespaceURI Since: DOM Level 3" + ], + "dom_node_lookup_prefix": [ + "string dom_node_lookup_prefix(string namespaceURI)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-lookupNamespacePrefix Since: DOM Level 3" + ], + "dom_node_normalize": [ + "void dom_node_normalize()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-normalize Since:" + ], + "dom_node_remove_child": [ + "DomNode dom_node_remove_child(DomNode oldChild)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-1734834066 Since:" + ], + "dom_node_replace_child": [ + "DomNode dom_node_replace_child(DomNode newChild, DomNode oldChild)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-785887307 Since:" + ], + "dom_node_set_user_data": [ + "mixed dom_node_set_user_data(string key, mixed data, userdatahandler handler)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#Node3-setUserData Since: DOM Level 3" + ], + "dom_nodelist_item": [ + "DOMNode dom_nodelist_item(int index)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-844377136 Since:" + ], + "dom_string_extend_find_offset16": [ + "int dom_string_extend_find_offset16(int offset32)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset16 Since:" + ], + "dom_string_extend_find_offset32": [ + "int dom_string_extend_find_offset32(int offset16)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#i18n-methods-StringExtend-findOffset32 Since:" + ], + "dom_text_is_whitespace_in_element_content": [ + "bool dom_text_is_whitespace_in_element_content()", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-isWhitespaceInElementContent Since: DOM Level 3" + ], + "dom_text_replace_whole_text": [ + "DOMText dom_text_replace_whole_text(string content)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-Text3-replaceWholeText Since: DOM Level 3" + ], + "dom_text_split_text": [ + "DOMText dom_text_split_text(int offset)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-38853C1D Since:" + ], + "dom_userdatahandler_handle": [ + "dom_void dom_userdatahandler_handle(short operation, string key, domobject data, node src, node dst)", + "URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#ID-handleUserDataEvent Since:" + ], + "dom_xpath_evaluate": [ + "mixed dom_xpath_evaluate(string expr [,DOMNode context])", + "" + ], + "dom_xpath_query": [ + "DOMNodeList dom_xpath_query(string expr [,DOMNode context])", + "" + ], + "dom_xpath_register_ns": [ + "bool dom_xpath_register_ns(string prefix, string uri)", + "" + ], + "dom_xpath_register_php_functions": [ + "void dom_xpath_register_php_functions()", + "" + ], + "each": [ + "array each(array arr)", + "Return the currently pointed key..value pair in the passed array, and advance the pointer to the next element" + ], + "easter_date": [ + "int easter_date([int year])", + "Return the timestamp of midnight on Easter of a given year (defaults to current year)" + ], + "easter_days": [ + "int easter_days([int year, [int method]])", + "Return the number of days after March 21 that Easter falls on for a given year (defaults to current year)" + ], + "echo": [ + "void echo(string arg1 [, string ...])", + "Output one or more strings" + ], + "empty": [ + "bool empty(mixed var)", + "Determine whether a variable is empty" + ], + "enchant_broker_describe": [ + "array enchant_broker_describe(resource broker)", + "Enumerates the Enchant providers and tells you some rudimentary information about them. The same info is provided through phpinfo()" + ], + "enchant_broker_dict_exists": [ + "bool enchant_broker_dict_exists(resource broker, string tag)", + "Whether a dictionary exists or not. Using non-empty tag" + ], + "enchant_broker_free": [ + "bool enchant_broker_free(resource broker)", + "Destroys the broker object and its dictionnaries" + ], + "enchant_broker_free_dict": [ + "resource enchant_broker_free_dict(resource dict)", + "Free the dictionary resource" + ], + "enchant_broker_get_dict_path": [ + "string enchant_broker_get_dict_path(resource broker, int dict_type)", + "Get the directory path for a given backend, works with ispell and myspell" + ], + "enchant_broker_get_error": [ + "string enchant_broker_get_error(resource broker)", + "Returns the last error of the broker" + ], + "enchant_broker_init": [ + "resource enchant_broker_init()", + "create a new broker object capable of requesting" + ], + "enchant_broker_list_dicts": [ + "string enchant_broker_list_dicts(resource broker)", + "Lists the dictionaries available for the given broker" + ], + "enchant_broker_request_dict": [ + "resource enchant_broker_request_dict(resource broker, string tag)", + "create a new dictionary using tag, the non-empty language tag you wish to request a dictionary for (\"en_US\", \"de_DE\", ...)" + ], + "enchant_broker_request_pwl_dict": [ + "resource enchant_broker_request_pwl_dict(resource broker, string filename)", + "creates a dictionary using a PWL file. A PWL file is personal word file one word per line. It must exist before the call." + ], + "enchant_broker_set_dict_path": [ + "bool enchant_broker_set_dict_path(resource broker, int dict_type, string value)", + "Set the directory path for a given backend, works with ispell and myspell" + ], + "enchant_broker_set_ordering": [ + "bool enchant_broker_set_ordering(resource broker, string tag, string ordering)", + "Declares a preference of dictionaries to use for the language described/referred to by 'tag'. The ordering is a comma delimited list of provider names. As a special exception, the \"*\" tag can be used as a language tag to declare a default ordering for any language that does not explictly declare an ordering." + ], + "enchant_dict_add_to_personal": [ + "void enchant_dict_add_to_personal(resource dict, string word)", + "add 'word' to personal word list" + ], + "enchant_dict_add_to_session": [ + "void enchant_dict_add_to_session(resource dict, string word)", + "add 'word' to this spell-checking session" + ], + "enchant_dict_check": [ + "bool enchant_dict_check(resource dict, string word)", + "If the word is correctly spelled return true, otherwise return false" + ], + "enchant_dict_describe": [ + "array enchant_dict_describe(resource dict)", + "Describes an individual dictionary 'dict'" + ], + "enchant_dict_get_error": [ + "string enchant_dict_get_error(resource dict)", + "Returns the last error of the current spelling-session" + ], + "enchant_dict_is_in_session": [ + "bool enchant_dict_is_in_session(resource dict, string word)", + "whether or not 'word' exists in this spelling-session" + ], + "enchant_dict_quick_check": [ + "bool enchant_dict_quick_check(resource dict, string word [, array &suggestions])", + "If the word is correctly spelled return true, otherwise return false, if suggestions variable is provided, fill it with spelling alternatives." + ], + "enchant_dict_store_replacement": [ + "void enchant_dict_store_replacement(resource dict, string mis, string cor)", + "add a correction for 'mis' using 'cor'. Notes that you replaced @mis with @cor, so it's possibly more likely that future occurrences of @mis will be replaced with @cor. So it might bump @cor up in the suggestion list." + ], + "enchant_dict_suggest": [ + "array enchant_dict_suggest(resource dict, string word)", + "Will return a list of values if any of those pre-conditions are not met." + ], + "end": [ + "mixed end(array array_arg)", + "Advances array argument's internal pointer to the last element and return it" + ], + "ereg": [ + "int ereg(string pattern, string string [, array registers])", + "Regular expression match" + ], + "ereg_replace": [ + "string ereg_replace(string pattern, string replacement, string string)", + "Replace regular expression" + ], + "eregi": [ + "int eregi(string pattern, string string [, array registers])", + "Case-insensitive regular expression match" + ], + "eregi_replace": [ + "string eregi_replace(string pattern, string replacement, string string)", + "Case insensitive replace regular expression" + ], + "error_get_last": [ + "array error_get_last()", + "Get the last occurred error as associative array. Returns NULL if there hasn't been an error yet." + ], + "error_log": [ + "bool error_log(string message [, int message_type [, string destination [, string extra_headers]]])", + "Send an error message somewhere" + ], + "error_reporting": [ + "int error_reporting([int new_error_level])", + "Return the current error_reporting level, and if an argument was passed - change to the new level" + ], + "escapeshellarg": [ + "string escapeshellarg(string arg)", + "Quote and escape an argument for use in a shell command" + ], + "escapeshellcmd": [ + "string escapeshellcmd(string command)", + "Escape shell metacharacters" + ], + "exec": [ + "string exec(string command [, array &output [, int &return_value]])", + "Execute an external program" + ], + "exif_imagetype": [ + "int exif_imagetype(string imagefile)", + "Get the type of an image" + ], + "exif_read_data": [ + "array exif_read_data(string filename [, sections_needed [, sub_arrays[, read_thumbnail]]])", + "Reads header data from the JPEG/TIFF image filename and optionally reads the internal thumbnails" + ], + "exif_tagname": [ + "string exif_tagname(index)", + "Get headername for index or false if not defined" + ], + "exif_thumbnail": [ + "string exif_thumbnail(string filename [, &width, &height [, &imagetype]])", + "Reads the embedded thumbnail" + ], + "exit": [ + "void exit([mixed status])", + "Output a message and terminate the current script" + ], + "exp": [ + "float exp(float number)", + "Returns e raised to the power of the number" + ], + "explode": [ + "array explode(string separator, string str [, int limit])", + "Splits a string on string separator and return array of components. If limit is positive only limit number of components is returned. If limit is negative all components except the last abs(limit) are returned." + ], + "expm1": [ + "float expm1(float number)", + "Returns exp(number) - 1, computed in a way that accurate even when the value of number is close to zero" + ], + "extension_loaded": [ + "bool extension_loaded(string extension_name)", + "Returns true if the named extension is loaded" + ], + "extract": [ + "int extract(array var_array [, int extract_type [, string prefix]])", + "Imports variables into symbol table from an array" + ], + "ezmlm_hash": [ + "int ezmlm_hash(string addr)", + "Calculate EZMLM list hash value." + ], + "fclose": [ + "bool fclose(resource fp)", + "Close an open file pointer" + ], + "feof": [ + "bool feof(resource fp)", + "Test for end-of-file on a file pointer" + ], + "fflush": [ + "bool fflush(resource fp)", + "Flushes output" + ], + "fgetc": [ + "string fgetc(resource fp)", + "Get a character from file pointer" + ], + "fgetcsv": [ + "array fgetcsv(resource fp [,int length [, string delimiter [, string enclosure [, string escape]]]])", + "Get line from file pointer and parse for CSV fields" + ], + "fgets": [ + "string fgets(resource fp[, int length])", + "Get a line from file pointer" + ], + "fgetss": [ + "string fgetss(resource fp [, int length [, string allowable_tags]])", + "Get a line from file pointer and strip HTML tags" + ], + "file": [ + "array file(string filename [, int flags[, resource context]])", + "Read entire file into an array" + ], + "file_exists": [ + "bool file_exists(string filename)", + "Returns true if filename exists" + ], + "file_get_contents": [ + "string file_get_contents(string filename [, bool use_include_path [, resource context [, long offset [, long maxlen]]]])", + "Read the entire file into a string" + ], + "file_put_contents": [ + "int file_put_contents(string file, mixed data [, int flags [, resource context]])", + "Write/Create a file with contents data and return the number of bytes written" + ], + "fileatime": [ + "int fileatime(string filename)", + "Get last access time of file" + ], + "filectime": [ + "int filectime(string filename)", + "Get inode modification time of file" + ], + "filegroup": [ + "int filegroup(string filename)", + "Get file group" + ], + "fileinode": [ + "int fileinode(string filename)", + "Get file inode" + ], + "filemtime": [ + "int filemtime(string filename)", + "Get last modification time of file" + ], + "fileowner": [ + "int fileowner(string filename)", + "Get file owner" + ], + "fileperms": [ + "int fileperms(string filename)", + "Get file permissions" + ], + "filesize": [ + "int filesize(string filename)", + "Get file size" + ], + "filetype": [ + "string filetype(string filename)", + "Get file type" + ], + "filter_has_var": [ + "mixed filter_has_var(constant type, string variable_name)", + "* Returns true if the variable with the name 'name' exists in source." + ], + "filter_input": [ + "mixed filter_input(constant type, string variable_name [, long filter [, mixed options]])", + "* Returns the filtered variable 'name'* from source `type`." + ], + "filter_input_array": [ + "mixed filter_input_array(constant type, [, mixed options]])", + "* Returns an array with all arguments defined in 'definition'." + ], + "filter_var": [ + "mixed filter_var(mixed variable [, long filter [, mixed options]])", + "* Returns the filtered version of the vriable." + ], + "filter_var_array": [ + "mixed filter_var_array(array data, [, mixed options]])", + "* Returns an array with all arguments defined in 'definition'." + ], + "finfo_buffer": [ + "string finfo_buffer(resource finfo, char *string [, int options [, resource context]])", + "Return infromation about a string buffer." + ], + "finfo_close": [ + "resource finfo_close(resource finfo)", + "Close fileinfo resource." + ], + "finfo_file": [ + "string finfo_file(resource finfo, char *file_name [, int options [, resource context]])", + "Return information about a file." + ], + "finfo_open": [ + "resource finfo_open([int options [, string arg]])", + "Create a new fileinfo resource." + ], + "finfo_set_flags": [ + "bool finfo_set_flags(resource finfo, int options)", + "Set libmagic configuration options." + ], + "floatval": [ + "float floatval(mixed var)", + "Get the float value of a variable" + ], + "flock": [ + "bool flock(resource fp, int operation [, int &wouldblock])", + "Portable file locking" + ], + "floor": [ + "float floor(float number)", + "Returns the next lowest integer value from the number" + ], + "flush": [ + "void flush()", + "Flush the output buffer" + ], + "fmod": [ + "float fmod(float x, float y)", + "Returns the remainder of dividing x by y as a float" + ], + "fnmatch": [ + "bool fnmatch(string pattern, string filename [, int flags])", + "Match filename against pattern" + ], + "fopen": [ + "resource fopen(string filename, string mode [, bool use_include_path [, resource context]])", + "Open a file or a URL and return a file pointer" + ], + "forward_static_call": [ + "mixed forward_static_call(mixed function_name [, mixed parmeter] [, mixed ...])", + "Call a user function which is the first parameter" + ], + "fpassthru": [ + "int fpassthru(resource fp)", + "Output all remaining data from a file pointer" + ], + "fprintf": [ + "int fprintf(resource stream, string format [, mixed arg1 [, mixed ...]])", + "Output a formatted string into a stream" + ], + "fputcsv": [ + "int fputcsv(resource fp, array fields [, string delimiter [, string enclosure]])", + "Format line as CSV and write to file pointer" + ], + "fread": [ + "string fread(resource fp, int length)", + "Binary-safe file read" + ], + "frenchtojd": [ + "int frenchtojd(int month, int day, int year)", + "Converts a french republic calendar date to julian day count" + ], + "fscanf": [ + "mixed fscanf(resource stream, string format [, string ...])", + "Implements a mostly ANSI compatible fscanf()" + ], + "fseek": [ + "int fseek(resource fp, int offset [, int whence])", + "Seek on a file pointer" + ], + "fsockopen": [ + "resource fsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", + "Open Internet or Unix domain socket connection" + ], + "fstat": [ + "array fstat(resource fp)", + "Stat() on a filehandle" + ], + "ftell": [ + "int ftell(resource fp)", + "Get file pointer's read/write position" + ], + "ftok": [ + "int ftok(string pathname, string proj)", + "Convert a pathname and a project identifier to a System V IPC key" + ], + "ftp_alloc": [ + "bool ftp_alloc(resource stream, int size[, &response])", + "Attempt to allocate space on the remote FTP server" + ], + "ftp_cdup": [ + "bool ftp_cdup(resource stream)", + "Changes to the parent directory" + ], + "ftp_chdir": [ + "bool ftp_chdir(resource stream, string directory)", + "Changes directories" + ], + "ftp_chmod": [ + "int ftp_chmod(resource stream, int mode, string filename)", + "Sets permissions on a file" + ], + "ftp_close": [ + "bool ftp_close(resource stream)", + "Closes the FTP stream" + ], + "ftp_connect": [ + "resource ftp_connect(string host [, int port [, int timeout]])", + "Opens a FTP stream" + ], + "ftp_delete": [ + "bool ftp_delete(resource stream, string file)", + "Deletes a file" + ], + "ftp_exec": [ + "bool ftp_exec(resource stream, string command)", + "Requests execution of a program on the FTP server" + ], + "ftp_fget": [ + "bool ftp_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", + "Retrieves a file from the FTP server and writes it to an open file" + ], + "ftp_fput": [ + "bool ftp_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", + "Stores a file from an open file to the FTP server" + ], + "ftp_get": [ + "bool ftp_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", + "Retrieves a file from the FTP server and writes it to a local file" + ], + "ftp_get_option": [ + "mixed ftp_get_option(resource stream, int option)", + "Gets an FTP option" + ], + "ftp_login": [ + "bool ftp_login(resource stream, string username, string password)", + "Logs into the FTP server" + ], + "ftp_mdtm": [ + "int ftp_mdtm(resource stream, string filename)", + "Returns the last modification time of the file, or -1 on error" + ], + "ftp_mkdir": [ + "string ftp_mkdir(resource stream, string directory)", + "Creates a directory and returns the absolute path for the new directory or false on error" + ], + "ftp_nb_continue": [ + "int ftp_nb_continue(resource stream)", + "Continues retrieving/sending a file nbronously" + ], + "ftp_nb_fget": [ + "int ftp_nb_fget(resource stream, resource fp, string remote_file, int mode[, int resumepos])", + "Retrieves a file from the FTP server asynchronly and writes it to an open file" + ], + "ftp_nb_fput": [ + "int ftp_nb_fput(resource stream, string remote_file, resource fp, int mode[, int startpos])", + "Stores a file from an open file to the FTP server nbronly" + ], + "ftp_nb_get": [ + "int ftp_nb_get(resource stream, string local_file, string remote_file, int mode[, int resume_pos])", + "Retrieves a file from the FTP server nbhronly and writes it to a local file" + ], + "ftp_nb_put": [ + "int ftp_nb_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", + "Stores a file on the FTP server" + ], + "ftp_nlist": [ + "array ftp_nlist(resource stream, string directory)", + "Returns an array of filenames in the given directory" + ], + "ftp_pasv": [ + "bool ftp_pasv(resource stream, bool pasv)", + "Turns passive mode on or off" + ], + "ftp_put": [ + "bool ftp_put(resource stream, string remote_file, string local_file, int mode[, int startpos])", + "Stores a file on the FTP server" + ], + "ftp_pwd": [ + "string ftp_pwd(resource stream)", + "Returns the present working directory" + ], + "ftp_raw": [ + "array ftp_raw(resource stream, string command)", + "Sends a literal command to the FTP server" + ], + "ftp_rawlist": [ + "array ftp_rawlist(resource stream, string directory [, bool recursive])", + "Returns a detailed listing of a directory as an array of output lines" + ], + "ftp_rename": [ + "bool ftp_rename(resource stream, string src, string dest)", + "Renames the given file to a new path" + ], + "ftp_rmdir": [ + "bool ftp_rmdir(resource stream, string directory)", + "Removes a directory" + ], + "ftp_set_option": [ + "bool ftp_set_option(resource stream, int option, mixed value)", + "Sets an FTP option" + ], + "ftp_site": [ + "bool ftp_site(resource stream, string cmd)", + "Sends a SITE command to the server" + ], + "ftp_size": [ + "int ftp_size(resource stream, string filename)", + "Returns the size of the file, or -1 on error" + ], + "ftp_ssl_connect": [ + "resource ftp_ssl_connect(string host [, int port [, int timeout]])", + "Opens a FTP-SSL stream" + ], + "ftp_systype": [ + "string ftp_systype(resource stream)", + "Returns the system type identifier" + ], + "ftruncate": [ + "bool ftruncate(resource fp, int size)", + "Truncate file to 'size' length" + ], + "func_get_arg": [ + "mixed func_get_arg(int arg_num)", + "Get the $arg_num'th argument that was passed to the function" + ], + "func_get_args": [ + "array func_get_args()", + "Get an array of the arguments that were passed to the function" + ], + "func_num_args": [ + "int func_num_args()", + "Get the number of arguments that were passed to the function" + ], + "function ": ["", ""], + "foreach ": ["", ""], + "function_exists": [ + "bool function_exists(string function_name)", + "Checks if the function exists" + ], + "fwrite": [ + "int fwrite(resource fp, string str [, int length])", + "Binary-safe file write" + ], + "gc_collect_cycles": [ + "int gc_collect_cycles()", + "Forces collection of any existing garbage cycles. Returns number of freed zvals" + ], + "gc_disable": [ + "void gc_disable()", + "Deactivates the circular reference collector" + ], + "gc_enable": [ + "void gc_enable()", + "Activates the circular reference collector" + ], + "gc_enabled": [ + "void gc_enabled()", + "Returns status of the circular reference collector" + ], + "gd_info": [ + "array gd_info()", + "" + ], + "getKeywords": [ + "static array getKeywords(string $locale) {", + "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array * }}}" + ], + "get_browser": [ + "mixed get_browser([string browser_name [, bool return_array]])", + "Get information about the capabilities of a browser. If browser_name is omitted or null, HTTP_USER_AGENT is used. Returns an object by default; if return_array is true, returns an array." + ], + "get_called_class": [ + "string get_called_class()", + "Retrieves the \"Late Static Binding\" class name" + ], + "get_cfg_var": [ + "mixed get_cfg_var(string option_name)", + "Get the value of a PHP configuration option" + ], + "get_class": [ + "string get_class([object object])", + "Retrieves the class name" + ], + "get_class_methods": [ + "array get_class_methods(mixed class)", + "Returns an array of method names for class or class instance." + ], + "get_class_vars": [ + "array get_class_vars(string class_name)", + "Returns an array of default properties of the class." + ], + "get_current_user": [ + "string get_current_user()", + "Get the name of the owner of the current PHP script" + ], + "get_declared_classes": [ + "array get_declared_classes()", + "Returns an array of all declared classes." + ], + "get_declared_interfaces": [ + "array get_declared_interfaces()", + "Returns an array of all declared interfaces." + ], + "get_defined_constants": [ + "array get_defined_constants([bool categorize])", + "Return an array containing the names and values of all defined constants" + ], + "get_defined_functions": [ + "array get_defined_functions()", + "Returns an array of all defined functions" + ], + "get_defined_vars": [ + "array get_defined_vars()", + "Returns an associative array of names and values of all currently defined variable names (variables in the current scope)" + ], + "get_display_language": [ + "static string get_display_language($locale[, $in_locale = null])", + "* gets the language for the $locale in $in_locale or default_locale" + ], + "get_display_name": [ + "static string get_display_name($locale[, $in_locale = null])", + "* gets the name for the $locale in $in_locale or default_locale" + ], + "get_display_region": [ + "static string get_display_region($locale, $in_locale = null)", + "* gets the region for the $locale in $in_locale or default_locale" + ], + "get_display_script": [ + "static string get_display_script($locale, $in_locale = null)", + "* gets the script for the $locale in $in_locale or default_locale" + ], + "get_extension_funcs": [ + "array get_extension_funcs(string extension_name)", + "Returns an array with the names of functions belonging to the named extension" + ], + "get_headers": [ + "array get_headers(string url[, int format])", + "fetches all the headers sent by the server in response to a HTTP request" + ], + "get_html_translation_table": [ + "array get_html_translation_table([int table [, int quote_style]])", + "Returns the internal translation table used by htmlspecialchars and htmlentities" + ], + "get_include_path": [ + "string get_include_path()", + "Get the current include_path configuration option" + ], + "get_included_files": [ + "array get_included_files()", + "Returns an array with the file names that were include_once()'d" + ], + "get_loaded_extensions": [ + "array get_loaded_extensions([bool zend_extensions])", + "Return an array containing names of loaded extensions" + ], + "get_magic_quotes_gpc": [ + "int get_magic_quotes_gpc()", + "Get the current active configuration setting of magic_quotes_gpc" + ], + "get_magic_quotes_runtime": [ + "int get_magic_quotes_runtime()", + "Get the current active configuration setting of magic_quotes_runtime" + ], + "get_meta_tags": [ + "array get_meta_tags(string filename [, bool use_include_path])", + "Extracts all meta tag content attributes from a file and returns an array" + ], + "get_object_vars": [ + "array get_object_vars(object obj)", + "Returns an array of object properties" + ], + "get_parent_class": [ + "string get_parent_class([mixed object])", + "Retrieves the parent class name for object or class or current scope." + ], + "get_resource_type": [ + "string get_resource_type(resource res)", + "Get the resource type name for a given resource" + ], + "getallheaders": [ + "array getallheaders()", + "" + ], + "getcwd": [ + "mixed getcwd()", + "Gets the current directory" + ], + "getdate": [ + "array getdate([int timestamp])", + "Get date/time information" + ], + "getenv": [ + "string getenv(string varname)", + "Get the value of an environment variable" + ], + "gethostbyaddr": [ + "string gethostbyaddr(string ip_address)", + "Get the Internet host name corresponding to a given IP address" + ], + "gethostbyname": [ + "string gethostbyname(string hostname)", + "Get the IP address corresponding to a given Internet host name" + ], + "gethostbynamel": [ + "array gethostbynamel(string hostname)", + "Return a list of IP addresses that a given hostname resolves to." + ], + "gethostname": [ + "string gethostname()", + "Get the host name of the current machine" + ], + "getimagesize": [ + "array getimagesize(string imagefile [, array info])", + "Get the size of an image as 4-element array" + ], + "getlastmod": [ + "int getlastmod()", + "Get time of last page modification" + ], + "getmygid": [ + "int getmygid()", + "Get PHP script owner's GID" + ], + "getmyinode": [ + "int getmyinode()", + "Get the inode of the current script being parsed" + ], + "getmypid": [ + "int getmypid()", + "Get current process ID" + ], + "getmyuid": [ + "int getmyuid()", + "Get PHP script owner's UID" + ], + "getopt": [ + "array getopt(string options [, array longopts])", + "Get options from the command line argument list" + ], + "getprotobyname": [ + "int getprotobyname(string name)", + "Returns protocol number associated with name as per /etc/protocols" + ], + "getprotobynumber": [ + "string getprotobynumber(int proto)", + "Returns protocol name associated with protocol number proto" + ], + "getrandmax": [ + "int getrandmax()", + "Returns the maximum value a random number can have" + ], + "getrusage": [ + "array getrusage([int who])", + "Returns an array of usage statistics" + ], + "getservbyname": [ + "int getservbyname(string service, string protocol)", + "Returns port associated with service. Protocol must be \"tcp\" or \"udp\"" + ], + "getservbyport": [ + "string getservbyport(int port, string protocol)", + "Returns service name associated with port. Protocol must be \"tcp\" or \"udp\"" + ], + "gettext": [ + "string gettext(string msgid)", + "Return the translation of msgid for the current domain, or msgid unaltered if a translation does not exist" + ], + "gettimeofday": [ + "array gettimeofday([bool get_as_float])", + "Returns the current time as array" + ], + "gettype": [ + "string gettype(mixed var)", + "Returns the type of the variable" + ], + "glob": [ + "array glob(string pattern [, int flags])", + "Find pathnames matching a pattern" + ], + "gmdate": [ + "string gmdate(string format [, long timestamp])", + "Format a GMT date/time" + ], + "gmmktime": [ + "int gmmktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", + "Get UNIX timestamp for a GMT date" + ], + "gmp_abs": [ + "resource gmp_abs(resource a)", + "Calculates absolute value" + ], + "gmp_add": [ + "resource gmp_add(resource a, resource b)", + "Add a and b" + ], + "gmp_and": [ + "resource gmp_and(resource a, resource b)", + "Calculates logical AND of a and b" + ], + "gmp_clrbit": [ + "void gmp_clrbit(resource &a, int index)", + "Clears bit in a" + ], + "gmp_cmp": [ + "int gmp_cmp(resource a, resource b)", + "Compares two numbers" + ], + "gmp_com": [ + "resource gmp_com(resource a)", + "Calculates one's complement of a" + ], + "gmp_div_q": [ + "resource gmp_div_q(resource a, resource b [, int round])", + "Divide a by b, returns quotient only" + ], + "gmp_div_qr": [ + "array gmp_div_qr(resource a, resource b [, int round])", + "Divide a by b, returns quotient and reminder" + ], + "gmp_div_r": [ + "resource gmp_div_r(resource a, resource b [, int round])", + "Divide a by b, returns reminder only" + ], + "gmp_divexact": [ + "resource gmp_divexact(resource a, resource b)", + "Divide a by b using exact division algorithm" + ], + "gmp_fact": [ + "resource gmp_fact(int a)", + "Calculates factorial function" + ], + "gmp_gcd": [ + "resource gmp_gcd(resource a, resource b)", + "Computes greatest common denominator (gcd) of a and b" + ], + "gmp_gcdext": [ + "array gmp_gcdext(resource a, resource b)", + "Computes G, S, and T, such that AS + BT = G = `gcd' (A, B)" + ], + "gmp_hamdist": [ + "int gmp_hamdist(resource a, resource b)", + "Calculates hamming distance between a and b" + ], + "gmp_init": [ + "resource gmp_init(mixed number [, int base])", + "Initializes GMP number" + ], + "gmp_intval": [ + "int gmp_intval(resource gmpnumber)", + "Gets signed long value of GMP number" + ], + "gmp_invert": [ + "resource gmp_invert(resource a, resource b)", + "Computes the inverse of a modulo b" + ], + "gmp_jacobi": [ + "int gmp_jacobi(resource a, resource b)", + "Computes Jacobi symbol" + ], + "gmp_legendre": [ + "int gmp_legendre(resource a, resource b)", + "Computes Legendre symbol" + ], + "gmp_mod": [ + "resource gmp_mod(resource a, resource b)", + "Computes a modulo b" + ], + "gmp_mul": [ + "resource gmp_mul(resource a, resource b)", + "Multiply a and b" + ], + "gmp_neg": [ + "resource gmp_neg(resource a)", + "Negates a number" + ], + "gmp_nextprime": [ + "resource gmp_nextprime(resource a)", + "Finds next prime of a" + ], + "gmp_or": [ + "resource gmp_or(resource a, resource b)", + "Calculates logical OR of a and b" + ], + "gmp_perfect_square": [ + "bool gmp_perfect_square(resource a)", + "Checks if a is an exact square" + ], + "gmp_popcount": [ + "int gmp_popcount(resource a)", + "Calculates the population count of a" + ], + "gmp_pow": [ + "resource gmp_pow(resource base, int exp)", + "Raise base to power exp" + ], + "gmp_powm": [ + "resource gmp_powm(resource base, resource exp, resource mod)", + "Raise base to power exp and take result modulo mod" + ], + "gmp_prob_prime": [ + "int gmp_prob_prime(resource a[, int reps])", + "Checks if a is \"probably prime\"" + ], + "gmp_random": [ + "resource gmp_random([int limiter])", + "Gets random number" + ], + "gmp_scan0": [ + "int gmp_scan0(resource a, int start)", + "Finds first zero bit" + ], + "gmp_scan1": [ + "int gmp_scan1(resource a, int start)", + "Finds first non-zero bit" + ], + "gmp_setbit": [ + "void gmp_setbit(resource &a, int index[, bool set_clear])", + "Sets or clear bit in a" + ], + "gmp_sign": [ + "int gmp_sign(resource a)", + "Gets the sign of the number" + ], + "gmp_sqrt": [ + "resource gmp_sqrt(resource a)", + "Takes integer part of square root of a" + ], + "gmp_sqrtrem": [ + "array gmp_sqrtrem(resource a)", + "Square root with remainder" + ], + "gmp_strval": [ + "string gmp_strval(resource gmpnumber [, int base])", + "Gets string representation of GMP number" + ], + "gmp_sub": [ + "resource gmp_sub(resource a, resource b)", + "Subtract b from a" + ], + "gmp_testbit": [ + "bool gmp_testbit(resource a, int index)", + "Tests if bit is set in a" + ], + "gmp_xor": [ + "resource gmp_xor(resource a, resource b)", + "Calculates logical exclusive OR of a and b" + ], + "gmstrftime": [ + "string gmstrftime(string format [, int timestamp])", + "Format a GMT/UCT time/date according to locale settings" + ], + "grapheme_extract": [ + "string grapheme_extract(string str, int size[, int extract_type[, int start[, int next]]])", + "Function to extract a sequence of default grapheme clusters" + ], + "grapheme_stripos": [ + "int grapheme_stripos(string haystack, string needle [, int offset ])", + "Find position of first occurrence of a string within another, ignoring case differences" + ], + "grapheme_stristr": [ + "string grapheme_stristr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "grapheme_strlen": [ + "int grapheme_strlen(string str)", + "Get number of graphemes in a string" + ], + "grapheme_strpos": [ + "int grapheme_strpos(string haystack, string needle [, int offset ])", + "Find position of first occurrence of a string within another" + ], + "grapheme_strripos": [ + "int grapheme_strripos(string haystack, string needle [, int offset])", + "Find position of last occurrence of a string within another, ignoring case" + ], + "grapheme_strrpos": [ + "int grapheme_strrpos(string haystack, string needle [, int offset])", + "Find position of last occurrence of a string within another" + ], + "grapheme_strstr": [ + "string grapheme_strstr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "grapheme_substr": [ + "string grapheme_substr(string str, int start [, int length])", + "Returns part of a string" + ], + "gregoriantojd": [ + "int gregoriantojd(int month, int day, int year)", + "Converts a gregorian calendar date to julian day count" + ], + "gzcompress": [ + "string gzcompress(string data [, int level])", + "Gzip-compress a string" + ], + "gzdeflate": [ + "string gzdeflate(string data [, int level])", + "Gzip-compress a string" + ], + "gzencode": [ + "string gzencode(string data [, int level [, int encoding_mode]])", + "GZ encode a string" + ], + "gzfile": [ + "array gzfile(string filename [, int use_include_path])", + "Read und uncompress entire .gz-file into an array" + ], + "gzinflate": [ + "string gzinflate(string data [, int length])", + "Unzip a gzip-compressed string" + ], + "gzopen": [ + "resource gzopen(string filename, string mode [, int use_include_path])", + "Open a .gz-file and return a .gz-file pointer" + ], + "gzuncompress": [ + "string gzuncompress(string data [, int length])", + "Unzip a gzip-compressed string" + ], + "hash": [ + "string hash(string algo, string data[, bool raw_output = false])", + "Generate a hash of a given input string Returns lowercase hexits by default" + ], + "hash_algos": [ + "array hash_algos()", + "Return a list of registered hashing algorithms" + ], + "hash_copy": [ + "resource hash_copy(resource context)", + "Copy hash resource" + ], + "hash_file": [ + "string hash_file(string algo, string filename[, bool raw_output = false])", + "Generate a hash of a given file Returns lowercase hexits by default" + ], + "hash_final": [ + "string hash_final(resource context[, bool raw_output=false])", + "Output resulting digest" + ], + "hash_hmac": [ + "string hash_hmac(string algo, string data, string key[, bool raw_output = false])", + "Generate a hash of a given input string with a key using HMAC Returns lowercase hexits by default" + ], + "hash_hmac_file": [ + "string hash_hmac_file(string algo, string filename, string key[, bool raw_output = false])", + "Generate a hash of a given file with a key using HMAC Returns lowercase hexits by default" + ], + "hash_init": [ + "resource hash_init(string algo[, int options, string key])", + "Initialize a hashing context" + ], + "hash_update": [ + "bool hash_update(resource context, string data)", + "Pump data into the hashing algorithm" + ], + "hash_update_file": [ + "bool hash_update_file(resource context, string filename[, resource context])", + "Pump data into the hashing algorithm from a file" + ], + "hash_update_stream": [ + "int hash_update_stream(resource context, resource handle[, integer length])", + "Pump data into the hashing algorithm from an open stream" + ], + "header": [ + "void header(string header [, bool replace, [int http_response_code]])", + "Sends a raw HTTP header" + ], + "header_remove": [ + "void header_remove([string name])", + "Removes an HTTP header previously set using header()" + ], + "headers_list": [ + "array headers_list()", + "Return list of headers to be sent / already sent" + ], + "headers_sent": [ + "bool headers_sent([string &$file [, int &$line]])", + "Returns true if headers have already been sent, false otherwise" + ], + "hebrev": [ + "string hebrev(string str [, int max_chars_per_line])", + "Converts logical Hebrew text to visual text" + ], + "hebrevc": [ + "string hebrevc(string str [, int max_chars_per_line])", + "Converts logical Hebrew text to visual text with newline conversion" + ], + "hexdec": [ + "int hexdec(string hexadecimal_number)", + "Returns the decimal equivalent of the hexadecimal number" + ], + "highlight_file": [ + "bool highlight_file(string file_name [, bool return] )", + "Syntax highlight a source file" + ], + "highlight_string": [ + "bool highlight_string(string string [, bool return] )", + "Syntax highlight a string or optionally return it" + ], + "html_entity_decode": [ + "string html_entity_decode(string string [, int quote_style][, string charset])", + "Convert all HTML entities to their applicable characters" + ], + "htmlentities": [ + "string htmlentities(string string [, int quote_style[, string charset[, bool double_encode]]])", + "Convert all applicable characters to HTML entities" + ], + "htmlspecialchars": [ + "string htmlspecialchars(string string [, int quote_style[, string charset[, bool double_encode]]])", + "Convert special characters to HTML entities" + ], + "htmlspecialchars_decode": [ + "string htmlspecialchars_decode(string string [, int quote_style])", + "Convert special HTML entities back to characters" + ], + "http_build_query": [ + "string http_build_query(mixed formdata [, string prefix [, string arg_separator]])", + "Generates a form-encoded query string from an associative array or object." + ], + "hypot": [ + "float hypot(float num1, float num2)", + "Returns sqrt(num1*num1 + num2*num2)" + ], + "ibase_add_user": [ + "bool ibase_add_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Add a user to security database" + ], + "ibase_affected_rows": [ + "int ibase_affected_rows( [ resource link_identifier ] )", + "Returns the number of rows affected by the previous INSERT, UPDATE or DELETE statement" + ], + "ibase_backup": [ + "mixed ibase_backup(resource service_handle, string source_db, string dest_file [, int options [, bool verbose]])", + "Initiates a backup task in the service manager and returns immediately" + ], + "ibase_blob_add": [ + "bool ibase_blob_add(resource blob_handle, string data)", + "Add data into created blob" + ], + "ibase_blob_cancel": [ + "bool ibase_blob_cancel(resource blob_handle)", + "Cancel creating blob" + ], + "ibase_blob_close": [ + "string ibase_blob_close(resource blob_handle)", + "Close blob" + ], + "ibase_blob_create": [ + "resource ibase_blob_create([resource link_identifier])", + "Create blob for adding data" + ], + "ibase_blob_echo": [ + "bool ibase_blob_echo([ resource link_identifier, ] string blob_id)", + "Output blob contents to browser" + ], + "ibase_blob_get": [ + "string ibase_blob_get(resource blob_handle, int len)", + "Get len bytes data from open blob" + ], + "ibase_blob_import": [ + "string ibase_blob_import([ resource link_identifier, ] resource file)", + "Create blob, copy file in it, and close it" + ], + "ibase_blob_info": [ + "array ibase_blob_info([ resource link_identifier, ] string blob_id)", + "Return blob length and other useful info" + ], + "ibase_blob_open": [ + "resource ibase_blob_open([ resource link_identifier, ] string blob_id)", + "Open blob for retrieving data parts" + ], + "ibase_close": [ + "bool ibase_close([resource link_identifier])", + "Close an InterBase connection" + ], + "ibase_commit": [ + "bool ibase_commit( resource link_identifier )", + "Commit transaction" + ], + "ibase_commit_ret": [ + "bool ibase_commit_ret( resource link_identifier )", + "Commit transaction and retain the transaction context" + ], + "ibase_connect": [ + "resource ibase_connect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", + "Open a connection to an InterBase database" + ], + "ibase_db_info": [ + "string ibase_db_info(resource service_handle, string db, int action [, int argument])", + "Request statistics about a database" + ], + "ibase_delete_user": [ + "bool ibase_delete_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Delete a user from security database" + ], + "ibase_drop_db": [ + "bool ibase_drop_db([resource link_identifier])", + "Drop an InterBase database" + ], + "ibase_errcode": [ + "int ibase_errcode()", + "Return error code" + ], + "ibase_errmsg": [ + "string ibase_errmsg()", + "Return error message" + ], + "ibase_execute": [ + "mixed ibase_execute(resource query [, mixed bind_arg [, mixed bind_arg [, ...]]])", + "Execute a previously prepared query" + ], + "ibase_fetch_assoc": [ + "array ibase_fetch_assoc(resource result [, int fetch_flags])", + "Fetch a row from the results of a query" + ], + "ibase_fetch_object": [ + "object ibase_fetch_object(resource result [, int fetch_flags])", + "Fetch a object from the results of a query" + ], + "ibase_fetch_row": [ + "array ibase_fetch_row(resource result [, int fetch_flags])", + "Fetch a row from the results of a query" + ], + "ibase_field_info": [ + "array ibase_field_info(resource query_result, int field_number)", + "Get information about a field" + ], + "ibase_free_event_handler": [ + "bool ibase_free_event_handler(resource event)", + "Frees the event handler set by ibase_set_event_handler()" + ], + "ibase_free_query": [ + "bool ibase_free_query(resource query)", + "Free memory used by a query" + ], + "ibase_free_result": [ + "bool ibase_free_result(resource result)", + "Free the memory used by a result" + ], + "ibase_gen_id": [ + "int ibase_gen_id(string generator [, int increment [, resource link_identifier ]])", + "Increments the named generator and returns its new value" + ], + "ibase_maintain_db": [ + "bool ibase_maintain_db(resource service_handle, string db, int action [, int argument])", + "Execute a maintenance command on the database server" + ], + "ibase_modify_user": [ + "bool ibase_modify_user(resource service_handle, string user_name, string password [, string first_name [, string middle_name [, string last_name]]])", + "Modify a user in security database" + ], + "ibase_name_result": [ + "bool ibase_name_result(resource result, string name)", + "Assign a name to a result for use with ... WHERE CURRENT OF statements" + ], + "ibase_num_fields": [ + "int ibase_num_fields(resource query_result)", + "Get the number of fields in result" + ], + "ibase_num_params": [ + "int ibase_num_params(resource query)", + "Get the number of params in a prepared query" + ], + "ibase_num_rows": [ + "int ibase_num_rows( resource result_identifier )", + "Return the number of rows that are available in a result" + ], + "ibase_param_info": [ + "array ibase_param_info(resource query, int field_number)", + "Get information about a parameter" + ], + "ibase_pconnect": [ + "resource ibase_pconnect(string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])", + "Open a persistent connection to an InterBase database" + ], + "ibase_prepare": [ + "resource ibase_prepare(resource link_identifier[, string query [, resource trans_identifier ]])", + "Prepare a query for later execution" + ], + "ibase_query": [ + "mixed ibase_query([resource link_identifier, [ resource link_identifier, ]] string query [, mixed bind_arg [, mixed bind_arg [, ...]]])", + "Execute a query" + ], + "ibase_restore": [ + "mixed ibase_restore(resource service_handle, string source_file, string dest_db [, int options [, bool verbose]])", + "Initiates a restore task in the service manager and returns immediately" + ], + "ibase_rollback": [ + "bool ibase_rollback( resource link_identifier )", + "Rollback transaction" + ], + "ibase_rollback_ret": [ + "bool ibase_rollback_ret( resource link_identifier )", + "Rollback transaction and retain the transaction context" + ], + "ibase_server_info": [ + "string ibase_server_info(resource service_handle, int action)", + "Request information about a database server" + ], + "ibase_service_attach": [ + "resource ibase_service_attach(string host, string dba_username, string dba_password)", + "Connect to the service manager" + ], + "ibase_service_detach": [ + "bool ibase_service_detach(resource service_handle)", + "Disconnect from the service manager" + ], + "ibase_set_event_handler": [ + "resource ibase_set_event_handler([resource link_identifier,] callback handler, string event [, string event [, ...]])", + "Register the callback for handling each of the named events" + ], + "ibase_trans": [ + "resource ibase_trans([int trans_args [, resource link_identifier [, ... ], int trans_args [, resource link_identifier [, ... ]] [, ...]]])", + "Start a transaction over one or several databases" + ], + "ibase_wait_event": [ + "string ibase_wait_event([resource link_identifier,] string event [, string event [, ...]])", + "Waits for any one of the passed Interbase events to be posted by the database, and returns its name" + ], + "iconv": [ + "string iconv(string in_charset, string out_charset, string str)", + "Returns str converted to the out_charset character set" + ], + "iconv_get_encoding": [ + "mixed iconv_get_encoding([string type])", + "Get internal encoding and output encoding for ob_iconv_handler()" + ], + "iconv_mime_decode": [ + "string iconv_mime_decode(string encoded_string [, int mode, string charset])", + "Decodes a mime header field" + ], + "iconv_mime_decode_headers": [ + "array iconv_mime_decode_headers(string headers [, int mode, string charset])", + "Decodes multiple mime header fields" + ], + "iconv_mime_encode": [ + "string iconv_mime_encode(string field_name, string field_value [, array preference])", + "Composes a mime header field with field_name and field_value in a specified scheme" + ], + "iconv_set_encoding": [ + "bool iconv_set_encoding(string type, string charset)", + "Sets internal encoding and output encoding for ob_iconv_handler()" + ], + "iconv_strlen": [ + "int iconv_strlen(string str [, string charset])", + "Returns the character count of str" + ], + "iconv_strpos": [ + "int iconv_strpos(string haystack, string needle [, int offset [, string charset]])", + "Finds position of first occurrence of needle within part of haystack beginning with offset" + ], + "iconv_strrpos": [ + "int iconv_strrpos(string haystack, string needle [, string charset])", + "Finds position of last occurrence of needle within part of haystack beginning with offset" + ], + "iconv_substr": [ + "string iconv_substr(string str, int offset, [int length, string charset])", + "Returns specified part of a string" + ], + "idate": [ + "int idate(string format [, int timestamp])", + "Format a local time/date as integer" + ], + "idn_to_ascii": [ + "int idn_to_ascii(string domain[, int options])", + "Converts an Unicode domain to ASCII representation, as defined in the IDNA RFC" + ], + "idn_to_utf8": [ + "int idn_to_utf8(string domain[, int options])", + "Converts an ASCII representation of the domain to Unicode (UTF-8), as defined in the IDNA RFC" + ], + "ignore_user_abort": [ + "int ignore_user_abort([string value])", + "Set whether we want to ignore a user abort event or not" + ], + "image2wbmp": [ + "bool image2wbmp(resource im [, string filename [, int threshold]])", + "Output WBMP image to browser or file" + ], + "image_type_to_extension": [ + "string image_type_to_extension(int imagetype [, bool include_dot])", + "Get file extension for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" + ], + "image_type_to_mime_type": [ + "string image_type_to_mime_type(int imagetype)", + "Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype" + ], + "imagealphablending": [ + "bool imagealphablending(resource im, bool on)", + "Turn alpha blending mode on or off for the given image" + ], + "imageantialias": [ + "bool imageantialias(resource im, bool on)", + "Should antialiased functions used or not" + ], + "imagearc": [ + "bool imagearc(resource im, int cx, int cy, int w, int h, int s, int e, int col)", + "Draw a partial ellipse" + ], + "imagechar": [ + "bool imagechar(resource im, int font, int x, int y, string c, int col)", + "Draw a character" + ], + "imagecharup": [ + "bool imagecharup(resource im, int font, int x, int y, string c, int col)", + "Draw a character rotated 90 degrees counter-clockwise" + ], + "imagecolorallocate": [ + "int imagecolorallocate(resource im, int red, int green, int blue)", + "Allocate a color for an image" + ], + "imagecolorallocatealpha": [ + "int imagecolorallocatealpha(resource im, int red, int green, int blue, int alpha)", + "Allocate a color with an alpha level. Works for true color and palette based images" + ], + "imagecolorat": [ + "int imagecolorat(resource im, int x, int y)", + "Get the index of the color of a pixel" + ], + "imagecolorclosest": [ + "int imagecolorclosest(resource im, int red, int green, int blue)", + "Get the index of the closest color to the specified color" + ], + "imagecolorclosestalpha": [ + "int imagecolorclosestalpha(resource im, int red, int green, int blue, int alpha)", + "Find the closest matching colour with alpha transparency" + ], + "imagecolorclosesthwb": [ + "int imagecolorclosesthwb(resource im, int red, int green, int blue)", + "Get the index of the color which has the hue, white and blackness nearest to the given color" + ], + "imagecolordeallocate": [ + "bool imagecolordeallocate(resource im, int index)", + "De-allocate a color for an image" + ], + "imagecolorexact": [ + "int imagecolorexact(resource im, int red, int green, int blue)", + "Get the index of the specified color" + ], + "imagecolorexactalpha": [ + "int imagecolorexactalpha(resource im, int red, int green, int blue, int alpha)", + "Find exact match for colour with transparency" + ], + "imagecolormatch": [ + "bool imagecolormatch(resource im1, resource im2)", + "Makes the colors of the palette version of an image more closely match the true color version" + ], + "imagecolorresolve": [ + "int imagecolorresolve(resource im, int red, int green, int blue)", + "Get the index of the specified color or its closest possible alternative" + ], + "imagecolorresolvealpha": [ + "int imagecolorresolvealpha(resource im, int red, int green, int blue, int alpha)", + "Resolve/Allocate a colour with an alpha level. Works for true colour and palette based images" + ], + "imagecolorset": [ + "void imagecolorset(resource im, int col, int red, int green, int blue)", + "Set the color for the specified palette index" + ], + "imagecolorsforindex": [ + "array imagecolorsforindex(resource im, int col)", + "Get the colors for an index" + ], + "imagecolorstotal": [ + "int imagecolorstotal(resource im)", + "Find out the number of colors in an image's palette" + ], + "imagecolortransparent": [ + "int imagecolortransparent(resource im [, int col])", + "Define a color as transparent" + ], + "imageconvolution": [ + "resource imageconvolution(resource src_im, array matrix3x3, double div, double offset)", + "Apply a 3x3 convolution matrix, using coefficient div and offset" + ], + "imagecopy": [ + "bool imagecopy(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h)", + "Copy part of an image" + ], + "imagecopymerge": [ + "bool imagecopymerge(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", + "Merge one part of an image with another" + ], + "imagecopymergegray": [ + "bool imagecopymergegray(resource src_im, resource dst_im, int dst_x, int dst_y, int src_x, int src_y, int src_w, int src_h, int pct)", + "Merge one part of an image with another" + ], + "imagecopyresampled": [ + "bool imagecopyresampled(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", + "Copy and resize part of an image using resampling to help ensure clarity" + ], + "imagecopyresized": [ + "bool imagecopyresized(resource dst_im, resource src_im, int dst_x, int dst_y, int src_x, int src_y, int dst_w, int dst_h, int src_w, int src_h)", + "Copy and resize part of an image" + ], + "imagecreate": [ + "resource imagecreate(int x_size, int y_size)", + "Create a new image" + ], + "imagecreatefromgd": [ + "resource imagecreatefromgd(string filename)", + "Create a new image from GD file or URL" + ], + "imagecreatefromgd2": [ + "resource imagecreatefromgd2(string filename)", + "Create a new image from GD2 file or URL" + ], + "imagecreatefromgd2part": [ + "resource imagecreatefromgd2part(string filename, int srcX, int srcY, int width, int height)", + "Create a new image from a given part of GD2 file or URL" + ], + "imagecreatefromgif": [ + "resource imagecreatefromgif(string filename)", + "Create a new image from GIF file or URL" + ], + "imagecreatefromjpeg": [ + "resource imagecreatefromjpeg(string filename)", + "Create a new image from JPEG file or URL" + ], + "imagecreatefrompng": [ + "resource imagecreatefrompng(string filename)", + "Create a new image from PNG file or URL" + ], + "imagecreatefromstring": [ + "resource imagecreatefromstring(string image)", + "Create a new image from the image stream in the string" + ], + "imagecreatefromwbmp": [ + "resource imagecreatefromwbmp(string filename)", + "Create a new image from WBMP file or URL" + ], + "imagecreatefromxbm": [ + "resource imagecreatefromxbm(string filename)", + "Create a new image from XBM file or URL" + ], + "imagecreatefromxpm": [ + "resource imagecreatefromxpm(string filename)", + "Create a new image from XPM file or URL" + ], + "imagecreatetruecolor": [ + "resource imagecreatetruecolor(int x_size, int y_size)", + "Create a new true color image" + ], + "imagedashedline": [ + "bool imagedashedline(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a dashed line" + ], + "imagedestroy": [ + "bool imagedestroy(resource im)", + "Destroy an image" + ], + "imageellipse": [ + "bool imageellipse(resource im, int cx, int cy, int w, int h, int color)", + "Draw an ellipse" + ], + "imagefill": [ + "bool imagefill(resource im, int x, int y, int col)", + "Flood fill" + ], + "imagefilledarc": [ + "bool imagefilledarc(resource im, int cx, int cy, int w, int h, int s, int e, int col, int style)", + "Draw a filled partial ellipse" + ], + "imagefilledellipse": [ + "bool imagefilledellipse(resource im, int cx, int cy, int w, int h, int color)", + "Draw an ellipse" + ], + "imagefilledpolygon": [ + "bool imagefilledpolygon(resource im, array point, int num_points, int col)", + "Draw a filled polygon" + ], + "imagefilledrectangle": [ + "bool imagefilledrectangle(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a filled rectangle" + ], + "imagefilltoborder": [ + "bool imagefilltoborder(resource im, int x, int y, int border, int col)", + "Flood fill to specific color" + ], + "imagefilter": [ + "bool imagefilter(resource src_im, int filtertype, [args] )", + "Applies Filter an image using a custom angle" + ], + "imagefontheight": [ + "int imagefontheight(int font)", + "Get font height" + ], + "imagefontwidth": [ + "int imagefontwidth(int font)", + "Get font width" + ], + "imageftbbox": [ + "array imageftbbox(float size, float angle, string font_file, string text [, array extrainfo])", + "Give the bounding box of a text using fonts via freetype2" + ], + "imagefttext": [ + "array imagefttext(resource im, float size, float angle, int x, int y, int col, string font_file, string text [, array extrainfo])", + "Write text to the image using fonts via freetype2" + ], + "imagegammacorrect": [ + "bool imagegammacorrect(resource im, float inputgamma, float outputgamma)", + "Apply a gamma correction to a GD image" + ], + "imagegd": [ + "bool imagegd(resource im [, string filename])", + "Output GD image to browser or file" + ], + "imagegd2": [ + "bool imagegd2(resource im [, string filename, [, int chunk_size, [, int type]]])", + "Output GD2 image to browser or file" + ], + "imagegif": [ + "bool imagegif(resource im [, string filename])", + "Output GIF image to browser or file" + ], + "imagegrabscreen": [ + "resource imagegrabscreen()", + "Grab a screenshot" + ], + "imagegrabwindow": [ + "resource imagegrabwindow(int window_handle [, int client_area])", + "Grab a window or its client area using a windows handle (HWND property in COM instance)" + ], + "imageinterlace": [ + "int imageinterlace(resource im [, int interlace])", + "Enable or disable interlace" + ], + "imageistruecolor": [ + "bool imageistruecolor(resource im)", + "return true if the image uses truecolor" + ], + "imagejpeg": [ + "bool imagejpeg(resource im [, string filename [, int quality]])", + "Output JPEG image to browser or file" + ], + "imagelayereffect": [ + "bool imagelayereffect(resource im, int effect)", + "Set the alpha blending flag to use the bundled libgd layering effects" + ], + "imageline": [ + "bool imageline(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a line" + ], + "imageloadfont": [ + "int imageloadfont(string filename)", + "Load a new font" + ], + "imagepalettecopy": [ + "void imagepalettecopy(resource dst, resource src)", + "Copy the palette from the src image onto the dst image" + ], + "imagepng": [ + "bool imagepng(resource im [, string filename])", + "Output PNG image to browser or file" + ], + "imagepolygon": [ + "bool imagepolygon(resource im, array point, int num_points, int col)", + "Draw a polygon" + ], + "imagepsbbox": [ + "array imagepsbbox(string text, resource font, int size [, int space, int tightness, float angle])", + "Return the bounding box needed by a string if rasterized" + ], + "imagepscopyfont": [ + "int imagepscopyfont(int font_index)", + "Make a copy of a font for purposes like extending or reenconding" + ], + "imagepsencodefont": [ + "bool imagepsencodefont(resource font_index, string filename)", + "To change a fonts character encoding vector" + ], + "imagepsextendfont": [ + "bool imagepsextendfont(resource font_index, float extend)", + "Extend or or condense if (extend < 1) a font" + ], + "imagepsfreefont": [ + "bool imagepsfreefont(resource font_index)", + "Free memory used by a font" + ], + "imagepsloadfont": [ + "resource imagepsloadfont(string pathname)", + "Load a new font from specified file" + ], + "imagepsslantfont": [ + "bool imagepsslantfont(resource font_index, float slant)", + "Slant a font" + ], + "imagepstext": [ + "array imagepstext(resource image, string text, resource font, int size, int foreground, int background, int xcoord, int ycoord [, int space [, int tightness [, float angle [, int antialias])", + "Rasterize a string over an image" + ], + "imagerectangle": [ + "bool imagerectangle(resource im, int x1, int y1, int x2, int y2, int col)", + "Draw a rectangle" + ], + "imagerotate": [ + "resource imagerotate(resource src_im, float angle, int bgdcolor [, int ignoretransparent])", + "Rotate an image using a custom angle" + ], + "imagesavealpha": [ + "bool imagesavealpha(resource im, bool on)", + "Include alpha channel to a saved image" + ], + "imagesetbrush": [ + "bool imagesetbrush(resource image, resource brush)", + "Set the brush image to $brush when filling $image with the \"IMG_COLOR_BRUSHED\" color" + ], + "imagesetpixel": [ + "bool imagesetpixel(resource im, int x, int y, int col)", + "Set a single pixel" + ], + "imagesetstyle": [ + "bool imagesetstyle(resource im, array styles)", + "Set the line drawing styles for use with imageline and IMG_COLOR_STYLED." + ], + "imagesetthickness": [ + "bool imagesetthickness(resource im, int thickness)", + "Set line thickness for drawing lines, ellipses, rectangles, polygons etc." + ], + "imagesettile": [ + "bool imagesettile(resource image, resource tile)", + "Set the tile image to $tile when filling $image with the \"IMG_COLOR_TILED\" color" + ], + "imagestring": [ + "bool imagestring(resource im, int font, int x, int y, string str, int col)", + "Draw a string horizontally" + ], + "imagestringup": [ + "bool imagestringup(resource im, int font, int x, int y, string str, int col)", + "Draw a string vertically - rotated 90 degrees counter-clockwise" + ], + "imagesx": [ + "int imagesx(resource im)", + "Get image width" + ], + "imagesy": [ + "int imagesy(resource im)", + "Get image height" + ], + "imagetruecolortopalette": [ + "void imagetruecolortopalette(resource im, bool ditherFlag, int colorsWanted)", + "Convert a true colour image to a palette based image with a number of colours, optionally using dithering." + ], + "imagettfbbox": [ + "array imagettfbbox(float size, float angle, string font_file, string text)", + "Give the bounding box of a text using TrueType fonts" + ], + "imagettftext": [ + "array imagettftext(resource im, float size, float angle, int x, int y, int col, string font_file, string text)", + "Write text to the image using a TrueType font" + ], + "imagetypes": [ + "int imagetypes()", + "Return the types of images supported in a bitfield - 1=GIF, 2=JPEG, 4=PNG, 8=WBMP, 16=XPM" + ], + "imagewbmp": [ + "bool imagewbmp(resource im [, string filename, [, int foreground]])", + "Output WBMP image to browser or file" + ], + "imagexbm": [ + "int imagexbm(int im, string filename [, int foreground])", + "Output XBM image to browser or file" + ], + "imap_8bit": [ + "string imap_8bit(string text)", + "Convert an 8-bit string to a quoted-printable string" + ], + "imap_alerts": [ + "array imap_alerts()", + "Returns an array of all IMAP alerts that have been generated since the last page load or since the last imap_alerts() call, whichever came last. The alert stack is cleared after imap_alerts() is called." + ], + "imap_append": [ + "bool imap_append(resource stream_id, string folder, string message [, string options [, string internal_date]])", + "Append a new message to a specified mailbox" + ], + "imap_base64": [ + "string imap_base64(string text)", + "Decode BASE64 encoded text" + ], + "imap_binary": [ + "string imap_binary(string text)", + "Convert an 8bit string to a base64 string" + ], + "imap_body": [ + "string imap_body(resource stream_id, int msg_no [, int options])", + "Read the message body" + ], + "imap_bodystruct": [ + "object imap_bodystruct(resource stream_id, int msg_no, string section)", + "Read the structure of a specified body section of a specific message" + ], + "imap_check": [ + "object imap_check(resource stream_id)", + "Get mailbox properties" + ], + "imap_clearflag_full": [ + "bool imap_clearflag_full(resource stream_id, string sequence, string flag [, int options])", + "Clears flags on messages" + ], + "imap_close": [ + "bool imap_close(resource stream_id [, int options])", + "Close an IMAP stream" + ], + "imap_createmailbox": [ + "bool imap_createmailbox(resource stream_id, string mailbox)", + "Create a new mailbox" + ], + "imap_delete": [ + "bool imap_delete(resource stream_id, int msg_no [, int options])", + "Mark a message for deletion" + ], + "imap_deletemailbox": [ + "bool imap_deletemailbox(resource stream_id, string mailbox)", + "Delete a mailbox" + ], + "imap_errors": [ + "array imap_errors()", + "Returns an array of all IMAP errors generated since the last page load, or since the last imap_errors() call, whichever came last. The error stack is cleared after imap_errors() is called." + ], + "imap_expunge": [ + "bool imap_expunge(resource stream_id)", + "Permanently delete all messages marked for deletion" + ], + "imap_fetch_overview": [ + "array imap_fetch_overview(resource stream_id, string sequence [, int options])", + "Read an overview of the information in the headers of the given message sequence" + ], + "imap_fetchbody": [ + "string imap_fetchbody(resource stream_id, int msg_no, string section [, int options])", + "Get a specific body section" + ], + "imap_fetchheader": [ + "string imap_fetchheader(resource stream_id, int msg_no [, int options])", + "Get the full unfiltered header for a message" + ], + "imap_fetchstructure": [ + "object imap_fetchstructure(resource stream_id, int msg_no [, int options])", + "Read the full structure of a message" + ], + "imap_gc": [ + "bool imap_gc(resource stream_id, int flags)", + "This function garbage collects (purges) the cache of entries of a specific type." + ], + "imap_get_quota": [ + "array imap_get_quota(resource stream_id, string qroot)", + "Returns the quota set to the mailbox account qroot" + ], + "imap_get_quotaroot": [ + "array imap_get_quotaroot(resource stream_id, string mbox)", + "Returns the quota set to the mailbox account mbox" + ], + "imap_getacl": [ + "array imap_getacl(resource stream_id, string mailbox)", + "Gets the ACL for a given mailbox" + ], + "imap_getmailboxes": [ + "array imap_getmailboxes(resource stream_id, string ref, string pattern)", + "Reads the list of mailboxes and returns a full array of objects containing name, attributes, and delimiter" + ], + "imap_getsubscribed": [ + "array imap_getsubscribed(resource stream_id, string ref, string pattern)", + "Return a list of subscribed mailboxes, in the same format as imap_getmailboxes()" + ], + "imap_headerinfo": [ + "object imap_headerinfo(resource stream_id, int msg_no [, int from_length [, int subject_length [, string default_host]]])", + "Read the headers of the message" + ], + "imap_headers": [ + "array imap_headers(resource stream_id)", + "Returns headers for all messages in a mailbox" + ], + "imap_last_error": [ + "string imap_last_error()", + "Returns the last error that was generated by an IMAP function. The error stack is NOT cleared after this call." + ], + "imap_list": [ + "array imap_list(resource stream_id, string ref, string pattern)", + "Read the list of mailboxes" + ], + "imap_listscan": [ + "array imap_listscan(resource stream_id, string ref, string pattern, string content)", + "Read list of mailboxes containing a certain string" + ], + "imap_lsub": [ + "array imap_lsub(resource stream_id, string ref, string pattern)", + "Return a list of subscribed mailboxes" + ], + "imap_mail": [ + "bool imap_mail(string to, string subject, string message [, string additional_headers [, string cc [, string bcc [, string rpath]]]])", + "Send an email message" + ], + "imap_mail_compose": [ + "string imap_mail_compose(array envelope, array body)", + "Create a MIME message based on given envelope and body sections" + ], + "imap_mail_copy": [ + "bool imap_mail_copy(resource stream_id, string msglist, string mailbox [, int options])", + "Copy specified message to a mailbox" + ], + "imap_mail_move": [ + "bool imap_mail_move(resource stream_id, string sequence, string mailbox [, int options])", + "Move specified message to a mailbox" + ], + "imap_mailboxmsginfo": [ + "object imap_mailboxmsginfo(resource stream_id)", + "Returns info about the current mailbox" + ], + "imap_mime_header_decode": [ + "array imap_mime_header_decode(string str)", + "Decode mime header element in accordance with RFC 2047 and return array of objects containing 'charset' encoding and decoded 'text'" + ], + "imap_msgno": [ + "int imap_msgno(resource stream_id, int unique_msg_id)", + "Get the sequence number associated with a UID" + ], + "imap_mutf7_to_utf8": [ + "string imap_mutf7_to_utf8(string in)", + "Decode a modified UTF-7 string to UTF-8" + ], + "imap_num_msg": [ + "int imap_num_msg(resource stream_id)", + "Gives the number of messages in the current mailbox" + ], + "imap_num_recent": [ + "int imap_num_recent(resource stream_id)", + "Gives the number of recent messages in current mailbox" + ], + "imap_open": [ + "resource imap_open(string mailbox, string user, string password [, int options [, int n_retries]])", + "Open an IMAP stream to a mailbox" + ], + "imap_ping": [ + "bool imap_ping(resource stream_id)", + "Check if the IMAP stream is still active" + ], + "imap_qprint": [ + "string imap_qprint(string text)", + "Convert a quoted-printable string to an 8-bit string" + ], + "imap_renamemailbox": [ + "bool imap_renamemailbox(resource stream_id, string old_name, string new_name)", + "Rename a mailbox" + ], + "imap_reopen": [ + "bool imap_reopen(resource stream_id, string mailbox [, int options [, int n_retries]])", + "Reopen an IMAP stream to a new mailbox" + ], + "imap_rfc822_parse_adrlist": [ + "array imap_rfc822_parse_adrlist(string address_string, string default_host)", + "Parses an address string" + ], + "imap_rfc822_parse_headers": [ + "object imap_rfc822_parse_headers(string headers [, string default_host])", + "Parse a set of mail headers contained in a string, and return an object similar to imap_headerinfo()" + ], + "imap_rfc822_write_address": [ + "string imap_rfc822_write_address(string mailbox, string host, string personal)", + "Returns a properly formatted email address given the mailbox, host, and personal info" + ], + "imap_savebody": [ + "bool imap_savebody(resource stream_id, string|resource file, int msg_no[, string section = \"\"[, int options = 0]])", + "Save a specific body section to a file" + ], + "imap_search": [ + "array imap_search(resource stream_id, string criteria [, int options [, string charset]])", + "Return a list of messages matching the given criteria" + ], + "imap_set_quota": [ + "bool imap_set_quota(resource stream_id, string qroot, int mailbox_size)", + "Will set the quota for qroot mailbox" + ], + "imap_setacl": [ + "bool imap_setacl(resource stream_id, string mailbox, string id, string rights)", + "Sets the ACL for a given mailbox" + ], + "imap_setflag_full": [ + "bool imap_setflag_full(resource stream_id, string sequence, string flag [, int options])", + "Sets flags on messages" + ], + "imap_sort": [ + "array imap_sort(resource stream_id, int criteria, int reverse [, int options [, string search_criteria [, string charset]]])", + "Sort an array of message headers, optionally including only messages that meet specified criteria." + ], + "imap_status": [ + "object imap_status(resource stream_id, string mailbox, int options)", + "Get status info from a mailbox" + ], + "imap_subscribe": [ + "bool imap_subscribe(resource stream_id, string mailbox)", + "Subscribe to a mailbox" + ], + "imap_thread": [ + "array imap_thread(resource stream_id [, int options])", + "Return threaded by REFERENCES tree" + ], + "imap_timeout": [ + "mixed imap_timeout(int timeout_type [, int timeout])", + "Set or fetch imap timeout" + ], + "imap_uid": [ + "int imap_uid(resource stream_id, int msg_no)", + "Get the unique message id associated with a standard sequential message number" + ], + "imap_undelete": [ + "bool imap_undelete(resource stream_id, int msg_no [, int flags])", + "Remove the delete flag from a message" + ], + "imap_unsubscribe": [ + "bool imap_unsubscribe(resource stream_id, string mailbox)", + "Unsubscribe from a mailbox" + ], + "imap_utf7_decode": [ + "string imap_utf7_decode(string buf)", + "Decode a modified UTF-7 string" + ], + "imap_utf7_encode": [ + "string imap_utf7_encode(string buf)", + "Encode a string in modified UTF-7" + ], + "imap_utf8": [ + "string imap_utf8(string mime_encoded_text)", + "Convert a mime-encoded text to UTF-8" + ], + "imap_utf8_to_mutf7": [ + "string imap_utf8_to_mutf7(string in)", + "Encode a UTF-8 string to modified UTF-7" + ], + "implode": [ + "string implode([string glue,] array pieces)", + "Joins array elements placing glue string between items and return one string" + ], + "import_request_variables": [ + "bool import_request_variables(string types [, string prefix])", + "Import GET/POST/Cookie variables into the global scope" + ], + "in_array": [ + "bool in_array(mixed needle, array haystack [, bool strict])", + "Checks if the given value exists in the array" + ], + "include": [ + "bool include(string path)", + "Includes and evaluates the specified file" + ], + "include_once": [ + "bool include_once(string path)", + "Includes and evaluates the specified file" + ], + "inet_ntop": [ + "string inet_ntop(string in_addr)", + "Converts a packed inet address to a human readable IP address string" + ], + "inet_pton": [ + "string inet_pton(string ip_address)", + "Converts a human readable IP address to a packed binary string" + ], + "ini_get": [ + "string ini_get(string varname)", + "Get a configuration option" + ], + "ini_get_all": [ + "array ini_get_all([string extension[, bool details = true]])", + "Get all configuration options" + ], + "ini_restore": [ + "void ini_restore(string varname)", + "Restore the value of a configuration option specified by varname" + ], + "ini_set": [ + "string ini_set(string varname, string newvalue)", + "Set a configuration option, returns false on error and the old value of the configuration option on success" + ], + "interface_exists": [ + "bool interface_exists(string classname [, bool autoload])", + "Checks if the class exists" + ], + "intl_error_name": [ + "string intl_error_name()", + "* Return a string for a given error code. * The string will be the same as the name of the error code constant." + ], + "intl_get_error_code": [ + "int intl_get_error_code()", + "* Get code of the last occured error." + ], + "intl_get_error_message": [ + "string intl_get_error_message()", + "* Get text description of the last occured error." + ], + "intl_is_failure": [ + "bool intl_is_failure()", + "* Check whether the given error code indicates a failure. * Returns true if it does, and false if the code * indicates success or a warning." + ], + "intval": [ + "int intval(mixed var [, int base])", + "Get the integer value of a variable using the optional base for the conversion" + ], + "ip2long": [ + "int ip2long(string ip_address)", + "Converts a string containing an (IPv4) Internet Protocol dotted address into a proper address" + ], + "iptcembed": [ + "array iptcembed(string iptcdata, string jpeg_file_name [, int spool])", + "Embed binary IPTC data into a JPEG image." + ], + "iptcparse": [ + "array iptcparse(string iptcdata)", + "Parse binary IPTC-data into associative array" + ], + "is_a": [ + "bool is_a(object object, string class_name)", + "Returns true if the object is of this class or has this class as one of its parents" + ], + "is_array": [ + "bool is_array(mixed var)", + "Returns true if variable is an array" + ], + "is_bool": [ + "bool is_bool(mixed var)", + "Returns true if variable is a boolean" + ], + "is_callable": [ + "bool is_callable(mixed var [, bool syntax_only [, string callable_name]])", + "Returns true if var is callable." + ], + "is_countable": [ + "bool is_countable(mixed var)", + "Returns true if var is countable, false otherwise" + ], + "is_dir": [ + "bool is_dir(string filename)", + "Returns true if file is directory" + ], + "is_executable": [ + "bool is_executable(string filename)", + "Returns true if file is executable" + ], + "is_file": [ + "bool is_file(string filename)", + "Returns true if file is a regular file" + ], + "is_finite": [ + "bool is_finite(float val)", + "Returns whether argument is finite" + ], + "is_float": [ + "bool is_float(mixed var)", + "Returns true if variable is float point" + ], + "is_infinite": [ + "bool is_infinite(float val)", + "Returns whether argument is infinite" + ], + "is_link": [ + "bool is_link(string filename)", + "Returns true if file is symbolic link" + ], + "is_long": [ + "bool is_long(mixed var)", + "Returns true if variable is a long (integer)" + ], + "is_nan": [ + "bool is_nan(float val)", + "Returns whether argument is not a number" + ], + "is_null": [ + "bool is_null(mixed var)", + "Returns true if variable is null" + ], + "is_numeric": [ + "bool is_numeric(mixed value)", + "Returns true if value is a number or a numeric string" + ], + "is_object": [ + "bool is_object(mixed var)", + "Returns true if variable is an object" + ], + "is_readable": [ + "bool is_readable(string filename)", + "Returns true if file can be read" + ], + "is_resource": [ + "bool is_resource(mixed var)", + "Returns true if variable is a resource" + ], + "is_scalar": [ + "bool is_scalar(mixed value)", + "Returns true if value is a scalar" + ], + "is_string": [ + "bool is_string(mixed var)", + "Returns true if variable is a string" + ], + "is_subclass_of": [ + "bool is_subclass_of(object object, string class_name)", + "Returns true if the object has this class as one of its parents" + ], + "is_uploaded_file": [ + "bool is_uploaded_file(string path)", + "Check if file was created by rfc1867 upload" + ], + "is_writable": [ + "bool is_writable(string filename)", + "Returns true if file can be written" + ], + "isset": [ + "bool isset(mixed var [, mixed var])", + "Determine whether a variable is set" + ], + "iterator_apply": [ + "int iterator_apply(Traversable iterator, callable function [, array args = null)", + "Calls a function for every element in an iterator" + ], + "iterator_count": [ + "int iterator_count(Traversable iterator)", + "Count the elements in an iterator" + ], + "iterator_to_array": [ + "array iterator_to_array(Traversable iterator [, bool use_keys = true])", + "Copy the iterator into an array" + ], + "jddayofweek": [ + "mixed jddayofweek(int juliandaycount [, int mode])", + "Returns name or number of day of week from julian day count" + ], + "jdmonthname": [ + "string jdmonthname(int juliandaycount, int mode)", + "Returns name of month for julian day count" + ], + "jdtofrench": [ + "string jdtofrench(int juliandaycount)", + "Converts a julian day count to a french republic calendar date" + ], + "jdtogregorian": [ + "string jdtogregorian(int juliandaycount)", + "Converts a julian day count to a gregorian calendar date" + ], + "jdtojewish": [ + "string jdtojewish(int juliandaycount [, bool hebrew [, int fl]])", + "Converts a julian day count to a jewish calendar date" + ], + "jdtojulian": [ + "string jdtojulian(int juliandaycount)", + "Convert a julian day count to a julian calendar date" + ], + "jdtounix": [ + "int jdtounix(int jday)", + "Convert Julian Day to UNIX timestamp" + ], + "jewishtojd": [ + "int jewishtojd(int month, int day, int year)", + "Converts a jewish calendar date to a julian day count" + ], + "join": [ + "string join([string glue,] array pieces)", + "Returns a string containing a string representation of all the arrayelements in the same order, with the glue string between each element" + ], + "jpeg2wbmp": [ + "bool jpeg2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", + "Convert JPEG image to WBMP image" + ], + "json_decode": [ + "mixed json_decode(string json [, bool assoc [, long depth]])", + "Decodes the JSON representation into a PHP value" + ], + "json_encode": [ + "string json_encode(mixed data [, int options])", + "Returns the JSON representation of a value" + ], + "json_last_error": [ + "int json_last_error()", + "Returns the error code of the last json_decode()." + ], + "juliantojd": [ + "int juliantojd(int month, int day, int year)", + "Converts a julian calendar date to julian day count" + ], + "key": [ + "mixed key(array array_arg)", + "Return the key of the element currently pointed to by the internal array pointer" + ], + "krsort": [ + "bool krsort(array &array_arg [, int sort_flags])", + "Sort an array by key value in reverse order" + ], + "ksort": [ + "bool ksort(array &array_arg [, int sort_flags])", + "Sort an array by key" + ], + "lcfirst": [ + "string lcfirst(string str)", + "Make a string's first character lowercase" + ], + "lcg_value": [ + "float lcg_value()", + "Returns a value from the combined linear congruential generator" + ], + "lchgrp": [ + "bool lchgrp(string filename, mixed group)", + "Change symlink group" + ], + "ldap_8859_to_t61": [ + "string ldap_8859_to_t61(string value)", + "Translate 8859 characters to t61 characters" + ], + "ldap_add": [ + "bool ldap_add(resource link, string dn, array entry)", + "Add entries to LDAP directory" + ], + "ldap_bind": [ + "bool ldap_bind(resource link [, string dn [, string password]])", + "Bind to LDAP directory" + ], + "ldap_compare": [ + "bool ldap_compare(resource link, string dn, string attr, string value)", + "Determine if an entry has a specific value for one of its attributes" + ], + "ldap_connect": [ + "resource ldap_connect([string host [, int port [, string wallet [, string wallet_passwd [, int authmode]]]]])", + "Connect to an LDAP server" + ], + "ldap_count_entries": [ + "int ldap_count_entries(resource link, resource result)", + "Count the number of entries in a search result" + ], + "ldap_delete": [ + "bool ldap_delete(resource link, string dn)", + "Delete an entry from a directory" + ], + "ldap_dn2ufn": [ + "string ldap_dn2ufn(string dn)", + "Convert DN to User Friendly Naming format" + ], + "ldap_err2str": [ + "string ldap_err2str(int errno)", + "Convert error number to error string" + ], + "ldap_errno": [ + "int ldap_errno(resource link)", + "Get the current ldap error number" + ], + "ldap_error": [ + "string ldap_error(resource link)", + "Get the current ldap error string" + ], + "ldap_explode_dn": [ + "array ldap_explode_dn(string dn, int with_attrib)", + "Splits DN into its component parts" + ], + "ldap_first_attribute": [ + "string ldap_first_attribute(resource link, resource result_entry)", + "Return first attribute" + ], + "ldap_first_entry": [ + "resource ldap_first_entry(resource link, resource result)", + "Return first result id" + ], + "ldap_first_reference": [ + "resource ldap_first_reference(resource link, resource result)", + "Return first reference" + ], + "ldap_free_result": [ + "bool ldap_free_result(resource result)", + "Free result memory" + ], + "ldap_get_attributes": [ + "array ldap_get_attributes(resource link, resource result_entry)", + "Get attributes from a search result entry" + ], + "ldap_get_dn": [ + "string ldap_get_dn(resource link, resource result_entry)", + "Get the DN of a result entry" + ], + "ldap_get_entries": [ + "array ldap_get_entries(resource link, resource result)", + "Get all result entries" + ], + "ldap_get_option": [ + "bool ldap_get_option(resource link, int option, mixed retval)", + "Get the current value of various session-wide parameters" + ], + "ldap_get_values_len": [ + "array ldap_get_values_len(resource link, resource result_entry, string attribute)", + "Get all values with lengths from a result entry" + ], + "ldap_list": [ + "resource ldap_list(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Single-level search" + ], + "ldap_mod_add": [ + "bool ldap_mod_add(resource link, string dn, array entry)", + "Add attribute values to current" + ], + "ldap_mod_del": [ + "bool ldap_mod_del(resource link, string dn, array entry)", + "Delete attribute values" + ], + "ldap_mod_replace": [ + "bool ldap_mod_replace(resource link, string dn, array entry)", + "Replace attribute values with new ones" + ], + "ldap_next_attribute": [ + "string ldap_next_attribute(resource link, resource result_entry)", + "Get the next attribute in result" + ], + "ldap_next_entry": [ + "resource ldap_next_entry(resource link, resource result_entry)", + "Get next result entry" + ], + "ldap_next_reference": [ + "resource ldap_next_reference(resource link, resource reference_entry)", + "Get next reference" + ], + "ldap_parse_reference": [ + "bool ldap_parse_reference(resource link, resource reference_entry, array referrals)", + "Extract information from reference entry" + ], + "ldap_parse_result": [ + "bool ldap_parse_result(resource link, resource result, int errcode, string matcheddn, string errmsg, array referrals)", + "Extract information from result" + ], + "ldap_read": [ + "resource ldap_read(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Read an entry" + ], + "ldap_rename": [ + "bool ldap_rename(resource link, string dn, string newrdn, string newparent, bool deleteoldrdn)", + "Modify the name of an entry" + ], + "ldap_sasl_bind": [ + "bool ldap_sasl_bind(resource link [, string binddn [, string password [, string sasl_mech [, string sasl_realm [, string sasl_authc_id [, string sasl_authz_id [, string props]]]]]]])", + "Bind to LDAP directory using SASL" + ], + "ldap_search": [ + "resource ldap_search(resource|array link, string base_dn, string filter [, array attrs [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])", + "Search LDAP tree under base_dn" + ], + "ldap_set_option": [ + "bool ldap_set_option(resource link, int option, mixed newval)", + "Set the value of various session-wide parameters" + ], + "ldap_set_rebind_proc": [ + "bool ldap_set_rebind_proc(resource link, string callback)", + "Set a callback function to do re-binds on referral chasing." + ], + "ldap_sort": [ + "bool ldap_sort(resource link, resource result, string sortfilter)", + "Sort LDAP result entries" + ], + "ldap_start_tls": [ + "bool ldap_start_tls(resource link)", + "Start TLS" + ], + "ldap_t61_to_8859": [ + "string ldap_t61_to_8859(string value)", + "Translate t61 characters to 8859 characters" + ], + "ldap_unbind": [ + "bool ldap_unbind(resource link)", + "Unbind from LDAP directory" + ], + "leak": [ + "void leak(int num_bytes=3)", + "Cause an intentional memory leak, for testing/debugging purposes" + ], + "levenshtein": [ + "int levenshtein(string str1, string str2[, int cost_ins, int cost_rep, int cost_del])", + "Calculate Levenshtein distance between two strings" + ], + "libxml_clear_errors": [ + "void libxml_clear_errors()", + "Clear last error from libxml" + ], + "libxml_disable_entity_loader": [ + "bool libxml_disable_entity_loader([bool disable])", + "Disable/Enable ability to load external entities" + ], + "libxml_get_errors": [ + "object libxml_get_errors()", + "Retrieve array of errors" + ], + "libxml_get_last_error": [ + "object libxml_get_last_error()", + "Retrieve last error from libxml" + ], + "libxml_set_streams_context": [ + "void libxml_set_streams_context(resource streams_context)", + "Set the streams context for the next libxml document load or write" + ], + "libxml_use_internal_errors": [ + "bool libxml_use_internal_errors([bool use_errors])", + "Disable libxml errors and allow user to fetch error information as needed" + ], + "link": [ + "int link(string target, string link)", + "Create a hard link" + ], + "linkinfo": [ + "int linkinfo(string filename)", + "Returns the st_dev field of the UNIX C stat structure describing the link" + ], + "litespeed_request_headers": [ + "array litespeed_request_headers()", + "Fetch all HTTP request headers" + ], + "litespeed_response_headers": [ + "array litespeed_response_headers()", + "Fetch all HTTP response headers" + ], + "locale_accept_from_http": [ + "string locale_accept_from_http(string $http_accept)", + null + ], + "locale_canonicalize": [ + "static string locale_canonicalize(Locale $loc, string $locale)", + "* @param string $locale The locale string to canonicalize" + ], + "locale_filter_matches": [ + "bool locale_filter_matches(string $langtag, string $locale[, bool $canonicalize])", + "* Checks if a $langtag filter matches with $locale according to RFC 4647's basic filtering algorithm" + ], + "locale_get_all_variants": [ + "static array locale_get_all_variants($locale)", + "* gets an array containing the list of variants, or null" + ], + "locale_get_default": [ + "static string locale_get_default( )", + "Get default locale" + ], + "locale_get_keywords": [ + "static array locale_get_keywords(string $locale) {", + "* return an associative array containing keyword-value * pairs for this locale. The keys are keys to the array" + ], + "locale_get_primary_language": [ + "static string locale_get_primary_language($locale)", + "* gets the primary language for the $locale" + ], + "locale_get_region": [ + "static string locale_get_region($locale)", + "* gets the region for the $locale" + ], + "locale_get_script": [ + "static string locale_get_script($locale)", + "* gets the script for the $locale" + ], + "locale_lookup": [ + "string locale_lookup(array $langtag, string $locale[, bool $canonicalize[, string $default = null]])", + "* Searchs the items in $langtag for the best match to the language * range" + ], + "locale_set_default": [ + "static string locale_set_default( string $locale )", + "Set default locale" + ], + "localeconv": [ + "array localeconv()", + "Returns numeric formatting information based on the current locale" + ], + "localtime": [ + "array localtime([int timestamp [, bool associative_array]])", + "Returns the results of the C system call localtime as an associative array if the associative_array argument is set to 1 other wise it is a regular array" + ], + "log": [ + "float log(float number, [float base])", + "Returns the natural logarithm of the number, or the base log if base is specified" + ], + "log10": [ + "float log10(float number)", + "Returns the base-10 logarithm of the number" + ], + "log1p": [ + "float log1p(float number)", + "Returns log(1 + number), computed in a way that accurate even when the value of number is close to zero" + ], + "long2ip": [ + "string long2ip(int proper_address)", + "Converts an (IPv4) Internet network address into a string in Internet standard dotted format" + ], + "lstat": [ + "array lstat(string filename)", + "Give information about a file or symbolic link" + ], + "ltrim": [ + "string ltrim(string str [, string character_mask])", + "Strips whitespace from the beginning of a string" + ], + "mail": [ + "int mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", + "Send an email message" + ], + "max": [ + "mixed max(mixed arg1 [, mixed arg2 [, mixed ...]])", + "Return the highest value in an array or a series of arguments" + ], + "mb_check_encoding": [ + "bool mb_check_encoding([string var[, string encoding]])", + "Check if the string is valid for the specified encoding" + ], + "mb_convert_case": [ + "string mb_convert_case(string sourcestring, int mode [, string encoding])", + "Returns a case-folded version of sourcestring" + ], + "mb_convert_encoding": [ + "string mb_convert_encoding(string str, string to-encoding [, mixed from-encoding])", + "Returns converted string in desired encoding" + ], + "mb_convert_kana": [ + "string mb_convert_kana(string str [, string option] [, string encoding])", + "Conversion between full-width character and half-width character (Japanese)" + ], + "mb_convert_variables": [ + "string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...])", + "Converts the string resource in variables to desired encoding" + ], + "mb_decode_mimeheader": [ + "string mb_decode_mimeheader(string string)", + "Decodes the MIME \"encoded-word\" in the string" + ], + "mb_decode_numericentity": [ + "string mb_decode_numericentity(string string, array convmap [, string encoding])", + "Converts HTML numeric entities to character code" + ], + "mb_detect_encoding": [ + "string mb_detect_encoding(string str [, mixed encoding_list [, bool strict]])", + "Encodings of the given string is returned (as a string)" + ], + "mb_detect_order": [ + "bool|array mb_detect_order([mixed encoding-list])", + "Sets the current detect_order or Return the current detect_order as a array" + ], + "mb_encode_mimeheader": [ + "string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]])", + "Converts the string to MIME \"encoded-word\" in the format of =?charset?(B|Q)?encoded_string?=" + ], + "mb_encode_numericentity": [ + "string mb_encode_numericentity(string string, array convmap [, string encoding])", + "Converts specified characters to HTML numeric entities" + ], + "mb_encoding_aliases": [ + "array mb_encoding_aliases(string encoding)", + "Returns an array of the aliases of a given encoding name" + ], + "mb_ereg": [ + "int mb_ereg(string pattern, string string [, array registers])", + "Regular expression match for multibyte string" + ], + "mb_ereg_match": [ + "bool mb_ereg_match(string pattern, string string [,string option])", + "Regular expression match for multibyte string" + ], + "mb_ereg_replace": [ + "string mb_ereg_replace(string pattern, string replacement, string string [, string option])", + "Replace regular expression for multibyte string" + ], + "mb_ereg_search": [ + "bool mb_ereg_search([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_getpos": [ + "int mb_ereg_search_getpos()", + "Get search start position" + ], + "mb_ereg_search_getregs": [ + "array mb_ereg_search_getregs()", + "Get matched substring of the last time" + ], + "mb_ereg_search_init": [ + "bool mb_ereg_search_init(string string [, string pattern[, string option]])", + "Initialize string and regular expression for search." + ], + "mb_ereg_search_pos": [ + "array mb_ereg_search_pos([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_regs": [ + "array mb_ereg_search_regs([string pattern[, string option]])", + "Regular expression search for multibyte string" + ], + "mb_ereg_search_setpos": [ + "bool mb_ereg_search_setpos(int position)", + "Set search start position" + ], + "mb_eregi": [ + "int mb_eregi(string pattern, string string [, array registers])", + "Case-insensitive regular expression match for multibyte string" + ], + "mb_eregi_replace": [ + "string mb_eregi_replace(string pattern, string replacement, string string)", + "Case insensitive replace regular expression for multibyte string" + ], + "mb_get_info": [ + "mixed mb_get_info([string type])", + "Returns the current settings of mbstring" + ], + "mb_http_input": [ + "mixed mb_http_input([string type])", + "Returns the input encoding" + ], + "mb_http_output": [ + "string mb_http_output([string encoding])", + "Sets the current output_encoding or returns the current output_encoding as a string" + ], + "mb_internal_encoding": [ + "string mb_internal_encoding([string encoding])", + "Sets the current internal encoding or Returns the current internal encoding as a string" + ], + "mb_language": [ + "string mb_language([string language])", + "Sets the current language or Returns the current language as a string" + ], + "mb_list_encodings": [ + "mixed mb_list_encodings()", + "Returns an array of all supported entity encodings" + ], + "mb_output_handler": [ + "string mb_output_handler(string contents, int status)", + "Returns string in output buffer converted to the http_output encoding" + ], + "mb_parse_str": [ + "bool mb_parse_str(string encoded_string [, array result])", + "Parses GET/POST/COOKIE data and sets global variables" + ], + "mb_preferred_mime_name": [ + "string mb_preferred_mime_name(string encoding)", + "Return the preferred MIME name (charset) as a string" + ], + "mb_regex_encoding": [ + "string mb_regex_encoding([string encoding])", + "Returns the current encoding for regex as a string." + ], + "mb_regex_set_options": [ + "string mb_regex_set_options([string options])", + "Set or get the default options for mbregex functions" + ], + "mb_send_mail": [ + "int mb_send_mail(string to, string subject, string message [, string additional_headers [, string additional_parameters]])", + "* Sends an email message with MIME scheme" + ], + "mb_split": [ + "array mb_split(string pattern, string string [, int limit])", + "split multibyte string into array by regular expression" + ], + "mb_strcut": [ + "string mb_strcut(string str, int start [, int length [, string encoding]])", + "Returns part of a string" + ], + "mb_strimwidth": [ + "string mb_strimwidth(string str, int start, int width [, string trimmarker [, string encoding]])", + "Trim the string in terminal width" + ], + "mb_stripos": [ + "int mb_stripos(string haystack, string needle [, int offset [, string encoding]])", + "Finds position of first occurrence of a string within another, case insensitive" + ], + "mb_stristr": [ + "string mb_stristr(string haystack, string needle[, bool part[, string encoding]])", + "Finds first occurrence of a string within another, case insensitive" + ], + "mb_strlen": [ + "int mb_strlen(string str [, string encoding])", + "Get character numbers of a string" + ], + "mb_strpos": [ + "int mb_strpos(string haystack, string needle [, int offset [, string encoding]])", + "Find position of first occurrence of a string within another" + ], + "mb_strrchr": [ + "string mb_strrchr(string haystack, string needle[, bool part[, string encoding]])", + "Finds the last occurrence of a character in a string within another" + ], + "mb_strrichr": [ + "string mb_strrichr(string haystack, string needle[, bool part[, string encoding]])", + "Finds the last occurrence of a character in a string within another, case insensitive" + ], + "mb_strripos": [ + "int mb_strripos(string haystack, string needle [, int offset [, string encoding]])", + "Finds position of last occurrence of a string within another, case insensitive" + ], + "mb_strrpos": [ + "int mb_strrpos(string haystack, string needle [, int offset [, string encoding]])", + "Find position of last occurrence of a string within another" + ], + "mb_strstr": [ + "string mb_strstr(string haystack, string needle[, bool part[, string encoding]])", + "Finds first occurrence of a string within another" + ], + "mb_strtolower": [ + "string mb_strtolower(string sourcestring [, string encoding])", + "* Returns a lowercased version of sourcestring" + ], + "mb_strtoupper": [ + "string mb_strtoupper(string sourcestring [, string encoding])", + "* Returns a uppercased version of sourcestring" + ], + "mb_strwidth": [ + "int mb_strwidth(string str [, string encoding])", + "Gets terminal width of a string" + ], + "mb_substitute_character": [ + "mixed mb_substitute_character([mixed substchar])", + "Sets the current substitute_character or returns the current substitute_character" + ], + "mb_substr": [ + "string mb_substr(string str, int start [, int length [, string encoding]])", + "Returns part of a string" + ], + "mb_substr_count": [ + "int mb_substr_count(string haystack, string needle [, string encoding])", + "Count the number of substring occurrences" + ], + "mcrypt_cbc": [ + "string mcrypt_cbc(int cipher, string key, string data, int mode, string iv)", + "CBC crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_cfb": [ + "string mcrypt_cfb(int cipher, string key, string data, int mode, string iv)", + "CFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_create_iv": [ + "string mcrypt_create_iv(int size, int source)", + "Create an initialization vector (IV)" + ], + "mcrypt_decrypt": [ + "string mcrypt_decrypt(string cipher, string key, string data, string mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_ecb": [ + "string mcrypt_ecb(int cipher, string key, string data, int mode, string iv)", + "ECB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_enc_get_algorithms_name": [ + "string mcrypt_enc_get_algorithms_name(resource td)", + "Returns the name of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_block_size": [ + "int mcrypt_enc_get_block_size(resource td)", + "Returns the block size of the cipher specified by the descriptor td" + ], + "mcrypt_enc_get_iv_size": [ + "int mcrypt_enc_get_iv_size(resource td)", + "Returns the size of the IV in bytes of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_key_size": [ + "int mcrypt_enc_get_key_size(resource td)", + "Returns the maximum supported key size in bytes of the algorithm specified by the descriptor td" + ], + "mcrypt_enc_get_modes_name": [ + "string mcrypt_enc_get_modes_name(resource td)", + "Returns the name of the mode specified by the descriptor td" + ], + "mcrypt_enc_get_supported_key_sizes": [ + "array mcrypt_enc_get_supported_key_sizes(resource td)", + "This function decrypts the crypttext" + ], + "mcrypt_enc_is_block_algorithm": [ + "bool mcrypt_enc_is_block_algorithm(resource td)", + "Returns TRUE if the alrogithm is a block algorithms" + ], + "mcrypt_enc_is_block_algorithm_mode": [ + "bool mcrypt_enc_is_block_algorithm_mode(resource td)", + "Returns TRUE if the mode is for use with block algorithms" + ], + "mcrypt_enc_is_block_mode": [ + "bool mcrypt_enc_is_block_mode(resource td)", + "Returns TRUE if the mode outputs blocks" + ], + "mcrypt_enc_self_test": [ + "int mcrypt_enc_self_test(resource td)", + "This function runs the self test on the algorithm specified by the descriptor td" + ], + "mcrypt_encrypt": [ + "string mcrypt_encrypt(string cipher, string key, string data, string mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "mcrypt_generic": [ + "string mcrypt_generic(resource td, string data)", + "This function encrypts the plaintext" + ], + "mcrypt_generic_deinit": [ + "bool mcrypt_generic_deinit(resource td)", + "This function terminates encrypt specified by the descriptor td" + ], + "mcrypt_generic_init": [ + "int mcrypt_generic_init(resource td, string key, string iv)", + "This function initializes all buffers for the specific module" + ], + "mcrypt_get_block_size": [ + "int mcrypt_get_block_size(string cipher, string module)", + "Get the key size of cipher" + ], + "mcrypt_get_cipher_name": [ + "string mcrypt_get_cipher_name(string cipher)", + "Get the key size of cipher" + ], + "mcrypt_get_iv_size": [ + "int mcrypt_get_iv_size(string cipher, string module)", + "Get the IV size of cipher (Usually the same as the blocksize)" + ], + "mcrypt_get_key_size": [ + "int mcrypt_get_key_size(string cipher, string module)", + "Get the key size of cipher" + ], + "mcrypt_list_algorithms": [ + "array mcrypt_list_algorithms([string lib_dir])", + "List all algorithms in \"module_dir\"" + ], + "mcrypt_list_modes": [ + "array mcrypt_list_modes([string lib_dir])", + "List all modes \"module_dir\"" + ], + "mcrypt_module_close": [ + "bool mcrypt_module_close(resource td)", + "Free the descriptor td" + ], + "mcrypt_module_get_algo_block_size": [ + "int mcrypt_module_get_algo_block_size(string algorithm [, string lib_dir])", + "Returns the block size of the algorithm" + ], + "mcrypt_module_get_algo_key_size": [ + "int mcrypt_module_get_algo_key_size(string algorithm [, string lib_dir])", + "Returns the maximum supported key size of the algorithm" + ], + "mcrypt_module_get_supported_key_sizes": [ + "array mcrypt_module_get_supported_key_sizes(string algorithm [, string lib_dir])", + "This function decrypts the crypttext" + ], + "mcrypt_module_is_block_algorithm": [ + "bool mcrypt_module_is_block_algorithm(string algorithm [, string lib_dir])", + "Returns TRUE if the algorithm is a block algorithm" + ], + "mcrypt_module_is_block_algorithm_mode": [ + "bool mcrypt_module_is_block_algorithm_mode(string mode [, string lib_dir])", + "Returns TRUE if the mode is for use with block algorithms" + ], + "mcrypt_module_is_block_mode": [ + "bool mcrypt_module_is_block_mode(string mode [, string lib_dir])", + "Returns TRUE if the mode outputs blocks of bytes" + ], + "mcrypt_module_open": [ + "resource mcrypt_module_open(string cipher, string cipher_directory, string mode, string mode_directory)", + "Opens the module of the algorithm and the mode to be used" + ], + "mcrypt_module_self_test": [ + "bool mcrypt_module_self_test(string algorithm [, string lib_dir])", + "Does a self test of the module \"module\"" + ], + "mcrypt_ofb": [ + "string mcrypt_ofb(int cipher, string key, string data, int mode, string iv)", + "OFB crypt/decrypt data using key key with cipher cipher starting with iv" + ], + "md5": [ + "string md5(string str, [ bool raw_output])", + "Calculate the md5 hash of a string" + ], + "md5_file": [ + "string md5_file(string filename [, bool raw_output])", + "Calculate the md5 hash of given filename" + ], + "mdecrypt_generic": [ + "string mdecrypt_generic(resource td, string data)", + "This function decrypts the plaintext" + ], + "memory_get_peak_usage": [ + "int memory_get_peak_usage([real_usage])", + "Returns the peak allocated by PHP memory" + ], + "memory_get_usage": [ + "int memory_get_usage([real_usage])", + "Returns the allocated by PHP memory" + ], + "metaphone": [ + "string metaphone(string text[, int phones])", + "Break english phrases down into their phonemes" + ], + "method_exists": [ + "bool method_exists(object object, string method)", + "Checks if the class method exists" + ], + "mhash": [ + "string mhash(int hash, string data [, string key])", + "Hash data with hash" + ], + "mhash_count": [ + "int mhash_count()", + "Gets the number of available hashes" + ], + "mhash_get_block_size": [ + "int mhash_get_block_size(int hash)", + "Gets the block size of hash" + ], + "mhash_get_hash_name": [ + "string mhash_get_hash_name(int hash)", + "Gets the name of hash" + ], + "mhash_keygen_s2k": [ + "string mhash_keygen_s2k(int hash, string input_password, string salt, int bytes)", + "Generates a key using hash functions" + ], + "microtime": [ + "mixed microtime([bool get_as_float])", + "Returns either a string or a float containing the current time in seconds and microseconds" + ], + "mime_content_type": [ + "string mime_content_type(string filename|resource stream)", + "Return content-type for file" + ], + "min": [ + "mixed min(mixed arg1 [, mixed arg2 [, mixed ...]])", + "Return the lowest value in an array or a series of arguments" + ], + "mkdir": [ + "bool mkdir(string pathname [, int mode [, bool recursive [, resource context]]])", + "Create a directory" + ], + "mktime": [ + "int mktime([int hour [, int min [, int sec [, int mon [, int day [, int year]]]]]])", + "Get UNIX timestamp for a date" + ], + "money_format": [ + "string money_format(string format , float value)", + "Convert monetary value(s) to string" + ], + "move_uploaded_file": [ + "bool move_uploaded_file(string path, string new_path)", + "Move a file if and only if it was created by an upload" + ], + "msg_get_queue": [ + "resource msg_get_queue(int key [, int perms])", + "Attach to a message queue" + ], + "msg_queue_exists": [ + "bool msg_queue_exists(int key)", + "Check whether a message queue exists" + ], + "msg_receive": [ + "mixed msg_receive(resource queue, int desiredmsgtype, int &msgtype, int maxsize, mixed message [, bool unserialize=true [, int flags=0 [, int errorcode]]])", + "Send a message of type msgtype (must be > 0) to a message queue" + ], + "msg_remove_queue": [ + "bool msg_remove_queue(resource queue)", + "Destroy the queue" + ], + "msg_send": [ + "bool msg_send(resource queue, int msgtype, mixed message [, bool serialize=true [, bool blocking=true [, int errorcode]]])", + "Send a message of type msgtype (must be > 0) to a message queue" + ], + "msg_set_queue": [ + "bool msg_set_queue(resource queue, array data)", + "Set information for a message queue" + ], + "msg_stat_queue": [ + "array msg_stat_queue(resource queue)", + "Returns information about a message queue" + ], + "msgfmt_create": [ + "MessageFormatter msgfmt_create( string $locale, string $pattern )", + "* Create formatter." + ], + "msgfmt_format": [ + "mixed msgfmt_format( MessageFormatter $nf, array $args )", + "* Format a message." + ], + "msgfmt_format_message": [ + "mixed msgfmt_format_message( string $locale, string $pattern, array $args )", + "* Format a message." + ], + "msgfmt_get_error_code": [ + "int msgfmt_get_error_code( MessageFormatter $nf )", + "* Get formatter's last error code." + ], + "msgfmt_get_error_message": [ + "string msgfmt_get_error_message( MessageFormatter $coll )", + "* Get text description for formatter's last error code." + ], + "msgfmt_get_locale": [ + "string msgfmt_get_locale(MessageFormatter $mf)", + "* Get formatter locale." + ], + "msgfmt_get_pattern": [ + "string msgfmt_get_pattern( MessageFormatter $mf )", + "* Get formatter pattern." + ], + "msgfmt_parse": [ + "array msgfmt_parse( MessageFormatter $nf, string $source )", + "* Parse a message." + ], + "msgfmt_set_pattern": [ + "bool msgfmt_set_pattern( MessageFormatter $mf, string $pattern )", + "* Set formatter pattern." + ], + "mssql_bind": [ + "bool mssql_bind(resource stmt, string param_name, mixed var, int type [, bool is_output [, bool is_null [, int maxlen]]])", + "Adds a parameter to a stored procedure or a remote stored procedure" + ], + "mssql_close": [ + "bool mssql_close([resource conn_id])", + "Closes a connection to a MS-SQL server" + ], + "mssql_connect": [ + "int mssql_connect([string servername [, string username [, string password [, bool new_link]]]])", + "Establishes a connection to a MS-SQL server" + ], + "mssql_data_seek": [ + "bool mssql_data_seek(resource result_id, int offset)", + "Moves the internal row pointer of the MS-SQL result associated with the specified result identifier to pointer to the specified row number" + ], + "mssql_execute": [ + "mixed mssql_execute(resource stmt [, bool skip_results = false])", + "Executes a stored procedure on a MS-SQL server database" + ], + "mssql_fetch_array": [ + "array mssql_fetch_array(resource result_id [, int result_type])", + "Returns an associative array of the current row in the result set specified by result_id" + ], + "mssql_fetch_assoc": [ + "array mssql_fetch_assoc(resource result_id)", + "Returns an associative array of the current row in the result set specified by result_id" + ], + "mssql_fetch_batch": [ + "int mssql_fetch_batch(resource result_index)", + "Returns the next batch of records" + ], + "mssql_fetch_field": [ + "object mssql_fetch_field(resource result_id [, int offset])", + "Gets information about certain fields in a query result" + ], + "mssql_fetch_object": [ + "object mssql_fetch_object(resource result_id)", + "Returns a pseudo-object of the current row in the result set specified by result_id" + ], + "mssql_fetch_row": [ + "array mssql_fetch_row(resource result_id)", + "Returns an array of the current row in the result set specified by result_id" + ], + "mssql_field_length": [ + "int mssql_field_length(resource result_id [, int offset])", + "Get the length of a MS-SQL field" + ], + "mssql_field_name": [ + "string mssql_field_name(resource result_id [, int offset])", + "Returns the name of the field given by offset in the result set given by result_id" + ], + "mssql_field_seek": [ + "bool mssql_field_seek(resource result_id, int offset)", + "Seeks to the specified field offset" + ], + "mssql_field_type": [ + "string mssql_field_type(resource result_id [, int offset])", + "Returns the type of a field" + ], + "mssql_free_result": [ + "bool mssql_free_result(resource result_index)", + "Free a MS-SQL result index" + ], + "mssql_free_statement": [ + "bool mssql_free_statement(resource result_index)", + "Free a MS-SQL statement index" + ], + "mssql_get_last_message": [ + "string mssql_get_last_message()", + "Gets the last message from the MS-SQL server" + ], + "mssql_guid_string": [ + "string mssql_guid_string(string binary [,bool short_format])", + "Converts a 16 byte binary GUID to a string" + ], + "mssql_init": [ + "int mssql_init(string sp_name [, resource conn_id])", + "Initializes a stored procedure or a remote stored procedure" + ], + "mssql_min_error_severity": [ + "void mssql_min_error_severity(int severity)", + "Sets the lower error severity" + ], + "mssql_min_message_severity": [ + "void mssql_min_message_severity(int severity)", + "Sets the lower message severity" + ], + "mssql_next_result": [ + "bool mssql_next_result(resource result_id)", + "Move the internal result pointer to the next result" + ], + "mssql_num_fields": [ + "int mssql_num_fields(resource mssql_result_index)", + "Returns the number of fields fetched in from the result id specified" + ], + "mssql_num_rows": [ + "int mssql_num_rows(resource mssql_result_index)", + "Returns the number of rows fetched in from the result id specified" + ], + "mssql_pconnect": [ + "int mssql_pconnect([string servername [, string username [, string password [, bool new_link]]]])", + "Establishes a persistent connection to a MS-SQL server" + ], + "mssql_query": [ + "resource mssql_query(string query [, resource conn_id [, int batch_size]])", + "Perform an SQL query on a MS-SQL server database" + ], + "mssql_result": [ + "string mssql_result(resource result_id, int row, mixed field)", + "Returns the contents of one cell from a MS-SQL result set" + ], + "mssql_rows_affected": [ + "int mssql_rows_affected(resource conn_id)", + "Returns the number of records affected by the query" + ], + "mssql_select_db": [ + "bool mssql_select_db(string database_name [, resource conn_id])", + "Select a MS-SQL database" + ], + "mt_getrandmax": [ + "int mt_getrandmax()", + "Returns the maximum value a random number from Mersenne Twister can have" + ], + "mt_rand": [ + "int mt_rand([int min, int max])", + "Returns a random number from Mersenne Twister" + ], + "mt_srand": [ + "void mt_srand([int seed])", + "Seeds Mersenne Twister random number generator" + ], + "mysql_affected_rows": [ + "int mysql_affected_rows([int link_identifier])", + "Gets number of affected rows in previous MySQL operation" + ], + "mysql_client_encoding": [ + "string mysql_client_encoding([int link_identifier])", + "Returns the default character set for the current connection" + ], + "mysql_close": [ + "bool mysql_close([int link_identifier])", + "Close a MySQL connection" + ], + "mysql_connect": [ + "resource mysql_connect([string hostname[:port][:/path/to/socket] [, string username [, string password [, bool new [, int flags]]]]])", + "Opens a connection to a MySQL Server" + ], + "mysql_create_db": [ + "bool mysql_create_db(string database_name [, int link_identifier])", + "Create a MySQL database" + ], + "mysql_data_seek": [ + "bool mysql_data_seek(resource result, int row_number)", + "Move internal result pointer" + ], + "mysql_db_query": [ + "resource mysql_db_query(string database_name, string query [, int link_identifier])", + "Sends an SQL query to MySQL" + ], + "mysql_drop_db": [ + "bool mysql_drop_db(string database_name [, int link_identifier])", + "Drops (delete) a MySQL database" + ], + "mysql_errno": [ + "int mysql_errno([int link_identifier])", + "Returns the number of the error message from previous MySQL operation" + ], + "mysql_error": [ + "string mysql_error([int link_identifier])", + "Returns the text of the error message from previous MySQL operation" + ], + "mysql_escape_string": [ + "string mysql_escape_string(string to_be_escaped)", + "Escape string for mysql query" + ], + "mysql_fetch_array": [ + "array mysql_fetch_array(resource result [, int result_type])", + "Fetch a result row as an array (associative, numeric or both)" + ], + "mysql_fetch_assoc": [ + "array mysql_fetch_assoc(resource result)", + "Fetch a result row as an associative array" + ], + "mysql_fetch_field": [ + "object mysql_fetch_field(resource result [, int field_offset])", + "Gets column information from a result and return as an object" + ], + "mysql_fetch_lengths": [ + "array mysql_fetch_lengths(resource result)", + "Gets max data size of each column in a result" + ], + "mysql_fetch_object": [ + "object mysql_fetch_object(resource result [, string class_name [, NULL|array ctor_params]])", + "Fetch a result row as an object" + ], + "mysql_fetch_row": [ + "array mysql_fetch_row(resource result)", + "Gets a result row as an enumerated array" + ], + "mysql_field_flags": [ + "string mysql_field_flags(resource result, int field_offset)", + "Gets the flags associated with the specified field in a result" + ], + "mysql_field_len": [ + "int mysql_field_len(resource result, int field_offset)", + "Returns the length of the specified field" + ], + "mysql_field_name": [ + "string mysql_field_name(resource result, int field_index)", + "Gets the name of the specified field in a result" + ], + "mysql_field_seek": [ + "bool mysql_field_seek(resource result, int field_offset)", + "Sets result pointer to a specific field offset" + ], + "mysql_field_table": [ + "string mysql_field_table(resource result, int field_offset)", + "Gets name of the table the specified field is in" + ], + "mysql_field_type": [ + "string mysql_field_type(resource result, int field_offset)", + "Gets the type of the specified field in a result" + ], + "mysql_free_result": [ + "bool mysql_free_result(resource result)", + "Free result memory" + ], + "mysql_get_client_info": [ + "string mysql_get_client_info()", + "Returns a string that represents the client library version" + ], + "mysql_get_host_info": [ + "string mysql_get_host_info([int link_identifier])", + "Returns a string describing the type of connection in use, including the server host name" + ], + "mysql_get_proto_info": [ + "int mysql_get_proto_info([int link_identifier])", + "Returns the protocol version used by current connection" + ], + "mysql_get_server_info": [ + "string mysql_get_server_info([int link_identifier])", + "Returns a string that represents the server version number" + ], + "mysql_info": [ + "string mysql_info([int link_identifier])", + "Returns a string containing information about the most recent query" + ], + "mysql_insert_id": [ + "int mysql_insert_id([int link_identifier])", + "Gets the ID generated from the previous INSERT operation" + ], + "mysql_list_dbs": [ + "resource mysql_list_dbs([int link_identifier])", + "List databases available on a MySQL server" + ], + "mysql_list_fields": [ + "resource mysql_list_fields(string database_name, string table_name [, int link_identifier])", + "List MySQL result fields" + ], + "mysql_list_processes": [ + "resource mysql_list_processes([int link_identifier])", + "Returns a result set describing the current server threads" + ], + "mysql_list_tables": [ + "resource mysql_list_tables(string database_name [, int link_identifier])", + "List tables in a MySQL database" + ], + "mysql_num_fields": [ + "int mysql_num_fields(resource result)", + "Gets number of fields in a result" + ], + "mysql_num_rows": [ + "int mysql_num_rows(resource result)", + "Gets number of rows in a result" + ], + "mysql_pconnect": [ + "resource mysql_pconnect([string hostname[:port][:/path/to/socket] [, string username [, string password [, int flags]]]])", + "Opens a persistent connection to a MySQL Server" + ], + "mysql_ping": [ + "bool mysql_ping([int link_identifier])", + "Ping a server connection. If no connection then reconnect." + ], + "mysql_query": [ + "resource mysql_query(string query [, int link_identifier])", + "Sends an SQL query to MySQL" + ], + "mysql_real_escape_string": [ + "string mysql_real_escape_string(string to_be_escaped [, int link_identifier])", + "Escape special characters in a string for use in a SQL statement, taking into account the current charset of the connection" + ], + "mysql_result": [ + "mixed mysql_result(resource result, int row [, mixed field])", + "Gets result data" + ], + "mysql_select_db": [ + "bool mysql_select_db(string database_name [, int link_identifier])", + "Selects a MySQL database" + ], + "mysql_set_charset": [ + "bool mysql_set_charset(string csname [, int link_identifier])", + "sets client character set" + ], + "mysql_stat": [ + "string mysql_stat([int link_identifier])", + "Returns a string containing status information" + ], + "mysql_thread_id": [ + "int mysql_thread_id([int link_identifier])", + "Returns the thread id of current connection" + ], + "mysql_unbuffered_query": [ + "resource mysql_unbuffered_query(string query [, int link_identifier])", + "Sends an SQL query to MySQL, without fetching and buffering the result rows" + ], + "mysqli_affected_rows": [ + "mixed mysqli_affected_rows(object link)", + "Get number of affected rows in previous MySQL operation" + ], + "mysqli_autocommit": [ + "bool mysqli_autocommit(object link, bool mode)", + "Turn auto commit on or of" + ], + "mysqli_cache_stats": [ + "array mysqli_cache_stats()", + "Returns statistics about the zval cache" + ], + "mysqli_change_user": [ + "bool mysqli_change_user(object link, string user, string password, string database)", + "Change logged-in user of the active connection" + ], + "mysqli_character_set_name": [ + "string mysqli_character_set_name(object link)", + "Returns the name of the character set used for this connection" + ], + "mysqli_close": [ + "bool mysqli_close(object link)", + "Close connection" + ], + "mysqli_commit": [ + "bool mysqli_commit(object link)", + "Commit outstanding actions and close transaction" + ], + "mysqli_connect": [ + "object mysqli_connect([string hostname [,string username [,string passwd [,string dbname [,int port [,string socket]]]]]])", + "Open a connection to a mysql server" + ], + "mysqli_connect_errno": [ + "int mysqli_connect_errno()", + "Returns the numerical value of the error message from last connect command" + ], + "mysqli_connect_error": [ + "string mysqli_connect_error()", + "Returns the text of the error message from previous MySQL operation" + ], + "mysqli_data_seek": [ + "bool mysqli_data_seek(object result, int offset)", + "Move internal result pointer" + ], + "mysqli_debug": [ + "void mysqli_debug(string debug)", + "" + ], + "mysqli_dump_debug_info": [ + "bool mysqli_dump_debug_info(object link)", + "" + ], + "mysqli_embedded_server_end": [ + "void mysqli_embedded_server_end()", + "" + ], + "mysqli_embedded_server_start": [ + "bool mysqli_embedded_server_start(bool start, array arguments, array groups)", + "initialize and start embedded server" + ], + "mysqli_errno": [ + "int mysqli_errno(object link)", + "Returns the numerical value of the error message from previous MySQL operation" + ], + "mysqli_error": [ + "string mysqli_error(object link)", + "Returns the text of the error message from previous MySQL operation" + ], + "mysqli_fetch_all": [ + "mixed mysqli_fetch_all(object result [,int resulttype])", + "Fetches all result rows as an associative array, a numeric array, or both" + ], + "mysqli_fetch_array": [ + "mixed mysqli_fetch_array(object result [,int resulttype])", + "Fetch a result row as an associative array, a numeric array, or both" + ], + "mysqli_fetch_assoc": [ + "mixed mysqli_fetch_assoc(object result)", + "Fetch a result row as an associative array" + ], + "mysqli_fetch_field": [ + "mixed mysqli_fetch_field(object result)", + "Get column information from a result and return as an object" + ], + "mysqli_fetch_field_direct": [ + "mixed mysqli_fetch_field_direct(object result, int offset)", + "Fetch meta-data for a single field" + ], + "mysqli_fetch_fields": [ + "mixed mysqli_fetch_fields(object result)", + "Return array of objects containing field meta-data" + ], + "mysqli_fetch_lengths": [ + "mixed mysqli_fetch_lengths(object result)", + "Get the length of each output in a result" + ], + "mysqli_fetch_object": [ + "mixed mysqli_fetch_object(object result [, string class_name [, NULL|array ctor_params]])", + "Fetch a result row as an object" + ], + "mysqli_fetch_row": [ + "array mysqli_fetch_row(object result)", + "Get a result row as an enumerated array" + ], + "mysqli_field_count": [ + "int mysqli_field_count(object link)", + "Fetch the number of fields returned by the last query for the given link" + ], + "mysqli_field_seek": [ + "int mysqli_field_seek(object result, int fieldnr)", + "Set result pointer to a specified field offset" + ], + "mysqli_field_tell": [ + "int mysqli_field_tell(object result)", + "Get current field offset of result pointer" + ], + "mysqli_free_result": [ + "void mysqli_free_result(object result)", + "Free query result memory for the given result handle" + ], + "mysqli_get_charset": [ + "object mysqli_get_charset(object link)", + "returns a character set object" + ], + "mysqli_get_client_info": [ + "string mysqli_get_client_info()", + "Get MySQL client info" + ], + "mysqli_get_client_stats": [ + "array mysqli_get_client_stats()", + "Returns statistics about the zval cache" + ], + "mysqli_get_client_version": [ + "int mysqli_get_client_version()", + "Get MySQL client info" + ], + "mysqli_get_connection_stats": [ + "array mysqli_get_connection_stats()", + "Returns statistics about the zval cache" + ], + "mysqli_get_host_info": [ + "string mysqli_get_host_info(object link)", + "Get MySQL host info" + ], + "mysqli_get_proto_info": [ + "int mysqli_get_proto_info(object link)", + "Get MySQL protocol information" + ], + "mysqli_get_server_info": [ + "string mysqli_get_server_info(object link)", + "Get MySQL server info" + ], + "mysqli_get_server_version": [ + "int mysqli_get_server_version(object link)", + "Return the MySQL version for the server referenced by the given link" + ], + "mysqli_get_warnings": [ + "object mysqli_get_warnings(object link)", + "" + ], + "mysqli_info": [ + "string mysqli_info(object link)", + "Get information about the most recent query" + ], + "mysqli_init": [ + "resource mysqli_init()", + "Initialize mysqli and return a resource for use with mysql_real_connect" + ], + "mysqli_insert_id": [ + "mixed mysqli_insert_id(object link)", + "Get the ID generated from the previous INSERT operation" + ], + "mysqli_kill": [ + "bool mysqli_kill(object link, int processid)", + "Kill a mysql process on the server" + ], + "mysqli_link_construct": [ + "object mysqli_link_construct()", + "" + ], + "mysqli_more_results": [ + "bool mysqli_more_results(object link)", + "check if there any more query results from a multi query" + ], + "mysqli_multi_query": [ + "bool mysqli_multi_query(object link, string query)", + "allows to execute multiple queries" + ], + "mysqli_next_result": [ + "bool mysqli_next_result(object link)", + "read next result from multi_query" + ], + "mysqli_num_fields": [ + "int mysqli_num_fields(object result)", + "Get number of fields in result" + ], + "mysqli_num_rows": [ + "mixed mysqli_num_rows(object result)", + "Get number of rows in result" + ], + "mysqli_options": [ + "bool mysqli_options(object link, int flags, mixed values)", + "Set options" + ], + "mysqli_ping": [ + "bool mysqli_ping(object link)", + "Ping a server connection or reconnect if there is no connection" + ], + "mysqli_poll": [ + "int mysqli_poll(array read, array write, array error, long sec [, long usec])", + "Poll connections" + ], + "mysqli_prepare": [ + "mixed mysqli_prepare(object link, string query)", + "Prepare a SQL statement for execution" + ], + "mysqli_query": [ + "mixed mysqli_query(object link, string query [,int resultmode])", + "" + ], + "mysqli_real_connect": [ + "bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]])", + "Open a connection to a mysql server" + ], + "mysqli_real_escape_string": [ + "string mysqli_real_escape_string(object link, string escapestr)", + "Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection" + ], + "mysqli_real_query": [ + "bool mysqli_real_query(object link, string query)", + "Binary-safe version of mysql_query()" + ], + "mysqli_reap_async_query": [ + "int mysqli_reap_async_query(object link)", + "Poll connections" + ], + "mysqli_refresh": [ + "bool mysqli_refresh(object link, long options)", + "Flush tables or caches, or reset replication server information" + ], + "mysqli_report": [ + "bool mysqli_report(int flags)", + "sets report level" + ], + "mysqli_rollback": [ + "bool mysqli_rollback(object link)", + "Undo actions from current transaction" + ], + "mysqli_select_db": [ + "bool mysqli_select_db(object link, string dbname)", + "Select a MySQL database" + ], + "mysqli_set_charset": [ + "bool mysqli_set_charset(object link, string csname)", + "sets client character set" + ], + "mysqli_set_local_infile_default": [ + "void mysqli_set_local_infile_default(object link)", + "unsets user defined handler for load local infile command" + ], + "mysqli_set_local_infile_handler": [ + "bool mysqli_set_local_infile_handler(object link, callback read_func)", + "Set callback functions for LOAD DATA LOCAL INFILE" + ], + "mysqli_sqlstate": [ + "string mysqli_sqlstate(object link)", + "Returns the SQLSTATE error from previous MySQL operation" + ], + "mysqli_ssl_set": [ + "bool mysqli_ssl_set(object link ,string key ,string cert ,string ca ,string capath ,string cipher])", + "" + ], + "mysqli_stat": [ + "mixed mysqli_stat(object link)", + "Get current system status" + ], + "mysqli_stmt_affected_rows": [ + "mixed mysqli_stmt_affected_rows(object stmt)", + "Return the number of rows affected in the last query for the given link" + ], + "mysqli_stmt_attr_get": [ + "int mysqli_stmt_attr_get(object stmt, long attr)", + "" + ], + "mysqli_stmt_attr_set": [ + "int mysqli_stmt_attr_set(object stmt, long attr, long mode)", + "" + ], + "mysqli_stmt_bind_param": [ + "bool mysqli_stmt_bind_param(object stmt, string types, mixed variable [,mixed,....])", + "Bind variables to a prepared statement as parameters" + ], + "mysqli_stmt_bind_result": [ + "bool mysqli_stmt_bind_result(object stmt, mixed var, [,mixed, ...])", + "Bind variables to a prepared statement for result storage" + ], + "mysqli_stmt_close": [ + "bool mysqli_stmt_close(object stmt)", + "Close statement" + ], + "mysqli_stmt_data_seek": [ + "void mysqli_stmt_data_seek(object stmt, int offset)", + "Move internal result pointer" + ], + "mysqli_stmt_errno": [ + "int mysqli_stmt_errno(object stmt)", + "" + ], + "mysqli_stmt_error": [ + "string mysqli_stmt_error(object stmt)", + "" + ], + "mysqli_stmt_execute": [ + "bool mysqli_stmt_execute(object stmt)", + "Execute a prepared statement" + ], + "mysqli_stmt_fetch": [ + "mixed mysqli_stmt_fetch(object stmt)", + "Fetch results from a prepared statement into the bound variables" + ], + "mysqli_stmt_field_count": [ + "int mysqli_stmt_field_count(object stmt) {", + "Return the number of result columns for the given statement" + ], + "mysqli_stmt_free_result": [ + "void mysqli_stmt_free_result(object stmt)", + "Free stored result memory for the given statement handle" + ], + "mysqli_stmt_get_result": [ + "object mysqli_stmt_get_result(object link)", + "Buffer result set on client" + ], + "mysqli_stmt_get_warnings": [ + "object mysqli_stmt_get_warnings(object link)", + "" + ], + "mysqli_stmt_init": [ + "mixed mysqli_stmt_init(object link)", + "Initialize statement object" + ], + "mysqli_stmt_insert_id": [ + "mixed mysqli_stmt_insert_id(object stmt)", + "Get the ID generated from the previous INSERT operation" + ], + "mysqli_stmt_next_result": [ + "bool mysqli_stmt_next_result(object link)", + "read next result from multi_query" + ], + "mysqli_stmt_num_rows": [ + "mixed mysqli_stmt_num_rows(object stmt)", + "Return the number of rows in statements result set" + ], + "mysqli_stmt_param_count": [ + "int mysqli_stmt_param_count(object stmt)", + "Return the number of parameter for the given statement" + ], + "mysqli_stmt_prepare": [ + "bool mysqli_stmt_prepare(object stmt, string query)", + "prepare server side statement with query" + ], + "mysqli_stmt_reset": [ + "bool mysqli_stmt_reset(object stmt)", + "reset a prepared statement" + ], + "mysqli_stmt_result_metadata": [ + "mixed mysqli_stmt_result_metadata(object stmt)", + "return result set from statement" + ], + "mysqli_stmt_send_long_data": [ + "bool mysqli_stmt_send_long_data(object stmt, int param_nr, string data)", + "" + ], + "mysqli_stmt_sqlstate": [ + "string mysqli_stmt_sqlstate(object stmt)", + "" + ], + "mysqli_stmt_store_result": [ + "bool mysqli_stmt_store_result(stmt)", + "" + ], + "mysqli_store_result": [ + "object mysqli_store_result(object link)", + "Buffer result set on client" + ], + "mysqli_thread_id": [ + "int mysqli_thread_id(object link)", + "Return the current thread ID" + ], + "mysqli_thread_safe": [ + "bool mysqli_thread_safe()", + "Return whether thread safety is given or not" + ], + "mysqli_use_result": [ + "mixed mysqli_use_result(object link)", + "Directly retrieve query results - do not buffer results on client side" + ], + "mysqli_warning_count": [ + "int mysqli_warning_count(object link)", + "Return number of warnings from the last query for the given link" + ], + "natcasesort": [ + "void natcasesort(array &array_arg)", + "Sort an array using case-insensitive natural sort" + ], + "natsort": [ + "void natsort(array &array_arg)", + "Sort an array using natural sort" + ], + "next": [ + "mixed next(array array_arg)", + "Move array argument's internal pointer to the next element and return it" + ], + "ngettext": [ + "string ngettext(string MSGID1, string MSGID2, int N)", + "Plural version of gettext()" + ], + "nl2br": [ + "string nl2br(string str [, bool is_xhtml])", + "Converts newlines to HTML line breaks" + ], + "nl_langinfo": [ + "string nl_langinfo(int item)", + "Query language and locale information" + ], + "normalizer_is_normalize": [ + "bool normalizer_is_normalize( string $input [, string $form = FORM_C] )", + "* Test if a string is in a given normalization form." + ], + "normalizer_normalize": [ + "string normalizer_normalize( string $input [, string $form = FORM_C] )", + "* Normalize a string." + ], + "nsapi_request_headers": [ + "array nsapi_request_headers()", + "Get all headers from the request" + ], + "nsapi_response_headers": [ + "array nsapi_response_headers()", + "Get all headers from the response" + ], + "nsapi_virtual": [ + "bool nsapi_virtual(string uri)", + "Perform an NSAPI sub-request" + ], + "number_format": [ + "string number_format(float number [, int num_decimal_places [, string dec_seperator, string thousands_seperator]])", + "Formats a number with grouped thousands" + ], + "numfmt_create": [ + "NumberFormatter numfmt_create( string $locale, int style[, string $pattern ] )", + "* Create number formatter." + ], + "numfmt_format": [ + "mixed numfmt_format( NumberFormatter $nf, mixed $num[, int type] )", + "* Format a number." + ], + "numfmt_format_currency": [ + "mixed numfmt_format_currency( NumberFormatter $nf, double $num, string $currency )", + "* Format a number as currency." + ], + "numfmt_get_attribute": [ + "mixed numfmt_get_attribute( NumberFormatter $nf, int $attr )", + "* Get formatter attribute value." + ], + "numfmt_get_error_code": [ + "int numfmt_get_error_code( NumberFormatter $nf )", + "* Get formatter's last error code." + ], + "numfmt_get_error_message": [ + "string numfmt_get_error_message( NumberFormatter $nf )", + "* Get text description for formatter's last error code." + ], + "numfmt_get_locale": [ + "string numfmt_get_locale( NumberFormatter $nf[, int type] )", + "* Get formatter locale." + ], + "numfmt_get_pattern": [ + "string numfmt_get_pattern( NumberFormatter $nf )", + "* Get formatter pattern." + ], + "numfmt_get_symbol": [ + "string numfmt_get_symbol( NumberFormatter $nf, int $attr )", + "* Get formatter symbol value." + ], + "numfmt_get_text_attribute": [ + "string numfmt_get_text_attribute( NumberFormatter $nf, int $attr )", + "* Get formatter attribute value." + ], + "numfmt_parse": [ + "mixed numfmt_parse( NumberFormatter $nf, string $str[, int $type, int &$position ])", + "* Parse a number." + ], + "numfmt_parse_currency": [ + "double numfmt_parse_currency( NumberFormatter $nf, string $str, string $¤cy[, int $&position] )", + "* Parse a number as currency." + ], + "numfmt_parse_message": [ + "array numfmt_parse_message( string $locale, string $pattern, string $source )", + "* Parse a message." + ], + "numfmt_set_attribute": [ + "bool numfmt_set_attribute( NumberFormatter $nf, int $attr, mixed $value )", + "* Get formatter attribute value." + ], + "numfmt_set_pattern": [ + "bool numfmt_set_pattern( NumberFormatter $nf, string $pattern )", + "* Set formatter pattern." + ], + "numfmt_set_symbol": [ + "bool numfmt_set_symbol( NumberFormatter $nf, int $attr, string $symbol )", + "* Set formatter symbol value." + ], + "numfmt_set_text_attribute": [ + "bool numfmt_set_text_attribute( NumberFormatter $nf, int $attr, string $value )", + "* Get formatter attribute value." + ], + "ob_clean": [ + "bool ob_clean()", + "Clean (delete) the current output buffer" + ], + "ob_end_clean": [ + "bool ob_end_clean()", + "Clean the output buffer, and delete current output buffer" + ], + "ob_end_flush": [ + "bool ob_end_flush()", + "Flush (send) the output buffer, and delete current output buffer" + ], + "ob_flush": [ + "bool ob_flush()", + "Flush (send) contents of the output buffer. The last buffer content is sent to next buffer" + ], + "ob_get_clean": [ + "bool ob_get_clean()", + "Get current buffer contents and delete current output buffer" + ], + "ob_get_contents": [ + "string ob_get_contents()", + "Return the contents of the output buffer" + ], + "ob_get_flush": [ + "bool ob_get_flush()", + "Get current buffer contents, flush (send) the output buffer, and delete current output buffer" + ], + "ob_get_length": [ + "int ob_get_length()", + "Return the length of the output buffer" + ], + "ob_get_level": [ + "int ob_get_level()", + "Return the nesting level of the output buffer" + ], + "ob_get_status": [ + "false|array ob_get_status([bool full_status])", + "Return the status of the active or all output buffers" + ], + "ob_gzhandler": [ + "string ob_gzhandler(string str, int mode)", + "Encode str based on accept-encoding setting - designed to be called from ob_start()" + ], + "ob_iconv_handler": [ + "string ob_iconv_handler(string contents, int status)", + "Returns str in output buffer converted to the iconv.output_encoding character set" + ], + "ob_implicit_flush": [ + "void ob_implicit_flush([int flag])", + "Turn implicit flush on/off and is equivalent to calling flush() after every output call" + ], + "ob_list_handlers": [ + "false|array ob_list_handlers()", + "* List all output_buffers in an array" + ], + "ob_start": [ + "bool ob_start([ string|array user_function [, int chunk_size [, bool erase]]])", + "Turn on Output Buffering (specifying an optional output handler)." + ], + "oci_bind_array_by_name": [ + "bool oci_bind_array_by_name(resource stmt, string name, array &var, int max_table_length [, int max_item_length [, int type ]])", + "Bind a PHP array to an Oracle PL/SQL type by name" + ], + "oci_bind_by_name": [ + "bool oci_bind_by_name(resource stmt, string name, mixed &var, [, int maxlength [, int type]])", + "Bind a PHP variable to an Oracle placeholder by name" + ], + "oci_cancel": [ + "bool oci_cancel(resource stmt)", + "Cancel reading from a cursor" + ], + "oci_close": [ + "bool oci_close(resource connection)", + "Disconnect from database" + ], + "oci_collection_append": [ + "bool oci_collection_append(string value)", + "Append an object to the collection" + ], + "oci_collection_assign": [ + "bool oci_collection_assign(object from)", + "Assign a collection from another existing collection" + ], + "oci_collection_element_assign": [ + "bool oci_collection_element_assign(int index, string val)", + "Assign element val to collection at index ndx" + ], + "oci_collection_element_get": [ + "string oci_collection_element_get(int ndx)", + "Retrieve the value at collection index ndx" + ], + "oci_collection_max": [ + "int oci_collection_max()", + "Return the max value of a collection. For a varray this is the maximum length of the array" + ], + "oci_collection_size": [ + "int oci_collection_size()", + "Return the size of a collection" + ], + "oci_collection_trim": [ + "bool oci_collection_trim(int num)", + "Trim num elements from the end of a collection" + ], + "oci_commit": [ + "bool oci_commit(resource connection)", + "Commit the current context" + ], + "oci_connect": [ + "resource oci_connect(string user, string pass [, string db [, string charset [, int session_mode ]])", + "Connect to an Oracle database and log on. Returns a new session." + ], + "oci_define_by_name": [ + "bool oci_define_by_name(resource stmt, string name, mixed &var [, int type])", + "Define a PHP variable to an Oracle column by name" + ], + "oci_error": [ + "array oci_error([resource stmt|connection|global])", + "Return the last error of stmt|connection|global. If no error happened returns false." + ], + "oci_execute": [ + "bool oci_execute(resource stmt [, int mode])", + "Execute a parsed statement" + ], + "oci_fetch": [ + "bool oci_fetch(resource stmt)", + "Prepare a new row of data for reading" + ], + "oci_fetch_all": [ + "int oci_fetch_all(resource stmt, array &output[, int skip[, int maxrows[, int flags]]])", + "Fetch all rows of result data into an array" + ], + "oci_fetch_array": [ + "array oci_fetch_array( resource stmt [, int mode ])", + "Fetch a result row as an array" + ], + "oci_fetch_assoc": [ + "array oci_fetch_assoc( resource stmt )", + "Fetch a result row as an associative array" + ], + "oci_fetch_object": [ + "object oci_fetch_object( resource stmt )", + "Fetch a result row as an object" + ], + "oci_fetch_row": [ + "array oci_fetch_row( resource stmt )", + "Fetch a result row as an enumerated array" + ], + "oci_field_is_null": [ + "bool oci_field_is_null(resource stmt, int col)", + "Tell whether a column is NULL" + ], + "oci_field_name": [ + "string oci_field_name(resource stmt, int col)", + "Tell the name of a column" + ], + "oci_field_precision": [ + "int oci_field_precision(resource stmt, int col)", + "Tell the precision of a column" + ], + "oci_field_scale": [ + "int oci_field_scale(resource stmt, int col)", + "Tell the scale of a column" + ], + "oci_field_size": [ + "int oci_field_size(resource stmt, int col)", + "Tell the maximum data size of a column" + ], + "oci_field_type": [ + "mixed oci_field_type(resource stmt, int col)", + "Tell the data type of a column" + ], + "oci_field_type_raw": [ + "int oci_field_type_raw(resource stmt, int col)", + "Tell the raw oracle data type of a column" + ], + "oci_free_collection": [ + "bool oci_free_collection()", + "Deletes collection object" + ], + "oci_free_descriptor": [ + "bool oci_free_descriptor()", + "Deletes large object description" + ], + "oci_free_statement": [ + "bool oci_free_statement(resource stmt)", + "Free all resources associated with a statement" + ], + "oci_internal_debug": [ + "void oci_internal_debug(int onoff)", + "Toggle internal debugging output for the OCI extension" + ], + "oci_lob_append": [ + "bool oci_lob_append( object lob )", + "Appends data from a LOB to another LOB" + ], + "oci_lob_close": [ + "bool oci_lob_close()", + "Closes lob descriptor" + ], + "oci_lob_copy": [ + "bool oci_lob_copy( object lob_to, object lob_from [, int length ] )", + "Copies data from a LOB to another LOB" + ], + "oci_lob_eof": [ + "bool oci_lob_eof()", + "Checks if EOF is reached" + ], + "oci_lob_erase": [ + "int oci_lob_erase( [ int offset [, int length ] ] )", + "Erases a specified portion of the internal LOB, starting at a specified offset" + ], + "oci_lob_export": [ + "bool oci_lob_export([string filename [, int start [, int length]]])", + "Writes a large object into a file" + ], + "oci_lob_flush": [ + "bool oci_lob_flush( [ int flag ] )", + "Flushes the LOB buffer" + ], + "oci_lob_import": [ + "bool oci_lob_import( string filename )", + "Loads file into a LOB" + ], + "oci_lob_is_equal": [ + "bool oci_lob_is_equal( object lob1, object lob2 )", + "Tests to see if two LOB/FILE locators are equal" + ], + "oci_lob_load": [ + "string oci_lob_load()", + "Loads a large object" + ], + "oci_lob_read": [ + "string oci_lob_read( int length )", + "Reads particular part of a large object" + ], + "oci_lob_rewind": [ + "bool oci_lob_rewind()", + "Rewind pointer of a LOB" + ], + "oci_lob_save": [ + "bool oci_lob_save( string data [, int offset ])", + "Saves a large object" + ], + "oci_lob_seek": [ + "bool oci_lob_seek( int offset [, int whence ])", + "Moves the pointer of a LOB" + ], + "oci_lob_size": [ + "int oci_lob_size()", + "Returns size of a large object" + ], + "oci_lob_tell": [ + "int oci_lob_tell()", + "Tells LOB pointer position" + ], + "oci_lob_truncate": [ + "bool oci_lob_truncate( [ int length ])", + "Truncates a LOB" + ], + "oci_lob_write": [ + "int oci_lob_write( string string [, int length ])", + "Writes data to current position of a LOB" + ], + "oci_lob_write_temporary": [ + "bool oci_lob_write_temporary(string var [, int lob_type])", + "Writes temporary blob" + ], + "oci_new_collection": [ + "object oci_new_collection(resource connection, string tdo [, string schema])", + "Initialize a new collection" + ], + "oci_new_connect": [ + "resource oci_new_connect(string user, string pass [, string db])", + "Connect to an Oracle database and log on. Returns a new session." + ], + "oci_new_cursor": [ + "resource oci_new_cursor(resource connection)", + "Return a new cursor (Statement-Handle) - use this to bind ref-cursors!" + ], + "oci_new_descriptor": [ + "object oci_new_descriptor(resource connection [, int type])", + "Initialize a new empty descriptor LOB/FILE (LOB is default)" + ], + "oci_num_fields": [ + "int oci_num_fields(resource stmt)", + "Return the number of result columns in a statement" + ], + "oci_num_rows": [ + "int oci_num_rows(resource stmt)", + "Return the row count of an OCI statement" + ], + "oci_parse": [ + "resource oci_parse(resource connection, string query)", + "Parse a query and return a statement" + ], + "oci_password_change": [ + "bool oci_password_change(resource connection, string username, string old_password, string new_password)", + "Changes the password of an account" + ], + "oci_pconnect": [ + "resource oci_pconnect(string user, string pass [, string db [, string charset ]])", + "Connect to an Oracle database using a persistent connection and log on. Returns a new session." + ], + "oci_result": [ + "string oci_result(resource stmt, mixed column)", + "Return a single column of result data" + ], + "oci_rollback": [ + "bool oci_rollback(resource connection)", + "Rollback the current context" + ], + "oci_server_version": [ + "string oci_server_version(resource connection)", + "Return a string containing server version information" + ], + "oci_set_action": [ + "bool oci_set_action(resource connection, string value)", + "Sets the action attribute on the connection" + ], + "oci_set_client_identifier": [ + "bool oci_set_client_identifier(resource connection, string value)", + "Sets the client identifier attribute on the connection" + ], + "oci_set_client_info": [ + "bool oci_set_client_info(resource connection, string value)", + "Sets the client info attribute on the connection" + ], + "oci_set_edition": [ + "bool oci_set_edition(string value)", + "Sets the edition attribute for all subsequent connections created" + ], + "oci_set_module_name": [ + "bool oci_set_module_name(resource connection, string value)", + "Sets the module attribute on the connection" + ], + "oci_set_prefetch": [ + "bool oci_set_prefetch(resource stmt, int prefetch_rows)", + "Sets the number of rows to be prefetched on execute to prefetch_rows for stmt" + ], + "oci_statement_type": [ + "string oci_statement_type(resource stmt)", + "Return the query type of an OCI statement" + ], + "ocifetchinto": [ + "int ocifetchinto(resource stmt, array &output [, int mode])", + "Fetch a row of result data into an array" + ], + "ocigetbufferinglob": [ + "bool ocigetbufferinglob()", + "Returns current state of buffering for a LOB" + ], + "ocisetbufferinglob": [ + "bool ocisetbufferinglob( bool flag )", + "Enables/disables buffering for a LOB" + ], + "octdec": [ + "int octdec(string octal_number)", + "Returns the decimal equivalent of an octal string" + ], + "odbc_autocommit": [ + "mixed odbc_autocommit(resource connection_id [, int OnOff])", + "Toggle autocommit mode or get status" + ], + "odbc_binmode": [ + "bool odbc_binmode(int result_id, int mode)", + "Handle binary column data" + ], + "odbc_close": [ + "void odbc_close(resource connection_id)", + "Close an ODBC connection" + ], + "odbc_close_all": [ + "void odbc_close_all()", + "Close all ODBC connections" + ], + "odbc_columnprivileges": [ + "resource odbc_columnprivileges(resource connection_id, string catalog, string schema, string table, string column)", + "Returns a result identifier that can be used to fetch a list of columns and associated privileges for the specified table" + ], + "odbc_columns": [ + "resource odbc_columns(resource connection_id [, string qualifier [, string owner [, string table_name [, string column_name]]]])", + "Returns a result identifier that can be used to fetch a list of column names in specified tables" + ], + "odbc_commit": [ + "bool odbc_commit(resource connection_id)", + "Commit an ODBC transaction" + ], + "odbc_connect": [ + "resource odbc_connect(string DSN, string user, string password [, int cursor_option])", + "Connect to a datasource" + ], + "odbc_cursor": [ + "string odbc_cursor(resource result_id)", + "Get cursor name" + ], + "odbc_data_source": [ + "array odbc_data_source(resource connection_id, int fetch_type)", + "Return information about the currently connected data source" + ], + "odbc_error": [ + "string odbc_error([resource connection_id])", + "Get the last error code" + ], + "odbc_errormsg": [ + "string odbc_errormsg([resource connection_id])", + "Get the last error message" + ], + "odbc_exec": [ + "resource odbc_exec(resource connection_id, string query [, int flags])", + "Prepare and execute an SQL statement" + ], + "odbc_execute": [ + "bool odbc_execute(resource result_id [, array parameters_array])", + "Execute a prepared statement" + ], + "odbc_fetch_array": [ + "array odbc_fetch_array(int result [, int rownumber])", + "Fetch a result row as an associative array" + ], + "odbc_fetch_into": [ + "int odbc_fetch_into(resource result_id, array &result_array, [, int rownumber])", + "Fetch one result row into an array" + ], + "odbc_fetch_object": [ + "object odbc_fetch_object(int result [, int rownumber])", + "Fetch a result row as an object" + ], + "odbc_fetch_row": [ + "bool odbc_fetch_row(resource result_id [, int row_number])", + "Fetch a row" + ], + "odbc_field_len": [ + "int odbc_field_len(resource result_id, int field_number)", + "Get the length (precision) of a column" + ], + "odbc_field_name": [ + "string odbc_field_name(resource result_id, int field_number)", + "Get a column name" + ], + "odbc_field_num": [ + "int odbc_field_num(resource result_id, string field_name)", + "Return column number" + ], + "odbc_field_scale": [ + "int odbc_field_scale(resource result_id, int field_number)", + "Get the scale of a column" + ], + "odbc_field_type": [ + "string odbc_field_type(resource result_id, int field_number)", + "Get the datatype of a column" + ], + "odbc_foreignkeys": [ + "resource odbc_foreignkeys(resource connection_id, string pk_qualifier, string pk_owner, string pk_table, string fk_qualifier, string fk_owner, string fk_table)", + "Returns a result identifier to either a list of foreign keys in the specified table or a list of foreign keys in other tables that refer to the primary key in the specified table" + ], + "odbc_free_result": [ + "bool odbc_free_result(resource result_id)", + "Free resources associated with a result" + ], + "odbc_gettypeinfo": [ + "resource odbc_gettypeinfo(resource connection_id [, int data_type])", + "Returns a result identifier containing information about data types supported by the data source" + ], + "odbc_longreadlen": [ + "bool odbc_longreadlen(int result_id, int length)", + "Handle LONG columns" + ], + "odbc_next_result": [ + "bool odbc_next_result(resource result_id)", + "Checks if multiple results are avaiable" + ], + "odbc_num_fields": [ + "int odbc_num_fields(resource result_id)", + "Get number of columns in a result" + ], + "odbc_num_rows": [ + "int odbc_num_rows(resource result_id)", + "Get number of rows in a result" + ], + "odbc_pconnect": [ + "resource odbc_pconnect(string DSN, string user, string password [, int cursor_option])", + "Establish a persistent connection to a datasource" + ], + "odbc_prepare": [ + "resource odbc_prepare(resource connection_id, string query)", + "Prepares a statement for execution" + ], + "odbc_primarykeys": [ + "resource odbc_primarykeys(resource connection_id, string qualifier, string owner, string table)", + "Returns a result identifier listing the column names that comprise the primary key for a table" + ], + "odbc_procedurecolumns": [ + "resource odbc_procedurecolumns(resource connection_id [, string qualifier, string owner, string proc, string column])", + "Returns a result identifier containing the list of input and output parameters, as well as the columns that make up the result set for the specified procedures" + ], + "odbc_procedures": [ + "resource odbc_procedures(resource connection_id [, string qualifier, string owner, string name])", + "Returns a result identifier containg the list of procedure names in a datasource" + ], + "odbc_result": [ + "mixed odbc_result(resource result_id, mixed field)", + "Get result data" + ], + "odbc_result_all": [ + "int odbc_result_all(resource result_id [, string format])", + "Print result as HTML table" + ], + "odbc_rollback": [ + "bool odbc_rollback(resource connection_id)", + "Rollback a transaction" + ], + "odbc_setoption": [ + "bool odbc_setoption(resource conn_id|result_id, int which, int option, int value)", + "Sets connection or statement options" + ], + "odbc_specialcolumns": [ + "resource odbc_specialcolumns(resource connection_id, int type, string qualifier, string owner, string table, int scope, int nullable)", + "Returns a result identifier containing either the optimal set of columns that uniquely identifies a row in the table or columns that are automatically updated when any value in the row is updated by a transaction" + ], + "odbc_statistics": [ + "resource odbc_statistics(resource connection_id, string qualifier, string owner, string name, int unique, int accuracy)", + "Returns a result identifier that contains statistics about a single table and the indexes associated with the table" + ], + "odbc_tableprivileges": [ + "resource odbc_tableprivileges(resource connection_id, string qualifier, string owner, string name)", + "Returns a result identifier containing a list of tables and the privileges associated with each table" + ], + "odbc_tables": [ + "resource odbc_tables(resource connection_id [, string qualifier [, string owner [, string name [, string table_types]]]])", + "Call the SQLTables function" + ], + "opendir": [ + "mixed opendir(string path[, resource context])", + "Open a directory and return a dir_handle" + ], + "openlog": [ + "bool openlog(string ident, int option, int facility)", + "Open connection to system logger" + ], + "openssl_csr_export": [ + "bool openssl_csr_export(resource csr, string &out [, bool notext=true])", + "Exports a CSR to file or a var" + ], + "openssl_csr_export_to_file": [ + "bool openssl_csr_export_to_file(resource csr, string outfilename [, bool notext=true])", + "Exports a CSR to file" + ], + "openssl_csr_get_public_key": [ + "mixed openssl_csr_get_public_key(mixed csr)", + "Returns the subject of a CERT or FALSE on error" + ], + "openssl_csr_get_subject": [ + "mixed openssl_csr_get_subject(mixed csr)", + "Returns the subject of a CERT or FALSE on error" + ], + "openssl_csr_new": [ + "bool openssl_csr_new(array dn, resource &privkey [, array configargs [, array extraattribs]])", + "Generates a privkey and CSR" + ], + "openssl_csr_sign": [ + "resource openssl_csr_sign(mixed csr, mixed x509, mixed priv_key, long days [, array config_args [, long serial]])", + "Signs a cert with another CERT" + ], + "openssl_decrypt": [ + "string openssl_decrypt(string data, string method, string password [, bool raw_input=false])", + "Takes raw or base64 encoded string and dectupt it using given method and key" + ], + "openssl_dh_compute_key": [ + "string openssl_dh_compute_key(string pub_key, resource dh_key)", + "Computes shared sicret for public value of remote DH key and local DH key" + ], + "openssl_digest": [ + "string openssl_digest(string data, string method [, bool raw_output=false])", + "Computes digest hash value for given data using given method, returns raw or binhex encoded string" + ], + "openssl_encrypt": [ + "string openssl_encrypt(string data, string method, string password [, bool raw_output=false])", + "Encrypts given data with given method and key, returns raw or base64 encoded string" + ], + "openssl_error_string": [ + "mixed openssl_error_string()", + "Returns a description of the last error, and alters the index of the error messages. Returns false when the are no more messages" + ], + "openssl_get_cipher_methods": [ + "array openssl_get_cipher_methods([bool aliases = false])", + "Return array of available cipher methods" + ], + "openssl_get_md_methods": [ + "array openssl_get_md_methods([bool aliases = false])", + "Return array of available digest methods" + ], + "openssl_open": [ + "bool openssl_open(string data, &string opendata, string ekey, mixed privkey)", + "Opens data" + ], + "openssl_pkcs12_export": [ + "bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])", + "Creates and exports a PKCS12 to a var" + ], + "openssl_pkcs12_export_to_file": [ + "bool openssl_pkcs12_export_to_file(mixed x509, string filename, mixed priv_key, string pass[, array args])", + "Creates and exports a PKCS to file" + ], + "openssl_pkcs12_read": [ + "bool openssl_pkcs12_read(string PKCS12, array &certs, string pass)", + "Parses a PKCS12 to an array" + ], + "openssl_pkcs7_decrypt": [ + "bool openssl_pkcs7_decrypt(string infilename, string outfilename, mixed recipcert [, mixed recipkey])", + "Decrypts the S/MIME message in the file name infilename and output the results to the file name outfilename. recipcert is a CERT for one of the recipients. recipkey specifies the private key matching recipcert, if recipcert does not include the key" + ], + "openssl_pkcs7_encrypt": [ + "bool openssl_pkcs7_encrypt(string infile, string outfile, mixed recipcerts, array headers [, long flags [, long cipher]])", + "Encrypts the message in the file named infile with the certificates in recipcerts and output the result to the file named outfile" + ], + "openssl_pkcs7_sign": [ + "bool openssl_pkcs7_sign(string infile, string outfile, mixed signcert, mixed signkey, array headers [, long flags [, string extracertsfilename]])", + "Signs the MIME message in the file named infile with signcert/signkey and output the result to file name outfile. headers lists plain text headers to exclude from the signed portion of the message, and should include to, from and subject as a minimum" + ], + "openssl_pkcs7_verify": [ + "bool openssl_pkcs7_verify(string filename, long flags [, string signerscerts [, array cainfo [, string extracerts [, string content]]]])", + "Verifys that the data block is intact, the signer is who they say they are, and returns the CERTs of the signers" + ], + "openssl_pkey_export": [ + "bool openssl_pkey_export(mixed key, &mixed out [, string passphrase [, array config_args]])", + "Gets an exportable representation of a key into a string or file" + ], + "openssl_pkey_export_to_file": [ + "bool openssl_pkey_export_to_file(mixed key, string outfilename [, string passphrase, array config_args)", + "Gets an exportable representation of a key into a file" + ], + "openssl_pkey_free": [ + "void openssl_pkey_free(int key)", + "Frees a key" + ], + "openssl_pkey_get_details": [ + "resource openssl_pkey_get_details(resource key)", + "returns an array with the key details (bits, pkey, type)" + ], + "openssl_pkey_get_private": [ + "int openssl_pkey_get_private(string key [, string passphrase])", + "Gets private keys" + ], + "openssl_pkey_get_public": [ + "int openssl_pkey_get_public(mixed cert)", + "Gets public key from X.509 certificate" + ], + "openssl_pkey_new": [ + "resource openssl_pkey_new([array configargs])", + "Generates a new private key" + ], + "openssl_private_decrypt": [ + "bool openssl_private_decrypt(string data, string &decrypted, mixed key [, int padding])", + "Decrypts data with private key" + ], + "openssl_private_encrypt": [ + "bool openssl_private_encrypt(string data, string &crypted, mixed key [, int padding])", + "Encrypts data with private key" + ], + "openssl_public_decrypt": [ + "bool openssl_public_decrypt(string data, string &crypted, resource key [, int padding])", + "Decrypts data with public key" + ], + "openssl_public_encrypt": [ + "bool openssl_public_encrypt(string data, string &crypted, mixed key [, int padding])", + "Encrypts data with public key" + ], + "openssl_random_pseudo_bytes": [ + "string openssl_random_pseudo_bytes(integer length [, &bool returned_strong_result])", + "Returns a string of the length specified filled with random pseudo bytes" + ], + "openssl_seal": [ + "int openssl_seal(string data, &string sealdata, &array ekeys, array pubkeys)", + "Seals data" + ], + "openssl_sign": [ + "bool openssl_sign(string data, &string signature, mixed key[, mixed method])", + "Signs data" + ], + "openssl_verify": [ + "int openssl_verify(string data, string signature, mixed key[, mixed method])", + "Verifys data" + ], + "openssl_x509_check_private_key": [ + "bool openssl_x509_check_private_key(mixed cert, mixed key)", + "Checks if a private key corresponds to a CERT" + ], + "openssl_x509_checkpurpose": [ + "int openssl_x509_checkpurpose(mixed x509cert, int purpose, array cainfo [, string untrustedfile])", + "Checks the CERT to see if it can be used for the purpose in purpose. cainfo holds information about trusted CAs" + ], + "openssl_x509_export": [ + "bool openssl_x509_export(mixed x509, string &out [, bool notext = true])", + "Exports a CERT to file or a var" + ], + "openssl_x509_export_to_file": [ + "bool openssl_x509_export_to_file(mixed x509, string outfilename [, bool notext = true])", + "Exports a CERT to file or a var" + ], + "openssl_x509_free": [ + "void openssl_x509_free(resource x509)", + "Frees X.509 certificates" + ], + "openssl_x509_parse": [ + "array openssl_x509_parse(mixed x509 [, bool shortnames=true])", + "Returns an array of the fields/values of the CERT" + ], + "openssl_x509_read": [ + "resource openssl_x509_read(mixed cert)", + "Reads X.509 certificates" + ], + "ord": [ + "int ord(string character)", + "Returns ASCII value of character" + ], + "output_add_rewrite_var": [ + "bool output_add_rewrite_var(string name, string value)", + "Add URL rewriter values" + ], + "output_reset_rewrite_vars": [ + "bool output_reset_rewrite_vars()", + "Reset(clear) URL rewriter values" + ], + "pack": [ + "string pack(string format, mixed arg1 [, mixed arg2 [, mixed ...]])", + "Takes one or more arguments and packs them into a binary string according to the format argument" + ], + "parse_ini_file": [ + "array parse_ini_file(string filename [, bool process_sections [, int scanner_mode]])", + "Parse configuration file" + ], + "parse_ini_string": [ + "array parse_ini_string(string ini_string [, bool process_sections [, int scanner_mode]])", + "Parse configuration string" + ], + "parse_locale": [ + "static array parse_locale($locale)", + "* parses a locale-id into an array the different parts of it" + ], + "parse_str": [ + "void parse_str(string encoded_string [, array result])", + "Parses GET/POST/COOKIE data and sets global variables" + ], + "parse_url": [ + "mixed parse_url(string url, [int url_component])", + "Parse a URL and return its components" + ], + "passthru": [ + "void passthru(string command [, int &return_value])", + "Execute an external program and display raw output" + ], + "pathinfo": [ + "array pathinfo(string path[, int options])", + "Returns information about a certain string" + ], + "pclose": [ + "int pclose(resource fp)", + "Close a file pointer opened by popen()" + ], + "pcnlt_sigwaitinfo": [ + "int pcnlt_sigwaitinfo(array set[, array &siginfo])", + "Synchronously wait for queued signals" + ], + "pcntl_alarm": [ + "int pcntl_alarm(int seconds)", + "Set an alarm clock for delivery of a signal" + ], + "pcntl_exec": [ + "bool pcntl_exec(string path [, array args [, array envs]])", + "Executes specified program in current process space as defined by exec(2)" + ], + "pcntl_fork": [ + "int pcntl_fork()", + "Forks the currently running process following the same behavior as the UNIX fork() system call" + ], + "pcntl_getpriority": [ + "int pcntl_getpriority([int pid [, int process_identifier]])", + "Get the priority of any process" + ], + "pcntl_setpriority": [ + "bool pcntl_setpriority(int priority [, int pid [, int process_identifier]])", + "Change the priority of any process" + ], + "pcntl_signal": [ + "bool pcntl_signal(int signo, callback handle [, bool restart_syscalls])", + "Assigns a system signal handler to a PHP function" + ], + "pcntl_signal_dispatch": [ + "bool pcntl_signal_dispatch()", + "Dispatch signals to signal handlers" + ], + "pcntl_sigprocmask": [ + "bool pcntl_sigprocmask(int how, array set[, array &oldset])", + "Examine and change blocked signals" + ], + "pcntl_sigtimedwait": [ + "int pcntl_sigtimedwait(array set[, array &siginfo[, int seconds[, int nanoseconds]]])", + "Wait for queued signals" + ], + "pcntl_wait": [ + "int pcntl_wait(int &status)", + "Waits on or returns the status of a forked child as defined by the waitpid() system call" + ], + "pcntl_waitpid": [ + "int pcntl_waitpid(int pid, int &status, int options)", + "Waits on or returns the status of a forked child as defined by the waitpid() system call" + ], + "pcntl_wexitstatus": [ + "int pcntl_wexitstatus(int status)", + "Returns the status code of a child's exit" + ], + "pcntl_wifexited": [ + "bool pcntl_wifexited(int status)", + "Returns true if the child status code represents a successful exit" + ], + "pcntl_wifsignaled": [ + "bool pcntl_wifsignaled(int status)", + "Returns true if the child status code represents a process that was terminated due to a signal" + ], + "pcntl_wifstopped": [ + "bool pcntl_wifstopped(int status)", + "Returns true if the child status code represents a stopped process (WUNTRACED must have been used with waitpid)" + ], + "pcntl_wstopsig": [ + "int pcntl_wstopsig(int status)", + "Returns the number of the signal that caused the process to stop who's status code is passed" + ], + "pcntl_wtermsig": [ + "int pcntl_wtermsig(int status)", + "Returns the number of the signal that terminated the process who's status code is passed" + ], + "pdo_drivers": [ + "array pdo_drivers()", + "Return array of available PDO drivers" + ], + "pfsockopen": [ + "resource pfsockopen(string hostname, int port [, int errno [, string errstr [, float timeout]]])", + "Open persistent Internet or Unix domain socket connection" + ], + "pg_affected_rows": [ + "int pg_affected_rows(resource result)", + "Returns the number of affected tuples" + ], + "pg_cancel_query": [ + "bool pg_cancel_query(resource connection)", + "Cancel request" + ], + "pg_client_encoding": [ + "string pg_client_encoding([resource connection])", + "Get the current client encoding" + ], + "pg_close": [ + "bool pg_close([resource connection])", + "Close a PostgreSQL connection" + ], + "pg_connect": [ + "resource pg_connect(string connection_string[, int connect_type] | [string host, string port [, string options [, string tty,]]] string database)", + "Open a PostgreSQL connection" + ], + "pg_connection_busy": [ + "bool pg_connection_busy(resource connection)", + "Get connection is busy or not" + ], + "pg_connection_reset": [ + "bool pg_connection_reset(resource connection)", + "Reset connection (reconnect)" + ], + "pg_connection_status": [ + "int pg_connection_status(resource connnection)", + "Get connection status" + ], + "pg_convert": [ + "array pg_convert(resource db, string table, array values[, int options])", + "Check and convert values for PostgreSQL SQL statement" + ], + "pg_copy_from": [ + "bool pg_copy_from(resource connection, string table_name , array rows [, string delimiter [, string null_as]])", + "Copy table from array" + ], + "pg_copy_to": [ + "array pg_copy_to(resource connection, string table_name [, string delimiter [, string null_as]])", + "Copy table to array" + ], + "pg_dbname": [ + "string pg_dbname([resource connection])", + "Get the database name" + ], + "pg_delete": [ + "mixed pg_delete(resource db, string table, array ids[, int options])", + "Delete records has ids (id => value)" + ], + "pg_end_copy": [ + "bool pg_end_copy([resource connection])", + "Sync with backend. Completes the Copy command" + ], + "pg_escape_bytea": [ + "string pg_escape_bytea([resource connection,] string data)", + "Escape binary for bytea type" + ], + "pg_escape_string": [ + "string pg_escape_string([resource connection,] string data)", + "Escape string for text/char type" + ], + "pg_execute": [ + "resource pg_execute([resource connection,] string stmtname, array params)", + "Execute a prepared query" + ], + "pg_fetch_all": [ + "array pg_fetch_all(resource result)", + "Fetch all rows into array" + ], + "pg_fetch_all_columns": [ + "array pg_fetch_all_columns(resource result [, int column_number])", + "Fetch all rows into array" + ], + "pg_fetch_array": [ + "array pg_fetch_array(resource result [, int row [, int result_type]])", + "Fetch a row as an array" + ], + "pg_fetch_assoc": [ + "array pg_fetch_assoc(resource result [, int row])", + "Fetch a row as an assoc array" + ], + "pg_fetch_object": [ + "object pg_fetch_object(resource result [, int row [, string class_name [, NULL|array ctor_params]]])", + "Fetch a row as an object" + ], + "pg_fetch_result": [ + "mixed pg_fetch_result(resource result, [int row_number,] mixed field_name)", + "Returns values from a result identifier" + ], + "pg_fetch_row": [ + "array pg_fetch_row(resource result [, int row [, int result_type]])", + "Get a row as an enumerated array" + ], + "pg_field_is_null": [ + "int pg_field_is_null(resource result, [int row,] mixed field_name_or_number)", + "Test if a field is NULL" + ], + "pg_field_name": [ + "string pg_field_name(resource result, int field_number)", + "Returns the name of the field" + ], + "pg_field_num": [ + "int pg_field_num(resource result, string field_name)", + "Returns the field number of the named field" + ], + "pg_field_prtlen": [ + "int pg_field_prtlen(resource result, [int row,] mixed field_name_or_number)", + "Returns the printed length" + ], + "pg_field_size": [ + "int pg_field_size(resource result, int field_number)", + "Returns the internal size of the field" + ], + "pg_field_table": [ + "mixed pg_field_table(resource result, int field_number[, bool oid_only])", + "Returns the name of the table field belongs to, or table's oid if oid_only is true" + ], + "pg_field_type": [ + "string pg_field_type(resource result, int field_number)", + "Returns the type name for the given field" + ], + "pg_field_type_oid": [ + "string pg_field_type_oid(resource result, int field_number)", + "Returns the type oid for the given field" + ], + "pg_free_result": [ + "bool pg_free_result(resource result)", + "Free result memory" + ], + "pg_get_notify": [ + "array pg_get_notify([resource connection[, result_type]])", + "Get asynchronous notification" + ], + "pg_get_pid": [ + "int pg_get_pid([resource connection)", + "Get backend(server) pid" + ], + "pg_get_result": [ + "resource pg_get_result(resource connection)", + "Get asynchronous query result" + ], + "pg_host": [ + "string pg_host([resource connection])", + "Returns the host name associated with the connection" + ], + "pg_insert": [ + "mixed pg_insert(resource db, string table, array values[, int options])", + "Insert values (filed => value) to table" + ], + "pg_last_error": [ + "string pg_last_error([resource connection])", + "Get the error message string" + ], + "pg_last_notice": [ + "string pg_last_notice(resource connection)", + "Returns the last notice set by the backend" + ], + "pg_last_oid": [ + "string pg_last_oid(resource result)", + "Returns the last object identifier" + ], + "pg_lo_close": [ + "bool pg_lo_close(resource large_object)", + "Close a large object" + ], + "pg_lo_create": [ + "mixed pg_lo_create([resource connection],[mixed large_object_oid])", + "Create a large object" + ], + "pg_lo_export": [ + "bool pg_lo_export([resource connection, ] int objoid, string filename)", + "Export large object direct to filesystem" + ], + "pg_lo_import": [ + "int pg_lo_import([resource connection, ] string filename [, mixed oid])", + "Import large object direct from filesystem" + ], + "pg_lo_open": [ + "resource pg_lo_open([resource connection,] int large_object_oid, string mode)", + "Open a large object and return fd" + ], + "pg_lo_read": [ + "string pg_lo_read(resource large_object [, int len])", + "Read a large object" + ], + "pg_lo_read_all": [ + "int pg_lo_read_all(resource large_object)", + "Read a large object and send straight to browser" + ], + "pg_lo_seek": [ + "bool pg_lo_seek(resource large_object, int offset [, int whence])", + "Seeks position of large object" + ], + "pg_lo_tell": [ + "int pg_lo_tell(resource large_object)", + "Returns current position of large object" + ], + "pg_lo_unlink": [ + "bool pg_lo_unlink([resource connection,] string large_object_oid)", + "Delete a large object" + ], + "pg_lo_write": [ + "int pg_lo_write(resource large_object, string buf [, int len])", + "Write a large object" + ], + "pg_meta_data": [ + "array pg_meta_data(resource db, string table)", + "Get meta_data" + ], + "pg_num_fields": [ + "int pg_num_fields(resource result)", + "Return the number of fields in the result" + ], + "pg_num_rows": [ + "int pg_num_rows(resource result)", + "Return the number of rows in the result" + ], + "pg_options": [ + "string pg_options([resource connection])", + "Get the options associated with the connection" + ], + "pg_parameter_status": [ + "string|false pg_parameter_status([resource connection,] string param_name)", + "Returns the value of a server parameter" + ], + "pg_pconnect": [ + "resource pg_pconnect(string connection_string | [string host, string port [, string options [, string tty,]]] string database)", + "Open a persistent PostgreSQL connection" + ], + "pg_ping": [ + "bool pg_ping([resource connection])", + "Ping database. If connection is bad, try to reconnect." + ], + "pg_port": [ + "int pg_port([resource connection])", + "Return the port number associated with the connection" + ], + "pg_prepare": [ + "resource pg_prepare([resource connection,] string stmtname, string query)", + "Prepare a query for future execution" + ], + "pg_put_line": [ + "bool pg_put_line([resource connection,] string query)", + "Send null-terminated string to backend server" + ], + "pg_query": [ + "resource pg_query([resource connection,] string query)", + "Execute a query" + ], + "pg_query_params": [ + "resource pg_query_params([resource connection,] string query, array params)", + "Execute a query" + ], + "pg_result_error": [ + "string pg_result_error(resource result)", + "Get error message associated with result" + ], + "pg_result_error_field": [ + "string pg_result_error_field(resource result, int fieldcode)", + "Get error message field associated with result" + ], + "pg_result_seek": [ + "bool pg_result_seek(resource result, int offset)", + "Set internal row offset" + ], + "pg_result_status": [ + "mixed pg_result_status(resource result[, long result_type])", + "Get status of query result" + ], + "pg_select": [ + "mixed pg_select(resource db, string table, array ids[, int options])", + "Select records that has ids (id => value)" + ], + "pg_send_execute": [ + "bool pg_send_execute(resource connection, string stmtname, array params)", + "Executes prevriously prepared stmtname asynchronously" + ], + "pg_send_prepare": [ + "bool pg_send_prepare(resource connection, string stmtname, string query)", + "Asynchronously prepare a query for future execution" + ], + "pg_send_query": [ + "bool pg_send_query(resource connection, string query)", + "Send asynchronous query" + ], + "pg_send_query_params": [ + "bool pg_send_query_params(resource connection, string query, array params)", + "Send asynchronous parameterized query" + ], + "pg_set_client_encoding": [ + "int pg_set_client_encoding([resource connection,] string encoding)", + "Set client encoding" + ], + "pg_set_error_verbosity": [ + "int pg_set_error_verbosity([resource connection,] int verbosity)", + "Set error verbosity" + ], + "pg_trace": [ + "bool pg_trace(string filename [, string mode [, resource connection]])", + "Enable tracing a PostgreSQL connection" + ], + "pg_transaction_status": [ + "int pg_transaction_status(resource connnection)", + "Get transaction status" + ], + "pg_tty": [ + "string pg_tty([resource connection])", + "Return the tty name associated with the connection" + ], + "pg_unescape_bytea": [ + "string pg_unescape_bytea(string data)", + "Unescape binary for bytea type" + ], + "pg_untrace": [ + "bool pg_untrace([resource connection])", + "Disable tracing of a PostgreSQL connection" + ], + "pg_update": [ + "mixed pg_update(resource db, string table, array fields, array ids[, int options])", + "Update table using values (field => value) and ids (id => value)" + ], + "pg_version": [ + "array pg_version([resource connection])", + "Returns an array with client, protocol and server version (when available)" + ], + "php_egg_logo_guid": [ + "string php_egg_logo_guid()", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_ini_loaded_file": [ + "string php_ini_loaded_file()", + "Return the actual loaded ini filename" + ], + "php_ini_scanned_files": [ + "string php_ini_scanned_files()", + "Return comma-separated string of .ini files parsed from the additional ini dir" + ], + "php_logo_guid": [ + "string php_logo_guid()", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_real_logo_guid": [ + "string php_real_logo_guid()", + "Return the special ID used to request the PHP logo in phpinfo screens" + ], + "php_sapi_name": [ + "string php_sapi_name()", + "Return the current SAPI module name" + ], + "php_snmpv3": [ + "void php_snmpv3(INTERNAL_FUNCTION_PARAMETERS, int st)", + "* * Generic SNMPv3 object fetcher * From here is passed on the the common internal object fetcher. * * st=SNMP_CMD_GET snmp3_get() - query an agent and return a single value. * st=SNMP_CMD_GETNEXT snmp3_getnext() - query an agent and return the next single value. * st=SNMP_CMD_WALK snmp3_walk() - walk the mib and return a single dimensional array * containing the values. * st=SNMP_CMD_REALWALK snmp3_real_walk() - walk the mib and return an * array of oid,value pairs. * st=SNMP_CMD_SET snmp3_set() - query an agent and set a single value *" + ], + "php_strip_whitespace": [ + "string php_strip_whitespace(string file_name)", + "Return source with stripped comments and whitespace" + ], + "php_uname": [ + "string php_uname()", + "Return information about the system PHP was built on" + ], + "phpcredits": [ + "void phpcredits([int flag])", + "Prints the list of people who've contributed to the PHP project" + ], + "phpinfo": [ + "void phpinfo([int what])", + "Output a page of useful information about PHP and the current request" + ], + "phpversion": [ + "string phpversion([string extension])", + "Return the current PHP version" + ], + "pi": [ + "float pi()", + "Returns an approximation of pi" + ], + "png2wbmp": [ + "bool png2wbmp(string f_org, string f_dest, int d_height, int d_width, int threshold)", + "Convert PNG image to WBMP image" + ], + "popen": [ + "resource popen(string command, string mode)", + "Execute a command and open either a read or a write pipe to it" + ], + "posix_access": [ + "bool posix_access(string file [, int mode])", + "Determine accessibility of a file (POSIX.1 5.6.3)" + ], + "posix_ctermid": [ + "string posix_ctermid()", + "Generate terminal path name (POSIX.1, 4.7.1)" + ], + "posix_get_last_error": [ + "int posix_get_last_error()", + "Retrieve the error number set by the last posix function which failed." + ], + "posix_getcwd": [ + "string posix_getcwd()", + "Get working directory pathname (POSIX.1, 5.2.2)" + ], + "posix_getegid": [ + "int posix_getegid()", + "Get the current effective group id (POSIX.1, 4.2.1)" + ], + "posix_geteuid": [ + "int posix_geteuid()", + "Get the current effective user id (POSIX.1, 4.2.1)" + ], + "posix_getgid": [ + "int posix_getgid()", + "Get the current group id (POSIX.1, 4.2.1)" + ], + "posix_getgrgid": [ + "array posix_getgrgid(long gid)", + "Group database access (POSIX.1, 9.2.1)" + ], + "posix_getgrnam": [ + "array posix_getgrnam(string groupname)", + "Group database access (POSIX.1, 9.2.1)" + ], + "posix_getgroups": [ + "array posix_getgroups()", + "Get supplementary group id's (POSIX.1, 4.2.3)" + ], + "posix_getlogin": [ + "string posix_getlogin()", + "Get user name (POSIX.1, 4.2.4)" + ], + "posix_getpgid": [ + "int posix_getpgid()", + "Get the process group id of the specified process (This is not a POSIX function, but a SVR4ism, so we compile conditionally)" + ], + "posix_getpgrp": [ + "int posix_getpgrp()", + "Get current process group id (POSIX.1, 4.3.1)" + ], + "posix_getpid": [ + "int posix_getpid()", + "Get the current process id (POSIX.1, 4.1.1)" + ], + "posix_getppid": [ + "int posix_getppid()", + "Get the parent process id (POSIX.1, 4.1.1)" + ], + "posix_getpwnam": [ + "array posix_getpwnam(string groupname)", + "User database access (POSIX.1, 9.2.2)" + ], + "posix_getpwuid": [ + "array posix_getpwuid(long uid)", + "User database access (POSIX.1, 9.2.2)" + ], + "posix_getrlimit": [ + "array posix_getrlimit()", + "Get system resource consumption limits (This is not a POSIX function, but a BSDism and a SVR4ism. We compile conditionally)" + ], + "posix_getsid": [ + "int posix_getsid()", + "Get process group id of session leader (This is not a POSIX function, but a SVR4ism, so be compile conditionally)" + ], + "posix_getuid": [ + "int posix_getuid()", + "Get the current user id (POSIX.1, 4.2.1)" + ], + "posix_initgroups": [ + "bool posix_initgroups(string name, int base_group_id)", + "Calculate the group access list for the user specified in name." + ], + "posix_isatty": [ + "bool posix_isatty(int fd)", + "Determine if filedesc is a tty (POSIX.1, 4.7.1)" + ], + "posix_kill": [ + "bool posix_kill(int pid, int sig)", + "Send a signal to a process (POSIX.1, 3.3.2)" + ], + "posix_mkfifo": [ + "bool posix_mkfifo(string pathname, int mode)", + "Make a FIFO special file (POSIX.1, 5.4.2)" + ], + "posix_mknod": [ + "bool posix_mknod(string pathname, int mode [, int major [, int minor]])", + "Make a special or ordinary file (POSIX.1)" + ], + "posix_setegid": [ + "bool posix_setegid(long uid)", + "Set effective group id" + ], + "posix_seteuid": [ + "bool posix_seteuid(long uid)", + "Set effective user id" + ], + "posix_setgid": [ + "bool posix_setgid(int uid)", + "Set group id (POSIX.1, 4.2.2)" + ], + "posix_setpgid": [ + "bool posix_setpgid(int pid, int pgid)", + "Set process group id for job control (POSIX.1, 4.3.3)" + ], + "posix_setsid": [ + "int posix_setsid()", + "Create session and set process group id (POSIX.1, 4.3.2)" + ], + "posix_setuid": [ + "bool posix_setuid(long uid)", + "Set user id (POSIX.1, 4.2.2)" + ], + "posix_strerror": [ + "string posix_strerror(int errno)", + "Retrieve the system error message associated with the given errno." + ], + "posix_times": [ + "array posix_times()", + "Get process times (POSIX.1, 4.5.2)" + ], + "posix_ttyname": [ + "string posix_ttyname(int fd)", + "Determine terminal device name (POSIX.1, 4.7.2)" + ], + "posix_uname": [ + "array posix_uname()", + "Get system name (POSIX.1, 4.4.1)" + ], + "pow": [ + "number pow(number base, number exponent)", + "Returns base raised to the power of exponent. Returns integer result when possible" + ], + "preg_filter": [ + "mixed preg_filter(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement and only return matches." + ], + "preg_grep": [ + "array preg_grep(string regex, array input [, int flags])", + "Searches array and returns entries which match regex" + ], + "preg_last_error": [ + "int preg_last_error()", + "Returns the error code of the last regexp execution." + ], + "preg_match": [ + "int preg_match(string pattern, string subject [, array &subpatterns [, int flags [, int offset]]])", + "Perform a Perl-style regular expression match" + ], + "preg_match_all": [ + "int preg_match_all(string pattern, string subject, array &subpatterns [, int flags [, int offset]])", + "Perform a Perl-style global regular expression match" + ], + "preg_quote": [ + "string preg_quote(string str [, string delim_char])", + "Quote regular expression characters plus an optional character" + ], + "preg_replace": [ + "mixed preg_replace(mixed regex, mixed replace, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement." + ], + "preg_replace_callback": [ + "mixed preg_replace_callback(mixed regex, mixed callback, mixed subject [, int limit [, int &count]])", + "Perform Perl-style regular expression replacement using replacement callback." + ], + "preg_split": [ + "array preg_split(string pattern, string subject [, int limit [, int flags]])", + "Split string into an array using a perl-style regular expression as a delimiter" + ], + "prev": [ + "mixed prev(array array_arg)", + "Move array argument's internal pointer to the previous element and return it" + ], + "print": [ + "int print(string arg)", + "Output a string" + ], + "print_r": [ + "mixed print_r(mixed var [, bool return])", + "Prints out or returns information about the specified variable" + ], + "printf": [ + "int printf(string format [, mixed arg1 [, mixed ...]])", + "Output a formatted string" + ], + "proc_close": [ + "int proc_close(resource process)", + "close a process opened by proc_open" + ], + "proc_get_status": [ + "array proc_get_status(resource process)", + "get information about a process opened by proc_open" + ], + "proc_nice": [ + "bool proc_nice(int priority)", + "Change the priority of the current process" + ], + "proc_open": [ + "resource proc_open(string command, array descriptorspec, array &pipes [, string cwd [, array env [, array other_options]]])", + "Run a process with more control over it's file descriptors" + ], + "proc_terminate": [ + "bool proc_terminate(resource process [, long signal])", + "kill a process opened by proc_open" + ], + "property_exists": [ + "bool property_exists(mixed object_or_class, string property_name)", + "Checks if the object or class has a property" + ], + "pspell_add_to_personal": [ + "bool pspell_add_to_personal(int pspell, string word)", + "Adds a word to a personal list" + ], + "pspell_add_to_session": [ + "bool pspell_add_to_session(int pspell, string word)", + "Adds a word to the current session" + ], + "pspell_check": [ + "bool pspell_check(int pspell, string word)", + "Returns true if word is valid" + ], + "pspell_clear_session": [ + "bool pspell_clear_session(int pspell)", + "Clears the current session" + ], + "pspell_config_create": [ + "int pspell_config_create(string language [, string spelling [, string jargon [, string encoding]]])", + "Create a new config to be used later to create a manager" + ], + "pspell_config_data_dir": [ + "bool pspell_config_data_dir(int conf, string directory)", + "location of language data files" + ], + "pspell_config_dict_dir": [ + "bool pspell_config_dict_dir(int conf, string directory)", + "location of the main word list" + ], + "pspell_config_ignore": [ + "bool pspell_config_ignore(int conf, int ignore)", + "Ignore words <= n chars" + ], + "pspell_config_mode": [ + "bool pspell_config_mode(int conf, long mode)", + "Select mode for config (PSPELL_FAST, PSPELL_NORMAL or PSPELL_BAD_SPELLERS)" + ], + "pspell_config_personal": [ + "bool pspell_config_personal(int conf, string personal)", + "Use a personal dictionary for this config" + ], + "pspell_config_repl": [ + "bool pspell_config_repl(int conf, string repl)", + "Use a personal dictionary with replacement pairs for this config" + ], + "pspell_config_runtogether": [ + "bool pspell_config_runtogether(int conf, bool runtogether)", + "Consider run-together words as valid components" + ], + "pspell_config_save_repl": [ + "bool pspell_config_save_repl(int conf, bool save)", + "Save replacement pairs when personal list is saved for this config" + ], + "pspell_new": [ + "int pspell_new(string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", + "Load a dictionary" + ], + "pspell_new_config": [ + "int pspell_new_config(int config)", + "Load a dictionary based on the given config" + ], + "pspell_new_personal": [ + "int pspell_new_personal(string personal, string language [, string spelling [, string jargon [, string encoding [, int mode]]]])", + "Load a dictionary with a personal wordlist" + ], + "pspell_save_wordlist": [ + "bool pspell_save_wordlist(int pspell)", + "Saves the current (personal) wordlist" + ], + "pspell_store_replacement": [ + "bool pspell_store_replacement(int pspell, string misspell, string correct)", + "Notify the dictionary of a user-selected replacement" + ], + "pspell_suggest": [ + "array pspell_suggest(int pspell, string word)", + "Returns array of suggestions" + ], + "putenv": [ + "bool putenv(string setting)", + "Set the value of an environment variable" + ], + "quoted_printable_decode": [ + "string quoted_printable_decode(string str)", + "Convert a quoted-printable string to an 8 bit string" + ], + "quoted_printable_encode": [ + "string quoted_printable_encode(string str)", + "" + ], + "quotemeta": [ + "string quotemeta(string str)", + "Quotes meta characters" + ], + "rad2deg": [ + "float rad2deg(float number)", + "Converts the radian number to the equivalent number in degrees" + ], + "rand": [ + "int rand([int min, int max])", + "Returns a random number" + ], + "range": [ + "array range(mixed low, mixed high[, int step])", + "Create an array containing the range of integers or characters from low to high (inclusive)" + ], + "rawurldecode": [ + "string rawurldecode(string str)", + "Decodes URL-encodes string" + ], + "rawurlencode": [ + "string rawurlencode(string str)", + "URL-encodes string" + ], + "readdir": [ + "string readdir([resource dir_handle])", + "Read directory entry from dir_handle" + ], + "readfile": [ + "int readfile(string filename [, bool use_include_path[, resource context]])", + "Output a file or a URL" + ], + "readgzfile": [ + "int readgzfile(string filename [, int use_include_path])", + "Output a .gz-file" + ], + "readline": [ + "string readline([string prompt])", + "Reads a line" + ], + "readline_add_history": [ + "bool readline_add_history(string prompt)", + "Adds a line to the history" + ], + "readline_callback_handler_install": [ + "void readline_callback_handler_install(string prompt, mixed callback)", + "Initializes the readline callback interface and terminal, prints the prompt and returns immediately" + ], + "readline_callback_handler_remove": [ + "bool readline_callback_handler_remove()", + "Removes a previously installed callback handler and restores terminal settings" + ], + "readline_callback_read_char": [ + "void readline_callback_read_char()", + "Informs the readline callback interface that a character is ready for input" + ], + "readline_clear_history": [ + "bool readline_clear_history()", + "Clears the history" + ], + "readline_completion_function": [ + "bool readline_completion_function(string funcname)", + "Readline completion function?" + ], + "readline_info": [ + "mixed readline_info([string varname [, string newvalue]])", + "Gets/sets various internal readline variables." + ], + "readline_list_history": [ + "array readline_list_history()", + "Lists the history" + ], + "readline_on_new_line": [ + "void readline_on_new_line()", + "Inform readline that the cursor has moved to a new line" + ], + "readline_read_history": [ + "bool readline_read_history([string filename])", + "Reads the history" + ], + "readline_redisplay": [ + "void readline_redisplay()", + "Ask readline to redraw the display" + ], + "readline_write_history": [ + "bool readline_write_history([string filename])", + "Writes the history" + ], + "readlink": [ + "string readlink(string filename)", + "Return the target of a symbolic link" + ], + "realpath": [ + "string realpath(string path)", + "Return the resolved path" + ], + "realpath_cache_get": [ + "bool realpath_cache_get()", + "Get current size of realpath cache" + ], + "realpath_cache_size": [ + "bool realpath_cache_size()", + "Get current size of realpath cache" + ], + "recode_file": [ + "bool recode_file(string request, resource input, resource output)", + "Recode file input into file output according to request" + ], + "recode_string": [ + "string recode_string(string request, string str)", + "Recode string str according to request string" + ], + "register_shutdown_function": [ + "void register_shutdown_function(string function_name)", + "Register a user-level function to be called on request termination" + ], + "register_tick_function": [ + "bool register_tick_function(string function_name [, mixed arg [, mixed ... ]])", + "Registers a tick callback function" + ], + "rename": [ + "bool rename(string old_name, string new_name[, resource context])", + "Rename a file" + ], + "require": [ + "bool require(string path)", + "Includes and evaluates the specified file, erroring if the file cannot be included" + ], + "require_once": [ + "bool require_once(string path)", + "Includes and evaluates the specified file, erroring if the file cannot be included" + ], + "reset": [ + "mixed reset(array array_arg)", + "Set array argument's internal pointer to the first element and return it" + ], + "restore_error_handler": [ + "void restore_error_handler()", + "Restores the previously defined error handler function" + ], + "restore_exception_handler": [ + "void restore_exception_handler()", + "Restores the previously defined exception handler function" + ], + "restore_include_path": [ + "void restore_include_path()", + "Restore the value of the include_path configuration option" + ], + "rewind": [ + "bool rewind(resource fp)", + "Rewind the position of a file pointer" + ], + "rewinddir": [ + "void rewinddir([resource dir_handle])", + "Rewind dir_handle back to the start" + ], + "rmdir": [ + "bool rmdir(string dirname[, resource context])", + "Remove a directory" + ], + "round": [ + "float round(float number [, int precision [, int mode]])", + "Returns the number rounded to specified precision" + ], + "rsort": [ + "bool rsort(array &array_arg [, int sort_flags])", + "Sort an array in reverse order" + ], + "rtrim": [ + "string rtrim(string str [, string character_mask])", + "Removes trailing whitespace" + ], + "scandir": [ + "array scandir(string dir [, int sorting_order [, resource context]])", + "List files & directories inside the specified path" + ], + "sem_acquire": [ + "bool sem_acquire(resource id)", + "Acquires the semaphore with the given id, blocking if necessary" + ], + "sem_get": [ + "resource sem_get(int key [, int max_acquire [, int perm [, int auto_release]])", + "Return an id for the semaphore with the given key, and allow max_acquire (default 1) processes to acquire it simultaneously" + ], + "sem_release": [ + "bool sem_release(resource id)", + "Releases the semaphore with the given id" + ], + "sem_remove": [ + "bool sem_remove(resource id)", + "Removes semaphore from Unix systems" + ], + "serialize": [ + "string serialize(mixed variable)", + "Returns a string representation of variable (which can later be unserialized)" + ], + "session_cache_expire": [ + "int session_cache_expire([int new_cache_expire])", + "Return the current cache expire. If new_cache_expire is given, the current cache_expire is replaced with new_cache_expire" + ], + "session_cache_limiter": [ + "string session_cache_limiter([string new_cache_limiter])", + "Return the current cache limiter. If new_cache_limited is given, the current cache_limiter is replaced with new_cache_limiter" + ], + "session_decode": [ + "bool session_decode(string data)", + "Deserializes data and reinitializes the variables" + ], + "session_destroy": [ + "bool session_destroy()", + "Destroy the current session and all data associated with it" + ], + "session_encode": [ + "string session_encode()", + "Serializes the current setup and returns the serialized representation" + ], + "session_get_cookie_params": [ + "array session_get_cookie_params()", + "Return the session cookie parameters" + ], + "session_id": [ + "string session_id([string newid])", + "Return the current session id. If newid is given, the session id is replaced with newid" + ], + "session_is_registered": [ + "bool session_is_registered(string varname)", + "Checks if a variable is registered in session" + ], + "session_module_name": [ + "string session_module_name([string newname])", + "Return the current module name used for accessing session data. If newname is given, the module name is replaced with newname" + ], + "session_name": [ + "string session_name([string newname])", + "Return the current session name. If newname is given, the session name is replaced with newname" + ], + "session_regenerate_id": [ + "bool session_regenerate_id([bool delete_old_session])", + "Update the current session id with a newly generated one. If delete_old_session is set to true, remove the old session." + ], + "session_register": [ + "bool session_register(mixed var_names [, mixed ...])", + "Adds varname(s) to the list of variables which are freezed at the session end" + ], + "session_save_path": [ + "string session_save_path([string newname])", + "Return the current save path passed to module_name. If newname is given, the save path is replaced with newname" + ], + "session_set_cookie_params": [ + "void session_set_cookie_params(int lifetime [, string path [, string domain [, bool secure[, bool httponly]]]])", + "Set session cookie parameters" + ], + "session_set_save_handler": [ + "void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc)", + "Sets user-level functions" + ], + "session_start": [ + "bool session_start()", + "Begin session - reinitializes freezed variables, registers browsers etc" + ], + "session_unregister": [ + "bool session_unregister(string varname)", + "Removes varname from the list of variables which are freezed at the session end" + ], + "session_unset": [ + "void session_unset()", + "Unset all registered variables" + ], + "session_write_close": [ + "void session_write_close()", + "Write session data and end session" + ], + "set_error_handler": [ + "string set_error_handler(string error_handler [, int error_types])", + "Sets a user-defined error handler function. Returns the previously defined error handler, or false on error" + ], + "set_exception_handler": [ + "string set_exception_handler(callable exception_handler)", + "Sets a user-defined exception handler function. Returns the previously defined exception handler, or false on error" + ], + "set_include_path": [ + "string set_include_path(string new_include_path)", + "Sets the include_path configuration option" + ], + "set_magic_quotes_runtime": [ + "bool set_magic_quotes_runtime(int new_setting)", + "Set the current active configuration setting of magic_quotes_runtime and return previous" + ], + "set_time_limit": [ + "bool set_time_limit(int seconds)", + "Sets the maximum time a script can run" + ], + "setcookie": [ + "bool setcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", + "Send a cookie" + ], + "setlocale": [ + "string setlocale(mixed category, string locale [, string ...])", + "Set locale information" + ], + "setrawcookie": [ + "bool setrawcookie(string name [, string value [, int expires [, string path [, string domain [, bool secure[, bool httponly]]]]]])", + "Send a cookie with no url encoding of the value" + ], + "settype": [ + "bool settype(mixed var, string type)", + "Set the type of the variable" + ], + "sha1": [ + "string sha1(string str [, bool raw_output])", + "Calculate the sha1 hash of a string" + ], + "sha1_file": [ + "string sha1_file(string filename [, bool raw_output])", + "Calculate the sha1 hash of given filename" + ], + "shell_exec": [ + "string shell_exec(string cmd)", + "Execute command via shell and return complete output as string" + ], + "shm_attach": [ + "int shm_attach(int key [, int memsize [, int perm]])", + "Creates or open a shared memory segment" + ], + "shm_detach": [ + "bool shm_detach(resource shm_identifier)", + "Disconnects from shared memory segment" + ], + "shm_get_var": [ + "mixed shm_get_var(resource id, int variable_key)", + "Returns a variable from shared memory" + ], + "shm_has_var": [ + "bool shm_has_var(resource id, int variable_key)", + "Checks whether a specific entry exists" + ], + "shm_put_var": [ + "bool shm_put_var(resource shm_identifier, int variable_key, mixed variable)", + "Inserts or updates a variable in shared memory" + ], + "shm_remove": [ + "bool shm_remove(resource shm_identifier)", + "Removes shared memory from Unix systems" + ], + "shm_remove_var": [ + "bool shm_remove_var(resource id, int variable_key)", + "Removes variable from shared memory" + ], + "shmop_close": [ + "void shmop_close(int shmid)", + "closes a shared memory segment" + ], + "shmop_delete": [ + "bool shmop_delete(int shmid)", + "mark segment for deletion" + ], + "shmop_open": [ + "int shmop_open(int key, string flags, int mode, int size)", + "gets and attaches a shared memory segment" + ], + "shmop_read": [ + "string shmop_read(int shmid, int start, int count)", + "reads from a shm segment" + ], + "shmop_size": [ + "int shmop_size(int shmid)", + "returns the shm size" + ], + "shmop_write": [ + "int shmop_write(int shmid, string data, int offset)", + "writes to a shared memory segment" + ], + "shuffle": [ + "bool shuffle(array array_arg)", + "Randomly shuffle the contents of an array" + ], + "similar_text": [ + "int similar_text(string str1, string str2 [, float percent])", + "Calculates the similarity between two strings" + ], + "simplexml_import_dom": [ + "simplemxml_element simplexml_import_dom(domNode node [, string class_name])", + "Get a simplexml_element object from dom to allow for processing" + ], + "simplexml_load_file": [ + "simplemxml_element simplexml_load_file(string filename [, string class_name [, int options [, string ns [, bool is_prefix]]]])", + "Load a filename and return a simplexml_element object to allow for processing" + ], + "simplexml_load_string": [ + "simplemxml_element simplexml_load_string(string data [, string class_name [, int options [, string ns [, bool is_prefix]]]])", + "Load a string and return a simplexml_element object to allow for processing" + ], + "sin": [ + "float sin(float number)", + "Returns the sine of the number in radians" + ], + "sinh": [ + "float sinh(float number)", + "Returns the hyperbolic sine of the number, defined as (exp(number) - exp(-number))/2" + ], + "sleep": [ + "void sleep(int seconds)", + "Delay for a given number of seconds" + ], + "smfi_addheader": [ + "bool smfi_addheader(string headerf, string headerv)", + "Adds a header to the current message." + ], + "smfi_addrcpt": [ + "bool smfi_addrcpt(string rcpt)", + "Add a recipient to the message envelope." + ], + "smfi_chgheader": [ + "bool smfi_chgheader(string headerf, string headerv)", + "Changes a header's value for the current message." + ], + "smfi_delrcpt": [ + "bool smfi_delrcpt(string rcpt)", + "Removes the named recipient from the current message's envelope." + ], + "smfi_getsymval": [ + "string smfi_getsymval(string macro)", + "Returns the value of the given macro or NULL if the macro is not defined." + ], + "smfi_replacebody": [ + "bool smfi_replacebody(string body)", + "Replaces the body of the current message. If called more than once, subsequent calls result in data being appended to the new body." + ], + "smfi_setflags": [ + "void smfi_setflags(long flags)", + "Sets the flags describing the actions the filter may take." + ], + "smfi_setreply": [ + "bool smfi_setreply(string rcode, string xcode, string message)", + "Directly set the SMTP error reply code for this connection. This code will be used on subsequent error replies resulting from actions taken by this filter." + ], + "smfi_settimeout": [ + "void smfi_settimeout(long timeout)", + "Sets the number of seconds libmilter will wait for an MTA connection before timing out a socket." + ], + "snmp2_get": [ + "string snmp2_get(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmp2_getnext": [ + "string snmp2_getnext(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmp2_real_walk": [ + "array snmp2_real_walk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects including their respective object id withing the specified one" + ], + "snmp2_set": [ + "int snmp2_set(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Set the value of a SNMP object" + ], + "snmp2_walk": [ + "array snmp2_walk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects under the specified object id" + ], + "snmp3_get": [ + "int snmp3_get(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_getnext": [ + "int snmp3_getnext(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_real_walk": [ + "int snmp3_real_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_set": [ + "int snmp3_set(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp3_walk": [ + "int snmp3_walk(string host, string sec_name, string sec_level, string auth_protocol, string auth_passphrase, string priv_protocol, string priv_passphrase, string object_id [, int timeout [, int retries]])", + "Fetch the value of a SNMP object" + ], + "snmp_get_quick_print": [ + "bool snmp_get_quick_print()", + "Return the current status of quick_print" + ], + "snmp_get_valueretrieval": [ + "int snmp_get_valueretrieval()", + "Return the method how the SNMP values will be returned" + ], + "snmp_read_mib": [ + "int snmp_read_mib(string filename)", + "Reads and parses a MIB file into the active MIB tree." + ], + "snmp_set_enum_print": [ + "void snmp_set_enum_print(int enum_print)", + "Return all values that are enums with their enum value instead of the raw integer" + ], + "snmp_set_oid_output_format": [ + "void snmp_set_oid_output_format(int oid_format)", + "Set the OID output format." + ], + "snmp_set_quick_print": [ + "void snmp_set_quick_print(int quick_print)", + "Return all objects including their respective object id withing the specified one" + ], + "snmp_set_valueretrieval": [ + "void snmp_set_valueretrieval(int method)", + "Specify the method how the SNMP values will be returned" + ], + "snmpget": [ + "string snmpget(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmpgetnext": [ + "string snmpgetnext(string host, string community, string object_id [, int timeout [, int retries]])", + "Fetch a SNMP object" + ], + "snmprealwalk": [ + "array snmprealwalk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects including their respective object id withing the specified one" + ], + "snmpset": [ + "int snmpset(string host, string community, string object_id, string type, mixed value [, int timeout [, int retries]])", + "Set the value of a SNMP object" + ], + "snmpwalk": [ + "array snmpwalk(string host, string community, string object_id [, int timeout [, int retries]])", + "Return all objects under the specified object id" + ], + "socket_accept": [ + "resource socket_accept(resource socket)", + "Accepts a connection on the listening socket fd" + ], + "socket_bind": [ + "bool socket_bind(resource socket, string addr [, int port])", + "Binds an open socket to a listening port, port is only specified in AF_INET family." + ], + "socket_clear_error": [ + "void socket_clear_error([resource socket])", + "Clears the error on the socket or the last error code." + ], + "socket_close": [ + "void socket_close(resource socket)", + "Closes a file descriptor" + ], + "socket_connect": [ + "bool socket_connect(resource socket, string addr [, int port])", + "Opens a connection to addr:port on the socket specified by socket" + ], + "socket_create": [ + "resource socket_create(int domain, int type, int protocol)", + "Creates an endpoint for communication in the domain specified by domain, of type specified by type" + ], + "socket_create_listen": [ + "resource socket_create_listen(int port[, int backlog])", + "Opens a socket on port to accept connections" + ], + "socket_create_pair": [ + "bool socket_create_pair(int domain, int type, int protocol, array &fd)", + "Creates a pair of indistinguishable sockets and stores them in fds." + ], + "socket_get_option": [ + "mixed socket_get_option(resource socket, int level, int optname)", + "Gets socket options for the socket" + ], + "socket_getpeername": [ + "bool socket_getpeername(resource socket, string &addr[, int &port])", + "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." + ], + "socket_getsockname": [ + "bool socket_getsockname(resource socket, string &addr[, int &port])", + "Queries the remote side of the given socket which may either result in host/port or in a UNIX filesystem path, dependent on its type." + ], + "socket_last_error": [ + "int socket_last_error([resource socket])", + "Returns the last socket error (either the last used or the provided socket resource)" + ], + "socket_listen": [ + "bool socket_listen(resource socket[, int backlog])", + "Sets the maximum number of connections allowed to be waited for on the socket specified by fd" + ], + "socket_read": [ + "string socket_read(resource socket, int length [, int type])", + "Reads a maximum of length bytes from socket" + ], + "socket_recv": [ + "int socket_recv(resource socket, string &buf, int len, int flags)", + "Receives data from a connected socket" + ], + "socket_recvfrom": [ + "int socket_recvfrom(resource socket, string &buf, int len, int flags, string &name [, int &port])", + "Receives data from a socket, connected or not" + ], + "socket_select": [ + "int socket_select(array &read_fds, array &write_fds, array &except_fds, int tv_sec[, int tv_usec])", + "Runs the select() system call on the sets mentioned with a timeout specified by tv_sec and tv_usec" + ], + "socket_send": [ + "int socket_send(resource socket, string buf, int len, int flags)", + "Sends data to a connected socket" + ], + "socket_sendto": [ + "int socket_sendto(resource socket, string buf, int len, int flags, string addr [, int port])", + "Sends a message to a socket, whether it is connected or not" + ], + "socket_set_block": [ + "bool socket_set_block(resource socket)", + "Sets blocking mode on a socket resource" + ], + "socket_set_nonblock": [ + "bool socket_set_nonblock(resource socket)", + "Sets nonblocking mode on a socket resource" + ], + "socket_set_option": [ + "bool socket_set_option(resource socket, int level, int optname, int|array optval)", + "Sets socket options for the socket" + ], + "socket_shutdown": [ + "bool socket_shutdown(resource socket[, int how])", + "Shuts down a socket for receiving, sending, or both." + ], + "socket_strerror": [ + "string socket_strerror(int errno)", + "Returns a string describing an error" + ], + "socket_write": [ + "int socket_write(resource socket, string buf[, int length])", + "Writes the buffer to the socket resource, length is optional" + ], + "solid_fetch_prev": [ + "bool solid_fetch_prev(resource result_id)", + "" + ], + "sort": [ + "bool sort(array &array_arg [, int sort_flags])", + "Sort an array" + ], + "soundex": [ + "string soundex(string str)", + "Calculate the soundex key of a string" + ], + "spl_autoload": [ + "void spl_autoload(string class_name [, string file_extensions])", + "Default implementation for __autoload()" + ], + "spl_autoload_call": [ + "void spl_autoload_call(string class_name)", + "Try all registerd autoload function to load the requested class" + ], + "spl_autoload_extensions": [ + "string spl_autoload_extensions([string file_extensions])", + "Register and return default file extensions for spl_autoload" + ], + "spl_autoload_functions": [ + "false|array spl_autoload_functions()", + "Return all registered __autoload() functionns" + ], + "spl_autoload_register": [ + "bool spl_autoload_register([mixed autoload_function = \"spl_autoload\" [, throw = true [, prepend]]])", + "Register given function as __autoload() implementation" + ], + "spl_autoload_unregister": [ + "bool spl_autoload_unregister(mixed autoload_function)", + "Unregister given function as __autoload() implementation" + ], + "spl_classes": [ + "array spl_classes()", + "Return an array containing the names of all clsses and interfaces defined in SPL" + ], + "spl_object_hash": [ + "string spl_object_hash(object obj)", + "Return hash id for given object" + ], + "split": [ + "array split(string pattern, string string [, int limit])", + "Split string into array by regular expression" + ], + "spliti": [ + "array spliti(string pattern, string string [, int limit])", + "Split string into array by regular expression case-insensitive" + ], + "sprintf": [ + "string sprintf(string format [, mixed arg1 [, mixed ...]])", + "Return a formatted string" + ], + "sql_regcase": [ + "string sql_regcase(string string)", + "Make regular expression for case insensitive match" + ], + "sqlite_array_query": [ + "array sqlite_array_query(resource db, string query [ , int result_type [, bool decode_binary]])", + "Executes a query against a given database and returns an array of arrays." + ], + "sqlite_busy_timeout": [ + "void sqlite_busy_timeout(resource db, int ms)", + "Set busy timeout duration. If ms <= 0, all busy handlers are disabled." + ], + "sqlite_changes": [ + "int sqlite_changes(resource db)", + "Returns the number of rows that were changed by the most recent SQL statement." + ], + "sqlite_close": [ + "void sqlite_close(resource db)", + "Closes an open sqlite database." + ], + "sqlite_column": [ + "mixed sqlite_column(resource result, mixed index_or_name [, bool decode_binary])", + "Fetches a column from the current row of a result set." + ], + "sqlite_create_aggregate": [ + "bool sqlite_create_aggregate(resource db, string funcname, mixed step_func, mixed finalize_func[, long num_args])", + "Registers an aggregate function for queries." + ], + "sqlite_create_function": [ + "bool sqlite_create_function(resource db, string funcname, mixed callback[, long num_args])", + "Registers a \"regular\" function for queries." + ], + "sqlite_current": [ + "array sqlite_current(resource result [, int result_type [, bool decode_binary]])", + "Fetches the current row from a result set as an array." + ], + "sqlite_error_string": [ + "string sqlite_error_string(int error_code)", + "Returns the textual description of an error code." + ], + "sqlite_escape_string": [ + "string sqlite_escape_string(string item)", + "Escapes a string for use as a query parameter." + ], + "sqlite_exec": [ + "bool sqlite_exec(string query, resource db[, string &error_message])", + "Executes a result-less query against a given database" + ], + "sqlite_factory": [ + "object sqlite_factory(string filename [, int mode [, string &error_message]])", + "Opens a SQLite database and creates an object for it. Will create the database if it does not exist." + ], + "sqlite_fetch_all": [ + "array sqlite_fetch_all(resource result [, int result_type [, bool decode_binary]])", + "Fetches all rows from a result set as an array of arrays." + ], + "sqlite_fetch_array": [ + "array sqlite_fetch_array(resource result [, int result_type [, bool decode_binary]])", + "Fetches the next row from a result set as an array." + ], + "sqlite_fetch_column_types": [ + "resource sqlite_fetch_column_types(string table_name, resource db [, int result_type])", + "Return an array of column types from a particular table." + ], + "sqlite_fetch_object": [ + "object sqlite_fetch_object(resource result [, string class_name [, NULL|array ctor_params [, bool decode_binary]]])", + "Fetches the next row from a result set as an object." + ], + "sqlite_fetch_single": [ + "string sqlite_fetch_single(resource result [, bool decode_binary])", + "Fetches the first column of a result set as a string." + ], + "sqlite_field_name": [ + "string sqlite_field_name(resource result, int field_index)", + "Returns the name of a particular field of a result set." + ], + "sqlite_has_prev": [ + "bool sqlite_has_prev(resource result)", + "* Returns whether a previous row is available." + ], + "sqlite_key": [ + "int sqlite_key(resource result)", + "Return the current row index of a buffered result." + ], + "sqlite_last_error": [ + "int sqlite_last_error(resource db)", + "Returns the error code of the last error for a database." + ], + "sqlite_last_insert_rowid": [ + "int sqlite_last_insert_rowid(resource db)", + "Returns the rowid of the most recently inserted row." + ], + "sqlite_libencoding": [ + "string sqlite_libencoding()", + "Returns the encoding (iso8859 or UTF-8) of the linked SQLite library." + ], + "sqlite_libversion": [ + "string sqlite_libversion()", + "Returns the version of the linked SQLite library." + ], + "sqlite_next": [ + "bool sqlite_next(resource result)", + "Seek to the next row number of a result set." + ], + "sqlite_num_fields": [ + "int sqlite_num_fields(resource result)", + "Returns the number of fields in a result set." + ], + "sqlite_num_rows": [ + "int sqlite_num_rows(resource result)", + "Returns the number of rows in a buffered result set." + ], + "sqlite_open": [ + "resource sqlite_open(string filename [, int mode [, string &error_message]])", + "Opens a SQLite database. Will create the database if it does not exist." + ], + "sqlite_popen": [ + "resource sqlite_popen(string filename [, int mode [, string &error_message]])", + "Opens a persistent handle to a SQLite database. Will create the database if it does not exist." + ], + "sqlite_prev": [ + "bool sqlite_prev(resource result)", + "* Seek to the previous row number of a result set." + ], + "sqlite_query": [ + "resource sqlite_query(string query, resource db [, int result_type [, string &error_message]])", + "Executes a query against a given database and returns a result handle." + ], + "sqlite_rewind": [ + "bool sqlite_rewind(resource result)", + "Seek to the first row number of a buffered result set." + ], + "sqlite_seek": [ + "bool sqlite_seek(resource result, int row)", + "Seek to a particular row number of a buffered result set." + ], + "sqlite_single_query": [ + "array sqlite_single_query(resource db, string query [, bool first_row_only [, bool decode_binary]])", + "Executes a query and returns either an array for one single column or the value of the first row." + ], + "sqlite_udf_decode_binary": [ + "string sqlite_udf_decode_binary(string data)", + "Decode binary encoding on a string parameter passed to an UDF." + ], + "sqlite_udf_encode_binary": [ + "string sqlite_udf_encode_binary(string data)", + "Apply binary encoding (if required) to a string to return from an UDF." + ], + "sqlite_unbuffered_query": [ + "resource sqlite_unbuffered_query(string query, resource db [ , int result_type [, string &error_message]])", + "Executes a query that does not prefetch and buffer all data." + ], + "sqlite_valid": [ + "bool sqlite_valid(resource result)", + "Returns whether more rows are available." + ], + "sqrt": [ + "float sqrt(float number)", + "Returns the square root of the number" + ], + "srand": [ + "void srand([int seed])", + "Seeds random number generator" + ], + "sscanf": [ + "mixed sscanf(string str, string format [, string ...])", + "Implements an ANSI C compatible sscanf" + ], + "stat": [ + "array stat(string filename)", + "Give information about a file" + ], + "str_getcsv": [ + "array str_getcsv(string input[, string delimiter[, string enclosure[, string escape]]])", + "Parse a CSV string into an array" + ], + "str_ireplace": [ + "mixed str_ireplace(mixed search, mixed replace, mixed subject [, int &replace_count])", + "Replaces all occurrences of search in haystack with replace / case-insensitive" + ], + "str_pad": [ + "string str_pad(string input, int pad_length [, string pad_string [, int pad_type]])", + "Returns input string padded on the left or right to specified length with pad_string" + ], + "str_repeat": [ + "string str_repeat(string input, int mult)", + "Returns the input string repeat mult times" + ], + "str_replace": [ + "mixed str_replace(mixed search, mixed replace, mixed subject [, int &replace_count])", + "Replaces all occurrences of search in haystack with replace" + ], + "str_rot13": [ + "string str_rot13(string str)", + "Perform the rot13 transform on a string" + ], + "str_shuffle": [ + "void str_shuffle(string str)", + "Shuffles string. One permutation of all possible is created" + ], + "str_split": [ + "array str_split(string str [, int split_length])", + "Convert a string to an array. If split_length is specified, break the string down into chunks each split_length characters long." + ], + "str_word_count": [ + "mixed str_word_count(string str, [int format [, string charlist]])", + "Counts the number of words inside a string. If format of 1 is specified, then the function will return an array containing all the words found inside the string. If format of 2 is specified, then the function will return an associated array where the position of the word is the key and the word itself is the value. For the purpose of this function, 'word' is defined as a locale dependent string containing alphabetic characters, which also may contain, but not start with \"'\" and \"-\" characters." + ], + "strcasecmp": [ + "int strcasecmp(string str1, string str2)", + "Binary safe case-insensitive string comparison" + ], + "strchr": [ + "string strchr(string haystack, string needle)", + "An alias for strstr" + ], + "strcmp": [ + "int strcmp(string str1, string str2)", + "Binary safe string comparison" + ], + "strcoll": [ + "int strcoll(string str1, string str2)", + "Compares two strings using the current locale" + ], + "strcspn": [ + "int strcspn(string str, string mask [, start [, len]])", + "Finds length of initial segment consisting entirely of characters not found in mask. If start or/and length is provide works like strcspn(substr($s,$start,$len),$bad_chars)" + ], + "stream_bucket_append": [ + "void stream_bucket_append(resource brigade, resource bucket)", + "Append bucket to brigade" + ], + "stream_bucket_make_writeable": [ + "object stream_bucket_make_writeable(resource brigade)", + "Return a bucket object from the brigade for operating on" + ], + "stream_bucket_new": [ + "resource stream_bucket_new(resource stream, string buffer)", + "Create a new bucket for use on the current stream" + ], + "stream_bucket_prepend": [ + "void stream_bucket_prepend(resource brigade, resource bucket)", + "Prepend bucket to brigade" + ], + "stream_context_create": [ + "resource stream_context_create([array options[, array params]])", + "Create a file context and optionally set parameters" + ], + "stream_context_get_default": [ + "resource stream_context_get_default([array options])", + "Get a handle on the default file/stream context and optionally set parameters" + ], + "stream_context_get_options": [ + "array stream_context_get_options(resource context|resource stream)", + "Retrieve options for a stream/wrapper/context" + ], + "stream_context_get_params": [ + "array stream_context_get_params(resource context|resource stream)", + "Get parameters of a file context" + ], + "stream_context_set_default": [ + "resource stream_context_set_default(array options)", + "Set default file/stream context, returns the context as a resource" + ], + "stream_context_set_option": [ + "bool stream_context_set_option(resource context|resource stream, string wrappername, string optionname, mixed value)", + "Set an option for a wrapper" + ], + "stream_context_set_params": [ + "bool stream_context_set_params(resource context|resource stream, array options)", + "Set parameters for a file context" + ], + "stream_copy_to_stream": [ + "long stream_copy_to_stream(resource source, resource dest [, long maxlen [, long pos]])", + "Reads up to maxlen bytes from source stream and writes them to dest stream." + ], + "stream_filter_append": [ + "resource stream_filter_append(resource stream, string filtername[, int read_write[, string filterparams]])", + "Append a filter to a stream" + ], + "stream_filter_prepend": [ + "resource stream_filter_prepend(resource stream, string filtername[, int read_write[, string filterparams]])", + "Prepend a filter to a stream" + ], + "stream_filter_register": [ + "bool stream_filter_register(string filtername, string classname)", + "Registers a custom filter handler class" + ], + "stream_filter_remove": [ + "bool stream_filter_remove(resource stream_filter)", + "Flushes any data in the filter's internal buffer, removes it from the chain, and frees the resource" + ], + "stream_get_contents": [ + "string stream_get_contents(resource source [, long maxlen [, long offset]])", + "Reads all remaining bytes (or up to maxlen bytes) from a stream and returns them as a string." + ], + "stream_get_filters": [ + "array stream_get_filters()", + "Returns a list of registered filters" + ], + "stream_get_line": [ + "string stream_get_line(resource stream, int maxlen [, string ending])", + "Read up to maxlen bytes from a stream or until the ending string is found" + ], + "stream_get_meta_data": [ + "array stream_get_meta_data(resource fp)", + "Retrieves header/meta data from streams/file pointers" + ], + "stream_get_transports": [ + "array stream_get_transports()", + "Retrieves list of registered socket transports" + ], + "stream_get_wrappers": [ + "array stream_get_wrappers()", + "Retrieves list of registered stream wrappers" + ], + "stream_is_local": [ + "bool stream_is_local(resource stream|string url)", + "" + ], + "stream_resolve_include_path": [ + "string stream_resolve_include_path(string filename)", + "Determine what file will be opened by calls to fopen() with a relative path" + ], + "stream_select": [ + "int stream_select(array &read_streams, array &write_streams, array &except_streams, int tv_sec[, int tv_usec])", + "Runs the select() system call on the sets of streams with a timeout specified by tv_sec and tv_usec" + ], + "stream_set_blocking": [ + "bool stream_set_blocking(resource socket, int mode)", + "Set blocking/non-blocking mode on a socket or stream" + ], + "stream_set_timeout": [ + "bool stream_set_timeout(resource stream, int seconds [, int microseconds])", + "Set timeout on stream read to seconds + microseonds" + ], + "stream_set_write_buffer": [ + "int stream_set_write_buffer(resource fp, int buffer)", + "Set file write buffer" + ], + "stream_socket_accept": [ + "resource stream_socket_accept(resource serverstream, [ double timeout [, string &peername ]])", + "Accept a client connection from a server socket" + ], + "stream_socket_client": [ + "resource stream_socket_client(string remoteaddress [, long &errcode [, string &errstring [, double timeout [, long flags [, resource context]]]]])", + "Open a client connection to a remote address" + ], + "stream_socket_enable_crypto": [ + "int stream_socket_enable_crypto(resource stream, bool enable [, int cryptokind [, resource sessionstream]])", + "Enable or disable a specific kind of crypto on the stream" + ], + "stream_socket_get_name": [ + "string stream_socket_get_name(resource stream, bool want_peer)", + "Returns either the locally bound or remote name for a socket stream" + ], + "stream_socket_pair": [ + "array stream_socket_pair(int domain, int type, int protocol)", + "Creates a pair of connected, indistinguishable socket streams" + ], + "stream_socket_recvfrom": [ + "string stream_socket_recvfrom(resource stream, long amount [, long flags [, string &remote_addr]])", + "Receives data from a socket stream" + ], + "stream_socket_sendto": [ + "long stream_socket_sendto(resouce stream, string data [, long flags [, string target_addr]])", + "Send data to a socket stream. If target_addr is specified it must be in dotted quad (or [ipv6]) format" + ], + "stream_socket_server": [ + "resource stream_socket_server(string localaddress [, long &errcode [, string &errstring [, long flags [, resource context]]]])", + "Create a server socket bound to localaddress" + ], + "stream_socket_shutdown": [ + "int stream_socket_shutdown(resource stream, int how)", + "causes all or part of a full-duplex connection on the socket associated with stream to be shut down. If how is SHUT_RD, further receptions will be disallowed. If how is SHUT_WR, further transmissions will be disallowed. If how is SHUT_RDWR, further receptions and transmissions will be disallowed." + ], + "stream_supports_lock": [ + "bool stream_supports_lock(resource stream)", + "Tells whether the stream supports locking through flock()." + ], + "stream_wrapper_register": [ + "bool stream_wrapper_register(string protocol, string classname[, integer flags])", + "Registers a custom URL protocol handler class" + ], + "stream_wrapper_restore": [ + "bool stream_wrapper_restore(string protocol)", + "Restore the original protocol handler, overriding if necessary" + ], + "stream_wrapper_unregister": [ + "bool stream_wrapper_unregister(string protocol)", + "Unregister a wrapper for the life of the current request." + ], + "strftime": [ + "string strftime(string format [, int timestamp])", + "Format a local time/date according to locale settings" + ], + "strip_tags": [ + "string strip_tags(string str [, string allowable_tags])", + "Strips HTML and PHP tags from a string" + ], + "stripcslashes": [ + "string stripcslashes(string str)", + "Strips backslashes from a string. Uses C-style conventions" + ], + "stripos": [ + "int stripos(string haystack, string needle [, int offset])", + "Finds position of first occurrence of a string within another, case insensitive" + ], + "stripslashes": [ + "string stripslashes(string str)", + "Strips backslashes from a string" + ], + "stristr": [ + "string stristr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another, case insensitive" + ], + "strlen": [ + "int strlen(string str)", + "Get string length" + ], + "strnatcasecmp": [ + "int strnatcasecmp(string s1, string s2)", + "Returns the result of case-insensitive string comparison using 'natural' algorithm" + ], + "strnatcmp": [ + "int strnatcmp(string s1, string s2)", + "Returns the result of string comparison using 'natural' algorithm" + ], + "strncasecmp": [ + "int strncasecmp(string str1, string str2, int len)", + "Binary safe string comparison" + ], + "strncmp": [ + "int strncmp(string str1, string str2, int len)", + "Binary safe string comparison" + ], + "strpbrk": [ + "array strpbrk(string haystack, string char_list)", + "Search a string for any of a set of characters" + ], + "strpos": [ + "int strpos(string haystack, string needle [, int offset])", + "Finds position of first occurrence of a string within another" + ], + "strptime": [ + "string strptime(string timestamp, string format)", + "Parse a time/date generated with strftime()" + ], + "strrchr": [ + "string strrchr(string haystack, string needle)", + "Finds the last occurrence of a character in a string within another" + ], + "strrev": [ + "string strrev(string str)", + "Reverse a string" + ], + "strripos": [ + "int strripos(string haystack, string needle [, int offset])", + "Finds position of last occurrence of a string within another string" + ], + "strrpos": [ + "int strrpos(string haystack, string needle [, int offset])", + "Finds position of last occurrence of a string within another string" + ], + "strspn": [ + "int strspn(string str, string mask [, start [, len]])", + "Finds length of initial segment consisting entirely of characters found in mask. If start or/and length is provided works like strspn(substr($s,$start,$len),$good_chars)" + ], + "strstr": [ + "string strstr(string haystack, string needle[, bool part])", + "Finds first occurrence of a string within another" + ], + "strtok": [ + "string strtok([string str,] string token)", + "Tokenize a string" + ], + "strtolower": [ + "string strtolower(string str)", + "Makes a string lowercase" + ], + "strtotime": [ + "int strtotime(string time [, int now ])", + "Convert string representation of date and time to a timestamp" + ], + "strtoupper": [ + "string strtoupper(string str)", + "Makes a string uppercase" + ], + "strtr": [ + "string strtr(string str, string from[, string to])", + "Translates characters in str using given translation tables" + ], + "strval": [ + "string strval(mixed var)", + "Get the string value of a variable" + ], + "substr": [ + "string substr(string str, int start [, int length])", + "Returns part of a string" + ], + "substr_compare": [ + "int substr_compare(string main_str, string str, int offset [, int length [, bool case_sensitivity]])", + "Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters" + ], + "substr_count": [ + "int substr_count(string haystack, string needle [, int offset [, int length]])", + "Returns the number of times a substring occurs in the string" + ], + "substr_replace": [ + "mixed substr_replace(mixed str, mixed repl, mixed start [, mixed length])", + "Replaces part of a string with another string" + ], + "sybase_affected_rows": [ + "int sybase_affected_rows([resource link_id])", + "Get number of affected rows in last query" + ], + "sybase_close": [ + "bool sybase_close([resource link_id])", + "Close Sybase connection" + ], + "sybase_connect": [ + "int sybase_connect([string host [, string user [, string password [, string charset [, string appname [, bool new]]]]]])", + "Open Sybase server connection" + ], + "sybase_data_seek": [ + "bool sybase_data_seek(resource result, int offset)", + "Move internal row pointer" + ], + "sybase_deadlock_retry_count": [ + "void sybase_deadlock_retry_count(int retry_count)", + "Sets deadlock retry count" + ], + "sybase_fetch_array": [ + "array sybase_fetch_array(resource result)", + "Fetch row as array" + ], + "sybase_fetch_assoc": [ + "array sybase_fetch_assoc(resource result)", + "Fetch row as array without numberic indices" + ], + "sybase_fetch_field": [ + "object sybase_fetch_field(resource result [, int offset])", + "Get field information" + ], + "sybase_fetch_object": [ + "object sybase_fetch_object(resource result [, mixed object])", + "Fetch row as object" + ], + "sybase_fetch_row": [ + "array sybase_fetch_row(resource result)", + "Get row as enumerated array" + ], + "sybase_field_seek": [ + "bool sybase_field_seek(resource result, int offset)", + "Set field offset" + ], + "sybase_free_result": [ + "bool sybase_free_result(resource result)", + "Free result memory" + ], + "sybase_get_last_message": [ + "string sybase_get_last_message()", + "Returns the last message from server (over min_message_severity)" + ], + "sybase_min_client_severity": [ + "void sybase_min_client_severity(int severity)", + "Sets minimum client severity" + ], + "sybase_min_server_severity": [ + "void sybase_min_server_severity(int severity)", + "Sets minimum server severity" + ], + "sybase_num_fields": [ + "int sybase_num_fields(resource result)", + "Get number of fields in result" + ], + "sybase_num_rows": [ + "int sybase_num_rows(resource result)", + "Get number of rows in result" + ], + "sybase_pconnect": [ + "int sybase_pconnect([string host [, string user [, string password [, string charset [, string appname]]]]])", + "Open persistent Sybase connection" + ], + "sybase_query": [ + "int sybase_query(string query [, resource link_id])", + "Send Sybase query" + ], + "sybase_result": [ + "string sybase_result(resource result, int row, mixed field)", + "Get result data" + ], + "sybase_select_db": [ + "bool sybase_select_db(string database [, resource link_id])", + "Select Sybase database" + ], + "sybase_set_message_handler": [ + "bool sybase_set_message_handler(mixed error_func [, resource connection])", + "Set the error handler, to be called when a server message is raised. If error_func is NULL the handler will be deleted" + ], + "sybase_unbuffered_query": [ + "int sybase_unbuffered_query(string query [, resource link_id])", + "Send Sybase query" + ], + "symlink": [ + "int symlink(string target, string link)", + "Create a symbolic link" + ], + "sys_get_temp_dir": [ + "string sys_get_temp_dir()", + "Returns directory path used for temporary files" + ], + "sys_getloadavg": [ + "array sys_getloadavg()", + "" + ], + "syslog": [ + "bool syslog(int priority, string message)", + "Generate a system log message" + ], + "system": [ + "int system(string command [, int &return_value])", + "Execute an external program and display output" + ], + "tan": [ + "float tan(float number)", + "Returns the tangent of the number in radians" + ], + "tanh": [ + "float tanh(float number)", + "Returns the hyperbolic tangent of the number, defined as sinh(number)/cosh(number)" + ], + "tempnam": [ + "string tempnam(string dir, string prefix)", + "Create a unique filename in a directory" + ], + "textdomain": [ + "string textdomain(string domain)", + "Set the textdomain to \"domain\". Returns the current domain" + ], + "tidy_access_count": [ + "int tidy_access_count()", + "Returns the Number of Tidy accessibility warnings encountered for specified document." + ], + "tidy_clean_repair": [ + "bool tidy_clean_repair()", + "Execute configured cleanup and repair operations on parsed markup" + ], + "tidy_config_count": [ + "int tidy_config_count()", + "Returns the Number of Tidy configuration errors encountered for specified document." + ], + "tidy_diagnose": [ + "bool tidy_diagnose()", + "Run configured diagnostics on parsed and repaired markup." + ], + "tidy_error_count": [ + "int tidy_error_count()", + "Returns the Number of Tidy errors encountered for specified document." + ], + "tidy_get_body": [ + "TidyNode tidy_get_body(resource tidy)", + "Returns a TidyNode Object starting from the tag of the tidy parse tree" + ], + "tidy_get_config": [ + "array tidy_get_config()", + "Get current Tidy configuarion" + ], + "tidy_get_error_buffer": [ + "string tidy_get_error_buffer([bool detailed])", + "Return warnings and errors which occured parsing the specified document" + ], + "tidy_get_head": [ + "TidyNode tidy_get_head()", + "Returns a TidyNode Object starting from the tag of the tidy parse tree" + ], + "tidy_get_html": [ + "TidyNode tidy_get_html()", + "Returns a TidyNode Object starting from the tag of the tidy parse tree" + ], + "tidy_get_html_ver": [ + "int tidy_get_html_ver()", + "Get the Detected HTML version for the specified document." + ], + "tidy_get_opt_doc": [ + "string tidy_get_opt_doc(tidy resource, string optname)", + "Returns the documentation for the given option name" + ], + "tidy_get_output": [ + "string tidy_get_output()", + "Return a string representing the parsed tidy markup" + ], + "tidy_get_release": [ + "string tidy_get_release()", + "Get release date (version) for Tidy library" + ], + "tidy_get_root": [ + "TidyNode tidy_get_root()", + "Returns a TidyNode Object representing the root of the tidy parse tree" + ], + "tidy_get_status": [ + "int tidy_get_status()", + "Get status of specfied document." + ], + "tidy_getopt": [ + "mixed tidy_getopt(string option)", + "Returns the value of the specified configuration option for the tidy document." + ], + "tidy_is_xhtml": [ + "bool tidy_is_xhtml()", + "Indicates if the document is a XHTML document." + ], + "tidy_is_xml": [ + "bool tidy_is_xml()", + "Indicates if the document is a generic (non HTML/XHTML) XML document." + ], + "tidy_parse_file": [ + "bool tidy_parse_file(string file [, mixed config_options [, string encoding [, bool use_include_path]]])", + "Parse markup in file or URI" + ], + "tidy_parse_string": [ + "bool tidy_parse_string(string input [, mixed config_options [, string encoding]])", + "Parse a document stored in a string" + ], + "tidy_repair_file": [ + "bool tidy_repair_file(string filename [, mixed config_file [, string encoding [, bool use_include_path]]])", + "Repair a file using an optionally provided configuration file" + ], + "tidy_repair_string": [ + "bool tidy_repair_string(string data [, mixed config_file [, string encoding]])", + "Repair a string using an optionally provided configuration file" + ], + "tidy_warning_count": [ + "int tidy_warning_count()", + "Returns the Number of Tidy warnings encountered for specified document." + ], + "time": [ + "int time()", + "Return current UNIX timestamp" + ], + "time_nanosleep": [ + "mixed time_nanosleep(long seconds, long nanoseconds)", + "Delay for a number of seconds and nano seconds" + ], + "time_sleep_until": [ + "mixed time_sleep_until(float timestamp)", + "Make the script sleep until the specified time" + ], + "timezone_abbreviations_list": [ + "array timezone_abbreviations_list()", + "Returns associative array containing dst, offset and the timezone name" + ], + "timezone_identifiers_list": [ + "array timezone_identifiers_list([long what[, string country]])", + "Returns numerically index array with all timezone identifiers." + ], + "timezone_location_get": [ + "array timezone_location_get()", + "Returns location information for a timezone, including country code, latitude/longitude and comments" + ], + "timezone_name_from_abbr": [ + "string timezone_name_from_abbr(string abbr[, long gmtOffset[, long isdst]])", + "Returns the timezone name from abbrevation" + ], + "timezone_name_get": [ + "string timezone_name_get(DateTimeZone object)", + "Returns the name of the timezone." + ], + "timezone_offset_get": [ + "long timezone_offset_get(DateTimeZone object, DateTime object)", + "Returns the timezone offset." + ], + "timezone_open": [ + "DateTimeZone timezone_open(string timezone)", + "Returns new DateTimeZone object" + ], + "timezone_transitions_get": [ + "array timezone_transitions_get(DateTimeZone object [, long timestamp_begin [, long timestamp_end ]])", + "Returns numerically indexed array containing associative array for all transitions in the specified range for the timezone." + ], + "timezone_version_get": [ + "array timezone_version_get()", + "Returns the Olson database version number." + ], + "tmpfile": [ + "resource tmpfile()", + "Create a temporary file that will be deleted automatically after use" + ], + "token_get_all": [ + "array token_get_all(string source)", + "" + ], + "token_name": [ + "string token_name(int type)", + "" + ], + "touch": [ + "bool touch(string filename [, int time [, int atime]])", + "Set modification time of file" + ], + "trigger_error": [ + "void trigger_error(string messsage [, int error_type])", + "Generates a user-level error/warning/notice message" + ], + "trim": [ + "string trim(string str [, string character_mask])", + "Strips whitespace from the beginning and end of a string" + ], + "uasort": [ + "bool uasort(array array_arg, string cmp_function)", + "Sort an array with a user-defined comparison function and maintain index association" + ], + "ucfirst": [ + "string ucfirst(string str)", + "Make a string's first character lowercase" + ], + "ucwords": [ + "string ucwords(string str)", + "Uppercase the first character of every word in a string" + ], + "uksort": [ + "bool uksort(array array_arg, string cmp_function)", + "Sort an array by keys using a user-defined comparison function" + ], + "umask": [ + "int umask([int mask])", + "Return or change the umask" + ], + "uniqid": [ + "string uniqid([string prefix [, bool more_entropy]])", + "Generates a unique ID" + ], + "unixtojd": [ + "int unixtojd([int timestamp])", + "Convert UNIX timestamp to Julian Day" + ], + "unlink": [ + "bool unlink(string filename[, context context])", + "Delete a file" + ], + "unpack": [ + "array unpack(string format, string input)", + "Unpack binary string into named array elements according to format argument" + ], + "unregister_tick_function": [ + "void unregister_tick_function(string function_name)", + "Unregisters a tick callback function" + ], + "unserialize": [ + "mixed unserialize(string variable_representation)", + "Takes a string representation of variable and recreates it" + ], + "unset": [ + "void unset(mixed var [, mixed var])", + "Unset a given variable" + ], + "urldecode": [ + "string urldecode(string str)", + "Decodes URL-encoded string" + ], + "urlencode": [ + "string urlencode(string str)", + "URL-encodes string" + ], + "usleep": [ + "void usleep(int micro_seconds)", + "Delay for a given number of micro seconds" + ], + "usort": [ + "bool usort(array array_arg, string cmp_function)", + "Sort an array by values using a user-defined comparison function" + ], + "utf8_decode": [ + "string utf8_decode(string data)", + "Converts a UTF-8 encoded string to ISO-8859-1" + ], + "utf8_encode": [ + "string utf8_encode(string data)", + "Encodes an ISO-8859-1 string to UTF-8" + ], + "var_dump": [ + "void var_dump(mixed var)", + "Dumps a string representation of variable to output" + ], + "var_export": [ + "string var_export(mixed var [, bool return])", + "Outputs or returns a string representation of a variable" + ], + "variant_abs": [ + "mixed variant_abs(mixed left)", + "Returns the absolute value of a variant" + ], + "variant_add": [ + "mixed variant_add(mixed left, mixed right)", + "\"Adds\" two variant values together and returns the result" + ], + "variant_and": [ + "mixed variant_and(mixed left, mixed right)", + "performs a bitwise AND operation between two variants and returns the result" + ], + "variant_cast": [ + "object variant_cast(object variant, int type)", + "Convert a variant into a new variant object of another type" + ], + "variant_cat": [ + "mixed variant_cat(mixed left, mixed right)", + "concatenates two variant values together and returns the result" + ], + "variant_cmp": [ + "int variant_cmp(mixed left, mixed right [, int lcid [, int flags]])", + "Compares two variants" + ], + "variant_date_from_timestamp": [ + "object variant_date_from_timestamp(int timestamp)", + "Returns a variant date representation of a unix timestamp" + ], + "variant_date_to_timestamp": [ + "int variant_date_to_timestamp(object variant)", + "Converts a variant date/time value to unix timestamp" + ], + "variant_div": [ + "mixed variant_div(mixed left, mixed right)", + "Returns the result from dividing two variants" + ], + "variant_eqv": [ + "mixed variant_eqv(mixed left, mixed right)", + "Performs a bitwise equivalence on two variants" + ], + "variant_fix": [ + "mixed variant_fix(mixed left)", + "Returns the integer part ? of a variant" + ], + "variant_get_type": [ + "int variant_get_type(object variant)", + "Returns the VT_XXX type code for a variant" + ], + "variant_idiv": [ + "mixed variant_idiv(mixed left, mixed right)", + "Converts variants to integers and then returns the result from dividing them" + ], + "variant_imp": [ + "mixed variant_imp(mixed left, mixed right)", + "Performs a bitwise implication on two variants" + ], + "variant_int": [ + "mixed variant_int(mixed left)", + "Returns the integer portion of a variant" + ], + "variant_mod": [ + "mixed variant_mod(mixed left, mixed right)", + "Divides two variants and returns only the remainder" + ], + "variant_mul": [ + "mixed variant_mul(mixed left, mixed right)", + "multiplies the values of the two variants and returns the result" + ], + "variant_neg": [ + "mixed variant_neg(mixed left)", + "Performs logical negation on a variant" + ], + "variant_not": [ + "mixed variant_not(mixed left)", + "Performs bitwise not negation on a variant" + ], + "variant_or": [ + "mixed variant_or(mixed left, mixed right)", + "Performs a logical disjunction on two variants" + ], + "variant_pow": [ + "mixed variant_pow(mixed left, mixed right)", + "Returns the result of performing the power function with two variants" + ], + "variant_round": [ + "mixed variant_round(mixed left, int decimals)", + "Rounds a variant to the specified number of decimal places" + ], + "variant_set": [ + "void variant_set(object variant, mixed value)", + "Assigns a new value for a variant object" + ], + "variant_set_type": [ + "void variant_set_type(object variant, int type)", + "Convert a variant into another type. Variant is modified \"in-place\"" + ], + "variant_sub": [ + "mixed variant_sub(mixed left, mixed right)", + "subtracts the value of the right variant from the left variant value and returns the result" + ], + "variant_xor": [ + "mixed variant_xor(mixed left, mixed right)", + "Performs a logical exclusion on two variants" + ], + "version_compare": [ + "int version_compare(string ver1, string ver2 [, string oper])", + "Compares two \"PHP-standardized\" version number strings" + ], + "vfprintf": [ + "int vfprintf(resource stream, string format, array args)", + "Output a formatted string into a stream" + ], + "virtual": [ + "bool virtual(string filename)", + "Perform an Apache sub-request" + ], + "vprintf": [ + "int vprintf(string format, array args)", + "Output a formatted string" + ], + "vsprintf": [ + "string vsprintf(string format, array args)", + "Return a formatted string" + ], + "wddx_add_vars": [ + "int wddx_add_vars(resource packet_id, mixed var_names [, mixed ...])", + "Serializes given variables and adds them to packet given by packet_id" + ], + "wddx_deserialize": [ + "mixed wddx_deserialize(mixed packet)", + "Deserializes given packet and returns a PHP value" + ], + "wddx_packet_end": [ + "string wddx_packet_end(resource packet_id)", + "Ends specified WDDX packet and returns the string containing the packet" + ], + "wddx_packet_start": [ + "resource wddx_packet_start([string comment])", + "Starts a WDDX packet with optional comment and returns the packet id" + ], + "wddx_serialize_value": [ + "string wddx_serialize_value(mixed var [, string comment])", + "Creates a new packet and serializes the given value" + ], + "wddx_serialize_vars": [ + "string wddx_serialize_vars(mixed var_name [, mixed ...])", + "Creates a new packet and serializes given variables into a struct" + ], + "wordwrap": [ + "string wordwrap(string str [, int width [, string break [, bool cut]]])", + "Wraps buffer to selected number of characters using string break char" + ], + "xml_error_string": [ + "string xml_error_string(int code)", + "Get XML parser error string" + ], + "xml_get_current_byte_index": [ + "int xml_get_current_byte_index(resource parser)", + "Get current byte index for an XML parser" + ], + "xml_get_current_column_number": [ + "int xml_get_current_column_number(resource parser)", + "Get current column number for an XML parser" + ], + "xml_get_current_line_number": [ + "int xml_get_current_line_number(resource parser)", + "Get current line number for an XML parser" + ], + "xml_get_error_code": [ + "int xml_get_error_code(resource parser)", + "Get XML parser error code" + ], + "xml_parse": [ + "int xml_parse(resource parser, string data [, int isFinal])", + "Start parsing an XML document" + ], + "xml_parse_into_struct": [ + "int xml_parse_into_struct(resource parser, string data, array &values [, array &index ])", + "Parsing a XML document" + ], + "xml_parser_create": [ + "resource xml_parser_create([string encoding])", + "Create an XML parser" + ], + "xml_parser_create_ns": [ + "resource xml_parser_create_ns([string encoding [, string sep]])", + "Create an XML parser" + ], + "xml_parser_free": [ + "int xml_parser_free(resource parser)", + "Free an XML parser" + ], + "xml_parser_get_option": [ + "int xml_parser_get_option(resource parser, int option)", + "Get options from an XML parser" + ], + "xml_parser_set_option": [ + "int xml_parser_set_option(resource parser, int option, mixed value)", + "Set options in an XML parser" + ], + "xml_set_character_data_handler": [ + "int xml_set_character_data_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_default_handler": [ + "int xml_set_default_handler(resource parser, string hdl)", + "Set up default handler" + ], + "xml_set_element_handler": [ + "int xml_set_element_handler(resource parser, string shdl, string ehdl)", + "Set up start and end element handlers" + ], + "xml_set_end_namespace_decl_handler": [ + "int xml_set_end_namespace_decl_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_external_entity_ref_handler": [ + "int xml_set_external_entity_ref_handler(resource parser, string hdl)", + "Set up external entity reference handler" + ], + "xml_set_notation_decl_handler": [ + "int xml_set_notation_decl_handler(resource parser, string hdl)", + "Set up notation declaration handler" + ], + "xml_set_object": [ + "int xml_set_object(resource parser, object &obj)", + "Set up object which should be used for callbacks" + ], + "xml_set_processing_instruction_handler": [ + "int xml_set_processing_instruction_handler(resource parser, string hdl)", + "Set up processing instruction (PI) handler" + ], + "xml_set_start_namespace_decl_handler": [ + "int xml_set_start_namespace_decl_handler(resource parser, string hdl)", + "Set up character data handler" + ], + "xml_set_unparsed_entity_decl_handler": [ + "int xml_set_unparsed_entity_decl_handler(resource parser, string hdl)", + "Set up unparsed entity declaration handler" + ], + "xmlrpc_decode": [ + "array xmlrpc_decode(string xml [, string encoding])", + "Decodes XML into native PHP types" + ], + "xmlrpc_decode_request": [ + "array xmlrpc_decode_request(string xml, string& method [, string encoding])", + "Decodes XML into native PHP types" + ], + "xmlrpc_encode": [ + "string xmlrpc_encode(mixed value)", + "Generates XML for a PHP value" + ], + "xmlrpc_encode_request": [ + "string xmlrpc_encode_request(string method, mixed params [, array output_options])", + "Generates XML for a method request" + ], + "xmlrpc_get_type": [ + "string xmlrpc_get_type(mixed value)", + "Gets xmlrpc type for a PHP value. Especially useful for base64 and datetime strings" + ], + "xmlrpc_is_fault": [ + "bool xmlrpc_is_fault(array)", + "Determines if an array value represents an XMLRPC fault." + ], + "xmlrpc_parse_method_descriptions": [ + "array xmlrpc_parse_method_descriptions(string xml)", + "Decodes XML into a list of method descriptions" + ], + "xmlrpc_server_add_introspection_data": [ + "int xmlrpc_server_add_introspection_data(resource server, array desc)", + "Adds introspection documentation" + ], + "xmlrpc_server_call_method": [ + "mixed xmlrpc_server_call_method(resource server, string xml, mixed user_data [, array output_options])", + "Parses XML requests and call methods" + ], + "xmlrpc_server_create": [ + "resource xmlrpc_server_create()", + "Creates an xmlrpc server" + ], + "xmlrpc_server_destroy": [ + "int xmlrpc_server_destroy(resource server)", + "Destroys server resources" + ], + "xmlrpc_server_register_introspection_callback": [ + "bool xmlrpc_server_register_introspection_callback(resource server, string function)", + "Register a PHP function to generate documentation" + ], + "xmlrpc_server_register_method": [ + "bool xmlrpc_server_register_method(resource server, string method_name, string function)", + "Register a PHP function to handle method matching method_name" + ], + "xmlrpc_set_type": [ + "bool xmlrpc_set_type(string value, string type)", + "Sets xmlrpc type, base64 or datetime, for a PHP string value" + ], + "xmlwriter_end_attribute": [ + "bool xmlwriter_end_attribute(resource xmlwriter)", + "End attribute - returns FALSE on error" + ], + "xmlwriter_end_cdata": [ + "bool xmlwriter_end_cdata(resource xmlwriter)", + "End current CDATA - returns FALSE on error" + ], + "xmlwriter_end_comment": [ + "bool xmlwriter_end_comment(resource xmlwriter)", + "Create end comment - returns FALSE on error" + ], + "xmlwriter_end_document": [ + "bool xmlwriter_end_document(resource xmlwriter)", + "End current document - returns FALSE on error" + ], + "xmlwriter_end_dtd": [ + "bool xmlwriter_end_dtd(resource xmlwriter)", + "End current DTD - returns FALSE on error" + ], + "xmlwriter_end_dtd_attlist": [ + "bool xmlwriter_end_dtd_attlist(resource xmlwriter)", + "End current DTD AttList - returns FALSE on error" + ], + "xmlwriter_end_dtd_element": [ + "bool xmlwriter_end_dtd_element(resource xmlwriter)", + "End current DTD element - returns FALSE on error" + ], + "xmlwriter_end_dtd_entity": [ + "bool xmlwriter_end_dtd_entity(resource xmlwriter)", + "End current DTD Entity - returns FALSE on error" + ], + "xmlwriter_end_element": [ + "bool xmlwriter_end_element(resource xmlwriter)", + "End current element - returns FALSE on error" + ], + "xmlwriter_end_pi": [ + "bool xmlwriter_end_pi(resource xmlwriter)", + "End current PI - returns FALSE on error" + ], + "xmlwriter_flush": [ + "mixed xmlwriter_flush(resource xmlwriter [,bool empty])", + "Output current buffer" + ], + "xmlwriter_full_end_element": [ + "bool xmlwriter_full_end_element(resource xmlwriter)", + "End current element - returns FALSE on error" + ], + "xmlwriter_open_memory": [ + "resource xmlwriter_open_memory()", + "Create new xmlwriter using memory for string output" + ], + "xmlwriter_open_uri": [ + "resource xmlwriter_open_uri(resource xmlwriter, string source)", + "Create new xmlwriter using source uri for output" + ], + "xmlwriter_output_memory": [ + "string xmlwriter_output_memory(resource xmlwriter [,bool flush])", + "Output current buffer as string" + ], + "xmlwriter_set_indent": [ + "bool xmlwriter_set_indent(resource xmlwriter, bool indent)", + "Toggle indentation on/off - returns FALSE on error" + ], + "xmlwriter_set_indent_string": [ + "bool xmlwriter_set_indent_string(resource xmlwriter, string indentString)", + "Set string used for indenting - returns FALSE on error" + ], + "xmlwriter_start_attribute": [ + "bool xmlwriter_start_attribute(resource xmlwriter, string name)", + "Create start attribute - returns FALSE on error" + ], + "xmlwriter_start_attribute_ns": [ + "bool xmlwriter_start_attribute_ns(resource xmlwriter, string prefix, string name, string uri)", + "Create start namespaced attribute - returns FALSE on error" + ], + "xmlwriter_start_cdata": [ + "bool xmlwriter_start_cdata(resource xmlwriter)", + "Create start CDATA tag - returns FALSE on error" + ], + "xmlwriter_start_comment": [ + "bool xmlwriter_start_comment(resource xmlwriter)", + "Create start comment - returns FALSE on error" + ], + "xmlwriter_start_document": [ + "bool xmlwriter_start_document(resource xmlwriter, string version, string encoding, string standalone)", + "Create document tag - returns FALSE on error" + ], + "xmlwriter_start_dtd": [ + "bool xmlwriter_start_dtd(resource xmlwriter, string name, string pubid, string sysid)", + "Create start DTD tag - returns FALSE on error" + ], + "xmlwriter_start_dtd_attlist": [ + "bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)", + "Create start DTD AttList - returns FALSE on error" + ], + "xmlwriter_start_dtd_element": [ + "bool xmlwriter_start_dtd_element(resource xmlwriter, string name)", + "Create start DTD element - returns FALSE on error" + ], + "xmlwriter_start_dtd_entity": [ + "bool xmlwriter_start_dtd_entity(resource xmlwriter, string name, bool isparam)", + "Create start DTD Entity - returns FALSE on error" + ], + "xmlwriter_start_element": [ + "bool xmlwriter_start_element(resource xmlwriter, string name)", + "Create start element tag - returns FALSE on error" + ], + "xmlwriter_start_element_ns": [ + "bool xmlwriter_start_element_ns(resource xmlwriter, string prefix, string name, string uri)", + "Create start namespaced element tag - returns FALSE on error" + ], + "xmlwriter_start_pi": [ + "bool xmlwriter_start_pi(resource xmlwriter, string target)", + "Create start PI tag - returns FALSE on error" + ], + "xmlwriter_text": [ + "bool xmlwriter_text(resource xmlwriter, string content)", + "Write text - returns FALSE on error" + ], + "xmlwriter_write_attribute": [ + "bool xmlwriter_write_attribute(resource xmlwriter, string name, string content)", + "Write full attribute - returns FALSE on error" + ], + "xmlwriter_write_attribute_ns": [ + "bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)", + "Write full namespaced attribute - returns FALSE on error" + ], + "xmlwriter_write_cdata": [ + "bool xmlwriter_write_cdata(resource xmlwriter, string content)", + "Write full CDATA tag - returns FALSE on error" + ], + "xmlwriter_write_comment": [ + "bool xmlwriter_write_comment(resource xmlwriter, string content)", + "Write full comment tag - returns FALSE on error" + ], + "xmlwriter_write_dtd": [ + "bool xmlwriter_write_dtd(resource xmlwriter, string name, string pubid, string sysid, string subset)", + "Write full DTD tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_attlist": [ + "bool xmlwriter_write_dtd_attlist(resource xmlwriter, string name, string content)", + "Write full DTD AttList tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_element": [ + "bool xmlwriter_write_dtd_element(resource xmlwriter, string name, string content)", + "Write full DTD element tag - returns FALSE on error" + ], + "xmlwriter_write_dtd_entity": [ + "bool xmlwriter_write_dtd_entity(resource xmlwriter, string name, string content [, int pe [, string pubid [, string sysid [, string ndataid]]]])", + "Write full DTD Entity tag - returns FALSE on error" + ], + "xmlwriter_write_element": [ + "bool xmlwriter_write_element(resource xmlwriter, string name[, string content])", + "Write full element tag - returns FALSE on error" + ], + "xmlwriter_write_element_ns": [ + "bool xmlwriter_write_element_ns(resource xmlwriter, string prefix, string name, string uri[, string content])", + "Write full namespaced element tag - returns FALSE on error" + ], + "xmlwriter_write_pi": [ + "bool xmlwriter_write_pi(resource xmlwriter, string target, string content)", + "Write full PI tag - returns FALSE on error" + ], + "xmlwriter_write_raw": [ + "bool xmlwriter_write_raw(resource xmlwriter, string content)", + "Write text - returns FALSE on error" + ], + "xsl_xsltprocessor_get_parameter": [ + "string xsl_xsltprocessor_get_parameter(string namespace, string name)", + "" + ], + "xsl_xsltprocessor_has_exslt_support": [ + "bool xsl_xsltprocessor_has_exslt_support()", + "" + ], + "xsl_xsltprocessor_import_stylesheet": [ + "void xsl_xsltprocessor_import_stylesheet(domdocument doc)", + "" + ], + "xsl_xsltprocessor_register_php_functions": [ + "void xsl_xsltprocessor_register_php_functions([mixed $restrict])", + "" + ], + "xsl_xsltprocessor_remove_parameter": [ + "bool xsl_xsltprocessor_remove_parameter(string namespace, string name)", + "" + ], + "xsl_xsltprocessor_set_parameter": [ + "bool xsl_xsltprocessor_set_parameter(string namespace, mixed name [, string value])", + "" + ], + "xsl_xsltprocessor_set_profiling": [ + "bool xsl_xsltprocessor_set_profiling(string filename)", + "" + ], + "xsl_xsltprocessor_transform_to_doc": [ + "domdocument xsl_xsltprocessor_transform_to_doc(domnode doc)", + "" + ], + "xsl_xsltprocessor_transform_to_uri": [ + "int xsl_xsltprocessor_transform_to_uri(domdocument doc, string uri)", + "" + ], + "xsl_xsltprocessor_transform_to_xml": [ + "string xsl_xsltprocessor_transform_to_xml(domdocument doc)", + "" + ], + "zend_logo_guid": [ + "string zend_logo_guid()", + "Return the special ID used to request the Zend logo in phpinfo screens" + ], + "zend_version": [ + "string zend_version()", + "Get the version of the Zend Engine" + ], + "zip_close": [ + "void zip_close(resource zip)", + "Close a Zip archive" + ], + "zip_entry_close": [ + "void zip_entry_close(resource zip_ent)", + "Close a zip entry" + ], + "zip_entry_compressedsize": [ + "int zip_entry_compressedsize(resource zip_entry)", + "Return the compressed size of a ZZip entry" + ], + "zip_entry_compressionmethod": [ + "string zip_entry_compressionmethod(resource zip_entry)", + "Return a string containing the compression method used on a particular entry" + ], + "zip_entry_filesize": [ + "int zip_entry_filesize(resource zip_entry)", + "Return the actual filesize of a ZZip entry" + ], + "zip_entry_name": [ + "string zip_entry_name(resource zip_entry)", + "Return the name given a ZZip entry" + ], + "zip_entry_open": [ + "bool zip_entry_open(resource zip_dp, resource zip_entry [, string mode])", + "Open a Zip File, pointed by the resource entry" + ], + "zip_entry_read": [ + "mixed zip_entry_read(resource zip_entry [, int len])", + "Read from an open directory entry" + ], + "zip_open": [ + "resource zip_open(string filename)", + "Create new zip using source uri for output" + ], + "zip_read": [ + "resource zip_read(resource zip)", + "Returns the next file in the archive" + ], + "zlib_get_coding_type": [ + "string zlib_get_coding_type()", + "Returns the coding type used for output compression" + ], + "array_column": [ + "array_column(array $array, int|string|null $column_key, int|string|null $index_key = null): array", + "Return the values from a single column in the input array" + ], + "boolval": [ + "boolval(mixed $value): bool", + "Get the boolean value of a variable" + ], + "bzclose": [ + "bzclose(resource $bz): bool", + "Close a bzip2 file" + ], + "bzflush": [ + "bzflush(resource $bz): bool", + "Do nothing" + ], + "bzwrite": [ + "bzwrite(resource $bz, string $data, ?int $length = null): int|false", + "Binary safe bzip2 file write" + ], + "checkdnsrr": [ + "checkdnsrr(string $hostname, string $type = "MX"): bool", + "Check DNS records corresponding to a given Internet host name or IP address" + ], + "chop": [ + "chop()", + "Alias of rtrim()" + ], + "class_uses": [ + "class_uses(object|string $object_or_class, bool $autoload = true): array|false", + "" + ], + "curl_escape": [ + "curl_escape(CurlHandle $handle, string $string): string|false", + "URL encodes the given string" + ], + "curl_file_create": [ + "curl_file_create()", + "Create a CURLFile object" + ], + "curl_multi_errno": [ + "curl_multi_errno(CurlMultiHandle $multi_handle): int", + "Return the last multi curl error number" + ], + "curl_multi_setopt": [ + "curl_multi_setopt(CurlMultiHandle $multi_handle, int $option, mixed $value): bool", + "Set an option for the cURL multi handle" + ], + "curl_multi_strerror": [ + "curl_multi_strerror(int $error_code): ?string", + "Return string describing error code" + ], + "curl_pause": [ + "curl_pause(CurlHandle $handle, int $flags): int", + "Pause and unpause a connection" + ], + "curl_reset": [ + "curl_reset(CurlHandle $handle): void", + "Reset all options of a libcurl session handle" + ], + "curl_share_close": [ + "curl_share_close(CurlShareHandle $share_handle): void", + "Close a cURL share handle" + ], + "curl_share_errno": [ + "curl_share_errno(CurlShareHandle $share_handle): int", + "Return the last share curl error number" + ], + "curl_share_init": [ + "curl_share_init(): CurlShareHandle", + "Initialize a cURL share handle" + ], + "curl_share_setopt": [ + "curl_share_setopt(CurlShareHandle $share_handle, int $option, mixed $value): bool", + "Set an option for a cURL share handle" + ], + "curl_share_strerror": [ + "curl_share_strerror(int $error_code): ?string", + "Return string describing the given error code" + ], + "curl_strerror": [ + "curl_strerror(int $error_code): ?string", + "Return string describing the given error code" + ], + "curl_unescape": [ + "curl_unescape(CurlHandle $handle, string $string): string|false", + "Decodes the given URL encoded string" + ], + "date_create_immutable_from_format": [ + "date_create_immutable_from_format()", + "Alias of DateTimeImmutable::createFromFormat()" + ], + "date_create_immutable": [ + "date_create_immutable()", + "Alias of DateTimeImmutable::__construct()" + ], + "deflate_add": [ + "deflate_add(DeflateContext $context, string $data, int $flush_mode = ZLIB_SYNC_FLUSH): string|false", + "Incrementally deflate data" + ], + "deflate_init": [ + "deflate_init(int $encoding, array $options = []): DeflateContext|false", + "Initialize an incremental deflate context" + ], + "delete": [ + "delete()", + "See unlink()" + ], + "diskfreespace": [ + "diskfreespace()", + "Alias of disk_free_space()" + ], + "doubleval": [ + "doubleval()", + "Alias of floatval()" + ], + "enchant_dict_add": [ + "enchant_dict_add(EnchantDictionary $dictionary, string $word): void", + "Add a word to personal word list" + ], + "enchant_dict_is_added": [ + "enchant_dict_is_added(EnchantDictionary $dictionary, string $word): bool", + "Whether or not 'word' exists in this spelling-session" + ], + "error_clear_last": [ + "error_clear_last(): void", + "Clear the most recent error" + ], + "eval": [ + "eval(string $code): mixed", + "Evaluate a string as PHP code" + ], + "expect_expectl": [ + "expect_expectl(resource $expect, array $cases, array &$match = ?): int", + "" + ], + "expect_popen": [ + "expect_popen(string $command): resource", + "" + ], + "fdiv": [ + "fdiv(float $num1, float $num2): float", + "Divides two numbers, according to IEEE 754" + ], + "filter_id": [ + "filter_id(string $name): int|false", + "Returns the filter ID belonging to a named filter" + ], + "filter_list": [ + "filter_list(): array", + "Returns a list of all supported filters" + ], + "forward_static_call_array": [ + "forward_static_call_array(callable $callback, array $args): mixed", + "Call a static method and pass the arguments as array" + ], + "fputs": [ + "fputs()", + "Alias of fwrite()" + ], + "ftp_append": [ + "ftp_append(FTP\\Connection $ftp, string $remote_filename, string $local_filename, int $mode = FTP_BINARY): bool", + "Append the contents of a file to another file on the FTP server" + ], + "ftp_mlsd": [ + "ftp_mlsd(FTP\\Connection $ftp, string $directory): array|false", + "Returns a list of files in the given directory" + ], + "ftp_quit": [ + "ftp_quit()", + "Alias of ftp_close()" + ], + "gc_mem_caches": [ + "gc_mem_caches(): int", + "" + ], + "gc_status": [ + "gc_status(): array", + "Gets information about the garbage collector" + ], + "get_debug_type": [ + "get_debug_type(mixed $value): string", + "Gets the type name of a variable in a way that is suitable for debugging" + ], + "get_declared_traits": [ + "get_declared_traits(): array", + "Returns an array of all declared traits" + ], + "get_required_files": [ + "get_required_files()", + "Alias of get_included_files()" + ], + "get_resource_id": [ + "get_resource_id(resource $resource): int", + "" + ], + "get_resources": [ + "get_resources(?string $type = null): array", + "Returns active resources" + ], + "getimagesizefromstring": [ + "getimagesizefromstring(string $string, array &$image_info = null): array|false", + "Get the size of an image from a string" + ], + "getmxrr": [ + "getmxrr(string $hostname, array &$hosts, array &$weights = null): bool", + "Get MX records corresponding to a given Internet host name" + ], + "gmp_binomial": [ + "gmp_binomial(GMP|int|string $n, int $k): GMP", + "Calculates binomial coefficient" + ], + "gmp_div": [ + "gmp_div()", + "Alias of gmp_div_q()" + ], + "gmp_export": [ + "gmp_export(GMP|int|string $num, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): string", + "Export to a binary string" + ], + "gmp_import": [ + "gmp_import(string $data, int $word_size = 1, int $flags = GMP_MSW_FIRST | GMP_NATIVE_ENDIAN): GMP", + "Import from a binary string" + ], + "gmp_kronecker": [ + "gmp_kronecker(GMP|int|string $num1, GMP|int|string $num2): int", + "Kronecker symbol" + ], + "gmp_lcm": [ + "gmp_lcm(GMP|int|string $num1, GMP|int|string $num2): GMP", + "Calculate LCM" + ], + "gmp_perfect_power": [ + "gmp_perfect_power(GMP|int|string $num): bool", + "Perfect power check" + ], + "gmp_random_bits": [ + "gmp_random_bits(int $bits): GMP", + "Random number" + ], + "gmp_random_range": [ + "gmp_random_range(GMP|int|string $min, GMP|int|string $max): GMP", + "Random number" + ], + "gmp_random_seed": [ + "gmp_random_seed(GMP|int|string $seed): void", + "Sets the RNG seed" + ], + "gmp_root": [ + "gmp_root(GMP|int|string $num, int $nth): GMP", + "Take the integer part of nth root" + ], + "gmp_rootrem": [ + "gmp_rootrem(GMP|int|string $num, int $nth): array", + "Take the integer part and remainder of nth root" + ], + "gzclose": [ + "gzclose(resource $stream): bool", + "Close an open gz-file pointer" + ], + "gzdecode": [ + "gzdecode(string $data, int $max_length = 0): string|false", + "Decodes a gzip compressed string" + ], + "gzeof": [ + "gzeof(resource $stream): bool", + "Test for EOF on a gz-file pointer" + ], + "gzgetc": [ + "gzgetc(resource $stream): string|false", + "Get character from gz-file pointer" + ], + "gzgets": [ + "gzgets(resource $stream, ?int $length = null): string|false", + "Get line from file pointer" + ], + "gzgetss": [ + "gzgetss(resource $zp, int $length, string $allowable_tags = ?): string", + "" + ], + "gzpassthru": [ + "gzpassthru(resource $stream): int", + "" + ], + "gzputs": [ + "gzputs()", + "Alias of gzwrite()" + ], + "gzread": [ + "gzread(resource $stream, int $length): string|false", + "Binary-safe gz-file read" + ], + "gzrewind": [ + "gzrewind(resource $stream): bool", + "Rewind the position of a gz-file pointer" + ], + "gzseek": [ + "gzseek(resource $stream, int $offset, int $whence = SEEK_SET): int", + "Seek on a gz-file pointer" + ], + "gztell": [ + "gztell(resource $stream): int|false", + "Tell gz-file pointer read/write position" + ], + "gzwrite": [ + "gzwrite(resource $stream, string $data, ?int $length = null): int|false", + "Binary-safe gz-file write" + ], + "halt_compiler": [ + "__halt_compiler(): void", + "" + ], + "hash_equals": [ + "hash_equals(string $known_string, string $user_string): bool", + "Timing attack safe string comparison" + ], + "hash_hkdf": [ + "hash_hkdf(string $algo, string $key, int $length = 0, string $info = \"\", string $salt = \"\"): string", + "Generate a HKDF key derivation of a supplied key input" + ], + "hash_hmac_algos": [ + "hash_hmac_algos(): array", + "Return a list of registered hashing algorithms suitable for hash_hmac" + ], + "hash_pbkdf2": [ + "hash_pbkdf2(string $algo, string $password, string $salt, int $iterations, int $length = 0, bool $binary = false): string", + "Generate a PBKDF2 key derivation of a supplied password" + ], + "header_register_callback": [ + "header_register_callback(callable $callback): bool", + "Call a header function" + ], + "hex2bin": [ + "hex2bin(string $string): string|false", + "Decodes a hexadecimally encoded binary string" + ], + "hrtime": [ + "hrtime(bool $as_number = false): array|int|float|false", + "Get the system's high resolution time" + ], + "http_response_code": [ + "http_response_code(int $response_code = 0): int|bool", + "Get or Set the HTTP response code" + ], + "imageaffine": [ + "imageaffine(GdImage $image, array $affine, ?array $clip = null): GdImage|false", + "Return an image containing the affine transformed src image, using an optional clipping area" + ], + "imageaffinematrixconcat": [ + "imageaffinematrixconcat(array $matrix1, array $matrix2): array|false", + "Concatenate two affine transformation matrices" + ], + "imageaffinematrixget": [ + "imageaffinematrixget(int $type, array|float $options): array|false", + "Get an affine transformation matrix" + ], + "imagebmp": [ + "imagebmp(GdImage $image, resource|string|null $file = null, bool $compressed = true): bool", + "Output a BMP image to browser or file" + ], + "imagecreatefrombmp": [ + "imagecreatefrombmp(string $filename): GdImage|false", + "Create a new image from file or URL" + ], + "imagecreatefromwebp": [ + "imagecreatefromwebp(string $filename): GdImage|false", + "Create a new image from file or URL" + ], + "imagecrop": [ + "imagecrop(GdImage $image, array $rectangle): GdImage|false", + "Crop an image to the given rectangle" + ], + "imagecropauto": [ + "imagecropauto(GdImage $image, int $mode = IMG_CROP_DEFAULT, float $threshold = 0.5, int $color = -1): GdImage|false", + "Crop an image automatically using one of the available modes" + ], + "imageflip": [ + "imageflip(GdImage $image, int $mode): bool", + "Flips an image using a given mode" + ], + "imagegetclip": [ + "imagegetclip(GdImage $image): array", + "Get the clipping rectangle" + ], + "imagegetinterpolation": [ + "imagegetinterpolation(GdImage $image): int", + "Get the interpolation method" + ], + "imageopenpolygon": [ + "imageopenpolygon(GdImage $image, array $points, int $color): bool", + "Draws an open polygon" + ], + "imagepalettetotruecolor": [ + "imagepalettetotruecolor(GdImage $image): bool", + "Converts a palette based image to true color" + ], + "imageresolution": [ + "imageresolution(GdImage $image, ?int $resolution_x = null, ?int $resolution_y = null): array|bool", + "Get or set the resolution of the image" + ], + "imagescale": [ + "imagescale(GdImage $image, int $width, int $height = -1, int $mode = IMG_BILINEAR_FIXED): GdImage|false", + "Scale an image using the given new width and height" + ], + "imagesetclip": [ + "imagesetclip(GdImage $image, int $x1, int $y1, int $x2, int $y2): bool", + "Set the clipping rectangle" + ], + "imagesetinterpolation": [ + "imagesetinterpolation(GdImage $image, int $method = IMG_BILINEAR_FIXED): bool", + "Set the interpolation method" + ], + "imagewebp": [ + "imagewebp(GdImage $image, resource|string|null $file = null, int $quality = -1): bool", + "Output a WebP image to browser or file" + ], + "imap_create": [ + "", + "Alias of imap_createmailbox()" + ], + "imap_fetchmime": [ + "imap_fetchmime(IMAP\\Connection $imap, int $message_num, string $section, int $flags = 0): string|false", + "Fetch MIME headers for a particular section of the message" + ], + "imap_fetchtext": [ + "imap_fetchtext()", + "Alias of imap_body()" + ], + "imap_header": [ + "imap_header()", + "Alias of imap_headerinfo()" + ], + "imap_listmailbox": [ + "imap_listmailbox()", + "Alias of imap_list()" + ], + "imap_listsubscribed": [ + "imap_listsubscribed()", + "Alias of imap_lsub()" + ], + "imap_rename": [ + "imap_rename()", + "Alias of imap_renamemailbox()" + ], + "imap_scan": [ + "imap_scan()", + "Alias of imap_listscan()" + ], + "imap_scanmailbox": [ + "imap_scanmailbox()", + "Alias of imap_listscan()" + ], + "ini_alter": [ + "ini_alter()", + "Alias of ini_set()" + ], + "intdiv": [ + "intdiv(int $num1, int $num2): int", + "Integer division" + ], + "is_double": [ + "is_double()", + "Alias of is_float()" + ], + "is_int": [ + "is_int(mixed $value): bool", + "Find whether the type of a variable is integer" + ], + "is_integer": [ + "is_integer()", + "Alias of is_int()" + ], + "is_iterable": [ + "is_iterable(mixed $value): bool", + "" + ], + "is_real": [ + "is_real()", + "Alias of is_float()" + ], + "is_soap_fault": [ + "is_soap_fault(mixed $object): bool", + "Checks if a SOAP call has failed" + ], + "is_tainted": [ + "is_tainted(string $string): bool", + "Checks whether a string is tainted" + ], + "is_writeable": [ + "is_writeable()", + "Alias of is_writable()" + ], + "json_last_error_msg": [ + "json_last_error_msg(): string", + "Returns the error string of the last json_encode() or json_decode() call" + ], + "key_exists": [ + "key_exists()", + "Alias of array_key_exists()" + ], + "lchown": [ + "lchown(string $filename, string|int $user): bool", + "Changes user ownership of symlink" + ], + "libxml_set_external_entity_loader": [ + "libxml_set_external_entity_loader(?callable $resolver_function): bool", + "Changes the default external entity loader" + ], + "mb_chr": [ + "mb_chr(int $codepoint, ?string $encoding = null): string|false", + "Return character by Unicode code point value" + ], + "mb_ereg_replace_callback": [ + "mb_ereg_replace_callback(string $pattern, callable $callback, string $string, ?string $options = null): string|false|null", + "" + ], + "mb_ord": [ + "mb_ord(string $string, ?string $encoding = null): int|false", + "Get Unicode code point of character" + ], + "mb_scrub": [ + "mb_scrub(string $string, ?string $encoding = null): string", + "Description" + ], + "mb_str_split": [ + "mb_str_split(string $string, int $length = 1, ?string $encoding = null): array", + "Given a multibyte string, return an array of its characters" + ], + "memcache_debug": [ + "memcache_debug(bool $on_off): bool", + "Turn debug output on/off" + ], + "mysql_db_name": [ + "mysql_db_name(resource $result, int $row, mixed $field = NULL): string", + "Retrieves database name from the call to mysql_list_dbs()" + ], + "mysql_tablename": [ + "mysql_tablename(resource $result, int $i): string|false", + "Get table name of field" + ], + "mysql_xdevapi_expression": [ + "mysql_xdevapi\\expression(string $expression): object", + "Bind prepared statement variables as parameters" + ], + "mysql_xdevapi_getsession": [ + "mysql_xdevapi\\getSession(string $uri): mysql_xdevapi\\Session", + "Connect to a MySQL server" + ], + "mysqli_escape_string": [ + "mysqli_escape_string()", + "Alias of mysqli_real_escape_string()" + ], + "mysqli_execute": [ + "mysqli_execute()", + "Alias for mysqli_stmt_execute()" + ], + "mysqli_get_links_stats": [ + "mysqli_get_links_stats(): array", + "Return information about open and cached links" + ], + "mysqli_set_opt": [ + "mysqli_set_opt()", + "Alias of mysqli_options()" + ], + "ob_tidyhandler": [ + "ob_tidyhandler(string $input, int $mode = ?): string", + "ob_start callback function to repair the buffer" + ], + "odbc_do": [ + "odbc_do()", + "Alias of odbc_exec()" + ], + "odbc_field_precision": [ + "odbc_field_precision()", + "Alias of odbc_field_len()" + ], + "opcache_compile_file": [ + "opcache_compile_file(string $filename): bool", + "Compiles and caches a PHP script without executing it" + ], + "opcache_get_configuration": [ + "opcache_get_configuration(): array|false", + "Get configuration information about the cache" + ], + "opcache_get_status": [ + "opcache_get_status(bool $include_scripts = true): array|false", + "Get status information about the cache" + ], + "opcache_invalidate": [ + "opcache_invalidate(string $filename, bool $force = false): bool", + "Invalidates a cached script" + ], + "opcache_is_script_cached": [ + "opcache_is_script_cached(string $filename): bool", + "Tells whether a script is cached in OPCache" + ], + "opcache_reset": [ + "opcache_reset(): bool", + "Resets the contents of the opcode cache" + ], + "password_algos": [ + "password_algos(): array", + "Get available password hashing algorithm IDs" + ], + "password_get_info": [ + "password_get_info(string $hash): array", + "Returns information about the given hash" + ], + "password_hash": [ + "password_hash(string $password, string|int|null $algo, array $options = []): string", + "Creates a password hash" + ], + "password_needs_rehash": [ + "password_needs_rehash(string $hash, string|int|null $algo, array $options = []): bool", + "Checks if the given hash matches the given options" + ], + "password_verify": [ + "password_verify(string $password, string $hash): bool", + "Verifies that a password matches a hash" + ], + "pcntl_async_signals": [ + "pcntl_async_signals(?bool $enable = null): bool", + "Enable/disable asynchronous signal handling or return the old setting" + ], + "pcntl_errno": [ + "pcntl_errno()", + "Alias of pcntl_get_last_error()" + ], + "pcntl_get_last_error": [ + "pcntl_get_last_error(): int", + "Retrieve the error number set by the last pcntl function which failed" + ], + "pcntl_signal_get_handler": [ + "pcntl_signal_get_handler(int $signal): callable|int", + "Get the current handler for specified signal" + ], + "pcntl_sigwaitinfo": [ + "pcntl_sigwaitinfo(array $signals, array &$info = []): int|false", + "Waits for signals" + ], + "pcntl_strerror": [ + "pcntl_strerror(int $error_code): string", + "Retrieve the system error message associated with the given errno" + ], + "pg_connect_poll": [ + "pg_connect_poll(PgSql\\Connection $connection): int", + "" + ], + "pg_consume_input": [ + "pg_consume_input(PgSql\\Connection $connection): bool", + "Reads input on the connection" + ], + "pg_escape_identifier": [ + "pg_escape_identifier(PgSql\\Connection $connection = ?, string $data): string", + "" + ], + "pg_escape_literal": [ + "pg_escape_literal(PgSql\\Connection $connection = ?, string $data): string", + "" + ], + "pg_flush": [ + "pg_flush(PgSql\\Connection $connection): int|bool", + "Flush outbound query data on the connection" + ], + "pg_lo_truncate": [ + "pg_lo_truncate(PgSql\\Lob $lob, int $size): bool", + "" + ], + "pg_socket": [ + "pg_socket(PgSql\\Connection $connection): resource|false", + "" + ], + "pos": [ + "pos()", + "Alias of current()" + ], + "posix_errno": [ + "posix_errno()", + "Alias of posix_get_last_error()" + ], + "posix_setrlimit": [ + "posix_setrlimit(int $resource, int $soft_limit, int $hard_limit): bool", + "Set system resource limits" + ], + "preg_last_error_msg": [ + "preg_last_error_msg(): string", + "Returns the error message of the last PCRE regex execution" + ], + "preg_replace_callback_array": [ + "preg_replace_callback_array(array $pattern, string|array $subject, int $limit = -1, int &$count = null, int $flags = 0): string|array|null", + "Perform a regular expression search and replace using callbacks" + ], + "ps_translate": [ + "ps_translate(resource $psdoc, float $x, float $y): bool", + "Sets translation" + ], + "random_bytes": [ + "random_bytes(int $length): string", + "Generates cryptographically secure pseudo-random bytes" + ], + "random_int": [ + "random_int(int $min, int $max): int", + "Generates cryptographically secure pseudo-random integers" + ], + "read_exif_data": [ + "read_exif_data()", + "Alias of exif_read_data()" + ], + "recode": [ + "recode()", + "Alias of recode_string()" + ], + "session_abort": [ + "session_abort(): bool", + "Discard session array changes and finish session" + ], + "session_commit": [ + "session_commit()", + "Alias of session_write_close()" + ], + "session_create_id": [ + "session_create_id(string $prefix = \"\"): string|false", + "Create new session id" + ], + "session_gc": [ + "session_gc(): int|false", + "Perform session data garbage collection" + ], + "session_register_shutdown": [ + "session_register_shutdown(): void", + "Session shutdown function" + ], + "session_reset": [ + "session_reset(): bool", + "Re-initialize session array with original values" + ], + "session_status": [ + "session_status(): int", + "Returns the current session status" + ], + "set_file_buffer": [ + "set_file_buffer()", + "Alias of stream_set_write_buffer()" + ], + "show_source": [ + "show_source()", + "Alias of highlight_file()" + ], + "sizeof": [ + "sizeof()", + "Alias of count()" + ], + "snmp_set_oid_numeric_print": [ + "snmp_set_oid_numeric_print(int $format): bool", + "" + ], + "snmpwalkoid": [ + "snmpwalkoid(string $hostname, string $community, array|string $object_id, int $timeout = -1, int $retries = -1): array|false", + "" + ], + "socket_addrinfo_bind": [ + "socket_addrinfo_bind(AddressInfo $address): Socket|false", + "Create and bind to a socket from a given addrinfo" + ], + "socket_addrinfo_connect": [ + "socket_addrinfo_connect(AddressInfo $address): Socket|false", + "Create and connect to a socket from a given addrinfo" + ], + "socket_addrinfo_explain": [ + "socket_addrinfo_explain(AddressInfo $address): array", + "Get information about addrinfo" + ], + "socket_addrinfo_lookup": [ + "socket_addrinfo_lookup(string $host, ?string $service = null, array $hints = []): array|false", + "Get array with contents of getaddrinfo about the given hostname" + ], + "socket_cmsg_space": [ + "socket_cmsg_space(int $level, int $type, int $num = 0): ?int", + "Calculate message buffer size" + ], + "socket_export_stream": [ + "socket_export_stream(Socket $socket): resource|false", + "Export a socket into a stream that encapsulates a socket" + ], + "socket_get_status": [ + "socket_get_status()", + "Alias of stream_get_meta_data()" + ], + "socket_getopt": [ + "socket_getopt()", + "Alias of socket_get_option()" + ], + "socket_import_stream": [ + "socket_import_stream(resource $stream): Socket|false", + "Import a stream" + ], + "socket_recvmsg": [ + "socket_recvmsg(Socket $socket, array &$message, int $flags = 0): int|false", + "Read a message" + ], + "socket_sendmsg": [ + "socket_sendmsg(Socket $socket, array $message, int $flags = 0): int|false", + "Send a message" + ], + "socket_set_blocking": [ + "socket_set_blocking()", + "Alias of stream_set_blocking()" + ], + "socket_set_timeout": [ + "socket_set_timeout()", + "Alias of stream_set_timeout()" + ], + "socket_setopt": [ + "socket_setopt()", + "Alias of socket_set_option()" + ], + "socket_wsaprotocol_info_export": [ + "socket_wsaprotocol_info_export(Socket $socket, int $process_id): string|false", + "Exports the WSAPROTOCOL_INFO Structure" + ], + "socket_wsaprotocol_info_import": [ + "socket_wsaprotocol_info_import(string $info_id): Socket|false", + "Imports a Socket from another Process" + ], + "socket_wsaprotocol_info_release": [ + "socket_wsaprotocol_info_release(string $info_id): bool", + "Releases an exported WSAPROTOCOL_INFO Structure" + ], + "spl_object_id": [ + "spl_object_id(object $object): int", + "" + ], + "sqlsrv_begin_transaction": [ + "sqlsrv_begin_transaction(resource $conn): bool", + "Begins a database transaction" + ], + "sqlsrv_cancel": [ + "sqlsrv_cancel(resource $stmt): bool", + "Cancels a statement" + ], + "sqlsrv_client_info": [ + "sqlsrv_client_info(resource $conn): array", + "Returns information about the client and specified connection" + ], + "sqlsrv_close": [ + "sqlsrv_close(resource $conn): bool", + "Closes an open connection and releases resourses associated with the connection" + ], + "sqlsrv_commit": [ + "sqlsrv_commit(resource $conn): bool", + "Commits a transaction that was begun with sqlsrv_begin_transaction()" + ], + "sqlsrv_configure": [ + "sqlsrv_configure(string $setting, mixed $value): bool", + "Changes the driver error handling and logging configurations" + ], + "sqlsrv_connect": [ + "sqlsrv_connect(string $serverName, array $connectionInfo = ?): resource", + "Opens a connection to a Microsoft SQL Server database" + ], + "sqlsrv_errors": [ + "sqlsrv_errors(int $errorsOrWarnings = ?): mixed", + "Returns error and warning information about the last SQLSRV operation performed" + ], + "sqlsrv_execute": [ + "sqlsrv_execute(resource $stmt): bool", + "Executes a statement prepared with sqlsrv_prepare()" + ], + "sqlsrv_fetch_array": [ + "sqlsrv_fetch_array(resource $stmt, int $fetchType = ?, int $row = ?, int $offset = ?): array", + "Returns a row as an array" + ], + "sqlsrv_fetch_object": [ + "sqlsrv_fetch_object(resource $stmt, string $className = ?, array $ctorParams = ?, int $row = ?, int $offset = ?): mixed", + "Retrieves the next row of data in a result set as an object" + ], + "sqlsrv_fetch": [ + "sqlsrv_fetch(resource $stmt, int $row = ?, int $offset = ?): mixed", + "Makes the next row in a result set available for reading" + ], + "sqlsrv_field_metadata": [ + "sqlsrv_field_metadata(resource $stmt): mixed", + "" + ], + "sqlsrv_free_stmt": [ + "sqlsrv_free_stmt(resource $stmt): bool", + "Frees all resources for the specified statement" + ], + "sqlsrv_get_config": [ + "sqlsrv_get_config(string $setting): mixed", + "Returns the value of the specified configuration setting" + ], + "sqlsrv_get_field": [ + "sqlsrv_get_field(resource $stmt, int $fieldIndex, int $getAsType = ?): mixed", + "Gets field data from the currently selected row" + ], + "sqlsrv_has_rows": [ + "sqlsrv_has_rows(resource $stmt): bool", + "Indicates whether the specified statement has rows" + ], + "sqlsrv_next_result": [ + "sqlsrv_next_result(resource $stmt): mixed", + "Makes the next result of the specified statement active" + ], + "sqlsrv_num_fields": [ + "sqlsrv_num_fields(resource $stmt): mixed", + "Retrieves the number of fields (columns) on a statement" + ], + "sqlsrv_num_rows": [ + "sqlsrv_num_rows(resource $stmt): mixed", + "Retrieves the number of rows in a result set" + ], + "sqlsrv_prepare": [ + "sqlsrv_prepare(resource $conn, string $sql, array $params = ?, array $options = ?): mixed", + "Prepares a query for execution" + ], + "sqlsrv_query": [ + "sqlsrv_query(resource $conn, string $sql, array $params = ?, array $options = ?): mixed", + "Prepares and executes a query" + ], + "sqlsrv_rollback": [ + "sqlsrv_rollback(resource $conn): bool", + "" + ], + "sqlsrv_rows_affected": [ + "sqlsrv_rows_affected(resource $stmt): int|false", + "" + ], + "sqlsrv_send_stream_data": [ + "sqlsrv_send_stream_data(resource $stmt): bool", + "Sends data from parameter streams to the server" + ], + "sqlsrv_server_info": [ + "sqlsrv_server_info(resource $conn): array", + "Returns information about the server" + ], + "str_contains": [ + "str_contains(string $haystack, string $needle): bool", + "Determine if a string contains a given substring" + ], + "str_ends_with": [ + "str_ends_with(string $haystack, string $needle): bool", + "Checks if a string ends with a given substring" + ], + "str_starts_with": [ + "str_starts_with(string $haystack, string $needle): bool", + "Checks if a string starts with a given substring" + ], + "stream_isatty": [ + "stream_isatty(resource $stream): bool", + "Check if a stream is a TTY" + ], + "stream_notification_callback": [ + "stream_notification_callback(int $notification_code, int $severity, string $message, int $message_code, int $bytes_transferred, int $bytes_max): void", + "A callback function for the notification context parameter" + ], + "stream_register_wrapper": [ + "stream_register_wrapper()", + "Alias of stream_wrapper_register()" + ], + "stream_set_chunk_size": [ + "stream_set_chunk_size(resource $stream, int $size): int", + "Set the stream chunk size" + ], + "stream_set_read_buffer": [ + "stream_set_read_buffer(resource $stream, int $size): int", + "Set read file buffering on the given stream" + ], + "tcpwrap_check": [ + "tcpwrap_check(string $daemon, string $address, string $user = ?, bool $nodns = false): bool", + "Performs a tcpwrap check" + ], + "trait_exists": [ + "trait_exists(string $trait, bool $autoload = true): bool", + "Checks if the trait exists" + ], + "use_soap_error_handler": [ + "use_soap_error_handler(bool $enable = true): bool", + "Set whether to use the SOAP error handler" + ], + "user_error": [ + "user_error()", + "Alias of trigger_error()" + ], + "yaml_emit_file": [ + "yaml_emit_file(string $filename, mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): bool", + "Send the YAML representation of a value to a file" + ], + "yaml_emit": [ + "yaml_emit(mixed $data, int $encoding = YAML_ANY_ENCODING, int $linebreak = YAML_ANY_BREAK, array $callbacks = null): string", + "Returns the YAML representation of a value" + ], + "yaml_parse_file": [ + "yaml_parse_file(string $filename, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a YAML stream from a file" + ], + "yaml_parse_url": [ + "yaml_parse_url(string $url, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a Yaml stream from a URL" + ], + "yaml_parse": [ + "yaml_parse(string $input, int $pos = 0, int &$ndocs = ?, array $callbacks = null): mixed", + "Parse a YAML stream" + ], + "zlib_decode": [ + "zlib_decode(string $data, int $max_length = 0): string|false", + "Uncompress any raw/gzip/zlib encoded data" + ], + "zlib_encode": [ + "zlib_encode(string $data, int $encoding, int $level = -1): string|false", + "Compress data with the specified encoding" + ] +}; +var variableMap = { + "$_COOKIE": { + type: "array" + }, + "$_ENV": { + type: "array" + }, + "$_FILES": { + type: "array" + }, + "$_GET": { + type: "array" + }, + "$_POST": { + type: "array" + }, + "$_REQUEST": { + type: "array" + }, + "$_SERVER": { + type: "array", + value: { + "DOCUMENT_ROOT": 1, + "GATEWAY_INTERFACE": 1, + "HTTP_ACCEPT": 1, + "HTTP_ACCEPT_CHARSET": 1, + "HTTP_ACCEPT_ENCODING": 1, + "HTTP_ACCEPT_LANGUAGE": 1, + "HTTP_CONNECTION": 1, + "HTTP_HOST": 1, + "HTTP_REFERER": 1, + "HTTP_USER_AGENT": 1, + "PATH_TRANSLATED": 1, + "PHP_SELF": 1, + "QUERY_STRING": 1, + "REMOTE_ADDR": 1, + "REMOTE_PORT": 1, + "REQUEST_METHOD": 1, + "REQUEST_URI": 1, + "SCRIPT_FILENAME": 1, + "SCRIPT_NAME": 1, + "SERVER_ADMIN": 1, + "SERVER_NAME": 1, + "SERVER_PORT": 1, + "SERVER_PROTOCOL": 1, + "SERVER_SIGNATURE": 1, + "SERVER_SOFTWARE": 1, + "argv": 1, + "argc": 1 + } + }, + "$_SESSION": { + type: "array" + }, + "$GLOBALS": { + type: "array" + }, + '$argv': { + type: "array" + }, + '$argc': { + type: "int" + } +}; +function is(token, type) { + return token.type.lastIndexOf(type) > -1; +} +var PhpCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (token.type === 'support.php_tag' && token.value === ' 0) { + var prevToken = session.getTokenAt(pos.row, token.start); + if (prevToken.type === 'support.php_tag') { + return this.getTagCompletions(state, session, pos, prefix); + } + } + return this.getFunctionCompletions(state, session, pos, prefix); + } + if (is(token, "variable")) + return this.getVariableCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (token.type === 'string' && /(\$[\w]*)\[["']([^'"]*)$/i.test(line)) + return this.getArrayKeyCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return [{ + caption: 'php', + value: 'php', + meta: "php tag", + score: 1000000 + }, { + caption: '=', + value: '=', + meta: "php tag", + score: 1000000 + }]; + }; + this.getFunctionCompletions = function (state, session, pos, prefix) { + var functions = Object.keys(functionMap); + return functions.map(function (func) { + return { + caption: func, + snippet: func + '($0)', + meta: "php function", + score: 1000000, + docHTML: functionMap[func][1] + }; + }); + }; + this.getVariableCompletions = function (state, session, pos, prefix) { + var variables = Object.keys(variableMap); + return variables.map(function (variable) { + return { + caption: variable, + value: variable, + meta: "php variable", + score: 1000000 + }; + }); + }; + this.getArrayKeyCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var variable = line.match(/(\$[\w]*)\[["']([^'"]*)$/i)[1]; + if (!variableMap[variable]) { + return []; + } + var keys = []; + if (variableMap[variable].type === 'array' && variableMap[variable].value) + keys = Object.keys(variableMap[variable].value); + return keys.map(function (key) { + return { + caption: key, + value: key, + meta: "php array key", + score: 1000000 + }; + }); + }; +}).call(PhpCompletions.prototype); +exports.PhpCompletions = PhpCompletions; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/php_completions","ace/mode/folding/cstyle","ace/unicode","ace/mode/html","ace/mode/javascript","ace/mode/css"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PhpHighlightRules = require("./php_highlight_rules").PhpHighlightRules; +var PhpLangHighlightRules = require("./php_highlight_rules").PhpLangHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var PhpCompletions = require("./php_completions").PhpCompletions; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var unicode = require("../unicode"); +var HtmlMode = require("./html").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var PhpMode = function (opts) { + this.HighlightRules = PhpLangHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.$completer = new PhpCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(PhpMode, TextMode); +(function () { + this.tokenRe = new RegExp("^[" + unicode.wordChars + "_]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "_]|\\s])+", "g"); + this.lineCommentStart = ["//", "#"]; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState != "doc-start") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.$id = "ace/mode/php-inline"; +}).call(PhpMode.prototype); +var Mode = function (opts) { + if (opts && opts.inline) { + var mode = new PhpMode(); + mode.createWorker = this.createWorker; + mode.inlinePhp = true; + return mode; + } + HtmlMode.call(this); + this.HighlightRules = PhpHighlightRules; + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode, + "php-": PhpMode + }); + this.foldingRules.subModes["php-"] = new CStyleFoldMode(); +}; +oop.inherits(Mode, HtmlMode); +(function () { + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/php_worker", "PhpWorker"); + worker.attachToDocument(session.getDocument()); + if (this.inlinePhp) + worker.call("setOptions", [{ inline: true }]); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/php"; + this.snippetFileId = "ace/snippets/php"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/php_laravel_blade",["require","exports","module","ace/lib/oop","ace/mode/php_laravel_blade_highlight_rules","ace/mode/php","ace/mode/javascript","ace/mode/css","ace/mode/html"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var PHPLaravelBladeHighlightRules = require("./php_laravel_blade_highlight_rules").PHPLaravelBladeHighlightRules; +var PHPMode = require("./php").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlMode = require("./html").Mode; +var Mode = function () { + PHPMode.call(this); + this.HighlightRules = PHPLaravelBladeHighlightRules; + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode, + "html-": HtmlMode + }); +}; +oop.inherits(Mode, PHPMode); +(function () { + this.$id = "ace/mode/php_laravel_blade"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/php_laravel_blade"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-pig.js b/vendor/assets/javascripts/ace/mode-pig.js index 3a7fcab8..fc625928 100644 --- a/vendor/assets/javascripts/ace/mode-pig.js +++ b/vendor/assets/javascripts/ace/mode-pig.js @@ -1,227 +1,196 @@ -define("ace/mode/pig_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/pig_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from Pig.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PigHighlightRules = function() { - +var PigHighlightRules = function () { this.$rules = { start: [{ - token: "comment.block.pig", - regex: /\/\*/, - push: [{ token: "comment.block.pig", - regex: /\*\//, - next: "pop" + regex: /\/\*/, + push: [{ + token: "comment.block.pig", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.pig" + }] + }, { + token: "comment.line.double-dash.asciidoc", + regex: /--.*$/ + }, { + token: "keyword.control.pig", + regex: /\b(?:ASSERT|LOAD|STORE|DUMP|FILTER|DISTINCT|FOREACH|GENERATE|STREAM|JOIN|COGROUP|GROUP|CROSS|ORDER|LIMIT|UNION|SPLIT|DESCRIBE|EXPLAIN|ILLUSTRATE|AS|BY|INTO|USING|LIMIT|PARALLEL|OUTER|INNER|DEFAULT|LEFT|SAMPLE|RANK|CUBE|ALL|KILL|QUIT|MAPREDUCE|ASC|DESC|THROUGH|SHIP|CACHE|DECLARE|CASE|WHEN|THEN|END|IN|PARTITION|FULL|IMPORT|IF|ONSCHEMA|INPUT|OUTPUT)\b/, + caseInsensitive: true + }, { + token: "storage.datatypes.pig", + regex: /\b(?:int|long|float|double|chararray|bytearray|boolean|datetime|biginteger|bigdecimal|tuple|bag|map)\b/, + caseInsensitive: true + }, { + token: "support.function.storage.pig", + regex: /\b(?:PigStorage|BinStorage|BinaryStorage|PigDump|HBaseStorage|JsonLoader|JsonStorage|AvroStorage|TextLoader|PigStreaming|TrevniStorage|AccumuloStorage)\b/ + }, { + token: "support.function.udf.pig", + regex: /\b(?:DIFF|TOBAG|TOMAP|TOP|TOTUPLE|RANDOM|FLATTEN|flatten|CUBE|ROLLUP|IsEmpty|ARITY|PluckTuple|SUBTRACT|BagToString)\b/ + }, { + token: "support.function.udf.math.pig", + regex: /\b(?:ABS|ACOS|ASIN|ATAN|CBRT|CEIL|COS|COSH|EXP|FLOOR|LOG|LOG10|ROUND|ROUND_TO|SIN|SINH|SQRT|TAN|TANH|AVG|COUNT|COUNT_STAR|MAX|MIN|SUM|COR|COV)\b/ + }, { + token: "support.function.udf.string.pig", + regex: /\b(?:CONCAT|INDEXOF|LAST_INDEX_OF|LCFIRST|LOWER|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|SIZE|STRSPLIT|SUBSTRING|TOKENIZE|TRIM|UCFIRST|UPPER|LTRIM|RTRIM|ENDSWITH|STARTSWITH|TRIM)\b/ + }, { + token: "support.function.udf.datetime.pig", + regex: /\b(?:AddDuration|CurrentTime|DaysBetween|GetDay|GetHour|GetMilliSecond|GetMinute|GetMonth|GetSecond|GetWeek|GetWeekYear|GetYear|HoursBetween|MilliSecondsBetween|MinutesBetween|MonthsBetween|SecondsBetween|SubtractDuration|ToDate|WeeksBetween|YearsBetween|ToMilliSeconds|ToString|ToUnixTime)\b/ + }, { + token: "support.function.command.pig", + regex: /\b(?:cat|cd|copyFromLocal|copyToLocal|cp|ls|mkdir|mv|pwd|rm)\b/ + }, { + token: "variable.pig", + regex: /\$[a_zA-Z0-9_]+/ + }, { + token: "constant.language.pig", + regex: /\b(?:NULL|true|false|stdin|stdout|stderr)\b/, + caseInsensitive: true + }, { + token: "constant.numeric.pig", + regex: /\b\d+(?:\.\d+)?\b/ + }, { + token: "keyword.operator.comparison.pig", + regex: /!=|==|<|>|<=|>=|\b(?:MATCHES|IS|OR|AND|NOT)\b/, + caseInsensitive: true + }, { + token: "keyword.operator.arithmetic.pig", + regex: /\+|\-|\*|\/|\%|\?|:|::|\.\.|#/ }, { - defaultToken: "comment.block.pig" - }] - }, { - token: "comment.line.double-dash.asciidoc", - regex: /--.*$/ - }, { - token: "keyword.control.pig", - regex: /\b(?:ASSERT|LOAD|STORE|DUMP|FILTER|DISTINCT|FOREACH|GENERATE|STREAM|JOIN|COGROUP|GROUP|CROSS|ORDER|LIMIT|UNION|SPLIT|DESCRIBE|EXPLAIN|ILLUSTRATE|AS|BY|INTO|USING|LIMIT|PARALLEL|OUTER|INNER|DEFAULT|LEFT|SAMPLE|RANK|CUBE|ALL|KILL|QUIT|MAPREDUCE|ASC|DESC|THROUGH|SHIP|CACHE|DECLARE|CASE|WHEN|THEN|END|IN|PARTITION|FULL|IMPORT|IF|ONSCHEMA|INPUT|OUTPUT)\b/, - caseInsensitive: true - }, { - token: "storage.datatypes.pig", - regex: /\b(?:int|long|float|double|chararray|bytearray|boolean|datetime|biginteger|bigdecimal|tuple|bag|map)\b/, - caseInsensitive: true - }, { - token: "support.function.storage.pig", - regex: /\b(?:PigStorage|BinStorage|BinaryStorage|PigDump|HBaseStorage|JsonLoader|JsonStorage|AvroStorage|TextLoader|PigStreaming|TrevniStorage|AccumuloStorage)\b/ - }, { - token: "support.function.udf.pig", - regex: /\b(?:DIFF|TOBAG|TOMAP|TOP|TOTUPLE|RANDOM|FLATTEN|flatten|CUBE|ROLLUP|IsEmpty|ARITY|PluckTuple|SUBTRACT|BagToString)\b/ - }, { - token: "support.function.udf.math.pig", - regex: /\b(?:ABS|ACOS|ASIN|ATAN|CBRT|CEIL|COS|COSH|EXP|FLOOR|LOG|LOG10|ROUND|ROUND_TO|SIN|SINH|SQRT|TAN|TANH|AVG|COUNT|COUNT_STAR|MAX|MIN|SUM|COR|COV)\b/ - }, { - token: "support.function.udf.string.pig", - regex: /\b(?:CONCAT|INDEXOF|LAST_INDEX_OF|LCFIRST|LOWER|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|SIZE|STRSPLIT|SUBSTRING|TOKENIZE|TRIM|UCFIRST|UPPER|LTRIM|RTRIM|ENDSWITH|STARTSWITH|TRIM)\b/ - }, { - token: "support.function.udf.datetime.pig", - regex: /\b(?:AddDuration|CurrentTime|DaysBetween|GetDay|GetHour|GetMilliSecond|GetMinute|GetMonth|GetSecond|GetWeek|GetWeekYear|GetYear|HoursBetween|MilliSecondsBetween|MinutesBetween|MonthsBetween|SecondsBetween|SubtractDuration|ToDate|WeeksBetween|YearsBetween|ToMilliSeconds|ToString|ToUnixTime)\b/ - }, { - token: "support.function.command.pig", - regex: /\b(?:cat|cd|copyFromLocal|copyToLocal|cp|ls|mkdir|mv|pwd|rm)\b/ - }, { - token: "variable.pig", - regex: /\$[a_zA-Z0-9_]+/ - }, { - token: "constant.language.pig", - regex: /\b(?:NULL|true|false|stdin|stdout|stderr)\b/, - caseInsensitive: true - }, { - token: "constant.numeric.pig", - regex: /\b\d+(?:\.\d+)?\b/ - }, { - token: "keyword.operator.comparison.pig", - regex: /!=|==|<|>|<=|>=|\b(?:MATCHES|IS|OR|AND|NOT)\b/, - caseInsensitive: true - }, { - token: "keyword.operator.arithmetic.pig", - regex: /\+|\-|\*|\/|\%|\?|:|::|\.\.|#/ - }, { - token: "string.quoted.double.pig", - regex: /"/, - push: [{ token: "string.quoted.double.pig", regex: /"/, - next: "pop" + push: [{ + token: "string.quoted.double.pig", + regex: /"/, + next: "pop" + }, { + token: "constant.character.escape.pig", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.pig" + }] }, { - token: "constant.character.escape.pig", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.pig" - }] - }, { - token: "string.quoted.single.pig", - regex: /'/, - push: [{ token: "string.quoted.single.pig", regex: /'/, - next: "pop" + push: [{ + token: "string.quoted.single.pig", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.pig", + regex: /\\./ + }, { + defaultToken: "string.quoted.single.pig" + }] }, { - token: "constant.character.escape.pig", - regex: /\\./ + todo: { + token: [ + "text", + "keyword.parameter.pig", + "text", + "storage.type.parameter.pig" + ], + regex: /^(\s*)(set)(\s+)(\S+)/, + caseInsensitive: true, + push: [{ + token: "text", + regex: /$/, + next: "pop" + }, { + include: "$self" + }] + } }, { - defaultToken: "string.quoted.single.pig" - }] - }, { - todo: { token: [ "text", - "keyword.parameter.pig", + "keyword.alias.pig", "text", - "storage.type.parameter.pig" + "storage.type.alias.pig" ], - regex: /^(\s*)(set)(\s+)(\S+)/, + regex: /(\s*)(DEFINE|DECLARE|REGISTER)(\s+)(\S+)/, caseInsensitive: true, push: [{ - token: "text", - regex: /$/, - next: "pop" - }, { - include: "$self" - }] - } - }, { - token: [ - "text", - "keyword.alias.pig", - "text", - "storage.type.alias.pig" - ], - regex: /(\s*)(DEFINE|DECLARE|REGISTER)(\s+)(\S+)/, - caseInsensitive: true, - push: [{ - token: "text", - regex: /;?$/, - next: "pop" + token: "text", + regex: /;?$/, + next: "pop" + }] }] - }] }; - this.normalizeRules(); }; - PigHighlightRules.metaData = { fileTypes: ["pig"], name: "Pig", scopeName: "source.pig" }; - - oop.inherits(PigHighlightRules, TextHighlightRules); - exports.PigHighlightRules = PigHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -234,70 +203,76 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/pig",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pig_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/pig",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pig_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PigHighlightRules = require("./pig_highlight_rules").PigHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PigHighlightRules; this.foldingRules = new FoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/pig"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/pig"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-plain_text.js b/vendor/assets/javascripts/ace/mode-plain_text.js index 2eb75e1d..df093910 100644 --- a/vendor/assets/javascripts/ace/mode-plain_text.js +++ b/vendor/assets/javascripts/ace/mode-plain_text.js @@ -1,25 +1,27 @@ -define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"], function(require, exports, module) { -"use strict"; - +define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var Behaviour = require("./behaviour").Behaviour; - -var Mode = function() { +var Mode = function () { this.HighlightRules = TextHighlightRules; this.$behaviour = new Behaviour(); }; - oop.inherits(Mode, TextMode); - -(function() { +(function () { this.type = "text"; - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return ''; }; this.$id = "ace/mode/plain_text"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/plain_text"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-plsql.js b/vendor/assets/javascripts/ace/mode-plsql.js new file mode 100644 index 00000000..20e77b6c --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-plsql.js @@ -0,0 +1,268 @@ +define("ace/mode/plsql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var plsqlHighlightRules = function () { + var keywords = ("all|alter|and|any|array|arrow|as|asc|at|begin|between|by|case|check|clusters|cluster|colauth|columns|compress|connect|crash|create|cross|current|database|declare|default|delete|desc|distinct|drop|else|end|exception|exclusive|exists|fetch|form|for|foreign|from|goto|grant|group|having|identified|if|in|inner|indexes|index|insert|intersect|into|is|join|key|left|like|lock|minus|mode|natural|nocompress|not|nowait|null|of|on|option|or|order,overlaps|outer|primary|prior|procedure|public|range|record|references|resource|revoke|right|select|share|size|sql|start|subtype|tabauth|table|then|to|type|union|unique|update|use|values|view|views|when|where|with"); + var builtinConstants = ("true|false"); + var builtinFunctions = ("abs|acos|add_months|ascii|asciistr|asin|atan|atan2|avg|bfilename|bin_to_num|bitand|cardinality|case|cast|ceil|chartorowid|chr|coalesce|compose|concat|convert|corr|cos|cosh|count|covar_pop|covar_samp|cume_dist|current_date|current_timestamp|dbtimezone|decode|decompose|dense_rank|dump|empty_blob|empty_clob|exp|extract|first_value|floor|from_tz|greatest|group_id|hextoraw|initcap|instr|instr2|instr4|instrb|instrc|lag|last_day|last_value|lead|least|length|length2|length4|lengthb|lengthc|listagg|ln|lnnvl|localtimestamp|log|lower|lpad|ltrim|max|median|min|mod|months_between|nanvl|nchr|new_time|next_day|nth_value|nullif|numtodsinterval|numtoyminterval|nvl|nvl2|power|rank|rawtohex|regexp_count|regexp_instr|regexp_replace|regexp_substr|remainder|replace|round|rownum|rpad|rtrim|sessiontimezone|sign|sin|sinh|soundex|sqrt|stddev|substr|sum|sys_context|sysdate|systimestamp|tan|tanh|to_char|to_clob|to_date|to_dsinterval|to_lob|to_multi_byte|to_nclob|to_number|to_single_byte|to_timestamp|to_timestamp_tz|to_yminterval|translate|trim|trunc|tz_offset|uid|upper|user|userenv|var_pop|var_samp|variance|vsize"); + var dataTypes = ("char|nchar|nvarchar2|varchar2|long|raw|" + + "number|numeric|float|dec|decimal|integer|int|smallint|real|double|precision|" + + "date|timestamp|interval|year|day|" + + "bfile|blob|clob|nclob|" + + "rowid|urowid"); + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords, + "constant.language": builtinConstants, + "storage.type": dataTypes + }, "identifier", true); + this.$rules = { + "start": [{ + token: "comment", + regex: "--.*$" + }, { + token: "comment", + start: "/\\*", + end: "\\*/" + }, { + token: "string", // " string + regex: '".*?"' + }, { + token: "string", // ' string + regex: "'.*?'" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + }] + }; + this.normalizeRules(); +}; +oop.inherits(plsqlHighlightRules, TextHighlightRules); +exports.plsqlHighlightRules = plsqlHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/folding/sql",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { +}).call(FoldMode.prototype); + +}); + +define("ace/mode/plsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/plsql_highlight_rules","ace/mode/folding/sql"], function(require, exports, module){/* ***** BEGIN LICENSE BLOCK ***** + * Distributed under the BSD license: + * + * Copyright (c) 2012, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ***** END LICENSE BLOCK ***** */ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PLSqlHighlightRules = require("./plsql_highlight_rules").plsqlHighlightRules; +var FoldMode = require("./folding/sql").FoldMode; +var Mode = function () { + this.HighlightRules = PLSqlHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/plsql"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/plsql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-powershell.js b/vendor/assets/javascripts/ace/mode-powershell.js index fedb5f61..6b5666bd 100644 --- a/vendor/assets/javascripts/ace/mode-powershell.js +++ b/vendor/assets/javascripts/ace/mode-powershell.js @@ -1,35 +1,61 @@ -define("ace/mode/powershell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/powershell_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PowershellHighlightRules = function() { - var keywords = ( - "begin|break|catch|continue|data|do|dynamicparam|else|elseif|end|exit|filter|" + +var PowershellHighlightRules = function () { + var identifierRe = "[a-zA-Z\\?_\u00a1-\uffff][a-zA-Z\\d\\?_\u00a1-\uffff]*"; + var keywords = ("begin|break|catch|class|continue|data|define|do|dynamicparam|else|elseif|end|enum|exit|filter|" + "finally|for|foreach|from|function|if|in|inlinescript|hidden|parallel|param|" + - "process|return|sequence|switch|throw|trap|try|until|while|workflow" - ); + "process|return|static|sequence|switch|throw|trap|try|until|using|while|workflow|var"); var builtinFunctions = ( - "Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|" + + "Get-AppBackgroundTask|Start-AppBackgroundTask|Unregister-AppBackgroundTask|Disable-AppBackgroundTaskDiagnosticLog|Enable-AppBackgroundTaskDiagnosticLog|Set-AppBackgroundTaskResourcePolicy|" + "Get-AppLockerFileInformation|Get-AppLockerPolicy|New-AppLockerPolicy|Set-AppLockerPolicy|Test-AppLockerPolicy|" + - "Get-AppxLastError|Get-AppxLog|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppxDefaultVolume|Get-AppxPackage|Get-AppxPackageManifest|Get-AppxVolume|Mount-AppxVolume|Move-AppxPackage|Remove-AppxPackage|Remove-AppxVolume|Set-AppxDefaultVolume|" + + "Add-AppvClientConnectionGroup|Add-AppvClientPackage|Add-AppvPublishingServer|Disable-Appv|Disable-AppvClientConnectionGroup|Disable-AppvClientMode|Disable-AppvPublishingServer|Enable-Appv|Enable-AppvClientConnectionGroup|Enable-AppvClientMode|Enable-AppvPublishingServer|Get-AppvClientApplication|Get-AppvClientConfiguration|Get-AppvClientConnectionGroup|Get-AppvClientMode|Get-AppvClientPackage|Get-AppvClientPackageStatus|Get-AppvClientPackageVersion|Get-AppvClientPackageVersionHistory|Get-AppvClientPackageVersionStatus|Get-AppvClientPublishingServer|Get-AppvClientSFTFileSystem|Get-AppvClientStatus|Get-AppvPublishingServer|Get-AppvVirtualProcess|Publish-AppvClientPackage|Remove-AppvClientConnectionGroup|Remove-AppvClientPackage|Remove-AppvPublishingServer|Set-AppvClientConfiguration|Set-AppvClientMode|Set-AppvClientPackage|Set-AppvClientPublishingServer|Set-AppvVirtualProcess|Sync-AppvPublishingServer|Get-AppvStatus|Mount-AppvClientConnectionGroup|Repair-AppvClientConnectionGroup|Repair-AppvClientPackage|Send-AppvClientReport|Set-AppvPublishingServer|Start-AppvVirtualProcess|Stop-AppvClientConnectionGroup|Stop-AppvClientPackage|Unpublish-AppvClientPackage|" + + "Expand-AppvSequencerPackage|New-AppvPackageAccelerator|New-AppvSequencerPackage|Update-AppvSequencerPackage|" + + "Add-AppSharedPackageContainer|Add-AppxPackage|Add-AppxVolume|Dismount-AppxVolume|Get-AppSharedPackageContainer|Get-AppxDefaultVolume|Get-AppxLastError|Get-AppxLog|Get-AppxPackage|Get-AppxPackageAutoUpdateSettings|Get-AppxPackageManifest|Get-AppxVolume|Invoke-CommandInDesktopPackage|Mount-AppxVolume|Move-AppxPackage|Remove-AppSharedPackageContainer|Remove-AppxPackage|Remove-AppxPackageAutoUpdateSettings|Remove-AppxVolume|Reset-AppSharedPackageContainer|Reset-AppxPackage|Set-AppxDefaultVolume|Set-AppxPackageAutoUpdateSettings|" + "Clear-AssignedAccess|Get-AssignedAccess|Set-AssignedAccess|" + - "Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|" + + "Get-BpaModel|Get-BpaResult|Invoke-BpaModel|Set-BpaResult|" + + "Add-BitLockerKeyProtector|Backup-BitLockerKeyProtector|BackupToAAD-BitLockerKeyProtector|Clear-BitLockerAutoUnlock|Disable-BitLocker|Disable-BitLockerAutoUnlock|Enable-BitLocker|Enable-BitLockerAutoUnlock|Get-BitLockerVolume|Lock-BitLocker|Remove-BitLockerKeyProtector|Resume-BitLocker|Suspend-BitLocker|Unlock-BitLocker|" + "Add-BitsFile|Complete-BitsTransfer|Get-BitsTransfer|Remove-BitsTransfer|Resume-BitsTransfer|Set-BitsTransfer|Start-BitsTransfer|Suspend-BitsTransfer|" + + "Checkpoint-SbecActiveConfig|Clear-SbecProviderCache|Disable-SbecAutologger|Disable-SbecBcd|Enable-SbecAutologger|Enable-SbecBcd|Enable-SbecBootImage|Enable-SbecWdsBcd|Get-SbecActiveConfig|Get-SbecBackupConfig|Get-SbecDestination|Get-SbecForwarding|Get-SbecHistory|Get-SbecLocalizedMessage|Get-SbecLogSession|Get-SbecTraceProviders|New-SbecUnattendFragment|Redo-SbecActiveConfig|Restore-SbecBackupConfig|Save-SbecInstance|Save-SbecLogSession|Set-SbecActiveConfig|Set-SbecLogSession|Start-SbecInstance|Start-SbecLogSession|Start-SbecNtKernelLogSession|Start-SbecSimpleLogSession|Stop-SbecInstance|Stop-SbecLogSession|Test-SbecActiveConfig|Test-SbecConfig|Undo-SbecActiveConfig|" + "Add-BCDataCacheExtension|Clear-BCCache|Disable-BC|Disable-BCDowngrading|Disable-BCServeOnBattery|Enable-BCDistributed|Enable-BCDowngrading|Enable-BCHostedClient|Enable-BCHostedServer|Enable-BCLocal|Enable-BCServeOnBattery|Export-BCCachePackage|Export-BCSecretKey|Get-BCClientConfiguration|Get-BCContentServerConfiguration|Get-BCDataCache|Get-BCDataCacheExtension|Get-BCHashCache|Get-BCHostedCacheServerConfiguration|Get-BCNetworkConfiguration|Get-BCStatus|Import-BCCachePackage|Import-BCSecretKey|Publish-BCFileContent|Publish-BCWebContent|Remove-BCDataCacheExtension|Reset-BC|Set-BCAuthentication|Set-BCCache|Set-BCDataCacheEntryMaxAge|Set-BCMinSMBLatency|Set-BCSecretKey|" + + "Add-CauClusterRole|Disable-CauClusterRole|Enable-CauClusterRole|Export-CauReport|Get-CauClusterRole|Get-CauPlugin|Get-CauReport|Get-CauRun|Invoke-CauRun|Invoke-CauScan|Register-CauPlugin|Remove-CauClusterRole|Save-CauDebugTrace|Set-CauClusterRole|Stop-CauRun|Test-CauSetup|Unregister-CauPlugin|" + "Export-BinaryMiLog|Get-CimAssociatedInstance|Get-CimClass|Get-CimInstance|Get-CimSession|Import-BinaryMiLog|Invoke-CimMethod|New-CimInstance|New-CimSession|New-CimSessionOption|Register-CimIndicationEvent|Remove-CimInstance|Remove-CimSession|Set-CimInstance|" + "ConvertFrom-CIPolicy|" + - "Add-SignerRule|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|" + + "Add-SignerRule|ConvertFrom-CIPolicy|Edit-CIPolicyRule|Get-CIPolicy|Get-CIPolicyIdInfo|Get-CIPolicyInfo|Get-SystemDriver|Merge-CIPolicy|New-CIPolicy|New-CIPolicyRule|Remove-CIPolicyRule|Set-CIPolicyIdInfo|Set-CIPolicySetting|Set-CIPolicyVersion|Set-HVCIOptions|Set-RuleOption|" + + "Disable-NetQosFlowControl|Enable-NetQosFlowControl|Get-NetQosDcbxSetting|Get-NetQosFlowControl|Get-NetQosTrafficClass|New-NetQosTrafficClass|Remove-NetQosTrafficClass|Set-NetQosDcbxSetting|Set-NetQosFlowControl|Set-NetQosTrafficClass|Switch-NetQosDcbxSetting|Switch-NetQosFlowControl|Switch-NetQosTrafficClass|" + + "Disable-DedupVolume|Enable-DedupVolume|Expand-DedupFile|Get-DedupJob|Get-DedupMetadata|Get-DedupSchedule|Get-DedupStatus|Get-DedupVolume|Measure-DedupFileMetadata|New-DedupSchedule|Remove-DedupSchedule|Set-DedupSchedule|Set-DedupVolume|Start-DedupJob|Stop-DedupJob|Update-DedupStatus|" + "Add-MpPreference|Get-MpComputerStatus|Get-MpPreference|Get-MpThreat|Get-MpThreatCatalog|Get-MpThreatDetection|Remove-MpPreference|Remove-MpThreat|Set-MpPreference|Start-MpScan|Start-MpWDOScan|Update-MpSignature|" + + "Backup-DHASConfiguration|Get-DHASActiveEncryptionCertificate|Get-DHASActiveSigningCertificate|Get-DHASCertificateChainPolicy|Get-DHASInactiveEncryptionCertificate|Get-DHASInactiveSigningCertificate|Install-DeviceHealthAttestation|Remove-DHASInactiveEncryptionCertificate|Remove-DHASInactiveSigningCertificate|Restore-DHASConfiguration|Set-DHASActiveEncryptionCertificate|Set-DHASActiveSigningCertificate|Set-DHASCertificateChainPolicy|Set-DHASSupportedAuthenticationSchema|Uninstall-DeviceHealthAttestation||" + + "Get-DfsnAccess|Get-DfsnFolder|Get-DfsnFolderTarget|Get-DfsnRoot|Get-DfsnRootTarget|Get-DfsnServerConfiguration|Grant-DfsnAccess|Move-DfsnFolder|New-DfsnFolder|New-DfsnFolderTarget|New-DfsnRoot|New-DfsnRootTarget|Remove-DfsnAccess|Remove-DfsnFolder|Remove-DfsnFolderTarget|Remove-DfsnRoot|Remove-DfsnRootTarget|Revoke-DfsnAccess|Set-DfsnFolder|Set-DfsnFolderTarget|Set-DfsnRoot|Set-DfsnRootTarget|Set-DfsnServerConfiguration|" + + "Add-DfsrConnection|Add-DfsrMember|ConvertFrom-DfsrGuid|Export-DfsrClone|Get-DfsrBacklog|Get-DfsrCloneState|Get-DfsrConnection|Get-DfsrConnectionSchedule|Get-DfsrDelegation|Get-DfsReplicatedFolder|Get-DfsReplicationGroup|Get-DfsrFileHash|Get-DfsrGroupSchedule|Get-DfsrIdRecord|Get-DfsrMember|Get-DfsrMembership|Get-DfsrPreservedFiles|Get-DfsrServiceConfiguration|Get-DfsrState|Grant-DfsrDelegation|Import-DfsrClone|New-DfsReplicatedFolder|New-DfsReplicationGroup|Remove-DfsrConnection|Remove-DfsReplicatedFolder|Remove-DfsReplicationGroup|Remove-DfsrMember|Remove-DfsrPropagationTestFile|Reset-DfsrCloneState|Restore-DfsrPreservedFiles|Revoke-DfsrDelegation|Set-DfsrConnection|Set-DfsrConnectionSchedule|Set-DfsReplicatedFolder|Set-DfsReplicationGroup|Set-DfsrGroupSchedule|Set-DfsrMember|Set-DfsrMembership|Set-DfsrServiceConfiguration|Start-DfsrPropagationTest|Suspend-DfsReplicationGroup|Sync-DfsReplicationGroup|Update-DfsrConfigurationFromAD|Write-DfsrHealthReport|Write-DfsrPropagationReport|" + + "Add-DhcpServerInDC|Add-DhcpServerSecurityGroup|Add-DhcpServerv4Class|Add-DhcpServerv4ExclusionRange|Add-DhcpServerv4Failover|Add-DhcpServerv4FailoverScope|Add-DhcpServerv4Filter|Add-DhcpServerv4Lease|Add-DhcpServerv4MulticastExclusionRange|Add-DhcpServerv4MulticastScope|Add-DhcpServerv4OptionDefinition|Add-DhcpServerv4Policy|Add-DhcpServerv4PolicyIPRange|Add-DhcpServerv4Reservation|Add-DhcpServerv4Scope|Add-DhcpServerv4Superscope|Add-DhcpServerv6Class|Add-DhcpServerv6ExclusionRange|Add-DhcpServerv6Lease|Add-DhcpServerv6OptionDefinition|Add-DhcpServerv6Reservation|Add-DhcpServerv6Scope|Backup-DhcpServer|Export-DhcpServer|Get-DhcpServerAuditLog|Get-DhcpServerDatabase|Get-DhcpServerDnsCredential|Get-DhcpServerInDC|Get-DhcpServerSetting|Get-DhcpServerv4Binding|Get-DhcpServerv4Class|Get-DhcpServerv4DnsSetting|Get-DhcpServerv4ExclusionRange|Get-DhcpServerv4Failover|Get-DhcpServerv4Filter|Get-DhcpServerv4FilterList|Get-DhcpServerv4FreeIPAddress|Get-DhcpServerv4Lease|Get-DhcpServerv4MulticastExclusionRange|Get-DhcpServerv4MulticastLease|Get-DhcpServerv4MulticastScope|Get-DhcpServerv4MulticastScopeStatistics|Get-DhcpServerv4OptionDefinition|Get-DhcpServerv4OptionValue|Get-DhcpServerv4Policy|Get-DhcpServerv4PolicyIPRange|Get-DhcpServerv4Reservation|Get-DhcpServerv4Scope|Get-DhcpServerv4ScopeStatistics|Get-DhcpServerv4Statistics|Get-DhcpServerv4Superscope|Get-DhcpServerv4SuperscopeStatistics|Get-DhcpServerv6Binding|Get-DhcpServerv6Class|Get-DhcpServerv6DnsSetting|Get-DhcpServerv6ExclusionRange|Get-DhcpServerv6FreeIPAddress|Get-DhcpServerv6Lease|Get-DhcpServerv6OptionDefinition|Get-DhcpServerv6OptionValue|Get-DhcpServerv6Reservation|Get-DhcpServerv6Scope|Get-DhcpServerv6ScopeStatistics|Get-DhcpServerv6StatelessStatistics|Get-DhcpServerv6StatelessStore|Get-DhcpServerv6Statistics|Get-DhcpServerVersion|Import-DhcpServer|Invoke-DhcpServerv4FailoverReplication|Remove-DhcpServerDnsCredential|Remove-DhcpServerInDC|Remove-DhcpServerv4Class|Remove-DhcpServerv4ExclusionRange|Remove-DhcpServerv4Failover|Remove-DhcpServerv4FailoverScope|Remove-DhcpServerv4Filter|Remove-DhcpServerv4Lease|Remove-DhcpServerv4MulticastExclusionRange|Remove-DhcpServerv4MulticastLease|Remove-DhcpServerv4MulticastScope|Remove-DhcpServerv4OptionDefinition|Remove-DhcpServerv4OptionValue|Remove-DhcpServerv4Policy|Remove-DhcpServerv4PolicyIPRange|Remove-DhcpServerv4Reservation|Remove-DhcpServerv4Scope|Remove-DhcpServerv4Superscope|Remove-DhcpServerv6Class|Remove-DhcpServerv6ExclusionRange|Remove-DhcpServerv6Lease|Remove-DhcpServerv6OptionDefinition|Remove-DhcpServerv6OptionValue|Remove-DhcpServerv6Reservation|Remove-DhcpServerv6Scope|Rename-DhcpServerv4Superscope|Repair-DhcpServerv4IPRecord|Restore-DhcpServer|Set-DhcpServerAuditLog|Set-DhcpServerDatabase|Set-DhcpServerDnsCredential|Set-DhcpServerSetting|Set-DhcpServerv4Binding|Set-DhcpServerv4Class|Set-DhcpServerv4DnsSetting|Set-DhcpServerv4Failover|Set-DhcpServerv4FilterList|Set-DhcpServerv4MulticastScope|Set-DhcpServerv4OptionDefinition|Set-DhcpServerv4OptionValue|Set-DhcpServerv4Policy|Set-DhcpServerv4Reservation|Set-DhcpServerv4Scope|Set-DhcpServerv6Binding|Set-DhcpServerv6Class|Set-DhcpServerv6DnsSetting|Set-DhcpServerv6OptionDefinition|Set-DhcpServerv6OptionValue|Set-DhcpServerv6Reservation|Set-DhcpServerv6Scope|Set-DhcpServerv6StatelessStore|" + "Disable-DAManualEntryPointSelection|Enable-DAManualEntryPointSelection|Get-DAClientExperienceConfiguration|Get-DAEntryPointTableItem|New-DAEntryPointTableItem|Remove-DAEntryPointTableItem|Rename-DAEntryPointTableItem|Reset-DAClientExperienceConfiguration|Reset-DAEntryPointTableItem|Set-DAClientExperienceConfiguration|Set-DAEntryPointTableItem|" + - "Add-ProvisionedAppxPackage|Apply-WindowsUnattend|Get-ProvisionedAppxPackage|Remove-ProvisionedAppxPackage|Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-WindowsEdition|Set-WindowsProductKey|Split-WindowsImage|Update-WIMBootEntry|Use-WindowsUnattend|" + - "Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientNrptRule|Set-DnsClient|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|Resolve-DnsName|" + - "Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Remove-EtwTraceSession|Send-EtwTraceSession|Set-AutologgerConfig|Set-EtwTraceProvider|Set-EtwTraceSession|" + - "Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|" + + "Add-AppxProvisionedPackage|Add-WindowsCapability|Add-WindowsDriver|Add-WindowsImage|Add-WindowsPackage|Clear-WindowsCorruptMountPoint|Disable-WindowsOptionalFeature|Dismount-WindowsImage|Enable-WindowsOptionalFeature|Expand-WindowsCustomDataImage|Expand-WindowsImage|Export-WindowsCapabilitySource|Export-WindowsDriver|Export-WindowsImage|Get-AppxProvisionedPackage|Get-NonRemovableAppsPolicy|Get-WIMBootEntry|Get-WindowsCapability|Get-WindowsDriver|Get-WindowsEdition|Get-WindowsImage|Get-WindowsImageContent|Get-WindowsOptionalFeature|Get-WindowsPackage|Get-WindowsReservedStorageState|Mount-WindowsImage|New-WindowsCustomImage|New-WindowsImage|Optimize-AppXProvisionedPackages|Optimize-WindowsImage|Remove-AppxProvisionedPackage|Remove-WindowsCapability|Remove-WindowsDriver|Remove-WindowsImage|Remove-WindowsPackage|Repair-WindowsImage|Save-WindowsImage|Set-AppXProvisionedDataFile|Set-NonRemovableAppsPolicy|Set-WindowsEdition|Set-WindowsProductKey|Set-WindowsReservedStorageState|Split-WindowsImage|Start-OSUninstall|Update-WIMBootEntry|Use-WindowsUnattend|" + + "Add-DnsClientDohServerAddress|Add-DnsClientNrptRule|Clear-DnsClientCache|Get-DnsClient|Get-DnsClientCache|Get-DnsClientDohServerAddress|Get-DnsClientGlobalSetting|Get-DnsClientNrptGlobal|Get-DnsClientNrptPolicy|Get-DnsClientNrptRule|Get-DnsClientServerAddress|Register-DnsClient|Remove-DnsClientDohServerAddress|Remove-DnsClientNrptRule|Resolve-DnsName|Set-DnsClient|Set-DnsClientDohServerAddress|Set-DnsClientGlobalSetting|Set-DnsClientNrptGlobal|Set-DnsClientNrptRule|Set-DnsClientServerAddress|" + + "Add-DnsServerClientSubnet|Add-DnsServerConditionalForwarderZone|Add-DnsServerDirectoryPartition|Add-DnsServerForwarder|Add-DnsServerPrimaryZone|Add-DnsServerQueryResolutionPolicy|Add-DnsServerRecursionScope|Add-DnsServerResourceRecord|Add-DnsServerResourceRecordA|Add-DnsServerResourceRecordAAAA|Add-DnsServerResourceRecordCName|Add-DnsServerResourceRecordDnsKey|Add-DnsServerResourceRecordDS|Add-DnsServerResourceRecordMX|Add-DnsServerResourceRecordPtr|Add-DnsServerResponseRateLimitingExceptionlist|Add-DnsServerRootHint|Add-DnsServerSecondaryZone|Add-DnsServerSigningKey|Add-DnsServerStubZone|Add-DnsServerTrustAnchor|Add-DnsServerVirtualizationInstance|Add-DnsServerZoneDelegation|Add-DnsServerZoneScope|Add-DnsServerZoneTransferPolicy|Clear-DnsServerCache|Clear-DnsServerStatistics|ConvertTo-DnsServerPrimaryZone|ConvertTo-DnsServerSecondaryZone|Disable-DnsServerPolicy|Disable-DnsServerSigningKeyRollover|Enable-DnsServerPolicy|Enable-DnsServerSigningKeyRollover|Export-DnsServerDnsSecPublicKey|Export-DnsServerZone|Get-DnsServer|Get-DnsServerCache|Get-DnsServerClientSubnet|Get-DnsServerDiagnostics|Get-DnsServerDirectoryPartition|Get-DnsServerDnsSecZoneSetting|Get-DnsServerDsSetting|Get-DnsServerEDns|Get-DnsServerForwarder|Get-DnsServerGlobalNameZone|Get-DnsServerGlobalQueryBlockList|Get-DnsServerQueryResolutionPolicy|Get-DnsServerRecursion|Get-DnsServerRecursionScope|Get-DnsServerResourceRecord|Get-DnsServerResponseRateLimiting|Get-DnsServerResponseRateLimitingExceptionlist|Get-DnsServerRootHint|Get-DnsServerScavenging|Get-DnsServerSetting|Get-DnsServerSigningKey|Get-DnsServerStatistics|Get-DnsServerTrustAnchor|Get-DnsServerTrustPoint|Get-DnsServerVirtualizationInstance|Get-DnsServerZone|Get-DnsServerZoneAging|Get-DnsServerZoneDelegation|Get-DnsServerZoneScope|Get-DnsServerZoneTransferPolicy|Import-DnsServerResourceRecordDS|Import-DnsServerRootHint|Import-DnsServerTrustAnchor|Invoke-DnsServerSigningKeyRollover|Invoke-DnsServerZoneSign|Invoke-DnsServerZoneUnsign|Register-DnsServerDirectoryPartition|Remove-DnsServerClientSubnet|Remove-DnsServerDirectoryPartition|Remove-DnsServerForwarder|Remove-DnsServerQueryResolutionPolicy|Remove-DnsServerRecursionScope|Remove-DnsServerResourceRecord|Remove-DnsServerResponseRateLimitingExceptionlist|Remove-DnsServerRootHint|Remove-DnsServerSigningKey|Remove-DnsServerTrustAnchor|Remove-DnsServerVirtualizationInstance|Remove-DnsServerZone|Remove-DnsServerZoneDelegation|Remove-DnsServerZoneScope|Remove-DnsServerZoneTransferPolicy|Reset-DnsServerZoneKeyMasterRole|Restore-DnsServerPrimaryZone|Restore-DnsServerSecondaryZone|Resume-DnsServerZone|Set-DnsServer|Set-DnsServerCache|Set-DnsServerClientSubnet|Set-DnsServerConditionalForwarderZone|Set-DnsServerDiagnostics|Set-DnsServerDnsSecZoneSetting|Set-DnsServerDsSetting|Set-DnsServerEDns|Set-DnsServerForwarder|Set-DnsServerGlobalNameZone|Set-DnsServerGlobalQueryBlockList|Set-DnsServerPrimaryZone|Set-DnsServerQueryResolutionPolicy|Set-DnsServerRecursion|Set-DnsServerRecursionScope|Set-DnsServerResourceRecord|Set-DnsServerResourceRecordAging|Set-DnsServerResponseRateLimiting|Set-DnsServerResponseRateLimitingExceptionlist|Set-DnsServerRootHint|Set-DnsServerScavenging|Set-DnsServerSecondaryZone|Set-DnsServerSetting|Set-DnsServerSigningKey|Set-DnsServerStubZone|Set-DnsServerVirtualizationInstance|Set-DnsServerZoneAging|Set-DnsServerZoneDelegation|Set-DnsServerZoneTransferPolicy|Show-DnsServerCache|Show-DnsServerKeyStorageProvider|Start-DnsServerScavenging|Start-DnsServerZoneTransfer|Step-DnsServerSigningKeyRollover|Suspend-DnsServerZone|Sync-DnsServerZone|Test-DnsServer|Test-DnsServerDnsSecZoneSetting|Unregister-DnsServerDirectoryPartition|Update-DnsServerTrustPoint|" + + "Add-EtwTraceProvider|Get-AutologgerConfig|Get-EtwTraceProvider|Get-EtwTraceSession|New-AutologgerConfig|New-EtwTraceSession|Remove-AutologgerConfig|Remove-EtwTraceProvider|Save-EtwTraceSession|Send-EtwTraceSession|Set-EtwTraceProvider|Start-EtwTraceSession|Stop-EtwTraceSession|Update-AutologgerConfig|Update-EtwTraceSession|" + + "Add-ClusterCheckpoint|Add-ClusterDisk|Add-ClusterFileServerRole|Add-ClusterGenericApplicationRole|Add-ClusterGenericScriptRole|Add-ClusterGenericServiceRole|Add-ClusterGroup|Add-ClusterGroupSetDependency|Add-ClusterGroupToSet|Add-ClusteriSCSITargetServerRole|Add-ClusterNode|Add-ClusterResource|Add-ClusterResourceDependency|Add-ClusterResourceType|Add-ClusterScaleOutFileServerRole|Add-ClusterSharedVolume|Add-ClusterVirtualMachineRole|Add-ClusterVMMonitoredItem|Block-ClusterAccess|Clear-ClusterDiskReservation|Clear-ClusterNode|Disable-ClusterStorageSpacesDirect|Enable-ClusterStorageSpacesDirect|Get-Cluster|Get-ClusterAccess|Get-ClusterAvailableDisk|Get-ClusterCheckpoint|Get-ClusterDiagnosticInfo|Get-ClusterFaultDomain|Get-ClusterFaultDomainXML|Get-ClusterGroup|Get-ClusterGroupSet|Get-ClusterGroupSetDependency|Get-ClusterLog|Get-ClusterNetwork|Get-ClusterNetworkInterface|Get-ClusterNode|Get-ClusterOwnerNode|Get-ClusterParameter|Get-ClusterQuorum|Get-ClusterResource|Get-ClusterResourceDependency|Get-ClusterResourceDependencyReport|Get-ClusterResourceType|Get-ClusterSharedVolume|Get-ClusterSharedVolumeState|Get-ClusterStorageSpacesDirect|Get-ClusterVMMonitoredItem|Grant-ClusterAccess|Move-ClusterGroup|Move-ClusterResource|Move-ClusterSharedVolume|Move-ClusterVirtualMachineRole|New-Cluster|New-ClusterFaultDomain|New-ClusterGroupSet|New-ClusterNameAccount|Remove-Cluster|Remove-ClusterAccess|Remove-ClusterCheckpoint|Remove-ClusterFaultDomain|Remove-ClusterGroup|Remove-ClusterGroupFromSet|Remove-ClusterGroupSet|Remove-ClusterGroupSetDependency|Remove-ClusterNode|Remove-ClusterResource|Remove-ClusterResourceDependency|Remove-ClusterResourceType|Remove-ClusterSharedVolume|Remove-ClusterVMMonitoredItem|Repair-ClusterStorageSpacesDirect|Reset-ClusterVMMonitoredState|Resume-ClusterNode|Resume-ClusterResource|Set-ClusterFaultDomain|Set-ClusterFaultDomainXML|Set-ClusterGroupSet|Set-ClusterLog|Set-ClusterOwnerNode|Set-ClusterParameter|Set-ClusterQuorum|Set-ClusterResourceDependency|Set-ClusterStorageSpacesDirect|Set-ClusterStorageSpacesDirectDisk|Start-Cluster|Start-ClusterGroup|Start-ClusterNode|Start-ClusterResource|Stop-Cluster|Stop-ClusterGroup|Stop-ClusterNode|Stop-ClusterResource|Suspend-ClusterNode|Suspend-ClusterResource|Test-Cluster|Test-ClusterResourceFailure|Update-ClusterFunctionalLevel|Update-ClusterIPResource|Update-ClusterNetworkNameResource|Update-ClusterVirtualMachineConfiguration|" + + "Get-FsrmAdrSetting|Get-FsrmAutoQuota|Get-FsrmClassification|Get-FsrmClassificationPropertyDefinition|Get-FsrmClassificationRule|Get-FsrmEffectiveNamespace|Get-FsrmFileGroup|Get-FsrmFileManagementJob|Get-FsrmFileScreen|Get-FsrmFileScreenException|Get-FsrmFileScreenTemplate|Get-FsrmMacro|Get-FsrmMgmtProperty|Get-FsrmQuota|Get-FsrmQuotaTemplate|Get-FsrmRmsTemplate|Get-FsrmSetting|Get-FsrmStorageReport|New-FsrmAction|New-FsrmAutoQuota|New-FsrmClassificationPropertyDefinition|New-FsrmClassificationPropertyValue|New-FsrmClassificationRule|New-FsrmFileGroup|New-FsrmFileManagementJob|New-FsrmFileScreen|New-FsrmFileScreenException|New-FsrmFileScreenTemplate|New-FsrmFmjAction|New-FsrmFmjCondition|New-FsrmFMJNotification|New-FsrmFmjNotificationAction|New-FsrmQuota|New-FsrmQuotaTemplate|New-FsrmQuotaThreshold|New-FsrmScheduledTask|New-FsrmStorageReport|Remove-FsrmAutoQuota|Remove-FsrmClassificationPropertyDefinition|Remove-FsrmClassificationRule|Remove-FsrmFileGroup|Remove-FsrmFileManagementJob|Remove-FsrmFileScreen|Remove-FsrmFileScreenException|Remove-FsrmFileScreenTemplate|Remove-FsrmMgmtProperty|Remove-FsrmQuota|Remove-FsrmQuotaTemplate|Remove-FsrmStorageReport|Reset-FsrmFileScreen|Reset-FsrmQuota|Send-FsrmTestEmail|Set-FsrmAdrSetting|Set-FsrmAutoQuota|Set-FsrmClassification|Set-FsrmClassificationPropertyDefinition|Set-FsrmClassificationRule|Set-FsrmFileGroup|Set-FsrmFileManagementJob|Set-FsrmFileScreen|Set-FsrmFileScreenException|Set-FsrmFileScreenTemplate|Set-FsrmMgmtProperty|Set-FsrmQuota|Set-FsrmQuotaTemplate|Set-FsrmSetting|Set-FsrmStorageReport|Start-FsrmClassification|Start-FsrmFileManagementJob|Start-FsrmStorageReport|Stop-FsrmClassification|Stop-FsrmFileManagementJob|Stop-FsrmStorageReport|Update-FsrmAutoQuota|Update-FsrmClassificationPropertyDefinition|Update-FsrmQuota|Wait-FsrmClassification|Wait-FsrmFileManagementJob|Wait-FsrmStorageReport|" + + "Backup-GPO|Copy-GPO|Get-GPInheritance|Get-GPO|Get-GPOReport|Get-GPPermission|Get-GPPrefRegistryValue|Get-GPRegistryValue|Get-GPResultantSetOfPolicy|Get-GPStarterGPO|Import-GPO|Invoke-GPUpdate|New-GPLink|New-GPO|New-GPStarterGPO|Remove-GPLink|Remove-GPO|Remove-GPPrefRegistryValue|Remove-GPRegistryValue|Rename-GPO|Restore-GPO|Set-GPInheritance|Set-GPLink|Set-GPPermission|Set-GPPrefRegistryValue|Set-GPRegistryValue|" + + "Export-HwCertTestCollectionToXml|Import-HwCertTestCollectionFromXml|Merge-HwCertTestCollectionFromPackage|Merge-HwCertTestCollectionFromXml|New-HwCertProjectDefinitionFile|New-HwCertTestCollection|New-HwCertTestCollectionExcelReport|" + + "Add-HgsAttestationCIPolicy|Add-HgsAttestationDumpPolicy|Add-HgsAttestationHostGroup|Add-HgsAttestationTpmHost|Add-HgsAttestationTpmPolicy|Disable-HgsAttestationPolicy|Enable-HgsAttestationPolicy|Get-HgsAttestationHostGroup|Get-HgsAttestationPolicy|Get-HgsAttestationSignerCertificate|Get-HgsAttestationTpmHost|Remove-HgsAttestationHostGroup|Remove-HgsAttestationPolicy|Remove-HgsAttestationTpmHost|" + + "ConvertTo-HgsKeyProtector|Export-HgsGuardian|Get-HgsAttestationBaselinePolicy|Get-HgsClientConfiguration|Get-HgsGuardian|Grant-HgsKeyProtectorAccess|Import-HgsGuardian|New-HgsGuardian|New-HgsKeyProtector|Remove-HgsGuardian|Revoke-HgsKeyProtectorAccess|Set-HgsClientConfiguration|Test-HgsClientConfiguration|" + + "Get-HgsTrace|Get-HgsTraceFileData|New-HgsTraceTarget|Test-HgsTraceTarget|" + + "Add-HgsKeyProtectionAttestationSignerCertificate|Add-HgsKeyProtectionCertificate|Export-HgsKeyProtectionState|Get-HgsKeyProtectionAttestationSignerCertificate|Get-HgsKeyProtectionCertificate|Get-HgsKeyProtectionConfiguration|Import-HgsKeyProtectionState|Remove-HgsKeyProtectionAttestationSignerCertificate|Remove-HgsKeyProtectionCertificate|Set-HgsKeyProtectionAttestationSignerCertificatePolicy|Set-HgsKeyProtectionCertificate|Set-HgsKeyProtectionConfiguration|" + + "Clear-HgsServer|Export-HgsServerState|Get-HgsServer|Import-HgsServerState|Initialize-HgsServer|Install-HgsServer|Set-HgsServer|Test-HgsServer|Uninstall-HgsServer|" + + "Debug-SlbDatapath|Debug-VirtualMachineQueueOperation|Disable-MuxEchoResponder|Enable-MuxEchoResponder|Get-CustomerRoute|Get-NetworkControllerVipResource|Get-PACAMapping|Get-ProviderAddress|Get-VipHostMapping|Get-VMNetworkAdapterPortId|Get-VMSwitchExternalPortId|Test-DipHostReachability|Test-EncapOverheadSettings|Test-LogicalNetworkConnection|Test-LogicalNetworkSupportsJumboPacket|Test-VipReachability|Test-VirtualNetworkConnection|" + + "Get-ComputeProcess|Stop-ComputeProcess|" + + "Add-VMDvdDrive|Add-VMFibreChannelHba|Add-VMGpuPartitionAdapter|Add-VMGroupMember|Add-VMHardDiskDrive|Add-VMMigrationNetwork|Add-VMNetworkAdapter|Add-VMNetworkAdapterAcl|Add-VMNetworkAdapterExtendedAcl|Add-VmNetworkAdapterRoutingDomainMapping|Add-VMRemoteFx3dVideoAdapter|Add-VMScsiController|Add-VMStoragePath|Add-VMSwitch|Add-VMSwitchExtensionPortFeature|Add-VMSwitchExtensionSwitchFeature|Add-VMSwitchTeamMember|Checkpoint-VM|Compare-VM|Complete-VMFailover|Connect-VMNetworkAdapter|Connect-VMSan|Convert-VHD|Copy-VMFile|Debug-VM|Disable-VMConsoleSupport|Disable-VMEventing|Disable-VMIntegrationService|Disable-VMMigration|Disable-VMRemoteFXPhysicalVideoAdapter|Disable-VMResourceMetering|Disable-VMSwitchExtension|Disable-VMTPM|Disconnect-VMNetworkAdapter|Disconnect-VMSan|Dismount-VHD|Enable-VMConsoleSupport|Enable-VMEventing|Enable-VMIntegrationService|Enable-VMMigration|Enable-VMRemoteFXPhysicalVideoAdapter|Enable-VMReplication|Enable-VMResourceMetering|Enable-VMSwitchExtension|Enable-VMTPM|Export-VM|Export-VMSnapshot|Get-VHD|Get-VHDSet|Get-VHDSnapshot|Get-VM|Get-VMBios|Get-VMComPort|Get-VMConnectAccess|Get-VMDvdDrive|Get-VMFibreChannelHba|Get-VMFirmware|Get-VMFloppyDiskDrive|Get-VMGpuPartitionAdapter|Get-VMGroup|Get-VMHardDiskDrive|Get-VMHost|Get-VMHostCluster|Get-VMHostNumaNode|Get-VMHostNumaNodeStatus|Get-VMHostPartitionableGpu|Get-VMHostSupportedVersion|Get-VMIdeController|Get-VMIntegrationService|Get-VMKeyProtector|Get-VMMemory|Get-VMMigrationNetwork|Get-VMNetworkAdapter|Get-VMNetworkAdapterAcl|Get-VMNetworkAdapterExtendedAcl|Get-VMNetworkAdapterFailoverConfiguration|Get-VmNetworkAdapterIsolation|Get-VMNetworkAdapterRoutingDomainMapping|Get-VMNetworkAdapterTeamMapping|Get-VMNetworkAdapterVlan|Get-VMProcessor|Get-VMRemoteFx3dVideoAdapter|Get-VMRemoteFXPhysicalVideoAdapter|Get-VMReplication|Get-VMReplicationAuthorizationEntry|Get-VMReplicationServer|Get-VMResourcePool|Get-VMSan|Get-VMScsiController|Get-VMSecurity|Get-VMSnapshot|Get-VMStoragePath|Get-VMSwitch|Get-VMSwitchExtension|Get-VMSwitchExtensionPortData|Get-VMSwitchExtensionPortFeature|Get-VMSwitchExtensionSwitchData|Get-VMSwitchExtensionSwitchFeature|Get-VMSwitchTeam|Get-VMSystemSwitchExtension|Get-VMSystemSwitchExtensionPortFeature|Get-VMSystemSwitchExtensionSwitchFeature|Get-VMVideo|Grant-VMConnectAccess|Import-VM|Import-VMInitialReplication|Measure-VM|Measure-VMReplication|Measure-VMResourcePool|Merge-VHD|Mount-VHD|Move-VM|Move-VMStorage|New-VFD|New-VHD|New-VM|New-VMGroup|||New-VMReplicationAuthorizationEntry|New-VMResourcePool|New-VMSan|New-VMSwitch|Optimize-VHD|Optimize-VHDSet|Remove-VHDSnapshot|Remove-VM|Remove-VMDvdDrive|Remove-VMFibreChannelHba|Remove-VMGpuPartitionAdapter|Remove-VMGroup|Remove-VMGroupMember|Remove-VMHardDiskDrive|Remove-VMMigrationNetwork|Remove-VMNetworkAdapter|Remove-VMNetworkAdapterAcl|Remove-VMNetworkAdapterExtendedAcl|Remove-VMNetworkAdapterRoutingDomainMapping|Remove-VMNetworkAdapterTeamMapping|Remove-VMRemoteFx3dVideoAdapter|Remove-VMReplication|Remove-VMReplicationAuthorizationEntry|Remove-VMResourcePool|Remove-VMSan|Remove-VMSavedState|Remove-VMScsiController|Remove-VMSnapshot|Remove-VMStoragePath|Remove-VMSwitch|Remove-VMSwitchExtensionPortFeature|Remove-VMSwitchExtensionSwitchFeature|Remove-VMSwitchTeamMember|Rename-VM|Rename-VMGroup|Rename-VMNetworkAdapter|Rename-VMResourcePool|Rename-VMSan|Rename-VMSnapshot|Rename-VMSwitch|Repair-VM|Reset-VMReplicationStatistics|Reset-VMResourceMetering|Resize-VHD|Restart-VM|Restore-VMSnapshot|Resume-VM|Resume-VMReplication|Revoke-VMConnectAccess|Save-VM|Set-VHD|Set-VM|Set-VMBios|Set-VMComPort|Set-VMDvdDrive|Set-VMFibreChannelHba|Set-VMFirmware|Set-VMFloppyDiskDrive|Set-VMGpuPartitionAdapter|Set-VMHardDiskDrive|Set-VMHost|Set-VMHostCluster|Set-VMHostPartitionableGpu|Set-VMKeyProtector|Set-VMMemory|Set-VMMigrationNetwork|Set-VMNetworkAdapter|Set-VMNetworkAdapterFailoverConfiguration|Set-VmNetworkAdapterIsolation|Set-VmNetworkAdapterRoutingDomainMapping|Set-VMNetworkAdapterTeamMapping|Set-VMNetworkAdapterVlan|Set-VMProcessor|Set-VMRemoteFx3dVideoAdapter|Set-VMReplication|Set-VMReplicationAuthorizationEntry|Set-VMReplicationServer|Set-VMResourcePool|Set-VMSan|Set-VMSecurity|Set-VMSecurityPolicy|Set-VMSwitch|Set-VMSwitchExtensionPortFeature|Set-VMSwitchExtensionSwitchFeature|Set-VMSwitchTeam|Set-VMVideo|Start-VM|Start-VMFailover|Start-VMInitialReplication|Start-VMTrace|Stop-VM|Stop-VMFailover|Stop-VMInitialReplication|Stop-VMReplication|Stop-VMTrace|Suspend-VM|Suspend-VMReplication|Test-VHD|Test-VMNetworkAdapter|Test-VMReplicationConnection|Update-VMVersion|" + + "Clear-IISCentralCertProvider|Clear-IISConfigCollection|Disable-IISCentralCertProvider|Disable-IISSharedConfig|Enable-IISCentralCertProvider|Enable-IISSharedConfig|Export-IISConfiguration|Get-IISAppPool|Get-IISCentralCertProvider|Get-IISConfigAttributeValue|Get-IISConfigCollection|Get-IISConfigCollectionElement|Get-IISConfigElement|Get-IISConfigSection|Get-IISServerManager|Get-IISSharedConfig|Get-IISSite|Get-IISSiteBinding|New-IISConfigCollectionElement|New-IISSite|New-IISSiteBinding|Remove-IISConfigAttribute|Remove-IISConfigCollectionElement|Remove-IISConfigElement|Remove-IISSite|Remove-IISSiteBinding|Reset-IISServerManager|Set-IISCentralCertProvider|Set-IISCentralCertProviderCredential|Set-IISConfigAttributeValue|Start-IISCommitDelay|Start-IISSite|Stop-IISCommitDelay|Stop-IISSite|" + + "Copy-UserInternationalSettingsToSystem|Get-WinAcceptLanguageFromLanguageListOptOut|Get-WinCultureFromLanguageListOptOut|Get-WinDefaultInputMethodOverride|Get-WinHomeLocation|Get-WinLanguageBarOption|Get-WinSystemLocale|Get-WinUILanguageOverride|Get-WinUserLanguageList|New-WinUserLanguageList|Set-Culture|Set-WinAcceptLanguageFromLanguageListOptOut|Set-WinCultureFromLanguageListOptOut|Set-WinDefaultInputMethodOverride|Set-WinHomeLocation|Set-WinLanguageBarOption|Set-WinSystemLocale|Set-WinUILanguageOverride|Set-WinUserLanguageList|" + + "Add-IpamAddress|Add-IpamAddressSpace|Add-IpamBlock|Add-IpamCustomField|Add-IpamCustomFieldAssociation|Add-IpamCustomValue|Add-IpamDiscoveryDomain|" + "Connect-IscsiTarget|Disconnect-IscsiTarget|Get-IscsiConnection|Get-IscsiSession|Get-IscsiTarget|Get-IscsiTargetPortal|New-IscsiTargetPortal|Register-IscsiSession|Remove-IscsiTargetPortal|Set-IscsiChapSecret|Unregister-IscsiSession|Update-IscsiTarget|Update-IscsiTargetPortal|" + + "Add-IscsiVirtualDiskTargetMapping|Checkpoint-IscsiVirtualDisk|Convert-IscsiVirtualDisk|Dismount-IscsiVirtualDiskSnapshot|Export-IscsiTargetServerConfiguration|Export-IscsiVirtualDiskSnapshot|Get-IscsiServerTarget|Get-IscsiTargetServerSetting|Get-IscsiVirtualDisk|Get-IscsiVirtualDiskSnapshot|Import-IscsiTargetServerConfiguration|Import-IscsiVirtualDisk|Mount-IscsiVirtualDiskSnapshot|New-IscsiServerTarget|New-IscsiVirtualDisk|Remove-IscsiServerTarget|Remove-IscsiVirtualDisk|Remove-IscsiVirtualDiskSnapshot|Remove-IscsiVirtualDiskTargetMapping|Resize-IscsiVirtualDisk|Restore-IscsiVirtualDisk|Set-IscsiServerTarget|Set-IscsiTargetServerSetting|Set-IscsiVirtualDisk|Set-IscsiVirtualDiskSnapshot|Stop-IscsiVirtualDiskOperation|" + "Get-IseSnippet|Import-IseSnippet|New-IseSnippet|" + "Add-KdsRootKey|Clear-KdsCache|Get-KdsConfiguration|Get-KdsRootKey|Set-KdsConfiguration|Test-KdsRootKey|" + + "Get-InstalledLanguage|Get-SystemPreferredUILanguage|Install-Language|Set-SystemPreferredUILanguage|Uninstall-Language|" + + "Find-LapsADExtendedRights|Get-LapsAADPassword|Get-LapsADPassword|Get-LapsDiagnostics|Invoke-LapsPolicyProcessing|Reset-LapsPassword|Set-LapsADAuditing|Set-LapsADComputerSelfPermission|Set-LapsADPasswordExpirationTime|Set-LapsADReadPasswordPermission|Set-LapsADResetPasswordPermission|Update-LapsADSchema|" + + "Disable-DiagnosticDataViewing|Enable-DiagnosticDataViewing|Get-DiagnosticData|Get-DiagnosticDataTypes|Get-DiagnosticDataViewingSetting|Get-DiagnosticStoreCapacity|Set-DiagnosticStoreCapacity|" + "Compress-Archive|Expand-Archive|" + "Export-Counter|Get-Counter|Get-WinEvent|Import-Counter|New-WinEvent|" + "Start-Transcript|Stop-Transcript|" + @@ -39,258 +65,397 @@ var PowershellHighlightRules = function() { "ConvertFrom-SddlString|Format-Hex|Get-FileHash|Import-PowerShellDataFile|New-Guid|New-TemporaryFile|Add-Member|Add-Type|Clear-Variable|Compare-Object|ConvertFrom-Csv|ConvertFrom-Json|ConvertFrom-String|ConvertFrom-StringData|Convert-String|ConvertTo-Csv|ConvertTo-Html|ConvertTo-Json|ConvertTo-Xml|Debug-Runspace|Disable-PSBreakpoint|Disable-RunspaceDebug|Enable-PSBreakpoint|Enable-RunspaceDebug|Export-Alias|Export-Clixml|Export-Csv|Export-FormatData|Export-PSSession|Format-Custom|Format-List|Format-Table|Format-Wide|Get-Alias|Get-Culture|Get-Date|Get-Event|Get-EventSubscriber|Get-FormatData|Get-Host|Get-Member|Get-PSBreakpoint|Get-PSCallStack|Get-Random|Get-Runspace|Get-RunspaceDebug|Get-TraceSource|Get-TypeData|Get-UICulture|Get-Unique|Get-Variable|Group-Object|Import-Alias|Import-Clixml|Import-Csv|Import-LocalizedData|Import-PSSession|Invoke-Expression|Invoke-RestMethod|Invoke-WebRequest|Measure-Command|Measure-Object|New-Alias|New-Event|New-Object|New-TimeSpan|New-Variable|Out-File|Out-GridView|Out-Printer|Out-String|Read-Host|Register-EngineEvent|Register-ObjectEvent|Remove-Event|Remove-PSBreakpoint|Remove-TypeData|Remove-Variable|Select-Object|Select-String|Select-Xml|Send-MailMessage|Set-Alias|Set-Date|Set-PSBreakpoint|Set-TraceSource|Set-Variable|Show-Command|Sort-Object|Start-Sleep|Tee-Object|Trace-Command|Unblock-File|Unregister-Event|Update-FormatData|Update-List|Update-TypeData|Wait-Debugger|Wait-Event|Write-Debug|Write-Error|Write-Host|Write-Information|Write-Output|Write-Progress|Write-Verbose|Write-Warning|" + "Connect-WSMan|Disable-WSManCredSSP|Disconnect-WSMan|Enable-WSManCredSSP|Get-WSManCredSSP|Get-WSManInstance|Invoke-WSManAction|New-WSManInstance|New-WSManSessionOption|Remove-WSManInstance|Set-WSManInstance|Set-WSManQuickConfig|Test-WSMan|" + "Debug-MMAppPrelaunch|Disable-MMAgent|Enable-MMAgent|Get-MMAgent|Set-MMAgent|" + - "Add-DtcClusterTMMapping|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Remove-DtcClusterTMMapping|Reset-DtcLog|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcTransactionsTraceSession|Test-Dtc|Uninstall-Dtc|Write-DtcTransactionsTraceSession|Complete-DtcDiagnosticTransaction|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Send-DtcDiagnosticTransaction|Start-DtcDiagnosticResourceManager|Stop-DtcDiagnosticResourceManager|Undo-DtcDiagnosticTransaction|" + - "Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPacketDirect|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPacketDirect|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPacketDirect|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPacketDirect|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterVmq|" + + "Clear-MSDSMSupportedHW|Disable-MSDSMAutomaticClaim|Enable-MSDSMAutomaticClaim|Get-MPIOAvailableHW|Get-MPIOSetting|Get-MSDSMAutomaticClaimSettings|Get-MSDSMGlobalDefaultLoadBalancePolicy|Get-MSDSMSupportedHW|New-MSDSMSupportedHW|Remove-MSDSMSupportedHW|Set-MPIOSetting|Set-MSDSMGlobalDefaultLoadBalancePolicy|Update-MPIOClaimedHW|" + + "Add-DtcClusterTMMapping|Complete-DtcDiagnosticTransaction|Get-Dtc|Get-DtcAdvancedHostSetting|Get-DtcAdvancedSetting|Get-DtcClusterDefault|Get-DtcClusterTMMapping|Get-DtcDefault|Get-DtcLog|Get-DtcNetworkSetting|Get-DtcTransaction|Get-DtcTransactionsStatistics|Get-DtcTransactionsTraceSession|Get-DtcTransactionsTraceSetting|Install-Dtc|Join-DtcDiagnosticResourceManager|New-DtcDiagnosticTransaction|Receive-DtcDiagnosticTransaction|Remove-DtcClusterTMMapping|Reset-DtcLog|Send-DtcDiagnosticTransaction|Set-DtcAdvancedHostSetting|Set-DtcAdvancedSetting|Set-DtcClusterDefault|Set-DtcClusterTMMapping|Set-DtcDefault|Set-DtcLog|Set-DtcNetworkSetting|Set-DtcTransaction|Set-DtcTransactionsTraceSession|Set-DtcTransactionsTraceSetting|Start-Dtc|Start-DtcDiagnosticResourceManager|Start-DtcTransactionsTraceSession|Stop-Dtc|Stop-DtcDiagnosticResourceManager|Stop-DtcTransactionsTraceSession|Test-Dtc|Undo-DtcDiagnosticTransaction|Uninstall-Dtc|Write-DtcTransactionsTraceSession|" + + "Clear-MSMQOutgoingQueue|Clear-MSMQQueue|Enable-MSMQCertificate|Get-MSMQCertificate|Get-MSMQOutgoingQueue|Get-MsmqQueue|Get-MsmqQueueACL|Get-MsmqQueueManager|Get-MsmqQueueManagerACL|Move-MsmqMessage|New-MsmqMessage|New-MsmqQueue|Receive-MsmqQueue|Remove-MsmqCertificate|Remove-MsmqQueue|Resume-MsmqOutgoingQueue|Send-MsmqQueue|Set-MsmqQueue|Set-MsmqQueueACL|Set-MsmqQueueManager|Set-MsmqQueueManagerACL|Suspend-MsmqOutgoingQueue|" + + "Add-WmsSystem|Clear-WmsStation|Close-WmsApp|Close-WmsSession|Disable-WmsDiskProtection|Disable-WmsScheduledUpdate|Disable-WmsWebLimiting|Disconnect-WmsSession|Enable-WmsDiskProtection|Enable-WmsScheduledUpdate|Enable-WmsWebLimiting|Get-WmsAlert|Get-WmsApp|Get-WmsDiskProtection|Get-WmsScheduledUpdate|Get-WmsSession|Get-WmsStation|Get-WmsSystem|Get-WmsUser|Get-WmsVersion|Get-WmsWebLimiting|Hide-WmsIdentifier|Join-WmsStation|Lock-WmsSession|Lock-WmsUsbStorage|New-WmsUser|Open-WmsApp|Publish-WmsDesktop|Remove-WmsSystem|Remove-WmsUser|Restart-WmsSystem|Resume-WmsDiskProtection|Search-WmsSystem|Set-WmsScheduledUpdate|Set-WmsStation|Set-WmsSystem|Set-WmsUser|Set-WmsWebLimiting|Show-WmsDesktop|Show-WmsIdentifier|Split-WmsStation|Stop-WmsSystem|Suspend-WmsDiskProtection|Unlock-WmsSession|Unlock-WmsUsbStorage|Unpublish-WmsDesktop|Update-WmsStation|" + + "Disable-WmsVirtualDesktopRole|Enable-WmsVirtualDesktopRole|Get-WmsVirtualDesktop|Import-WmsVirtualDesktop|New-WmsVirtualDesktop|New-WmsVirtualDesktopTemplate|Open-WmsVirtualDesktop|" + + "Edit-NanoServerImage|Get-NanoServerPackage|New-NanoServerImage|" + + "Disable-NetAdapter|Disable-NetAdapterBinding|Disable-NetAdapterChecksumOffload|Disable-NetAdapterEncapsulatedPacketTaskOffload|Disable-NetAdapterIPsecOffload|Disable-NetAdapterLso|Disable-NetAdapterPowerManagement|Disable-NetAdapterQos|Disable-NetAdapterRdma|Disable-NetAdapterRsc|Disable-NetAdapterRss|Disable-NetAdapterSriov|Disable-NetAdapterUso|Disable-NetAdapterVmq|Enable-NetAdapter|Enable-NetAdapterBinding|Enable-NetAdapterChecksumOffload|Enable-NetAdapterEncapsulatedPacketTaskOffload|Enable-NetAdapterIPsecOffload|Enable-NetAdapterLso|Enable-NetAdapterPowerManagement|Enable-NetAdapterQos|Enable-NetAdapterRdma|Enable-NetAdapterRsc|Enable-NetAdapterRss|Enable-NetAdapterSriov|Enable-NetAdapterUso|Enable-NetAdapterVmq|Get-NetAdapter|Get-NetAdapterAdvancedProperty|Get-NetAdapterBinding|Get-NetAdapterChecksumOffload|Get-NetAdapterDataPathConfiguration|Get-NetAdapterEncapsulatedPacketTaskOffload|Get-NetAdapterHardwareInfo|Get-NetAdapterIPsecOffload|Get-NetAdapterLso|Get-NetAdapterPowerManagement|Get-NetAdapterQos|Get-NetAdapterRdma|Get-NetAdapterRsc|Get-NetAdapterRss|Get-NetAdapterSriov|Get-NetAdapterSriovVf|Get-NetAdapterStatistics|Get-NetAdapterUso|Get-NetAdapterVmq|Get-NetAdapterVmqQueue|Get-NetAdapterVPort|New-NetAdapterAdvancedProperty|Remove-NetAdapterAdvancedProperty|Rename-NetAdapter|Reset-NetAdapterAdvancedProperty|Restart-NetAdapter|Set-NetAdapter|Set-NetAdapterAdvancedProperty|Set-NetAdapterBinding|Set-NetAdapterChecksumOffload|Set-NetAdapterDataPathConfiguration|Set-NetAdapterEncapsulatedPacketTaskOffload|Set-NetAdapterIPsecOffload|Set-NetAdapterLso|Set-NetAdapterPowerManagement|Set-NetAdapterQos|Set-NetAdapterRdma|Set-NetAdapterRsc|Set-NetAdapterRss|Set-NetAdapterSriov|Set-NetAdapterUso|Set-NetAdapterVmq|" + "Get-NetConnectionProfile|Set-NetConnectionProfile|" + - "Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|" + + "Add-NetEventNetworkAdapter|Add-NetEventPacketCaptureProvider|Add-NetEventProvider|Add-NetEventVFPProvider|Add-NetEventVmNetworkAdapter|Add-NetEventVmSwitch|Add-NetEventVmSwitchProvider|Add-NetEventWFPCaptureProvider|Get-NetEventNetworkAdapter|Get-NetEventPacketCaptureProvider|Get-NetEventProvider|Get-NetEventSession|Get-NetEventVFPProvider|Get-NetEventVmNetworkAdapter|Get-NetEventVmSwitch|Get-NetEventVmSwitchProvider|Get-NetEventWFPCaptureProvider|New-NetEventSession|Remove-NetEventNetworkAdapter|Remove-NetEventPacketCaptureProvider|Remove-NetEventProvider|Remove-NetEventSession|Remove-NetEventVFPProvider|Remove-NetEventVmNetworkAdapter|Remove-NetEventVmSwitch|Remove-NetEventVmSwitchProvider|Remove-NetEventWFPCaptureProvider|Set-NetEventPacketCaptureProvider|Set-NetEventProvider|Set-NetEventSession|Set-NetEventVFPProvider|Set-NetEventVmSwitchProvider|Set-NetEventWFPCaptureProvider|Start-NetEventSession|Stop-NetEventSession|" + "Add-NetLbfoTeamMember|Add-NetLbfoTeamNic|Get-NetLbfoTeam|Get-NetLbfoTeamMember|Get-NetLbfoTeamNic|New-NetLbfoTeam|Remove-NetLbfoTeam|Remove-NetLbfoTeamMember|Remove-NetLbfoTeamNic|Rename-NetLbfoTeam|Set-NetLbfoTeam|Set-NetLbfoTeamMember|Set-NetLbfoTeamNic|" + + "Disable-NetLldpAgent|Enable-NetLldpAgent|Get-NetLldpAgent|" + "Add-NetNatExternalAddress|Add-NetNatStaticMapping|Get-NetNat|Get-NetNatExternalAddress|Get-NetNatGlobal|Get-NetNatSession|Get-NetNatStaticMapping|New-NetNat|Remove-NetNat|Remove-NetNatExternalAddress|Remove-NetNatStaticMapping|Set-NetNat|Set-NetNatGlobal|" + "Get-NetQosPolicy|New-NetQosPolicy|Remove-NetQosPolicy|Set-NetQosPolicy|" + - "Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallRule|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetIPsecRule|Get-DAPolicyChange|New-NetIPsecAuthProposal|New-NetIPsecMainModeCryptoProposal|New-NetIPsecQuickModeCryptoProposal|" + + "Copy-NetFirewallRule|Copy-NetIPsecMainModeCryptoSet|Copy-NetIPsecMainModeRule|Copy-NetIPsecPhase1AuthSet|Copy-NetIPsecPhase2AuthSet|Copy-NetIPsecQuickModeCryptoSet|Copy-NetIPsecRule|Disable-NetFirewallRule|Disable-NetIPsecMainModeRule|Disable-NetIPsecRule|Enable-NetFirewallRule|Enable-NetIPsecMainModeRule|Enable-NetIPsecRule|Find-NetIPsecRule|Get-DAPolicyChange|Get-NetFirewallAddressFilter|Get-NetFirewallApplicationFilter|Get-NetFirewallDynamicKeywordAddress|Get-NetFirewallInterfaceFilter|Get-NetFirewallInterfaceTypeFilter|Get-NetFirewallPortFilter|Get-NetFirewallProfile|Get-NetFirewallRule|Get-NetFirewallSecurityFilter|Get-NetFirewallServiceFilter|Get-NetFirewallSetting|Get-NetIPsecDospSetting|Get-NetIPsecMainModeCryptoSet|Get-NetIPsecMainModeRule|Get-NetIPsecMainModeSA|Get-NetIPsecPhase1AuthSet|Get-NetIPsecPhase2AuthSet|Get-NetIPsecQuickModeCryptoSet|Get-NetIPsecQuickModeSA|Get-NetIPsecRule|New-NetFirewallDynamicKeywordAddress|New-NetFirewallRule|New-NetIPsecAuthProposal|New-NetIPsecDospSetting|New-NetIPsecMainModeCryptoProposal|New-NetIPsecMainModeCryptoSet|New-NetIPsecMainModeRule|New-NetIPsecPhase1AuthSet|New-NetIPsecPhase2AuthSet|New-NetIPsecQuickModeCryptoProposal|New-NetIPsecQuickModeCryptoSet|New-NetIPsecRule|Open-NetGPO|Remove-NetFirewallDynamicKeywordAddress|Remove-NetFirewallRule|Remove-NetIPsecDospSetting|Remove-NetIPsecMainModeCryptoSet|Remove-NetIPsecMainModeRule|Remove-NetIPsecMainModeSA|Remove-NetIPsecPhase1AuthSet|Remove-NetIPsecPhase2AuthSet|Remove-NetIPsecQuickModeCryptoSet|Remove-NetIPsecQuickModeSA|Remove-NetIPsecRule|Rename-NetFirewallRule|Rename-NetIPsecMainModeCryptoSet|Rename-NetIPsecMainModeRule|Rename-NetIPsecPhase1AuthSet|Rename-NetIPsecPhase2AuthSet|Rename-NetIPsecQuickModeCryptoSet|Rename-NetIPsecRule|Save-NetGPO|Set-NetFirewallAddressFilter|Set-NetFirewallApplicationFilter|Set-NetFirewallInterfaceFilter|Set-NetFirewallInterfaceTypeFilter|Set-NetFirewallPortFilter|Set-NetFirewallProfile|Set-NetFirewallRule|Set-NetFirewallSecurityFilter|Set-NetFirewallServiceFilter|Set-NetFirewallSetting|Set-NetIPsecDospSetting|Set-NetIPsecMainModeCryptoSet|Set-NetIPsecMainModeRule|Set-NetIPsecPhase1AuthSet|Set-NetIPsecPhase2AuthSet|Set-NetIPsecQuickModeCryptoSet|Set-NetIPsecRule|Show-NetFirewallRule|Show-NetIPsecRule|Sync-NetIPsecRule|Update-NetFirewallDynamicKeywordAddress|Update-NetIPsecRule|" + "Add-NetSwitchTeamMember|Get-NetSwitchTeam|Get-NetSwitchTeamMember|New-NetSwitchTeam|Remove-NetSwitchTeam|Remove-NetSwitchTeamMember|Rename-NetSwitchTeam|" + "Find-NetRoute|Get-NetCompartment|Get-NetIPAddress|Get-NetIPConfiguration|Get-NetIPInterface|Get-NetIPv4Protocol|Get-NetIPv6Protocol|Get-NetNeighbor|Get-NetOffloadGlobalSetting|Get-NetPrefixPolicy|Get-NetRoute|Get-NetTCPConnection|Get-NetTCPSetting|Get-NetTransportFilter|Get-NetUDPEndpoint|Get-NetUDPSetting|New-NetIPAddress|New-NetNeighbor|New-NetRoute|New-NetTransportFilter|Remove-NetIPAddress|Remove-NetNeighbor|Remove-NetRoute|Remove-NetTransportFilter|Set-NetIPAddress|Set-NetIPInterface|Set-NetIPv4Protocol|Set-NetIPv6Protocol|Set-NetNeighbor|Set-NetOffloadGlobalSetting|Set-NetRoute|Set-NetTCPSetting|Set-NetUDPSetting|Test-NetConnection|" + + "Get-NetVirtualizationCustomerRoute|Get-NetVirtualizationGlobal|Get-NetVirtualizationLookupRecord|Get-NetVirtualizationProviderAddress|Get-NetVirtualizationProviderRoute|New-NetVirtualizationCustomerRoute|New-NetVirtualizationLookupRecord|New-NetVirtualizationProviderAddress|New-NetVirtualizationProviderRoute|Remove-NetVirtualizationCustomerRoute|Remove-NetVirtualizationLookupRecord|Remove-NetVirtualizationProviderAddress|Remove-NetVirtualizationProviderRoute|Select-NetVirtualizationNextHop|Set-NetVirtualizationCustomerRoute|Set-NetVirtualizationGlobal|Set-NetVirtualizationLookupRecord|Set-NetVirtualizationProviderAddress|Set-NetVirtualizationProviderRoute|" + "Get-DAConnectionStatus|Get-NCSIPolicyConfiguration|Reset-NCSIPolicyConfiguration|Set-NCSIPolicyConfiguration|" + + "Add-NetworkControllerNode|Clear-NetworkControllerNodeContent|Disable-NetworkControllerNode|Enable-NetworkControllerNode|Get-NetworkController|Get-NetworkControllerAccessControlList|Get-NetworkControllerAccessControlListRule|Get-NetworkControllerAuditingSettingsConfiguration|Get-NetworkControllerBackup|Get-NetworkControllerCluster|Get-NetworkControllerConnectivityCheck|Get-NetworkControllerConnectivityCheckResult|Get-NetworkControllerCredential|Get-NetworkControllerDiagnostic|Get-NetworkControllerDiscovery|Get-NetworkControllerFabricRoute|Get-NetworkControllerGateway|Get-NetworkControllerGatewayPool|Get-NetworkControllerIDnsServerConfiguration|Get-NetworkControllerInternalResourceInstances|Get-NetworkControllerIpPool|Get-NetworkControllerIpReservation|Get-NetworkControllerLoadBalancer|Get-NetworkControllerLoadBalancerBackendAddressPool|Get-NetworkControllerLoadBalancerConfiguration|Get-NetworkControllerLoadBalancerFrontendIpConfiguration|Get-NetworkControllerLoadBalancerInboundNatRule|Get-NetworkControllerLoadBalancerMux|Get-NetworkControllerLoadBalancerOutboundNatRule|Get-NetworkControllerLoadBalancerProbe|Get-NetworkControllerLoadBalancingRule|Get-NetworkControllerLogicalNetwork|Get-NetworkControllerLogicalSubnet|Get-NetworkControllerMacPool|Get-NetworkControllerNetworkInterface|Get-NetworkControllerNetworkInterfaceIpConfiguration|Get-NetworkControllerNode|Get-NetworkControllerPublicIpAddress|Get-NetworkControllerRestore|Get-NetworkControllerRoute|Get-NetworkControllerRouteTable|Get-NetworkControllerServer|Get-NetworkControllerServerInterface|Get-NetworkControllerServiceInsertion|Get-NetworkControllerState|Get-NetworkControllerStatistics|Get-NetworkControllerSubnetEgressReset|Get-NetworkControllerVirtualGateway|Get-NetworkControllerVirtualGatewayBgpPeer|Get-NetworkControllerVirtualGatewayBgpRouter|Get-NetworkControllerVirtualGatewayNetworkConnection|Get-NetworkControllerVirtualGatewayPolicyMap|Get-NetworkControllerVirtualNetwork|Get-NetworkControllerVirtualNetworkConfiguration|Get-NetworkControllerVirtualNetworkPeering|Get-NetworkControllerVirtualServer|Get-NetworkControllerVirtualSubnet|Get-NetworkControllerVirtualSwitchConfiguration|Install-NetworkController|Install-NetworkControllerCluster|Invoke-NetworkControllerConnectivityCheck|Invoke-NetworkControllerState|Invoke-NetworkControllerSubnetEgressReset|New-NetworkControllerAccessControlList|New-NetworkControllerAccessControlListRule|New-NetworkControllerBackup|New-NetworkControllerCredential|New-NetworkControllerFabricRoute|New-NetworkControllerGateway|New-NetworkControllerGatewayPool|New-NetworkControllerIDnsServerConfiguration|New-NetworkControllerIpPool|New-NetworkControllerIpReservation|New-NetworkControllerLoadBalancer|New-NetworkControllerLoadBalancerBackendAddressPool|New-NetworkControllerLoadBalancerConfiguration|New-NetworkControllerLoadBalancerFrontendIpConfiguration|New-NetworkControllerLoadBalancerInboundNatRule|New-NetworkControllerLoadBalancerMux|New-NetworkControllerLoadBalancerOutboundNatRule|New-NetworkControllerLoadBalancerProbe|New-NetworkControllerLoadBalancingRule|New-NetworkControllerLogicalNetwork|New-NetworkControllerLogicalSubnet|New-NetworkControllerMacPool|New-NetworkControllerNetworkInterface|New-NetworkControllerNetworkInterfaceIpConfiguration|New-NetworkControllerNodeObject|New-NetworkControllerPublicIpAddress|New-NetworkControllerRestore|New-NetworkControllerRoute|New-NetworkControllerRouteTable|New-NetworkControllerServer|New-NetworkControllerServerInterface|New-NetworkControllerServiceInsertion|New-NetworkControllerVirtualGateway|New-NetworkControllerVirtualGatewayBgpPeer|New-NetworkControllerVirtualGatewayBgpRouter|New-NetworkControllerVirtualGatewayNetworkConnection|New-NetworkControllerVirtualGatewayPolicyMap|New-NetworkControllerVirtualNetwork|New-NetworkControllerVirtualNetworkPeering|New-NetworkControllerVirtualServer|New-NetworkControllerVirtualSubnet|Remove-NetworkControllerAccessControlList|Remove-NetworkControllerAccessControlListRule|Remove-NetworkControllerBackup|Remove-NetworkControllerCredential|Remove-NetworkControllerFabricRoute|Remove-NetworkControllerGateway|Remove-NetworkControllerGatewayPool|Remove-NetworkControllerIpPool|Remove-NetworkControllerIpReservation|Remove-NetworkControllerLoadBalancer|Remove-NetworkControllerLoadBalancerBackendAddressPool|Remove-NetworkControllerLoadBalancerConfiguration|Remove-NetworkControllerLoadBalancerFrontendIpConfiguration|Remove-NetworkControllerLoadBalancerInboundNatRule|Remove-NetworkControllerLoadBalancerMux|Remove-NetworkControllerLoadBalancerOutboundNatRule|Remove-NetworkControllerLoadBalancerProbe|Remove-NetworkControllerLoadBalancingRule|Remove-NetworkControllerLogicalNetwork|Remove-NetworkControllerLogicalSubnet|Remove-NetworkControllerMacPool|Remove-NetworkControllerNetworkInterface|Remove-NetworkControllerNetworkInterfaceIpConfiguration|Remove-NetworkControllerNode|Remove-NetworkControllerPublicIpAddress|Remove-NetworkControllerRestore|Remove-NetworkControllerRoute|Remove-NetworkControllerRouteTable|Remove-NetworkControllerServer|Remove-NetworkControllerServerInterface|Remove-NetworkControllerServiceInsertion|Remove-NetworkControllerVirtualGateway|Remove-NetworkControllerVirtualGatewayBgpPeer|Remove-NetworkControllerVirtualGatewayBgpRouter|Remove-NetworkControllerVirtualGatewayNetworkConnection|Remove-NetworkControllerVirtualGatewayPolicyMap|Remove-NetworkControllerVirtualNetwork|Remove-NetworkControllerVirtualNetworkPeering|Remove-NetworkControllerVirtualServer|Remove-NetworkControllerVirtualSubnet|Repair-NetworkControllerCluster|Set-NetworkController|Set-NetworkControllerAuditingSettingsConfiguration|Set-NetworkControllerCluster|Set-NetworkControllerDiagnostic|Set-NetworkControllerNode|Set-NetworkControllerVirtualNetworkConfiguration|Set-NetworkControllerVirtualSwitchConfiguration|Uninstall-NetworkController|Uninstall-NetworkControllerCluster|Update-NetworkController|" + + "Debug-NetworkController|Debug-NetworkControllerConfigurationState|Debug-ServiceFabricNodeStatus|Get-NetworkControllerDeploymentInfo|Get-NetworkControllerManagedDevices|Get-NetworkControllerReplica|" + + "Add-NlbClusterNode|Add-NlbClusterNodeDip|Add-NlbClusterPortRule|Add-NlbClusterVip|Disable-NlbClusterPortRule|Enable-NlbClusterPortRule|Get-NlbCluster|Get-NlbClusterDriverInfo|Get-NlbClusterNode|Get-NlbClusterNodeDip|Get-NlbClusterNodeNetworkInterface|Get-NlbClusterPortRule|Get-NlbClusterVip|New-NlbCluster|New-NlbClusterIpv6Address|Remove-NlbCluster|Remove-NlbClusterNode|Remove-NlbClusterNodeDip|Remove-NlbClusterPortRule|Remove-NlbClusterVip|Resume-NlbCluster|Resume-NlbClusterNode|Set-NlbCluster|Set-NlbClusterNode|Set-NlbClusterNodeDip|Set-NlbClusterPortRule|Set-NlbClusterPortRuleNodeHandlingPriority|Set-NlbClusterPortRuleNodeWeight|Set-NlbClusterVip|Start-NlbCluster|Start-NlbClusterNode|Stop-NlbCluster|Stop-NlbClusterNode|Suspend-NlbCluster|Suspend-NlbClusterNode|" + "Disable-NetworkSwitchEthernetPort|Disable-NetworkSwitchFeature|Disable-NetworkSwitchVlan|Enable-NetworkSwitchEthernetPort|Enable-NetworkSwitchFeature|Enable-NetworkSwitchVlan|Get-NetworkSwitchEthernetPort|Get-NetworkSwitchFeature|Get-NetworkSwitchGlobalData|Get-NetworkSwitchVlan|New-NetworkSwitchVlan|Remove-NetworkSwitchEthernetPortIPAddress|Remove-NetworkSwitchVlan|Restore-NetworkSwitchConfiguration|Save-NetworkSwitchConfiguration|Set-NetworkSwitchEthernetPortIPAddress|Set-NetworkSwitchPortMode|Set-NetworkSwitchPortProperty|Set-NetworkSwitchVlanProperty|" + "Add-NetIPHttpsCertBinding|Disable-NetDnsTransitionConfiguration|Disable-NetIPHttpsProfile|Disable-NetNatTransitionConfiguration|Enable-NetDnsTransitionConfiguration|Enable-NetIPHttpsProfile|Enable-NetNatTransitionConfiguration|Get-Net6to4Configuration|Get-NetDnsTransitionConfiguration|Get-NetDnsTransitionMonitoring|Get-NetIPHttpsConfiguration|Get-NetIPHttpsState|Get-NetIsatapConfiguration|Get-NetNatTransitionConfiguration|Get-NetNatTransitionMonitoring|Get-NetTeredoConfiguration|Get-NetTeredoState|New-NetIPHttpsConfiguration|New-NetNatTransitionConfiguration|Remove-NetIPHttpsCertBinding|Remove-NetIPHttpsConfiguration|Remove-NetNatTransitionConfiguration|Rename-NetIPHttpsConfiguration|Reset-Net6to4Configuration|Reset-NetDnsTransitionConfiguration|Reset-NetIPHttpsConfiguration|Reset-NetIsatapConfiguration|Reset-NetTeredoConfiguration|Set-Net6to4Configuration|Set-NetDnsTransitionConfiguration|Set-NetIPHttpsConfiguration|Set-NetIsatapConfiguration|Set-NetNatTransitionConfiguration|Set-NetTeredoConfiguration|" + + "Disconnect-NfsSession|Get-NfsClientConfiguration|Get-NfsClientgroup|Get-NfsClientLock|Get-NfsMappedIdentity|Get-NfsMappingStore|Get-NfsMountedClient|Get-NfsNetgroup|Get-NfsNetgroupStore|Get-NfsOpenFile|Get-NfsServerConfiguration|Get-NfsSession|Get-NfsShare|Get-NfsSharePermission|Get-NfsStatistics|Grant-NfsSharePermission|Install-NfsMappingStore|New-NfsClientgroup|New-NfsMappedIdentity|New-NfsNetgroup|New-NfsShare|Remove-NfsClientgroup|Remove-NfsMappedIdentity|Remove-NfsNetgroup|Remove-NfsShare|Rename-NfsClientgroup|Reset-NfsStatistics|Resolve-NfsMappedIdentity|Revoke-NfsClientLock|Revoke-NfsMountedClient|Revoke-NfsOpenFile|Revoke-NfsSharePermission|Set-NfsClientConfiguration|Set-NfsClientgroup|Set-NfsMappedIdentity|Set-NfsMappingStore|Set-NfsNetgroup|Set-NfsNetgroupStore|Set-NfsServerConfiguration|Set-NfsShare|Test-NfsMappedIdentity|Test-NfsMappingStore|" + + "Export-NpsConfiguration|Get-NpsRadiusClient|Get-NpsSharedSecretTemplate|Import-NpsConfiguration|New-NpsRadiusClient|Remove-NpsRadiusClient|Set-NpsRadiusClient|" + "Find-Package|Find-PackageProvider|Get-Package|Get-PackageProvider|Get-PackageSource|Import-PackageProvider|Install-Package|Install-PackageProvider|Register-PackageSource|Save-Package|Set-PackageSource|Uninstall-Package|Unregister-PackageSource|" + "Clear-PcsvDeviceLog|Get-PcsvDevice|Get-PcsvDeviceLog|Restart-PcsvDevice|Set-PcsvDeviceBootConfiguration|Set-PcsvDeviceNetworkConfiguration|Set-PcsvDeviceUserPassword|Start-PcsvDevice|Stop-PcsvDevice|" + + "Get-PmemDedicatedMemory|Get-PmemDisk|Get-PmemPhysicalDevice|Get-PmemUnusedRegion|Initialize-PmemPhysicalDevice|New-PmemDedicatedMemory|New-PmemDisk|Remove-PmemDedicatedMemory|Remove-PmemDisk|" + "AfterAll|AfterEach|Assert-MockCalled|Assert-VerifiableMocks|BeforeAll|BeforeEach|Context|Describe|Get-MockDynamicParameters|Get-TestDriveItem|In|InModuleScope|Invoke-Mock|Invoke-Pester|It|Mock|New-Fixture|Set-DynamicParameterVariables|Setup|Should|" + "Add-CertificateEnrollmentPolicyServer|Export-Certificate|Export-PfxCertificate|Get-Certificate|Get-CertificateAutoEnrollmentPolicy|Get-CertificateEnrollmentPolicyServer|Get-CertificateNotificationTask|Get-PfxData|Import-Certificate|Import-PfxCertificate|New-CertificateNotificationTask|New-SelfSignedCertificate|Remove-CertificateEnrollmentPolicyServer|Remove-CertificateNotificationTask|Set-CertificateAutoEnrollmentPolicy|Switch-Certificate|Test-Certificate|" + + "Get-PlatformIdentifier|" + "Disable-PnpDevice|Enable-PnpDevice|Get-PnpDevice|Get-PnpDeviceProperty|" + "Find-DscResource|Find-Module|Find-Script|Get-InstalledModule|Get-InstalledScript|Get-PSRepository|Install-Module|Install-Script|New-ScriptFileInfo|Publish-Module|Publish-Script|Register-PSRepository|Save-Module|Save-Script|Set-PSRepository|Test-ScriptFileInfo|Uninstall-Module|Uninstall-Script|Unregister-PSRepository|Update-Module|Update-ModuleManifest|Update-Script|Update-ScriptFileInfo|" + "Add-Printer|Add-PrinterDriver|Add-PrinterPort|Get-PrintConfiguration|Get-Printer|Get-PrinterDriver|Get-PrinterPort|Get-PrinterProperty|Get-PrintJob|Read-PrinterNfcTag|Remove-Printer|Remove-PrinterDriver|Remove-PrinterPort|Remove-PrintJob|Rename-Printer|Restart-PrintJob|Resume-PrintJob|Set-PrintConfiguration|Set-Printer|Set-PrinterProperty|Suspend-PrintJob|Write-PrinterNfcTag|" + + "ConvertTo-ProcessMitigationPolicy|Get-ProcessMitigation|Set-ProcessMitigation|" + + "Export-ProvisioningPackage|Export-Trace|Get-ProvisioningPackage|Get-TrustedProvisioningCertificate|Install-ProvisioningPackage|Install-TrustedProvisioningCertificate|Uninstall-ProvisioningPackage|Uninstall-TrustedProvisioningCertificate|" + "Configuration|Disable-DscDebug|Enable-DscDebug|Get-DscConfiguration|Get-DscConfigurationStatus|Get-DscLocalConfigurationManager|Get-DscResource|New-DscChecksum|Remove-DscConfigurationDocument|Restore-DscConfiguration|Stop-DscConfiguration|Invoke-DscResource|Publish-DscConfiguration|Set-DscLocalConfigurationManager|Start-DscConfiguration|Test-DscConfiguration|Update-DscConfiguration|" + "Disable-PSTrace|Disable-PSWSManCombinedTrace|Disable-WSManTrace|Enable-PSTrace|Enable-PSWSManCombinedTrace|Enable-WSManTrace|Get-LogProperties|Set-LogProperties|Start-Trace|Stop-Trace|" + "PSConsoleHostReadline|Get-PSReadlineKeyHandler|Get-PSReadlineOption|Remove-PSReadlineKeyHandler|Set-PSReadlineKeyHandler|Set-PSReadlineOption|" + "Add-JobTrigger|Disable-JobTrigger|Disable-ScheduledJob|Enable-JobTrigger|Enable-ScheduledJob|Get-JobTrigger|Get-ScheduledJob|Get-ScheduledJobOption|New-JobTrigger|New-ScheduledJobOption|Register-ScheduledJob|Remove-JobTrigger|Set-JobTrigger|Set-ScheduledJob|Set-ScheduledJobOption|Unregister-ScheduledJob|" + "New-PSWorkflowSession|New-PSWorkflowExecutionOption|" + "Invoke-AsWorkflow|" + + "Add-RDServer|Add-RDSessionHost|Add-RDVirtualDesktopToCollection|Disable-RDVirtualDesktopADMachineAccountReuse|Disconnect-RDUser|Enable-RDVirtualDesktopADMachineAccountReuse|Export-RDPersonalSessionDesktopAssignment|Export-RDPersonalVirtualDesktopAssignment|Get-RDAvailableApp|Get-RDCertificate|Get-RDConnectionBrokerHighAvailability|Get-RDDeploymentGatewayConfiguration|Get-RDFileTypeAssociation|Get-RDLicenseConfiguration|Get-RDPersonalSessionDesktopAssignment|Get-RDPersonalVirtualDesktopAssignment|Get-RDPersonalVirtualDesktopPatchSchedule|Get-RDRemoteApp|Get-RDRemoteDesktop|Get-RDServer|Get-RDSessionCollection|Get-RDSessionCollectionConfiguration|Get-RDSessionHost|Get-RDUserSession|Get-RDVirtualDesktop|Get-RDVirtualDesktopCollection|Get-RDVirtualDesktopCollectionConfiguration|Get-RDVirtualDesktopCollectionJobStatus|Get-RDVirtualDesktopConcurrency|Get-RDVirtualDesktopIdleCount|Get-RDVirtualDesktopTemplateExportPath|Get-RDWorkspace|Grant-RDOUAccess|Import-RDPersonalSessionDesktopAssignment|Import-RDPersonalVirtualDesktopAssignment|Invoke-RDUserLogoff|Move-RDVirtualDesktop|New-RDCertificate|New-RDPersonalVirtualDesktopPatchSchedule|New-RDRemoteApp|New-RDSessionCollection|New-RDSessionDeployment|New-RDVirtualDesktopCollection|New-RDVirtualDesktopDeployment|Remove-RDDatabaseConnectionString|Remove-RDPersonalSessionDesktopAssignment|Remove-RDPersonalVirtualDesktopAssignment|Remove-RDPersonalVirtualDesktopPatchSchedule|Remove-RDRemoteApp|Remove-RDServer|Remove-RDSessionCollection|Remove-RDSessionHost|Remove-RDVirtualDesktopCollection|Remove-RDVirtualDesktopFromCollection|Send-RDUserMessage|Set-RDActiveManagementServer|Set-RDCertificate|Set-RDClientAccessName|Set-RDConnectionBrokerHighAvailability|Set-RDDatabaseConnectionString|Set-RDDeploymentGatewayConfiguration|Set-RDFileTypeAssociation|Set-RDLicenseConfiguration|Set-RDPersonalSessionDesktopAssignment|Set-RDPersonalVirtualDesktopAssignment|Set-RDPersonalVirtualDesktopPatchSchedule|Set-RDRemoteApp|Set-RDRemoteDesktop|Set-RDSessionCollectionConfiguration|Set-RDSessionHost|Set-RDVirtualDesktopCollectionConfiguration|Set-RDVirtualDesktopConcurrency|Set-RDVirtualDesktopIdleCount|Set-RDVirtualDesktopTemplateExportPath|Set-RDWorkspace|Stop-RDVirtualDesktopCollectionJob|Test-RDOUAccess|Test-RDVirtualDesktopADMachineAccountReuse|Update-RDVirtualDesktopCollection|" + + "Add-BgpCustomRoute|Add-BgpPeer|Add-BgpRouteAggregate|Add-BgpRouter|Add-BgpRoutingPolicy|Add-BgpRoutingPolicyForPeer|Add-DAAppServer|Add-DAClient|Add-DAClientDnsConfiguration|Add-DAEntryPoint|Add-DAMgmtServer|Add-RemoteAccessIpFilter|Add-RemoteAccessLoadBalancerNode|Add-RemoteAccessRadius|Add-VpnIPAddressRange|Add-VpnS2SInterface|Add-VpnSstpProxyRule|Clear-BgpRouteFlapDampening|Clear-RemoteAccessInboxAccountingStore|Clear-VpnS2SInterfaceStatistics|Connect-VpnS2SInterface|Disable-BgpRouteFlapDampening|Disable-DAMultiSite|Disable-DAOtpAuthentication|Disable-RemoteAccessRoutingDomain|Disconnect-VpnS2SInterface|Disconnect-VpnUser|Enable-BgpRouteFlapDampening|Enable-DAMultiSite|Enable-DAOtpAuthentication|Enable-RemoteAccessRoutingDomain|Get-BgpCustomRoute|Get-BgpPeer|Get-BgpRouteAggregate|Get-BgpRouteFlapDampening|Get-BgpRouteInformation|Get-BgpRouter|Get-BgpRoutingPolicy|Get-BgpStatistics|Get-DAAppServer|Get-DAClient|Get-DAClientDnsConfiguration|Get-DAEntryPoint|Get-DAEntryPointDC|Get-DAMgmtServer|Get-DAMultiSite|Get-DANetworkLocationServer|Get-DAOtpAuthentication|Get-DAServer|Get-RemoteAccess|Get-RemoteAccessAccounting|Get-RemoteAccessConfiguration|Get-RemoteAccessConnectionStatistics|Get-RemoteAccessConnectionStatisticsSummary|Get-RemoteAccessHealth|Get-RemoteAccessIpFilter|Get-RemoteAccessLoadBalancer|Get-RemoteAccessRadius|Get-RemoteAccessRoutingDomain|Get-RemoteAccessUserActivity|Get-RoutingProtocolPreference|Get-VpnAuthProtocol|Get-VpnS2SInterface|Get-VpnS2SInterfaceStatistics|Get-VpnServerConfiguration|Get-VpnSstpProxyRule|Install-RemoteAccess|New-VpnSstpProxyRule|New-VpnTrafficSelector|Remove-BgpCustomRoute|Remove-BgpPeer|Remove-BgpRouteAggregate|Remove-BgpRouter|Remove-BgpRoutingPolicy|Remove-BgpRoutingPolicyForPeer|Remove-DAAppServer|Remove-DAClient|Remove-DAClientDnsConfiguration|Remove-DAEntryPoint|Remove-DAMgmtServer|Remove-RemoteAccessIpFilter|Remove-RemoteAccessLoadBalancerNode|Remove-RemoteAccessRadius|Remove-VpnIPAddressRange|Remove-VpnS2SInterface|Remove-VpnSstpProxyRule|Set-BgpPeer|Set-BgpRouteAggregate|Set-BgpRouteFlapDampening|Set-BgpRouter|Set-BgpRoutingPolicy|Set-BgpRoutingPolicyForPeer|Set-DAAppServerConnection|Set-DAClient|Set-DAClientDnsConfiguration|Set-DAEntryPoint|Set-DAEntryPointDC|Set-DAMultiSite|Set-DANetworkLocationServer|Set-DAOtpAuthentication|Set-DAServer|Set-RemoteAccess|Set-RemoteAccessAccounting|Set-RemoteAccessConfiguration|Set-RemoteAccessInboxAccountingStore|Set-RemoteAccessIpFilter|Set-RemoteAccessLoadBalancer|Set-RemoteAccessRadius|Set-RemoteAccessRoutingDomain|Set-RoutingProtocolPreference|Set-VpnAuthProtocol|Set-VpnAuthType|Set-VpnIPAddressAssignment|Set-VpnS2SInterface|Set-VpnServerConfiguration|Set-VpnSstpProxyRule|Start-BgpPeer|Stop-BgpPeer|Uninstall-RemoteAccess|Update-DAMgmtServer|" + + "Convert-License|" + "Disable-ScheduledTask|Enable-ScheduledTask|Export-ScheduledTask|Get-ClusteredScheduledTask|Get-ScheduledTask|Get-ScheduledTaskInfo|New-ScheduledTask|New-ScheduledTaskAction|New-ScheduledTaskPrincipal|New-ScheduledTaskSettingsSet|New-ScheduledTaskTrigger|Register-ClusteredScheduledTask|Register-ScheduledTask|Set-ClusteredScheduledTask|Set-ScheduledTask|Start-ScheduledTask|Stop-ScheduledTask|Unregister-ClusteredScheduledTask|Unregister-ScheduledTask|" + "Confirm-SecureBootUEFI|Format-SecureBootUEFI|Get-SecureBootPolicy|Get-SecureBootUEFI|Set-SecureBootUEFI|" + - "Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbShare|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|" + + "Get-DisplayResolution|Set-DisplayResolution|" + + "Disable-ServerManagerStandardUserRemoting|Enable-ServerManagerStandardUserRemoting|Get-WindowsFeature|Install-WindowsFeature|Uninstall-WindowsFeature|" + + "Get-SMCounterSample|Get-SMPerformanceCollector|Get-SMServerBpaResult|Get-SMServerClusterName|Get-SMServerEvent|Get-SMServerFeature|Get-SMServerInventory|Get-SMServerService|Remove-SMServerPerformanceLog|Start-SMPerformanceCollector|Stop-SMPerformanceCollector|" + + "Get-KeyProtectorFromShieldingDataFile|Get-ShieldedVMProvisioningStatus|Initialize-ShieldedVM|New-ShieldedVMSpecializationDataFile|Test-ShieldingDataApplicability|" + + "Import-ShieldingDataFile|New-ShieldingDataFile|New-VolumeIDQualifier|Save-ShieldedVMRecoveryKey|Save-VolumeSignatureCatalog|Unprotect-ShieldedVMRecoveryKey|" + + "Initialize-VMShieldingHelperVHD|Protect-TemplateDisk|" + + "Block-SmbShareAccess|Close-SmbOpenFile|Close-SmbSession|Disable-SmbDelegation|Enable-SmbDelegation|Get-SmbBandwidthLimit|Get-SmbClientConfiguration|Get-SmbClientNetworkInterface|Get-SmbConnection|Get-SmbDelegation|Get-SmbGlobalMapping|Get-SmbMapping|Get-SmbMultichannelConnection|Get-SmbMultichannelConstraint|Get-SmbOpenFile|Get-SmbServerCertificateMapping|Get-SmbServerCertProps|Get-SmbServerConfiguration|Get-SmbServerNetworkInterface|Get-SmbSession|Get-SmbShare|Get-SmbShareAccess|Grant-SmbShareAccess|New-SmbGlobalMapping|New-SmbMapping|New-SmbMultichannelConstraint|New-SmbServerCertificateMapping|New-SmbShare|Remove-SmbBandwidthLimit|Remove-SmbComponent|Remove-SmbGlobalMapping|Remove-SmbMapping|Remove-SmbMultichannelConstraint|Remove-SmbServerCertificateMapping|Remove-SmbShare|Reset-SmbClientConfiguration|Reset-SmbServerConfiguration|Revoke-SmbShareAccess|Set-SmbBandwidthLimit|Set-SmbClientConfiguration|Set-SmbPathAcl|Set-SmbServerCertificateMapping|Set-SmbServerConfiguration|Set-SmbShare|Unblock-SmbShareAccess|Update-SmbMultichannelConnection|" + "Move-SmbClient|Get-SmbWitnessClient|Move-SmbWitnessClient|" + - "Get-StartApps|Export-StartLayout|Import-StartLayout|" + - "Disable-PhysicalDiskIndication|Disable-StorageDiagnosticLog|Enable-PhysicalDiskIndication|Enable-StorageDiagnosticLog|Flush-Volume|Get-DiskSNV|Get-PhysicalDiskSNV|Get-StorageEnclosureSNV|Initialize-Volume|Write-FileSystemCache|Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Clear-StorageDiagnosticInfo|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Format-Volume|Get-DedupProperties|Get-Disk|Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|" + - "Disable-TlsCipherSuite|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|New-TlsSessionTicketKey|" + + "Register-SmisProvider|Search-SmisProvider|Unregister-SmisProvider|" + + "Get-SilComputer|Get-SilComputerIdentity|Get-SilData|Get-SilLogging|Get-SilSoftware|Get-SilUalAccess|Get-SilWindowsUpdate|Publish-SilData|Set-SilLogging|Start-SilLogging|Stop-SilLogging|" + + "Get-StartApps|Export-StartLayout|Import-StartLayout|Export-StartLayoutEdgeAssets|" + + "Add-InitiatorIdToMaskingSet|Add-PartitionAccessPath|Add-PhysicalDisk|Add-TargetPortToMaskingSet|Add-VirtualDiskToMaskingSet|Block-FileShareAccess|Clear-Disk|Clear-FileStorageTier|Connect-VirtualDisk|Debug-FileShare|Debug-StorageSubSystem|Debug-Volume|Disable-PhysicalDiskIdentification|Disable-StorageEnclosureIdentification|Disable-StorageHighAvailability|Disable-StorageMaintenanceMode|Disconnect-VirtualDisk|Dismount-DiskImage|Enable-PhysicalDiskIdentification|Enable-StorageEnclosureIdentification|Enable-StorageHighAvailability|Enable-StorageMaintenanceMode|Format-Volume|Get-DedupProperties|Get-Disk|||||Get-DiskImage|Get-DiskStorageNodeView|Get-FileIntegrity|Get-FileShare|Get-FileShareAccessControlEntry|Get-FileStorageTier|Get-InitiatorId|Get-InitiatorPort|Get-MaskingSet|Get-OffloadDataTransferSetting|Get-Partition|Get-PartitionSupportedSize|Get-PhysicalDisk|Get-PhysicalDiskStorageNodeView|Get-PhysicalExtent|Get-PhysicalExtentAssociation|Get-ResiliencySetting|Get-StorageAdvancedProperty|Get-StorageDiagnosticInfo|Get-StorageEnclosure|Get-StorageEnclosureStorageNodeView|Get-StorageEnclosureVendorData|Get-StorageFaultDomain|Get-StorageFileServer|Get-StorageFirmwareInformation|Get-StorageHealthAction|Get-StorageHealthReport|Get-StorageHealthSetting|Get-StorageJob|Get-StorageNode|Get-StoragePool|Get-StorageProvider|Get-StorageReliabilityCounter|Get-StorageSetting|Get-StorageSubSystem|Get-StorageTier|Get-StorageTierSupportedSize|Get-SupportedClusterSizes|Get-SupportedFileSystems|Get-TargetPort|Get-TargetPortal|Get-VirtualDisk|Get-VirtualDiskSupportedSize|Get-Volume|Get-VolumeCorruptionCount|Get-VolumeScrubPolicy|Grant-FileShareAccess|Hide-VirtualDisk|Initialize-Disk|Mount-DiskImage|New-FileShare|New-MaskingSet|New-Partition|New-StorageFileServer|New-StoragePool|New-StorageSubsystemVirtualDisk|New-StorageTier|New-VirtualDisk|New-VirtualDiskClone|New-VirtualDiskSnapshot|New-Volume|Optimize-StoragePool|Optimize-Volume|Register-StorageSubsystem|Remove-FileShare|Remove-InitiatorId|Remove-InitiatorIdFromMaskingSet|Remove-MaskingSet|Remove-Partition|Remove-PartitionAccessPath|Remove-PhysicalDisk|Remove-StorageFileServer|Remove-StorageHealthSetting|Remove-StoragePool|Remove-StorageTier|Remove-TargetPortFromMaskingSet|Remove-VirtualDisk|Remove-VirtualDiskFromMaskingSet|Rename-MaskingSet|Repair-FileIntegrity|Repair-VirtualDisk|Repair-Volume|Reset-PhysicalDisk|Reset-StorageReliabilityCounter|Resize-Partition|Resize-StorageTier|Resize-VirtualDisk|Revoke-FileShareAccess|Set-Disk|Set-FileIntegrity|Set-FileShare|Set-FileStorageTier|Set-InitiatorPort|Set-Partition|Set-PhysicalDisk|Set-ResiliencySetting|Set-StorageFileServer|Set-StorageHealthSetting|Set-StoragePool|Set-StorageProvider|Set-StorageSetting|Set-StorageSubSystem|Set-StorageTier|Set-VirtualDisk|Set-Volume|Set-VolumeScrubPolicy|Show-VirtualDisk|Start-StorageDiagnosticLog|Stop-StorageDiagnosticLog|Stop-StorageJob|Unblock-FileShareAccess|Unregister-StorageSubsystem|Update-Disk|Update-HostStorageCache|Update-StorageFirmware|Update-StoragePool|Update-StorageProviderCache|Write-VolumeCache|" + + "Get-StorageQoSFlow|Get-StorageQosPolicy|Get-StorageQosPolicyStore|Get-StorageQosVolume|New-StorageQosPolicy|Remove-StorageQosPolicy|Set-StorageQosPolicy|Set-StorageQosPolicyStore|" + + "Clear-SRMetadata|Dismount-SRDestination|Export-SRConfiguration|Get-SRAccess|Get-SRDelegation|Get-SRGroup|Get-SRNetworkConstraint|Get-SRPartnership|Grant-SRAccess|Grant-SRDelegation|Mount-SRDestination|New-SRGroup|New-SRPartnership|Remove-SRGroup|Remove-SRNetworkConstraint|Remove-SRPartnership|Revoke-SRAccess|Revoke-SRDelegation|Set-SRGroup|Set-SRNetworkConstraint|Set-SRPartnership|Suspend-SRGroup|Sync-SRGroup|Test-SRTopology|" + + "Disable-SyncShare|Enable-SyncShare|Get-SyncServerSetting|Get-SyncShare|Get-SyncUserStatus|New-SyncShare|Remove-SyncShare|Repair-SyncShare|Set-SyncServerSetting|Set-SyncShare|" + + "Add-InsightsCapability|Disable-InsightsCapability|Disable-InsightsCapabilitySchedule|Enable-InsightsCapability|Enable-InsightsCapabilitySchedule|Get-InsightsCapability|Get-InsightsCapabilityAction|Get-InsightsCapabilityResult|Get-InsightsCapabilitySchedule|Invoke-InsightsCapability|Remove-InsightsCapability|Remove-InsightsCapabilityAction|Set-InsightsCapabilityAction|Set-InsightsCapabilitySchedule|Update-InsightsCapability|" + + "Disable-TlsCipherSuite|Disable-TlsEccCurve|Disable-TlsSessionTicketKey|Enable-TlsCipherSuite|Enable-TlsEccCurve|Enable-TlsSessionTicketKey|Export-TlsSessionTicketKey|Get-TlsCipherSuite|Get-TlsEccCurve|New-TlsSessionTicketKey|" + "Get-TroubleshootingPack|Invoke-TroubleshootingPack|" + "Clear-Tpm|ConvertTo-TpmOwnerAuth|Disable-TpmAutoProvisioning|Enable-TpmAutoProvisioning|Get-Tpm|Get-TpmEndorsementKeyInfo|Get-TpmSupportedFeature|Import-TpmOwnerAuth|Initialize-Tpm|Set-TpmOwnerAuth|Unblock-Tpm|" + + "Clear-UevAppxPackage|Clear-UevConfiguration|Disable-Uev|Disable-UevAppxPackage|Disable-UevTemplate|Enable-Uev|Enable-UevAppxPackage|Enable-UevTemplate|Export-UevConfiguration|Export-UevPackage|Get-UevAppxPackage|Get-UevConfiguration|Get-UevStatus|Get-UevTemplate|Get-UevTemplateProgram|Import-UevConfiguration|Register-UevTemplate|Repair-UevTemplateIndex|Restore-UevBackup|Restore-UevUserSetting|Set-UevConfiguration|Set-UevTemplateProfile|Test-UevTemplate|Unregister-UevTemplate|Update-UevTemplate|" + + "Add-WsusComputer|Add-WsusDynamicCategory|Approve-WsusUpdate|Deny-WsusUpdate|Get-WsusClassification|Get-WsusComputer|Get-WsusDynamicCategory|Get-WsusProduct|Get-WsusServer|Get-WsusUpdate|Invoke-WsusServerCleanup|Remove-WsusDynamicCategory|Set-WsusClassification|Set-WsusDynamicCategory|Set-WsusProduct|Set-WsusServerSynchronization|" + + "Disable-Ual|Enable-Ual|Get-Ual|Get-UalDailyAccess|Get-UalDailyDeviceAccess|Get-UalDailyUserAccess|Get-UalDeviceAccess|Get-UalDns|Get-UalHyperV|Get-UalOverview|Get-UalServerDevice|Get-UalServerUser|Get-UalSystemId|Get-UalUserAccess|" + + "Add-VamtProductKey|Export-VamtData|Find-VamtManagedMachine|Get-VamtConfirmationId|Get-VamtProduct|Get-VamtProductKey|Import-VamtData|Initialize-VamtData|Install-VamtConfirmationId|Install-VamtProductActivation|Install-VamtProductKey|Update-VamtProduct|" + "Add-VpnConnection|Add-VpnConnectionRoute|Add-VpnConnectionTriggerApplication|Add-VpnConnectionTriggerDnsConfiguration|Add-VpnConnectionTriggerTrustedNetwork|Get-VpnConnection|Get-VpnConnectionTrigger|New-EapConfiguration|New-VpnServerAddress|Remove-VpnConnection|Remove-VpnConnectionRoute|Remove-VpnConnectionTriggerApplication|Remove-VpnConnectionTriggerDnsConfiguration|Remove-VpnConnectionTriggerTrustedNetwork|Set-VpnConnection|Set-VpnConnectionIPsecConfiguration|Set-VpnConnectionProxy|Set-VpnConnectionTriggerDnsConfiguration|Set-VpnConnectionTriggerTrustedNetwork|" + - "Add-OdbcDsn|Disable-OdbcPerfCounter|Disable-WdacBidTrace|Enable-OdbcPerfCounter|Enable-WdacBidTrace|Get-OdbcDriver|Get-OdbcDsn|Get-OdbcPerfCounter|Get-WdacBidTrace|Remove-OdbcDsn|Set-OdbcDriver|Set-OdbcDsn|" + + "Add-WdsDriverPackage|Approve-WdsClient|Copy-WdsInstallImage|Deny-WdsClient|Disable-WdsBootImage|Disable-WdsDriverPackage|Disable-WdsInstallImage|Disconnect-WdsMulticastClient|Enable-WdsBootImage|Enable-WdsDriverPackage|Enable-WdsInstallImage|Export-WdsBootImage|Export-WdsInstallImage|Get-WdsBootImage|Get-WdsClient|Get-WdsDriverPackage|Get-WdsInstallImage|Get-WdsInstallImageGroup|Get-WdsMulticastClient|Import-WdsBootImage|Import-WdsDriverPackage|Import-WdsInstallImage|New-WdsClient|New-WdsInstallImageGroup|Remove-WdsBootImage|Remove-WdsClient|Remove-WdsDriverPackage|Remove-WdsInstallImage|Remove-WdsInstallImageGroup|Set-WdsBootImage|Set-WdsClient|Set-WdsInstallImage|Set-WdsInstallImageGroup|" + + "Add-WebConfiguration|Add-WebConfigurationLock|Add-WebConfigurationProperty|Backup-WebConfiguration|Clear-WebCentralCertProvider|Clear-WebConfiguration|Clear-WebRequestTracingSetting|Clear-WebRequestTracingSettings|ConvertTo-WebApplication|Disable-WebCentralCertProvider|Disable-WebGlobalModule|Disable-WebRequestTracing|Enable-WebCentralCertProvider|Enable-WebGlobalModule|Enable-WebRequestTracing|Get-WebAppDomain|Get-WebApplication|Get-WebAppPoolState|Get-WebBinding|Get-WebCentralCertProvider|Get-WebConfigFile|Get-WebConfiguration|Get-WebConfigurationBackup|Get-WebConfigurationLocation|Get-WebConfigurationLock|Get-WebConfigurationProperty|Get-WebFilePath|Get-WebGlobalModule|Get-WebHandler|Get-WebItemState|Get-WebManagedModule|Get-WebRequest|Get-Website|Get-WebsiteState|Get-WebURL|Get-WebVirtualDirectory|New-WebApplication|New-WebAppPool|New-WebBinding|New-WebFtpSite|New-WebGlobalModule|New-WebHandler|New-WebManagedModule|New-Website|New-WebVirtualDirectory|Remove-WebApplication|Remove-WebAppPool|Remove-WebBinding|Remove-WebConfigurationBackup|Remove-WebConfigurationLocation|Remove-WebConfigurationLock|Remove-WebConfigurationProperty|Remove-WebGlobalModule|Remove-WebHandler|Remove-WebManagedModule|Remove-Website|Remove-WebVirtualDirectory|Rename-WebConfigurationLocation|Restart-WebAppPool|Restart-WebItem|Restore-WebConfiguration|Select-WebConfiguration|Set-WebBinding|Set-WebCentralCertProvider|Set-WebCentralCertProviderCredential|Set-WebConfiguration|Set-WebConfigurationProperty|Set-WebGlobalModule|Set-WebHandler|Set-WebManagedModule|Start-WebAppPool|Start-WebCommitDelay|Start-WebItem|Start-Website|Stop-WebAppPool|Stop-WebCommitDelay|Stop-WebItem|Stop-Website|" + + "Add-WebApplicationProxyApplication|Get-WebApplicationProxyApplication|Get-WebApplicationProxyAvailableADFSRelyingParty|Get-WebApplicationProxyConfiguration|Get-WebApplicationProxyHealth|Get-WebApplicationProxySslCertificate|Install-WebApplicationProxy|Remove-WebApplicationProxyApplication|Set-WebApplicationProxyApplication|Set-WebApplicationProxyConfiguration|Set-WebApplicationProxySslCertificate|Update-WebApplicationProxyDeviceRegistration|" + + "Get-WheaMemoryPolicy|Set-WheaMemoryPolicy|" + "Get-WindowsDeveloperLicense|Show-WindowsDeveloperLicenseRegistration|Unregister-WindowsDeveloperLicense|" + + "Clear-WindowsDiagnosticData|" + "Disable-WindowsErrorReporting|Enable-WindowsErrorReporting|Get-WindowsErrorReporting|" + "Get-WindowsSearchSetting|Set-WindowsSearchSetting|" + - "Get-WindowsUpdateLog" - ); - + "Add-WBBackupTarget|Add-WBBareMetalRecovery|Add-WBFileSpec|Add-WBSystemState|Add-WBVirtualMachine|Add-WBVolume|Backup-ACL|Get-WBBackupSet|Get-WBBackupTarget|Get-WBBackupVolumeBrowsePath|Get-WBBareMetalRecovery|Get-WBDisk|Get-WBFileSpec|Get-WBJob|Get-WBPerformanceConfiguration|Get-WBPolicy|Get-WBSchedule|Get-WBSummary|Get-WBSystemState|Get-WBVirtualMachine|Get-WBVolume|Get-WBVssBackupOption|New-WBBackupTarget|New-WBFileSpec|New-WBPolicy|Remove-WBBackupSet|Remove-WBBackupTarget|Remove-WBBareMetalRecovery|Remove-WBCatalog|Remove-WBFileSpec|Remove-WBPolicy|Remove-WBSystemState|Remove-WBVirtualMachine|Remove-WBVolume|Restore-ACL|Restore-WBCatalog|Resume-WBBackup|Resume-WBVolumeRecovery|Set-WBPerformanceConfiguration|Set-WBPolicy|Set-WBSchedule|Set-WBVssBackupOption|Start-WBApplicationRecovery|Start-WBBackup|Start-WBFileRecovery|Start-WBHyperVRecovery|Start-WBSystemStateRecovery|Start-WBVolumeRecovery|Stop-WBJob|" + + "Get-WindowsUpdateLog"); var keywordMapper = this.createKeywordMapper({ "support.function": builtinFunctions, "keyword": keywords }, "identifier"); var binaryOperatorsRe = ( - "eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|" + - "ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|" + + "eq|ne|gt|lt|le|ge|like|notlike|match|notmatch|contains|notcontains|in|notin|band|bor|bxor|bnot|" + + "ceq|cne|cgt|clt|cle|cge|clike|cnotlike|cmatch|cnotmatch|ccontains|cnotcontains|cin|cnotin|" + "ieq|ine|igt|ilt|ile|ige|ilike|inotlike|imatch|inotmatch|icontains|inotcontains|iin|inotin|" + "and|or|xor|not|" + "split|join|replace|f|" + "csplit|creplace|" + "isplit|ireplace|" + "is|isnot|as|" + - "shl|shr" - ); - + "shl|shr"); this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "comment.start", - regex : "<#", - next : "comment" + token: "comment.start", + regex: "<#", + next: "comment" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // multi line + regex: /@'$/, + push: [ + { + token: "string", + regex: /^'@/, + next: "pop" + }, + { + defaultToken: "string" + } + ] }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // multi line + regex: /@"$/, + push: [ + { + token: "string", + regex: /^"@/, + next: "pop" + }, + { include: "expressions" }, + { include: "expandable-strings" }, + { + defaultToken: "string" + } + ] + }, + { include: "strings" }, + { include: "variables" }, + { include: "statements" }, + { include: "expressions" }, + { + token: "lparen", + regex: "[[({]" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "[$](?:[Tt]rue|[Ff]alse)\\b" - }, { - token : "constant.language", - regex : "[$][Nn]ull\\b" - }, { - token : "variable.instance", - regex : "[$][a-zA-Z][a-zA-Z0-9_]*\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" - }, { - token : "keyword.operator", - regex : "\\-(?:" + binaryOperatorsRe + ")" - }, { - token : "keyword.operator", - regex : "&|\\+|\\-|\\*|\\/|\\%|\\=|\\>|\\&|\\!|\\|" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + token: "rparen", + regex: "[\\])}]" + }, + { + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment.end", - regex : "#>", - next : "start" + token: "comment.end", + regex: "#>", + next: "start" }, { - token : "doc.comment.tag", - regex : "^\\.\\w+" + token: "doc.comment.tag", + regex: "^\\.\\w+" }, { - defaultToken : "comment" + defaultToken: "comment" + } + ], + "expandable-strings": [ + { + token: "constant.language.escape", + regex: /`./ + }, + { include: "variables" } + ], + "variables": [ + { + token: "variable.instance", + regex: "[$]" + identifierRe + "\\b" + }, + { + token: "variable.braced", + regex: /\$\{/, + push: [ + { + token: "variable.braced", + regex: /\}/, + next: "pop" + }, + { + token: "constant.language.escape", + regex: /`./ + }, + { defaultToken: "variable.braced" } + ] + } + ], + "statements": [ + { + token: "punctuation", + regex: ";" + }, + { + token: "keyword.operator", + regex: "\\-(?:" + binaryOperatorsRe + ")" + }, { + token: "keyword.operator", + regex: "&|\\+|\\-|\\*|\\/|\\%|\\=|\\>|\\&|\\!|\\|" + }, + { include: "constants" }, + { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$\\-]*\\b" + } + ], + "constants": [ + { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "[$](?:[Tt]rue|[Ff]alse)\\b" + }, { + token: "constant.language", + regex: "[$][Nn]ull\\b" + } + ], + "strings": [ + { + token: "string", // single line + regex: "['][^']*[']" + }, + { + token: "string", // single line + regex: /"/, + push: [ + { + token: "string", + regex: /"|$/, + next: "pop" + }, + { include: "expressions" }, + { include: "expandable-strings" }, + { + defaultToken: "string" + } + ] + } + ], + "expressions": [ + { + token: "keyword.operator", + regex: /[$@]\(/, + push: [ + { + token: "keyword.operator", + regex: /\)/, + next: "pop" + }, + { include: "parens-block" }, + { include: "expressions" }, + { include: "strings" }, + { include: "variables" }, + { include: "statements" } + ] + }, + { + token: "keyword.operator", + regex: /@\{/, + push: [ + { + token: "keyword.operator", + regex: /\}/, + next: "pop" + }, + { include: "parens-block" }, + { include: "strings" }, + { include: "variables" }, + { include: "statements" } + ] + } + ], + "parens-block": [ + { + token: "paren.lparen", + regex: /\(/, + push: [ + { + token: "paren.rparen", + regex: /\)/, + next: "pop" + }, + { include: "parens-block" }, + { include: "strings" }, + { include: "variables" }, + { include: "statements" } + ] } ] }; + this.normalizeRules(); }; - oop.inherits(PowershellHighlightRules, TextHighlightRules); - exports.PowershellHighlightRules = PowershellHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -303,109 +468,100 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/powershell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/powershell_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/powershell",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/powershell_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PowershellHighlightRules = require("./powershell_highlight_rules").PowershellHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PowershellHighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - this.foldingRules = new CStyleFoldMode({start: "^\\s*(<#)", end: "^[#\\s]>\\s*$"}); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode({ start: "^\\s*(<#)", end: "^[#\\s]>\\s*$" }); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "#"; - this.blockComment = {start: "<#", end: "#>"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "<#", end: "#>" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - - this.createWorker = function(session) { + this.createWorker = function (session) { return null; }; - this.$id = "ace/mode/powershell"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/powershell"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-praat.js b/vendor/assets/javascripts/ace/mode-praat.js index 473c4f48..c248526d 100644 --- a/vendor/assets/javascripts/ace/mode-praat.js +++ b/vendor/assets/javascripts/ace/mode-praat.js @@ -1,34 +1,22 @@ -define("ace/mode/praat_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/praat_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PraatHighlightRules = function() { - - var keywords = ( - "if|then|else|elsif|elif|endif|fi|" + +var PraatHighlightRules = function () { + var keywords = ("if|then|else|elsif|elif|endif|fi|" + "endfor|endproc|" + // related keywords specified below "while|endwhile|" + "repeat|until|" + "select|plus|minus|" + - "assert|asserterror" - ); - - var predefinedVariables = ( - "macintosh|windows|unix|" + + "assert|asserterror"); + var predefinedVariables = ("macintosh|windows|unix|" + "praatVersion|praatVersion\\$" + "pi|undefined|" + "newline\\$|tab\\$|" + "shellDirectory\\$|homeDirectory\\$|preferencesDirectory\\$|" + - "temporaryDirectory\\$|defaultDirectory\\$" - ); - var directives = ( - "clearinfo|endSendPraat" - ); - + "temporaryDirectory\\$|defaultDirectory\\$"); + var directives = ("clearinfo|endSendPraat"); var functions = ( - "writeInfo|writeInfoLine|appendInfo|appendInfoLine|info\\$|" + + "writeInfo|writeInfoLine|appendInfo|appendInfoLine|info\\$|" + "writeFile|writeFileLine|appendFile|appendFileLine|" + "abs|round|floor|ceiling|min|max|imin|imax|" + "sqrt|sin|cos|tan|arcsin|arccos|arctan|arctan2|sinc|sincpi|" + @@ -48,9 +36,9 @@ var PraatHighlightRules = function() { "soundPressureToPhon|" + "beta|beta2|besselI|besselK|" + "numberOfColumns|numberOfRows|" + - "selected|selected\\$|numberOfSelected|variableExists|"+ - "index|rindex|startsWith|endsWith|"+ - "index_regex|rindex_regex|replace_regex\\$|"+ + "selected|selected\\$|numberOfSelected|variableExists|" + + "index|rindex|startsWith|endsWith|" + + "index_regex|rindex_regex|replace_regex\\$|" + "length|extractWord\\$|extractLine\\$|extractNumber|" + "left\\$|right\\$|mid\\$|replace\\$|" + "date\\$|fixed\\$|percent\\$|" + @@ -59,302 +47,264 @@ var PraatHighlightRules = function() { "demoShow|demoWindowTitle|demoInput|demoWaitForInput|" + "demoClicked|demoClickedIn|demoX|demoY|" + "demoKeyPressed|demoKey\\$|" + - "demoExtraControlKeyPressed|demoShiftKeyPressed|"+ + "demoExtraControlKeyPressed|demoShiftKeyPressed|" + "demoCommandKeyPressed|demoOptionKeyPressed|" + "environment\\$|chooseReadFile\\$|" + "chooseDirectory\\$|createDirectory|fileReadable|deleteFile|" + "selectObject|removeObject|plusObject|minusObject|" + "runScript|exitScript|" + "beginSendPraat|endSendPraat|" + - "objectsAreIdentical" - ); - - var objectTypes = ( - "Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|" + - "BarkFilter|CCA|Categories|Cepstrum|Cepstrumc|ChebyshevSeries|" + - "ClassificationTable|Cochleagram|Collection|Configuration|" + - "Confusion|ContingencyTable|Corpus|Correlation|Covariance|" + - "CrossCorrelationTable|CrossCorrelationTables|DTW|Diagonalizer|" + - "Discriminant|Dissimilarity|Distance|Distributions|DurationTier|" + - "EEG|ERP|ERPTier|Eigen|Excitation|Excitations|ExperimentMFC|FFNet|" + - "FeatureWeights|Formant|FormantFilter|FormantGrid|FormantPoint|" + - "FormantTier|GaussianMixture|HMM|HMM_Observation|" + - "HMM_ObservationSequence|HMM_State|HMM_StateSequence|Harmonicity|" + - "ISpline|Index|Intensity|IntensityTier|IntervalTier|KNN|KlattGrid|" + - "KlattTable|LFCC|LPC|Label|LegendreSeries|LinearRegression|" + - "LogisticRegression|LongSound|Ltas|MFCC|MSpline|ManPages|" + - "Manipulation|Matrix|MelFilter|MixingMatrix|Movie|Network|" + - "OTGrammar|OTHistory|OTMulti|PCA|PairDistribution|ParamCurve|" + - "Pattern|Permutation|Pitch|PitchTier|PointProcess|Polygon|" + - "Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|SPINET|" + - "SSCP|SVD|Salience|ScalarProduct|Similarity|SimpleString|" + + "objectsAreIdentical"); + var objectTypes = ("Activation|AffineTransform|AmplitudeTier|Art|Artword|Autosegment|" + + "BarkFilter|CCA|Categories|Cepstrum|Cepstrumc|ChebyshevSeries|" + + "ClassificationTable|Cochleagram|Collection|Configuration|" + + "Confusion|ContingencyTable|Corpus|Correlation|Covariance|" + + "CrossCorrelationTable|CrossCorrelationTables|DTW|Diagonalizer|" + + "Discriminant|Dissimilarity|Distance|Distributions|DurationTier|" + + "EEG|ERP|ERPTier|Eigen|Excitation|Excitations|ExperimentMFC|FFNet|" + + "FeatureWeights|Formant|FormantFilter|FormantGrid|FormantPoint|" + + "FormantTier|GaussianMixture|HMM|HMM_Observation|" + + "HMM_ObservationSequence|HMM_State|HMM_StateSequence|Harmonicity|" + + "ISpline|Index|Intensity|IntensityTier|IntervalTier|KNN|KlattGrid|" + + "KlattTable|LFCC|LPC|Label|LegendreSeries|LinearRegression|" + + "LogisticRegression|LongSound|Ltas|MFCC|MSpline|ManPages|" + + "Manipulation|Matrix|MelFilter|MixingMatrix|Movie|Network|" + + "OTGrammar|OTHistory|OTMulti|PCA|PairDistribution|ParamCurve|" + + "Pattern|Permutation|Pitch|PitchTier|PointProcess|Polygon|" + + "Polynomial|Procrustes|RealPoint|RealTier|ResultsMFC|Roots|SPINET|" + + "SSCP|SVD|Salience|ScalarProduct|Similarity|SimpleString|" + "SortedSetOfString|Sound|Speaker|Spectrogram|Spectrum|SpectrumTier|" + - "SpeechSynthesizer|SpellingChecker|Strings|StringsIndex|Table|" + - "TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|" + - "Transition|VocalTract|Weight|WordList" - ); - + "SpeechSynthesizer|SpellingChecker|Strings|StringsIndex|Table|" + + "TableOfReal|TextGrid|TextInterval|TextPoint|TextTier|Tier|" + + "Transition|VocalTract|Weight|WordList"); this.$rules = { - "start" : [ + "start": [ { - token : "string.interpolated", - regex : /'((?:[a-z][a-zA-Z0-9_]*)(?:\$|#|:[0-9]+)?)'/ + token: "string.interpolated", + regex: /'((?:\.?[a-z][a-zA-Z0-9_.]*)(?:\$|#|:[0-9]+)?)'/ }, { - token : ["text", "text", "keyword.operator", "text", "keyword"], - regex : /(^\s*)(?:([a-z][a-zA-Z0-9_]*\$?\s+)(=)(\s+))?(stopwatch)/ + token: ["text", "text", "keyword.operator", "text", "keyword"], + regex: /(^\s*)(?:(\.?[a-z][a-zA-Z0-9_.]*\$?\s+)(=)(\s+))?(stopwatch)/ }, { - token : ["text", "keyword", "text", "string"], - regex : /(^\s*)(print(?:line|tab)?|echo|exit|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)(.*)/ + token: ["text", "keyword", "text", "string"], + regex: /(^\s*)(print(?:line|tab)?|echo|exit|pause|send(?:praat|socket)|include|execute|system(?:_nocheck)?)(\s+)(.*)/ }, { - token : ["text", "keyword"], - regex : "(^\\s*)(" + directives + ")$" + token: ["text", "keyword"], + regex: "(^\\s*)(" + directives + ")$" }, { - token : ["text", "keyword.operator", "text"], - regex : /(\s+)((?:\+|-|\/|\*|<|>)=?|==?|!=|%|\^|\||and|or|not)(\s+)/ + token: ["text", "keyword.operator", "text"], + regex: /(\s+)((?:\+|-|\/|\*|<|>)=?|==?|!=|%|\^|\||and|or|not)(\s+)/ }, { - token : ["text", "text", "keyword.operator", "text", "keyword", "text", "keyword"], - regex : /(^\s*)(?:([a-z][a-zA-Z0-9_]*\$?\s+)(=)(\s+))?(?:((?:no)?warn|(?:unix_)?nocheck|noprogress)(\s+))?((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/ + token: ["text", "text", "keyword.operator", "text", "keyword", "text", "keyword"], + regex: /(^\s*)(?:(\.?[a-z][a-zA-Z0-9_.]*\$?\s+)(=)(\s+))?(?:((?:no)?warn|(?:unix_)?nocheck|noprogress)(\s+))?((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/ }, { - token : ["text", "keyword", "text", "keyword"], - regex : /(^\s*)(?:(demo)?(\s+))((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/ + token: ["text", "keyword", "text", "keyword"], + regex: /(^\s*)((?:no(?:warn|check))?)(\s*)(\b(?:editor(?::?)|endeditor)\b)/ }, { - token : ["text", "keyword", "text", "keyword"], - regex : /^(\s*)(?:(demo)(\s+))?(10|12|14|16|24)$/ + token: ["text", "keyword", "text", "keyword"], + regex: /(^\s*)(?:(demo)?(\s+))((?:[A-Z][^.:"]+)(?:$|(?:\.{3}|:)))/ }, { - token : ["text", "support.function", "text"], - regex : /(\s*)(do\$?)(\s*:\s*|\s*\(\s*)/ + token: ["text", "keyword", "text", "keyword"], + regex: /^(\s*)(?:(demo)(\s+))?(10|12|14|16|24)$/ }, { - token : "entity.name.type", - regex : "(" + objectTypes + ")" + token: ["text", "support.function", "text"], + regex: /(\s*)(do\$?)(\s*:\s*|\s*\(\s*)/ }, { - token : "variable.language", - regex : "(" + predefinedVariables + ")" + token: "entity.name.type", + regex: "(" + objectTypes + ")" }, { - token : ["support.function", "text"], - regex : "((?:" + functions + ")\\$?)(\\s*(?::|\\())" + token: "variable.language", + regex: "(" + predefinedVariables + ")" }, { - token : "keyword", - regex : /(\bfor\b)/, - next : "for" + token: ["support.function", "text"], + regex: "((?:" + functions + ")\\$?)(\\s*(?::|\\())" }, { - token : "keyword", - regex : "(\\b(?:" + keywords + ")\\b)" + token: "keyword", + regex: /(\bfor\b)/, + next: "for" }, { - token : "string", - regex : /"[^"]*"/ + token: "keyword", + regex: "(\\b(?:" + keywords + ")\\b)" }, { - token : "string", - regex : /"[^"]*$/, - next : "brokenstring" + token: "string", + regex: /"[^"]*"/ }, { - token : ["text", "keyword", "text", "entity.name.section"], - regex : /(^\s*)(\bform\b)(\s+)(.*)/, - next : "form" + token: "string", + regex: /"[^"]*$/, + next: "brokenstring" }, { - token : "constant.numeric", - regex : /\b[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token: ["text", "keyword", "text", "entity.name.section"], + regex: /(^\s*)(\bform\b)(\s+)(.*)/, + next: "form" }, { - token : ["keyword", "text", "entity.name.function"], - regex : /(procedure)(\s+)(\S+)/ + token: "constant.numeric", + regex: /\b[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ }, { - token : ["entity.name.function", "text"], - regex : /(@\S+)(:|\s*\()/ + token: ["keyword", "text", "entity.name.function"], + regex: /(procedure)(\s+)([^:\s]+)/ }, { - token : ["text", "keyword", "text", "entity.name.function"], - regex : /(^\s*)(call)(\s+)(\S+)/ + token: ["entity.name.function", "text"], + regex: /(@\S+)(:|\s*\()/ }, { - token : "comment", - regex : /(^\s*#|;).*$/ + token: ["text", "keyword", "text", "entity.name.function"], + regex: /(^\s*)(call)(\s+)(\S+)/ }, { - token : "text", - regex : /\s+/ + token: "comment", + regex: /(^\s*#|;).*$/ + }, { + token: "text", + regex: /\s+/ } ], - "form" : [ + "form": [ { - token : ["keyword", "text", "constant.numeric"], - regex : /((?:optionmenu|choice)\s+)(\S+:\s+)([0-9]+)/ + token: ["keyword", "text", "constant.numeric"], + regex: /((?:optionmenu|choice)\s+)(\S+:\s+)([0-9]+)/ }, { - token : ["keyword", "constant.numeric"], - regex : /((?:option|button)\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/ + token: ["keyword", "constant.numeric"], + regex: /((?:option|button)\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/ }, { - token : ["keyword", "string"], - regex : /((?:option|button)\s+)(.*)/ + token: ["keyword", "string"], + regex: /((?:option|button)\s+)(.*)/ }, { - token : ["keyword", "text", "string"], - regex : /((?:sentence|text)\s+)(\S+\s*)(.*)/ + token: ["keyword", "text", "string"], + regex: /((?:sentence|text)\s+)(\S+\s*)(.*)/ }, { - token : ["keyword", "text", "string", "invalid.illegal"], - regex : /(word\s+)(\S+\s*)(\S+)?(\s.*)?/ + token: ["keyword", "text", "string", "invalid.illegal"], + regex: /(word\s+)(\S+\s*)(\S+)?(\s.*)?/ }, { - token : ["keyword", "text", "constant.language"], - regex : /(boolean\s+)(\S+\s*)(0|1|"?(?:yes|no)"?)/ + token: ["keyword", "text", "constant.language"], + regex: /(boolean\s+)(\S+\s*)(0|1|"?(?:yes|no)"?)/ }, { - token : ["keyword", "text", "constant.numeric"], - regex : /((?:real|natural|positive|integer)\s+)(\S+\s*)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/ + token: ["keyword", "text", "constant.numeric"], + regex: /((?:real|natural|positive|integer)\s+)(\S+\s*)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b)/ }, { - token : ["keyword", "string"], - regex : /(comment\s+)(.*)/ + token: ["keyword", "string"], + regex: /(comment\s+)(.*)/ }, { - token : "keyword", - regex : 'endform', - next : "start" + token: "keyword", + regex: 'endform', + next: "start" } ], - "for" : [ + "for": [ { - token : ["keyword", "text", "constant.numeric", "text"], - regex : /(from|to)(\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?)(\s*)/ + token: ["keyword", "text", "constant.numeric", "text"], + regex: /(from|to)(\s+)([+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?)(\s*)/ }, { - token : ["keyword", "text"], - regex : /(from|to)(\s+\S+\s*)/ + token: ["keyword", "text"], + regex: /(from|to)(\s+\S+\s*)/ }, { - token : "text", - regex : /$/, - next : "start" + token: "text", + regex: /$/, + next: "start" } ], - "brokenstring" : [ + "brokenstring": [ { - token : ["text", "string"], - regex : /(\s*\.{3})([^"]*)/ + token: ["text", "string"], + regex: /(\s*\.{3})([^"]*)/ }, { - token : "string", - regex : /"/, - next : "start" + token: "string", + regex: /"/, + next: "start" } ] }; }; - oop.inherits(PraatHighlightRules, TextHighlightRules); - exports.PraatHighlightRules = PraatHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -367,102 +317,96 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/praat",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/praat_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/praat",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/praat_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PraatHighlightRules = require("./praat_highlight_rules").PraatHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PraatHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new CStyleFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/praat"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/praat"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-prisma.js b/vendor/assets/javascripts/ace/mode-prisma.js new file mode 100644 index 00000000..5863166e --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-prisma.js @@ -0,0 +1,457 @@ +define("ace/mode/prisma_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from ../convert.json (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PrismaHighlightRules = function () { + this.$rules = { + start: [{ + include: "#triple_comment" + }, { + include: "#double_comment" + }, { + include: "#model_block_definition" + }, { + include: "#config_block_definition" + }, { + include: "#enum_block_definition" + }, { + include: "#type_definition" + }], + "#model_block_definition": [{ + token: [ + "source.prisma.embedded.source", + "storage.type.model.prisma", + "source.prisma.embedded.source", + "entity.name.type.model.prisma", + "source.prisma.embedded.source", + "punctuation.definition.tag.prisma" + ], + regex: /^(\s*)(model|type)(\s+)([A-Za-z][\w]*)(\s+)({)/, + push: [{ + token: "punctuation.definition.tag.prisma", + regex: /\s*\}/, + next: "pop" + }, { + include: "#triple_comment" + }, { + include: "#double_comment" + }, { + include: "#field_definition" + }, { + defaultToken: "source.prisma.embedded.source" + }] + }], + "#enum_block_definition": [{ + token: [ + "source.prisma.embedded.source", + "storage.type.enum.prisma", + "source.prisma.embedded.source", + "entity.name.type.enum.prisma", + "source.prisma.embedded.source", + "punctuation.definition.tag.prisma" + ], + regex: /^(\s*)(enum)(\s+)([A-Za-z][\w]*)(\s+)({)/, + push: [{ + token: "punctuation.definition.tag.prisma", + regex: /\s*\}/, + next: "pop" + }, { + include: "#triple_comment" + }, { + include: "#double_comment" + }, { + include: "#enum_value_definition" + }, { + defaultToken: "source.prisma.embedded.source" + }] + }], + "#config_block_definition": [{ + token: [ + "source.prisma.embedded.source", + "storage.type.config.prisma", + "source.prisma.embedded.source", + "entity.name.type.config.prisma", + "source.prisma.embedded.source", + "punctuation.definition.tag.prisma" + ], + regex: /^(\s*)(generator|datasource)(\s+)([A-Za-z][\w]*)(\s+)({)/, + push: [{ + token: "source.prisma.embedded.source", + regex: /\s*\}/, + next: "pop" + }, { + include: "#triple_comment" + }, { + include: "#double_comment" + }, { + include: "#assignment" + }, { + defaultToken: "source.prisma.embedded.source" + }] + }], + "#assignment": [{ + token: [ + "text", + "variable.other.assignment.prisma", + "text", + "keyword.operator.terraform", + "text" + ], + regex: /^(\s*)(\w+)(\s*)(=)(\s*)/, + push: [{ + token: "text", + regex: /$/, + next: "pop" + }, { + include: "#value" + }, { + include: "#double_comment_inline" + }] + }], + "#field_definition": [{ + token: [ + "text", + "variable.other.assignment.prisma", + "invalid.illegal.colon.prisma", + "text", + "support.type.primitive.prisma", + "keyword.operator.list_type.prisma", + "keyword.operator.optional_type.prisma", + "invalid.illegal.required_type.prisma" + ], + regex: /^(\s*)(\w+)((?:\s*:)?)(\s+)(\w+)((?:\[\])?)((?:\?)?)((?:\!)?)/ + }, { + include: "#attribute_with_arguments" + }, { + include: "#attribute" + }], + "#type_definition": [{ + token: [ + "text", + "storage.type.type.prisma", + "text", + "entity.name.type.type.prisma", + "text", + "support.type.primitive.prisma" + ], + regex: /^(\s*)(type)(\s+)(\w+)(\s*=\s*)(\w+)/ + }, { + include: "#attribute_with_arguments" + }, { + include: "#attribute" + }], + "#enum_value_definition": [{ + token: [ + "text", + "variable.other.assignment.prisma", + "text" + ], + regex: /^(\s*)(\w+)(\s*$)/ + }, { + include: "#attribute_with_arguments" + }, { + include: "#attribute" + }], + "#attribute_with_arguments": [{ + token: [ + "entity.name.function.attribute.prisma", + "punctuation.definition.tag.prisma" + ], + regex: /(@@?[\w\.]+)(\()/, + push: [{ + token: "punctuation.definition.tag.prisma", + regex: /\)/, + next: "pop" + }, { + include: "#named_argument" + }, { + include: "#value" + }, { + defaultToken: "source.prisma.attribute.with_arguments" + }] + }], + "#attribute": [{ + token: "entity.name.function.attribute.prisma", + regex: /@@?[\w\.]+/ + }], + "#array": [{ + token: "source.prisma.array", + regex: /\[/, + push: [{ + token: "source.prisma.array", + regex: /\]/, + next: "pop" + }, { + include: "#value" + }, { + defaultToken: "source.prisma.array" + }] + }], + "#value": [{ + include: "#array" + }, { + include: "#functional" + }, { + include: "#literal" + }], + "#functional": [{ + token: [ + "support.function.functional.prisma", + "punctuation.definition.tag.prisma" + ], + regex: /(\w+)(\()/, + push: [{ + token: "punctuation.definition.tag.prisma", + regex: /\)/, + next: "pop" + }, { + include: "#value" + }, { + defaultToken: "source.prisma.functional" + }] + }], + "#literal": [{ + include: "#boolean" + }, { + include: "#number" + }, { + include: "#double_quoted_string" + }, { + include: "#identifier" + }], + "#identifier": [{ + token: "support.constant.constant.prisma", + regex: /\b(?:\w)+\b/ + }], + "#map_key": [{ + token: [ + "variable.parameter.key.prisma", + "text", + "punctuation.definition.separator.key-value.prisma", + "text" + ], + regex: /(\w+)(\s*)(:)(\s*)/ + }], + "#named_argument": [{ + include: "#map_key" + }, { + include: "#value" + }], + "#triple_comment": [{ + token: "comment.prisma", + regex: /\/\/\//, + push: [{ + token: "comment.prisma", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.prisma" + }] + }], + "#double_comment": [{ + token: "comment.prisma", + regex: /\/\//, + push: [{ + token: "comment.prisma", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.prisma" + }] + }], + "#double_comment_inline": [{ + token: "comment.prisma", + regex: /\/\/[^$]*/ + }], + "#boolean": [{ + token: "constant.language.boolean.prisma", + regex: /\b(?:true|false)\b/ + }], + "#number": [{ + token: "constant.numeric.prisma", + regex: /(?:0(?:x|X)[0-9a-fA-F]*|(?:\+|-)?\b(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:[LlFfUuDdg]|UL|ul)?\b/ + }], + "#double_quoted_string": [{ + token: "string.quoted.double.start.prisma", + regex: /"/, + push: [{ + token: "string.quoted.double.end.prisma", + regex: /"/, + next: "pop" + }, { + include: "#string_interpolation" + }, { + token: "string.quoted.double.prisma", + regex: /[\w\-\/\._\\%@:\?=]+/ + }, { + defaultToken: "unnamed" + }] + }], + "#string_interpolation": [{ + token: "keyword.control.interpolation.start.prisma", + regex: /\$\{/, + push: [{ + token: "keyword.control.interpolation.end.prisma", + regex: /\s*\}/, + next: "pop" + }, { + include: "#value" + }, { + defaultToken: "source.tag.embedded.source.prisma" + }] + }] + }; + this.normalizeRules(); +}; +PrismaHighlightRules.metaData = { + name: "Prisma", + scopeName: "source.prisma" +}; +oop.inherits(PrismaHighlightRules, TextHighlightRules); +exports.PrismaHighlightRules = PrismaHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/prisma",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prisma_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PrismaHighlightRules = require("./prisma_highlight_rules").PrismaHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = PrismaHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$id = "ace/mode/prisma"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/prisma"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-prolog.js b/vendor/assets/javascripts/ace/mode-prolog.js index a85d3795..e0244d58 100644 --- a/vendor/assets/javascripts/ace/mode-prolog.js +++ b/vendor/assets/javascripts/ace/mode-prolog.js @@ -1,287 +1,222 @@ -define("ace/mode/prolog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/prolog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.github.com/stephenroller/prolog-tmbundle/master/Syntaxes/Prolog.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PrologHighlightRules = function() { - - this.$rules = { start: - [ { include: '#comment' }, - { include: '#basic_fact' }, - { include: '#rule' }, - { include: '#directive' }, - { include: '#fact' } ], - '#atom': - [ { token: 'constant.other.atom.prolog', - regex: '\\b[a-z][a-zA-Z0-9_]*\\b' }, - { token: 'constant.numeric.prolog', - regex: '-?\\d+(?:\\.\\d+)?' }, - { include: '#string' } ], - '#basic_elem': - [ { include: '#comment' }, - { include: '#statement' }, - { include: '#constants' }, - { include: '#operators' }, - { include: '#builtins' }, - { include: '#list' }, - { include: '#atom' }, - { include: '#variable' } ], - '#basic_fact': - [ { token: - [ 'entity.name.function.fact.basic.prolog', - 'punctuation.end.fact.basic.prolog' ], - regex: '([a-z]\\w*)(\\.)' } ], - '#builtins': - [ { token: 'support.function.builtin.prolog', - regex: '\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b' } ], - '#comment': - [ { token: - [ 'punctuation.definition.comment.prolog', - 'comment.line.percentage.prolog' ], - regex: '(%)(.*$)' }, - { token: 'punctuation.definition.comment.prolog', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.prolog', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.prolog' } ] } ], - '#constants': - [ { token: 'constant.language.prolog', - regex: '\\b(?:true|false|yes|no)\\b' } ], - '#directive': - [ { token: 'keyword.operator.directive.prolog', - regex: ':-', - push: - [ { token: 'meta.directive.prolog', regex: '\\.', next: 'pop' }, - { include: '#comment' }, - { include: '#statement' }, - { defaultToken: 'meta.directive.prolog' } ] } ], - '#expr': - [ { include: '#comments' }, - { token: 'meta.expression.prolog', - regex: '\\(', - push: - [ { token: 'meta.expression.prolog', regex: '\\)', next: 'pop' }, - { include: '#expr' }, - { defaultToken: 'meta.expression.prolog' } ] }, - { token: 'keyword.control.cutoff.prolog', regex: '!' }, - { token: 'punctuation.control.and.prolog', regex: ',' }, - { token: 'punctuation.control.or.prolog', regex: ';' }, - { include: '#basic_elem' } ], - '#fact': - [ { token: - [ 'entity.name.function.fact.prolog', - 'punctuation.begin.fact.parameters.prolog' ], - regex: '([a-z]\\w*)(\\()(?!.*:-)', - push: - [ { token: - [ 'punctuation.end.fact.parameters.prolog', - 'punctuation.end.fact.prolog' ], - regex: '(\\))(\\.?)', - next: 'pop' }, - { include: '#parameter' }, - { defaultToken: 'meta.fact.prolog' } ] } ], - '#list': - [ { token: 'punctuation.begin.list.prolog', - regex: '\\[(?=.*\\])', - push: - [ { token: 'punctuation.end.list.prolog', - regex: '\\]', - next: 'pop' }, - { include: '#comment' }, - { token: 'punctuation.separator.list.prolog', regex: ',' }, - { token: 'punctuation.concat.list.prolog', - regex: '\\|', - push: - [ { token: 'meta.list.concat.prolog', - regex: '(?=\\s*\\])', - next: 'pop' }, - { include: '#basic_elem' }, - { defaultToken: 'meta.list.concat.prolog' } ] }, - { include: '#basic_elem' }, - { defaultToken: 'meta.list.prolog' } ] } ], - '#operators': - [ { token: 'keyword.operator.prolog', - regex: '\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)=' } ], - '#parameter': - [ { token: 'variable.language.anonymous.prolog', - regex: '\\b_\\b' }, - { token: 'variable.parameter.prolog', - regex: '\\b[A-Z_]\\w*\\b' }, - { token: 'punctuation.separator.parameters.prolog', regex: ',' }, - { include: '#basic_elem' }, - { token: 'text', regex: '[^\\s]' } ], - '#rule': - [ { token: 'meta.rule.prolog', - regex: '(?=[a-z]\\w*.*:-)', - push: - [ { token: 'punctuation.rule.end.prolog', - regex: '\\.', - next: 'pop' }, - { token: 'meta.rule.signature.prolog', - regex: '(?=[a-z]\\w*.*:-)', - push: - [ { token: 'meta.rule.signature.prolog', - regex: '(?=:-)', - next: 'pop' }, - { token: 'entity.name.function.rule.prolog', - regex: '[a-z]\\w*(?=\\(|\\s*:-)' }, - { token: 'punctuation.rule.parameters.begin.prolog', - regex: '\\(', - push: - [ { token: 'punctuation.rule.parameters.end.prolog', - regex: '\\)', - next: 'pop' }, - { include: '#parameter' }, - { defaultToken: 'meta.rule.parameters.prolog' } ] }, - { defaultToken: 'meta.rule.signature.prolog' } ] }, - { token: 'keyword.operator.definition.prolog', +var PrologHighlightRules = function () { + this.$rules = { start: [{ include: '#comment' }, + { include: '#basic_fact' }, + { include: '#rule' }, + { include: '#directive' }, + { include: '#fact' }], + '#atom': [{ token: 'constant.other.atom.prolog', + regex: '\\b[a-z][a-zA-Z0-9_]*\\b' }, + { token: 'constant.numeric.prolog', + regex: '-?\\d+(?:\\.\\d+)?' }, + { include: '#string' }], + '#basic_elem': [{ include: '#comment' }, + { include: '#statement' }, + { include: '#constants' }, + { include: '#operators' }, + { include: '#builtins' }, + { include: '#list' }, + { include: '#atom' }, + { include: '#variable' }], + '#basic_fact': [{ token: ['entity.name.function.fact.basic.prolog', + 'punctuation.end.fact.basic.prolog'], + regex: '([a-z]\\w*)(\\.)' }], + '#builtins': [{ token: 'support.function.builtin.prolog', + regex: '\\b(?:abolish|abort|ancestors|arg|ascii|assert[az]|atom(?:ic)?|body|char|close|conc|concat|consult|define|definition|dynamic|dump|fail|file|free|free_proc|functor|getc|goal|halt|head|head|integer|length|listing|match_args|member|next_clause|nl|nonvar|nth|number|cvars|nvars|offset|op|print?|prompt|putc|quoted|ratom|read|redefine|rename|retract(?:all)?|see|seeing|seen|skip|spy|statistics|system|tab|tell|telling|term|time|told|univ|unlink_clause|unspy_predicate|var|write)\\b' }], + '#comment': [{ token: ['punctuation.definition.comment.prolog', + 'comment.line.percentage.prolog'], + regex: '(%)(.*$)' }, + { token: 'punctuation.definition.comment.prolog', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.prolog', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.prolog' }] }], + '#constants': [{ token: 'constant.language.prolog', + regex: '\\b(?:true|false|yes|no)\\b' }], + '#directive': [{ token: 'keyword.operator.directive.prolog', regex: ':-', - push: - [ { token: 'meta.rule.definition.prolog', - regex: '(?=\\.)', - next: 'pop' }, - { include: '#comment' }, - { include: '#expr' }, - { defaultToken: 'meta.rule.definition.prolog' } ] }, - { defaultToken: 'meta.rule.prolog' } ] } ], - '#statement': - [ { token: 'meta.statement.prolog', - regex: '(?=[a-z]\\w*\\()', - push: - [ { token: 'punctuation.end.statement.parameters.prolog', - regex: '\\)', - next: 'pop' }, - { include: '#builtins' }, - { include: '#atom' }, - { token: 'punctuation.begin.statement.parameters.prolog', + push: [{ token: 'meta.directive.prolog', regex: '\\.', next: 'pop' }, + { include: '#comment' }, + { include: '#statement' }, + { defaultToken: 'meta.directive.prolog' }] }], + '#expr': [{ include: '#comments' }, + { token: 'meta.expression.prolog', regex: '\\(', - push: - [ { token: 'meta.statement.parameters.prolog', - regex: '(?=\\))', - next: 'pop' }, - { token: 'punctuation.separator.statement.prolog', regex: ',' }, - { include: '#basic_elem' }, - { defaultToken: 'meta.statement.parameters.prolog' } ] }, - { defaultToken: 'meta.statement.prolog' } ] } ], - '#string': - [ { token: 'punctuation.definition.string.begin.prolog', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.prolog', + push: [{ token: 'meta.expression.prolog', regex: '\\)', next: 'pop' }, + { include: '#expr' }, + { defaultToken: 'meta.expression.prolog' }] }, + { token: 'keyword.control.cutoff.prolog', regex: '!' }, + { token: 'punctuation.control.and.prolog', regex: ',' }, + { token: 'punctuation.control.or.prolog', regex: ';' }, + { include: '#basic_elem' }], + '#fact': [{ token: ['entity.name.function.fact.prolog', + 'punctuation.begin.fact.parameters.prolog'], + regex: '([a-z]\\w*)(\\()(?!.*:-)', + push: [{ token: ['punctuation.end.fact.parameters.prolog', + 'punctuation.end.fact.prolog'], + regex: '(\\))(\\.?)', + next: 'pop' }, + { include: '#parameter' }, + { defaultToken: 'meta.fact.prolog' }] }], + '#list': [{ token: 'punctuation.begin.list.prolog', + regex: '\\[(?=.*\\])', + push: [{ token: 'punctuation.end.list.prolog', + regex: '\\]', + next: 'pop' }, + { include: '#comment' }, + { token: 'punctuation.separator.list.prolog', regex: ',' }, + { token: 'punctuation.concat.list.prolog', + regex: '\\|', + push: [{ token: 'meta.list.concat.prolog', + regex: '(?=\\s*\\])', + next: 'pop' }, + { include: '#basic_elem' }, + { defaultToken: 'meta.list.concat.prolog' }] }, + { include: '#basic_elem' }, + { defaultToken: 'meta.list.prolog' }] }], + '#operators': [{ token: 'keyword.operator.prolog', + regex: '\\\\\\+|\\bnot\\b|\\bis\\b|->|[><]|[><\\\\:=]?=|(?:=\\\\|\\\\=)=' }], + '#parameter': [{ token: 'variable.language.anonymous.prolog', + regex: '\\b_\\b' }, + { token: 'variable.parameter.prolog', + regex: '\\b[A-Z_]\\w*\\b' }, + { token: 'punctuation.separator.parameters.prolog', regex: ',' }, + { include: '#basic_elem' }, + { token: 'text', regex: '[^\\s]' }], + '#rule': [{ token: 'meta.rule.prolog', + regex: '(?=[a-z]\\w*.*:-)', + push: [{ token: 'punctuation.rule.end.prolog', + regex: '\\.', + next: 'pop' }, + { token: 'meta.rule.signature.prolog', + regex: '(?=[a-z]\\w*.*:-)', + push: [{ token: 'meta.rule.signature.prolog', + regex: '(?=:-)', + next: 'pop' }, + { token: 'entity.name.function.rule.prolog', + regex: '[a-z]\\w*(?=\\(|\\s*:-)' }, + { token: 'punctuation.rule.parameters.begin.prolog', + regex: '\\(', + push: [{ token: 'punctuation.rule.parameters.end.prolog', + regex: '\\)', + next: 'pop' }, + { include: '#parameter' }, + { defaultToken: 'meta.rule.parameters.prolog' }] }, + { defaultToken: 'meta.rule.signature.prolog' }] }, + { token: 'keyword.operator.definition.prolog', + regex: ':-', + push: [{ token: 'meta.rule.definition.prolog', + regex: '(?=\\.)', + next: 'pop' }, + { include: '#comment' }, + { include: '#expr' }, + { defaultToken: 'meta.rule.definition.prolog' }] }, + { defaultToken: 'meta.rule.prolog' }] }], + '#statement': [{ token: 'meta.statement.prolog', + regex: '(?=[a-z]\\w*\\()', + push: [{ token: 'punctuation.end.statement.parameters.prolog', + regex: '\\)', + next: 'pop' }, + { include: '#builtins' }, + { include: '#atom' }, + { token: 'punctuation.begin.statement.parameters.prolog', + regex: '\\(', + push: [{ token: 'meta.statement.parameters.prolog', + regex: '(?=\\))', + next: 'pop' }, + { token: 'punctuation.separator.statement.prolog', regex: ',' }, + { include: '#basic_elem' }, + { defaultToken: 'meta.statement.parameters.prolog' }] }, + { defaultToken: 'meta.statement.prolog' }] }], + '#string': [{ token: 'punctuation.definition.string.begin.prolog', regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.prolog', regex: '\\\\.' }, - { token: 'constant.character.escape.quote.prolog', - regex: '\'\'' }, - { defaultToken: 'string.quoted.single.prolog' } ] } ], - '#variable': - [ { token: 'variable.language.anonymous.prolog', - regex: '\\b_\\b' }, - { token: 'variable.other.prolog', - regex: '\\b[A-Z_][a-zA-Z0-9_]*\\b' } ] }; - + push: [{ token: 'punctuation.definition.string.end.prolog', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.prolog', regex: '\\\\.' }, + { token: 'constant.character.escape.quote.prolog', + regex: '\'\'' }, + { defaultToken: 'string.quoted.single.prolog' }] }], + '#variable': [{ token: 'variable.language.anonymous.prolog', + regex: '\\b_\\b' }, + { token: 'variable.other.prolog', + regex: '\\b[A-Z_][a-zA-Z0-9_]*\\b' }] }; this.normalizeRules(); }; - -PrologHighlightRules.metaData = { fileTypes: [ 'plg', 'prolog' ], - foldingStartMarker: '(%\\s*region \\w*)|([a-z]\\w*.*:- ?)', - foldingStopMarker: '(%\\s*end(\\s*region)?)|(?=\\.)', - keyEquivalent: '^~P', - name: 'Prolog', - scopeName: 'source.prolog' }; - - +PrologHighlightRules.metaData = { fileTypes: ['plg', 'prolog'], + foldingStartMarker: '(%\\s*region \\w*)|([a-z]\\w*.*:- ?)', + foldingStopMarker: '(%\\s*end(\\s*region)?)|(?=\\.)', + keyEquivalent: '^~P', + name: 'Prolog', + scopeName: 'source.prolog' }; oop.inherits(PrologHighlightRules, TextHighlightRules); - exports.PrologHighlightRules = PrologHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -294,71 +229,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/prolog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prolog_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/prolog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prolog_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PrologHighlightRules = require("./prolog_highlight_rules").PrologHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PrologHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "%"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/prolog"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/prolog"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-properties.js b/vendor/assets/javascripts/ace/mode-properties.js index 975b29ca..a7b1d8f8 100644 --- a/vendor/assets/javascripts/ace/mode-properties.js +++ b/vendor/assets/javascripts/ace/mode-properties.js @@ -1,73 +1,69 @@ -define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/properties_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PropertiesHighlightRules = function() { - +var PropertiesHighlightRules = function () { var escapeRe = /\\u[0-9a-fA-F]{4}|\\/; - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : /[!#].*$/ + token: "comment", + regex: /[!#].*$/ }, { - token : "keyword", - regex : /[=:]$/ + token: "keyword", + regex: /[=:]$/ }, { - token : "keyword", - regex : /[=:]/, - next : "value" + token: "keyword", + regex: /[=:]/, + next: "value" }, { - token : "constant.language.escape", - regex : escapeRe + token: "constant.language.escape", + regex: escapeRe }, { defaultToken: "variable" } ], - "value" : [ + "value": [ { - regex : /\\$/, - token : "string", - next : "value" + regex: /\\$/, + token: "string", + next: "value" }, { - regex : /$/, - token : "string", - next : "start" + regex: /$/, + token: "string", + next: "start" }, { - token : "constant.language.escape", - regex : escapeRe + token: "constant.language.escape", + regex: escapeRe }, { defaultToken: "string" } ] }; - }; - oop.inherits(PropertiesHighlightRules, TextHighlightRules); - exports.PropertiesHighlightRules = PropertiesHighlightRules; + }); -define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/properties",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/properties_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PropertiesHighlightRules = require("./properties_highlight_rules").PropertiesHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PropertiesHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.$id = "ace/mode/properties"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/properties"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-protobuf.js b/vendor/assets/javascripts/ace/mode-protobuf.js index ab4f2af5..bd654d74 100644 --- a/vendor/assets/javascripts/ace/mode-protobuf.js +++ b/vendor/assets/javascripts/ace/mode-protobuf.js @@ -1,370 +1,300 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var cFunctions = exports.cFunctions = "\\b(?:hypot(?:f|l)?|s(?:scanf|ystem|nprintf|ca(?:nf|lb(?:n(?:f|l)?|ln(?:f|l)?))|i(?:n(?:h(?:f|l)?|f|l)?|gn(?:al|bit))|tr(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(?:jmp|vbuf|locale|buf)|qrt(?:f|l)?|w(?:scanf|printf)|rand)|n(?:e(?:arbyint(?:f|l)?|xt(?:toward(?:f|l)?|after(?:f|l)?))|an(?:f|l)?)|c(?:s(?:in(?:h(?:f|l)?|f|l)?|qrt(?:f|l)?)|cos(?:h(?:f)?|f|l)?|imag(?:f|l)?|t(?:ime|an(?:h(?:f|l)?|f|l)?)|o(?:s(?:h(?:f|l)?|f|l)?|nj(?:f|l)?|pysign(?:f|l)?)|p(?:ow(?:f|l)?|roj(?:f|l)?)|e(?:il(?:f|l)?|xp(?:f|l)?)|l(?:o(?:ck|g(?:f|l)?)|earerr)|a(?:sin(?:h(?:f|l)?|f|l)?|cos(?:h(?:f|l)?|f|l)?|tan(?:h(?:f|l)?|f|l)?|lloc|rg(?:f|l)?|bs(?:f|l)?)|real(?:f|l)?|brt(?:f|l)?)|t(?:ime|o(?:upper|lower)|an(?:h(?:f|l)?|f|l)?|runc(?:f|l)?|gamma(?:f|l)?|mp(?:nam|file))|i(?:s(?:space|n(?:ormal|an)|cntrl|inf|digit|u(?:nordered|pper)|p(?:unct|rint)|finite|w(?:space|c(?:ntrl|type)|digit|upper|p(?:unct|rint)|lower|al(?:num|pha)|graph|xdigit|blank)|l(?:ower|ess(?:equal|greater)?)|al(?:num|pha)|gr(?:eater(?:equal)?|aph)|xdigit|blank)|logb(?:f|l)?|max(?:div|abs))|di(?:v|fftime)|_Exit|unget(?:c|wc)|p(?:ow(?:f|l)?|ut(?:s|c(?:har)?|wc(?:har)?)|error|rintf)|e(?:rf(?:c(?:f|l)?|f|l)?|x(?:it|p(?:2(?:f|l)?|f|l|m1(?:f|l)?)?))|v(?:s(?:scanf|nprintf|canf|printf|w(?:scanf|printf))|printf|f(?:scanf|printf|w(?:scanf|printf))|w(?:scanf|printf)|a_(?:start|copy|end|arg))|qsort|f(?:s(?:canf|e(?:tpos|ek))|close|tell|open|dim(?:f|l)?|p(?:classify|ut(?:s|c|w(?:s|c))|rintf)|e(?:holdexcept|set(?:e(?:nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(?:aiseexcept|ror)|get(?:e(?:nv|xceptflag)|round))|flush|w(?:scanf|ide|printf|rite)|loor(?:f|l)?|abs(?:f|l)?|get(?:s|c|pos|w(?:s|c))|re(?:open|e|ad|xp(?:f|l)?)|m(?:in(?:f|l)?|od(?:f|l)?|a(?:f|l|x(?:f|l)?)?))|l(?:d(?:iv|exp(?:f|l)?)|o(?:ngjmp|cal(?:time|econv)|g(?:1(?:p(?:f|l)?|0(?:f|l)?)|2(?:f|l)?|f|l|b(?:f|l)?)?)|abs|l(?:div|abs|r(?:int(?:f|l)?|ound(?:f|l)?))|r(?:int(?:f|l)?|ound(?:f|l)?)|gamma(?:f|l)?)|w(?:scanf|c(?:s(?:s(?:tr|pn)|nc(?:py|at|mp)|c(?:spn|hr|oll|py|at|mp)|to(?:imax|d|u(?:l(?:l)?|max)|k|f|l(?:d|l)?|mbs)|pbrk|ftime|len|r(?:chr|tombs)|xfrm)|to(?:b|mb)|rtomb)|printf|mem(?:set|c(?:hr|py|mp)|move))|a(?:s(?:sert|ctime|in(?:h(?:f|l)?|f|l)?)|cos(?:h(?:f|l)?|f|l)?|t(?:o(?:i|f|l(?:l)?)|exit|an(?:h(?:f|l)?|2(?:f|l)?|f|l)?)|b(?:s|ort))|g(?:et(?:s|c(?:har)?|env|wc(?:har)?)|mtime)|r(?:int(?:f|l)?|ound(?:f|l)?|e(?:name|alloc|wind|m(?:ove|quo(?:f|l)?|ainder(?:f|l)?))|a(?:nd|ise))|b(?:search|towc)|m(?:odf(?:f|l)?|em(?:set|c(?:hr|py|mp)|move)|ktime|alloc|b(?:s(?:init|towcs|rtowcs)|towc|len|r(?:towc|len))))\\b"; - -var c_cppHighlightRules = function() { - - var keywordControls = ( - "break|case|continue|default|do|else|for|goto|if|_Pragma|" + - "return|switch|while|catch|operator|try|throw|using" - ); - - var storageType = ( - "asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + - "_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void|" + - "class|wchar_t|template|char16_t|char32_t" - ); - - var storageModifiers = ( - "const|extern|register|restrict|static|volatile|inline|private|" + +var cFunctions = exports.cFunctions = "hypot|hypotf|hypotl|sscanf|system|snprintf|scanf|scalbn|scalbnf|scalbnl|scalbln|scalblnf|scalblnl|sin|sinh|sinhf|sinhl|sinf|sinl|signal|signbit|strstr|strspn|strncpy|strncat|strncmp|strcspn|strchr|strcoll|strcpy|strcat|strcmp|strtoimax|strtod|strtoul|strtoull|strtoumax|strtok|strtof|strtol|strtold|strtoll|strerror|strpbrk|strftime|strlen|strrchr|strxfrm|sprintf|setjmp|setvbuf|setlocale|setbuf|sqrt|sqrtf|sqrtl|swscanf|swprintf|srand|nearbyint|nearbyintf|nearbyintl|nexttoward|nexttowardf|nexttowardl|nextafter|nextafterf|nextafterl|nan|nanf|nanl|csin|csinh|csinhf|csinhl|csinf|csinl|csqrt|csqrtf|csqrtl|ccos|ccosh|ccoshf|ccosf|ccosl|cimag|cimagf|cimagl|ctime|ctan|ctanh|ctanhf|ctanhl|ctanf|ctanl|cos|cosh|coshf|coshl|cosf|cosl|conj|conjf|conjl|copysign|copysignf|copysignl|cpow|cpowf|cpowl|cproj|cprojf|cprojl|ceil|ceilf|ceill|cexp|cexpf|cexpl|clock|clog|clogf|clogl|clearerr|casin|casinh|casinhf|casinhl|casinf|casinl|cacos|cacosh|cacoshf|cacoshl|cacosf|cacosl|catan|catanh|catanhf|catanhl|catanf|catanl|calloc|carg|cargf|cargl|cabs|cabsf|cabsl|creal|crealf|creall|cbrt|cbrtf|cbrtl|time|toupper|tolower|tan|tanh|tanhf|tanhl|tanf|tanl|trunc|truncf|truncl|tgamma|tgammaf|tgammal|tmpnam|tmpfile|isspace|isnormal|isnan|iscntrl|isinf|isdigit|isunordered|isupper|ispunct|isprint|isfinite|iswspace|iswcntrl|iswctype|iswdigit|iswupper|iswpunct|iswprint|iswlower|iswalnum|iswalpha|iswgraph|iswxdigit|iswblank|islower|isless|islessequal|islessgreater|isalnum|isalpha|isgreater|isgreaterequal|isgraph|isxdigit|isblank|ilogb|ilogbf|ilogbl|imaxdiv|imaxabs|div|difftime|_Exit|ungetc|ungetwc|pow|powf|powl|puts|putc|putchar|putwc|putwchar|perror|printf|erf|erfc|erfcf|erfcl|erff|erfl|exit|exp|exp2|exp2f|exp2l|expf|expl|expm1|expm1f|expm1l|vsscanf|vsnprintf|vscanf|vsprintf|vswscanf|vswprintf|vprintf|vfscanf|vfprintf|vfwscanf|vfwprintf|vwscanf|vwprintf|va_start|va_copy|va_end|va_arg|qsort|fscanf|fsetpos|fseek|fclose|ftell|fopen|fdim|fdimf|fdiml|fpclassify|fputs|fputc|fputws|fputwc|fprintf|feholdexcept|fesetenv|fesetexceptflag|fesetround|feclearexcept|fetestexcept|feof|feupdateenv|feraiseexcept|ferror|fegetenv|fegetexceptflag|fegetround|fflush|fwscanf|fwide|fwprintf|fwrite|floor|floorf|floorl|fabs|fabsf|fabsl|fgets|fgetc|fgetpos|fgetws|fgetwc|freopen|free|fread|frexp|frexpf|frexpl|fmin|fminf|fminl|fmod|fmodf|fmodl|fma|fmaf|fmal|fmax|fmaxf|fmaxl|ldiv|ldexp|ldexpf|ldexpl|longjmp|localtime|localeconv|log|log1p|log1pf|log1pl|log10|log10f|log10l|log2|log2f|log2l|logf|logl|logb|logbf|logbl|labs|lldiv|llabs|llrint|llrintf|llrintl|llround|llroundf|llroundl|lrint|lrintf|lrintl|lround|lroundf|lroundl|lgamma|lgammaf|lgammal|wscanf|wcsstr|wcsspn|wcsncpy|wcsncat|wcsncmp|wcscspn|wcschr|wcscoll|wcscpy|wcscat|wcscmp|wcstoimax|wcstod|wcstoul|wcstoull|wcstoumax|wcstok|wcstof|wcstol|wcstold|wcstoll|wcstombs|wcspbrk|wcsftime|wcslen|wcsrchr|wcsrtombs|wcsxfrm|wctob|wctomb|wcrtomb|wprintf|wmemset|wmemchr|wmemcpy|wmemcmp|wmemmove|assert|asctime|asin|asinh|asinhf|asinhl|asinf|asinl|acos|acosh|acoshf|acoshl|acosf|acosl|atoi|atof|atol|atoll|atexit|atan|atanh|atanhf|atanhl|atan2|atan2f|atan2l|atanf|atanl|abs|abort|gets|getc|getchar|getenv|getwc|getwchar|gmtime|rint|rintf|rintl|round|roundf|roundl|rename|realloc|rewind|remove|remquo|remquof|remquol|remainder|remainderf|remainderl|rand|raise|bsearch|btowc|modf|modff|modfl|memset|memchr|memcpy|memcmp|memmove|mktime|malloc|mbsinit|mbstowcs|mbsrtowcs|mbtowc|mblen|mbrtowc|mbrlen"; +var c_cppHighlightRules = function (extraKeywords) { + var keywordControls = ("break|case|continue|default|do|else|for|goto|if|_Pragma|" + + "return|switch|while|catch|operator|try|throw|using"); + var storageType = ("asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|" + + "_Imaginary|int|int8_t|int16_t|int32_t|int64_t|long|short|signed|size_t|struct|typedef|uint8_t|uint16_t|uint32_t|uint64_t|union|unsigned|void|" + + "class|wchar_t|template|char16_t|char32_t"); + var storageModifiers = ("const|extern|register|restrict|static|volatile|inline|private|" + "protected|public|friend|explicit|virtual|export|mutable|typename|" + - "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local" - ); - - var keywordOperators = ( - "and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq" + - "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace" - ); - - var builtinConstants = ( - "NULL|true|false|TRUE|FALSE|nullptr" - ); - - var keywordMapper = this.$keywords = this.createKeywordMapper({ - "keyword.control" : keywordControls, - "storage.type" : storageType, - "storage.modifier" : storageModifiers, - "keyword.operator" : keywordOperators, + "constexpr|new|delete|alignas|alignof|decltype|noexcept|thread_local"); + var keywordOperators = ("and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|" + + "const_cast|dynamic_cast|reinterpret_cast|static_cast|sizeof|namespace"); + var builtinConstants = ("NULL|true|false|TRUE|FALSE|nullptr"); + var keywordMapper = this.$keywords = this.createKeywordMapper(Object.assign({ + "keyword.control": keywordControls, + "storage.type": storageType, + "storage.modifier": storageModifiers, + "keyword.operator": keywordOperators, "variable.language": "this", - "constant.language": builtinConstants - }, "identifier"); - + "constant.language": builtinConstants, + "support.function.C99.c": cFunctions + }, extraKeywords), "identifier"); var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; var formatRe = "%" - + /(\d+\$)?/.source // field (argument #) - + /[#0\- +']*/.source // flags - + /[,;:_]?/.source // separator character (AltiVec) - + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width - + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision - + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier - + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type - - this.$rules = { - "start" : [ + + /(\d+\$)?/.source // field (argument #) + + /[#0\- +']*/.source // flags + + /[,;:_]?/.source // separator character (AltiVec) + + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type + this.$rules = { + "start": [ { - token : "comment", - regex : "//$", - next : "start" + token: "comment", + regex: "//$", + next: "start" }, { - token : "comment", - regex : "//", - next : "singleLineComment" + token: "comment", + regex: "//", + next: "singleLineComment" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // character - regex : "'(?:" + escapeRe + "|.)?'" + token: "string", // character + regex: "'(?:" + escapeRe + "|.)?'" }, { - token : "string.start", - regex : '"', + token: "string.start", + regex: '"', stateName: "qqstring", next: [ { token: "string", regex: /\\\s*$/, next: "qqstring" }, { token: "constant.language.escape", regex: escapeRe }, { token: "constant.language.escape", regex: formatRe }, { token: "string.end", regex: '"|$', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "string.start", - regex : 'R"\\(', + token: "string.start", + regex: 'R"\\(', stateName: "rawString", next: [ { token: "string.end", regex: '\\)"', next: "start" }, - { defaultToken: "string"} + { defaultToken: "string" } ] }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" }, { - token : "keyword", // pre-compiler directives - regex : "#\\s*(?:include|import|pragma|line|define|undef)\\b", - next : "directive" + token: "keyword", // pre-compiler directives + regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b", + next: "directive" }, { - token : "keyword", // special case pre-compiler directive - regex : "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" + token: "keyword", // special case pre-compiler directive + regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" }, { - token : "support.function.C99.c", - regex : cFunctions + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*" + token: "keyword.operator", + regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ }, { - token : "keyword.operator", - regex : /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "singleLineComment" : [ - { - token : "comment", - regex : /\\$/, - next : "singleLineComment" - }, { - token : "comment", - regex : /$/, - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { defaultToken: "comment" } ], - "directive" : [ + "singleLineComment": [ { - token : "constant.other.multiline", - regex : /\\/ + token: "comment", + regex: /\\$/, + next: "singleLineComment" + }, { + token: "comment", + regex: /$/, + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ }, { - token : "constant.other.multiline", - regex : /.*\\/ + token: "constant.other.multiline", + regex: /.*\\/ }, { - token : "constant.other", - regex : "\\s*<.+?>", - next : "start" + token: "constant.other", + regex: "\\s*<.+?>", + next: "start" }, { - token : "constant.other", // single line - regex : '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', - next : "start" - }, - { - token : "constant.other", // single line - regex : "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", - next : "start" + token: "constant.other", // single line + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next: "start" }, { - token : "constant.other", - regex : /[^\\\/]+/, - next : "start" + token: "constant.other", // single line + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; - oop.inherits(c_cppHighlightRules, TextHighlightRules); - exports.c_cppHighlightRules = c_cppHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -377,94 +307,82 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/c_cpp",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/c_cpp_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var c_cppHighlightRules = require("./c_cpp_highlight_rules").c_cppHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = c_cppHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); - + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start") { return ""; } @@ -476,110 +394,105 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/c_cpp"; + this.snippetFileId = "ace/snippets/c_cpp"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/protobuf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { - "use strict"; - - var oop = require("../lib/oop"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - - var ProtobufHighlightRules = function() { - - var builtinTypes = "double|float|int32|int64|uint32|uint64|sint32|" + - "sint64|fixed32|fixed64|sfixed32|sfixed64|bool|" + - "string|bytes"; - var keywordDeclaration = "message|required|optional|repeated|package|" + - "import|option|enum"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.declaration.protobuf": keywordDeclaration, - "support.type": builtinTypes - }, "identifier"); - - this.$rules = { - "start": [{ - token: "comment", - regex: /\/\/.*$/ - }, { - token: "comment", - regex: /\/\*/, - next: "comment" - }, { - token: "constant", - regex: "<[^>]+>" - }, { - regex: "=", - token: "keyword.operator.assignment.protobuf" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : '[\'](?:(?:\\\\.)|(?:[^\'\\\\]))*?[\']' - }, { - token: "constant.numeric", // hex - regex: "0[xX][0-9a-fA-F]+\\b" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }], - "comment": [{ - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - }] - }; - - this.normalizeRules(); +define("ace/mode/protobuf_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var ProtobufHighlightRules = function () { + var builtinTypes = "double|float|int32|int64|uint32|uint64|sint32|" + + "sint64|fixed32|fixed64|sfixed32|sfixed64|bool|" + + "string|bytes"; + var keywordDeclaration = "message|required|optional|repeated|package|" + + "import|option|enum"; + var keywordMapper = this.createKeywordMapper({ + "keyword.declaration.protobuf": keywordDeclaration, + "support.type": builtinTypes + }, "identifier"); + this.$rules = { + "start": [{ + token: "comment", + regex: /\/\/.*$/ + }, { + token: "comment", + regex: /\/\*/, + next: "comment" + }, { + token: "constant", + regex: "<[^>]+>" + }, { + regex: "=", + token: "keyword.operator.assignment.protobuf" + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: '[\'](?:(?:\\\\.)|(?:[^\'\\\\]))*?[\']' + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }], + "comment": [{ + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + }] }; + this.normalizeRules(); +}; +oop.inherits(ProtobufHighlightRules, TextHighlightRules); +exports.ProtobufHighlightRules = ProtobufHighlightRules; - oop.inherits(ProtobufHighlightRules, TextHighlightRules); - - exports.ProtobufHighlightRules = ProtobufHighlightRules; }); -define("ace/mode/protobuf",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/protobuf_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/protobuf",["require","exports","module","ace/lib/oop","ace/mode/c_cpp","ace/mode/protobuf_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var CMode = require("./c_cpp").Mode; var ProtobufHighlightRules = require("./protobuf_highlight_rules").ProtobufHighlightRules; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { CMode.call(this); this.foldingRules = new CStyleFoldMode(); this.HighlightRules = ProtobufHighlightRules; }; oop.inherits(Mode, CMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/protobuf"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/protobuf"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-prql.js b/vendor/assets/javascripts/ace/mode-prql.js new file mode 100644 index 00000000..f86c0d1c --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-prql.js @@ -0,0 +1,323 @@ +define("ace/mode/prql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){// https://prql-lang.org/ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PrqlHighlightRules = function () { + var builtinFunctions = "min|max|sum|average|stddev|every|any|concat_array|count|" + + "lag|lead|first|last|rank|rank_dense|row_number|" + + "round|as|in|" + + "tuple_every|tuple_map|tuple_zip|_eq|_is_null|" + + "from_text|" + + "lower|upper|" + + "read_parquet|read_csv"; + var builtinTypes = [ + "bool", + "int", + "int8", + "int16", + "int32", + "int64", + "int128", + "float", + "text", + "timestamp", + "set" + ].join("|"); + var keywordMapper = this.createKeywordMapper({ + "constant.language": "null", + "constant.language.boolean": "true|false", + "keyword": "let|into|case|prql|type|module|internal", + "storage.type": "let|func", + "support.function": builtinFunctions, + "support.type": builtinTypes, + "variable.language": "date|math" + }, "identifier"); + var escapeRe = /\\(\d+|['"\\&bfnrt]|u\{[0-9a-fA-F]{1,6}\}|x[0-9a-fA-F]{2})/; + var identifierRe = /[A-Za-z_][a-z_A-Z0-9]/.source; + var numRe = /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/.source; + var bidi = "[\\u202A\\u202B\\u202D\\u202E\\u2066\\u2067\\u2068\\u202C\\u2069]"; + this.$rules = { + start: [ + { + token: "string.start", + regex: 's?"', + next: "string" + }, { + token: "string.start", + regex: 'f"', + next: "fstring" + }, { + token: "string.start", + regex: 'r"', + next: "rstring" + }, { + token: "string.single", + start: "'", + end: "'" + }, { + token: "string.character", + regex: "'(?:" + escapeRe.source + "|.)'?" + }, { + token: "constant.language", + regex: "^" + identifierRe + "*" + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(years|months|weeks|days|hours|minutes|seconds|milliseconds|microseconds)" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: numRe + }, { + token: "comment.block.documentation", + regex: "#!.*" + }, { + token: "comment.line.number-sign", + regex: "#.*" + }, { + token: "keyword.operator", + regex: /\|\s*/, + next: "pipe" + }, { + token: "keyword.operator", + regex: /->|=>|==|!=|>=|<=|~=|&&|\|\||\?\?|\/\/|@/ + }, { + token: "invalid.illegal", + regex: bidi + }, { + token: "punctuation.operator", + regex: /[,`]/ + }, { + token: keywordMapper, + regex: "[\\w\\xff-\\u218e\\u2455-\\uffff]+\\b" + }, { + token: "paren.lparen", + regex: /[\[({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + } + ], + pipe: [{ + token: "constant.language", + regex: identifierRe + "*", + next: "pop" + }, { + token: "error", + regex: "", + next: "pop" + }], + string: [{ + token: "constant.character.escape", + regex: escapeRe + }, { + token: "text", + regex: /\\(\s|$)/, + next: "stringGap" + }, { + token: "string.end", + regex: '"', + next: "start" + }, { + token: "invalid.illegal", + regex: bidi + }, { + defaultToken: "string.double" + }], + stringGap: [{ + token: "text", + regex: /\\/, + next: "string" + }, { + token: "error", + regex: "", + next: "start" + }], + fstring: [{ + token: "constant.character.escape", + regex: escapeRe + }, { + token: "string.end", + regex: '"', + next: "start" + }, { + token: "invalid.illegal", + regex: bidi + }, { + token: "paren.lparen", + regex: "{", + push: "fstringParenRules" + }, { + token: "invalid.illegal", + regex: bidi + }, { + defaultToken: "string" + }], + fstringParenRules: [{ + token: "constant.language", + regex: "^" + identifierRe + "*" + }, { + token: "paren.rparen", + regex: "}", + next: "pop" + }], + rstring: [{ + token: "string.end", + regex: '"', + next: "start" + }, { + token: "invalid.illegal", + regex: bidi + }, { + defaultToken: "string" + }] + }; + this.normalizeRules(); +}; +oop.inherits(PrqlHighlightRules, TextHighlightRules); +exports.PrqlHighlightRules = PrqlHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/prql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/prql_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HighlightRules = require("./prql_highlight_rules").PrqlHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = HighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$id = "ace/mode/prql"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/prql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-puppet.js b/vendor/assets/javascripts/ace/mode-puppet.js new file mode 100644 index 00000000..26168cb1 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-puppet.js @@ -0,0 +1,316 @@ +define("ace/mode/puppet_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var PuppetHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ['keyword.type.puppet', 'constant.class.puppet', 'keyword.inherits.puppet', 'constant.class.puppet'], + regex: "^\\s*(class)(\\s+(?:[-_A-Za-z0-9\".]+::)*[-_A-Za-z0-9\".]+\\s*)(?:(inherits\\s*)(\\s+(?:[-_A-Za-z0-9\".]+::)*[-_A-Za-z0-9\".]+\\s*))?" + }, + { + token: ['storage.function.puppet', 'name.function.puppet', 'punctuation.lpar'], + regex: "(^\\s*define)(\\s+[a-zA-Z0-9_:]+\\s*)(\\()", + push: [{ + token: 'punctuation.rpar.puppet', + regex: "\\)", + next: 'pop' + }, + { include: "constants" }, + { include: "variable" }, + { include: "strings" }, + { include: "operators" }, + { defaultToken: 'string' }] + }, + { + token: ["language.support.class", "keyword.operator"], + regex: "\\b([a-zA-Z_]+)(\\s+=>)" + }, + { + token: ["exported.resource.puppet", "keyword.name.resource.puppet", "paren.lparen"], + regex: "(\\@\\@)?(\\s*[a-zA-Z_]*)(\\s*\\{)" + }, + { + token: "qualified.variable.puppet", + regex: "(\\$([a-z][a-z0-9_]*)?(::[a-z][a-z0-9_]*)*::[a-z0-9_][a-zA-Z0-9_]*)" + }, + { + token: "singleline.comment.puppet", + regex: '#(.)*$' + }, + { + token: "multiline.comment.begin.puppet", + regex: '^\\s*\\/\\*', + push: "blockComment" + }, + { + token: "keyword.control.puppet", + regex: "\\b(case|if|unless|else|elsif|in|default:|and|or)\\s+(?!::)" + }, + { + token: "keyword.control.puppet", + regex: "\\b(import|default|inherits|include|require|contain|node|application|consumes|environment|site|function|produces)\\b" + }, + { + token: "support.function.puppet", + regex: "\\b(lest|str2bool|escape|gsub|Timestamp|Timespan|with|alert|crit|debug|notice|sprintf|split|step|strftime|slice|shellquote|type|sha1|defined|scanf|reverse_each|regsubst|return|emerg|reduce|err|failed|fail|versioncmp|file|generate|then|info|realize|search|tag|tagged|template|epp|warning|hiera_include|each|assert_type|binary_file|create_resources|dig|digest|filter|lookup|find_file|fqdn_rand|hiera_array|hiera_hash|inline_epp|inline_template|map|match|md5|new|next)\\b" + }, + { + token: "constant.types.puppet", + regex: "\\b(String|File|Package|Service|Class|Integer|Array|Catalogentry|Variant|Boolean|Undef|Number|Hash|Float|Numeric|NotUndef|Callable|Optional|Any|Regexp|Sensitive|Sensitive.new|Type|Resource|Default|Enum|Scalar|Collection|Data|Pattern|Tuple|Struct)\\b" + }, + { + token: "paren.lparen", + regex: "[[({]" + }, + { + token: "paren.rparen", + regex: "[\\])}]" + }, + { include: "variable" }, + { include: "constants" }, + { include: "strings" }, + { include: "operators" }, + { + token: "regexp.begin.string.puppet", + regex: "\\s*(\\/(\\S)+)\\/" + } + ], + blockComment: [{ + regex: "\\*\\/", + token: "multiline.comment.end.puppet", + next: "pop" + }, { + defaultToken: "comment" + }], + "constants": [ + { + token: "constant.language.puppet", + regex: "\\b(false|true|running|stopped|installed|purged|latest|file|directory|held|undef|present|absent|link|mounted|unmounted)\\b" + } + ], + "variable": [ + { + token: "variable.puppet", + regex: "(\\$[a-z0-9_\{][a-zA-Z0-9_]*)" + } + ], + "strings": [ + { + token: "punctuation.quote.puppet", + regex: "'", + push: [{ + token: 'punctuation.quote.puppet', + regex: "'", + next: 'pop' + }, + { include: "escaped_chars" }, + { defaultToken: 'string' }] + }, + { + token: "punctuation.quote.puppet", + regex: '"', + push: [{ + token: 'punctuation.quote.puppet', + regex: '"', + next: 'pop' + }, + { include: "escaped_chars" }, + { include: "variable" }, + { defaultToken: 'string' }] + } + ], + "escaped_chars": [ + { + token: "constant.escaped_char.puppet", + regex: "\\\\." + } + ], + "operators": [ + { + token: "keyword.operator", + regex: "\\+\\.|\\-\\.|\\*\\.|\\/\\.|#|;;|\\+|\\-|\\*|\\*\\*\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|<-|=|::|," + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(PuppetHighlightRules, TextHighlightRules); +exports.PuppetHighlightRules = PuppetHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/puppet",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/puppet_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PuppetHighlightRules = require("./puppet_highlight_rules").PuppetHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = PuppetHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/puppet"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/puppet"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-python.js b/vendor/assets/javascripts/ace/mode-python.js index ec709a73..27b5b6e4 100644 --- a/vendor/assets/javascripts/ace/mode-python.js +++ b/vendor/assets/javascripts/ace/mode-python.js @@ -1,173 +1,392 @@ -define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/python_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * TODO: python delimiters + */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var PythonHighlightRules = function() { - - var keywords = ( - "and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + +var PythonHighlightRules = function () { + var keywords = ("and|as|assert|break|class|continue|def|del|elif|else|except|exec|" + "finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|" + - "raise|return|try|while|with|yield|async|await" - ); - - var builtinConstants = ( - "True|False|None|NotImplemented|Ellipsis|__debug__" - ); - - var builtinFunctions = ( - "abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + + "raise|return|try|while|with|yield|async|await|nonlocal"); + var builtinConstants = ("True|False|None|NotImplemented|Ellipsis|__debug__"); + var builtinFunctions = ("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|" + "eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|" + - "binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|" + + "binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|" + "float|list|raw_input|unichr|callable|format|locals|reduce|unicode|" + "chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|" + "cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|" + - "__import__|complex|hash|min|set|apply|delattr|help|next|setattr|" + - "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern" - ); + "__import__|complex|hash|min|apply|delattr|help|next|setattr|set|" + + "buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|" + + "ascii|breakpoint|bytes"); var keywordMapper = this.createKeywordMapper({ "invalid.deprecated": "debugger", "support.function": builtinFunctions, + "variable.language": "self|cls", "constant.language": builtinConstants, "keyword": keywords }, "identifier"); - - var strPre = "(?:r|u|ur|R|U|UR|Ur|uR)?"; - + var strPre = "[uU]?"; + var strRawPre = "[rR]"; + var strFormatPre = "[fF]"; + var strRawFormatPre = "(?:[rR][fF]|[fF][rR])"; var decimalInteger = "(?:(?:[1-9]\\d*)|(?:0))"; var octInteger = "(?:0[oO]?[0-7]+)"; var hexInteger = "(?:0[xX][\\dA-Fa-f]+)"; var binInteger = "(?:0[bB][01]+)"; var integer = "(?:" + decimalInteger + "|" + octInteger + "|" + hexInteger + "|" + binInteger + ")"; - var exponent = "(?:[eE][+-]?\\d+)"; var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + exponent + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; - - var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; - + var stringEscape = "\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\abfnrtv'\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})"; this.$rules = { - "start" : [ { - token : "comment", - regex : "#.*$" - }, { - token : "string", // multi line """ string start - regex : strPre + '"{3}', - next : "qqstring3" - }, { - token : "string", // " string - regex : strPre + '"(?=.)', - next : "qqstring" - }, { - token : "string", // multi line ''' string start - regex : strPre + "'{3}", - next : "qstring3" - }, { - token : "string", // ' string - regex : strPre + "'(?=.)", - next : "qstring" - }, { - token : "constant.numeric", // imaginary - regex : "(?:" + floatNumber + "|\\d+)[jJ]\\b" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // long integer - regex : integer + "[lL]\\b" - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]\\)\\}]" - }, { - token : "text", - regex : "\\s+" - } ], - "qqstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line """ string end - regex : '"{3}', - next : "start" - }, { - defaultToken : "string" - } ], - "qstring3" : [ { - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", // multi line ''' string end - regex : "'{3}", - next : "start" - }, { - defaultToken : "string" - } ], - "qqstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "start" - }, { - defaultToken: "string" - }], - "qstring" : [{ - token : "constant.language.escape", - regex : stringEscape - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "start" - }, { - defaultToken: "string" - }] + "start": [{ + token: "comment", + regex: "#.*$" + }, { + token: "string", // multi line """ string start + regex: strPre + '"{3}', + next: "qqstring3" + }, { + token: "string", // " string + regex: strPre + '"(?=.)', + next: "qqstring" + }, { + token: "string", // multi line ''' string start + regex: strPre + "'{3}", + next: "qstring3" + }, { + token: "string", // ' string + regex: strPre + "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: strRawPre + '"{3}', + next: "rawqqstring3" + }, { + token: "string", + regex: strRawPre + '"(?=.)', + next: "rawqqstring" + }, { + token: "string", + regex: strRawPre + "'{3}", + next: "rawqstring3" + }, { + token: "string", + regex: strRawPre + "'(?=.)", + next: "rawqstring" + }, { + token: "string", + regex: strFormatPre + '"{3}', + next: "fqqstring3" + }, { + token: "string", + regex: strFormatPre + '"(?=.)', + next: "fqqstring" + }, { + token: "string", + regex: strFormatPre + "'{3}", + next: "fqstring3" + }, { + token: "string", + regex: strFormatPre + "'(?=.)", + next: "fqstring" + }, { + token: "string", + regex: strRawFormatPre + '"{3}', + next: "rfqqstring3" + }, { + token: "string", + regex: strRawFormatPre + '"(?=.)', + next: "rfqqstring" + }, { + token: "string", + regex: strRawFormatPre + "'{3}", + next: "rfqstring3" + }, { + token: "string", + regex: strRawFormatPre + "'(?=.)", + next: "rfqstring" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|@|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "punctuation", + regex: ",|:|;|\\->|\\+=|\\-=|\\*=|\\/=|\\/\\/=|%=|@=|&=|\\|=|^=|>>=|<<=|\\*\\*=" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]\\)\\}]" + }, { + token: ["keyword", "text", "entity.name.function"], + regex: "(def|class)(\\s+)([\\u00BF-\\u1FFF\\u2C00-\\uD7FF\\w]+)" + }, { + token: "text", + regex: "\\s+" + }, { + include: "constants" + }], + "qqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "qstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "qqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "qstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "qstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring3": [{ + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring3": [{ + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + defaultToken: "string" + }], + "rawqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + }], + "rawqstring": [{ + token: "string", + regex: "\\\\$", + next: "rawqstring" + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + defaultToken: "string" + }], + "fqqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring3": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "\\\\$", + next: "fqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstring": [{ + token: "constant.language.escape", + regex: stringEscape + }, { + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring3": [{ + token: "string", // multi line """ string end + regex: '"{3}', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring3": [{ + token: "string", // multi line ''' string end + regex: "'{3}", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqqstring": [{ + token: "string", + regex: "\\\\$", + next: "rfqqstring" + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "rfqstring": [{ + token: "string", + regex: "'|$", + next: "start" + }, { + token: "paren.lparen", + regex: "{", + push: "fqstringParRules" + }, { + defaultToken: "string" + }], + "fqstringParRules": [{ + token: "paren.lparen", + regex: "[\\[\\(]" + }, { + token: "paren.rparen", + regex: "[\\]\\)]" + }, { + token: "string", + regex: "\\s+" + }, { + token: "string", + regex: "'[^']*'" + }, { + token: "string", + regex: '"[^"]*"' + }, { + token: "function.support", + regex: "(!s|!r|!a)" + }, { + include: "constants" + }, { + token: 'paren.rparen', + regex: "}", + next: 'pop' + }, { + token: 'paren.lparen', + regex: "{", + push: "fqstringParRules" + }], + "constants": [{ + token: "constant.numeric", // imaginary + regex: "(?:" + floatNumber + "|\\d+)[jJ]\\b" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // long integer + regex: integer + "[lL]\\b" + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: ["punctuation", "function.support"], // method + regex: "(\\.)([a-zA-Z_]+)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }] }; + this.normalizeRules(); }; - oop.inherits(PythonHighlightRules, TextHighlightRules); - exports.PythonHighlightRules = PythonHighlightRules; + }); -define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(markers) { +var FoldMode = exports.FoldMode = function (markers) { this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { var line = session.getLine(row); var match = line.match(this.foldingStartMarker); if (match) { @@ -178,51 +397,43 @@ oop.inherits(FoldMode, BaseFoldMode); return this.indentationBlock(session, row); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/python",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/python_highlight_rules","ace/mode/folding/pythonic","ace/range"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PythonHighlightRules = require("./python_highlight_rules").PythonHighlightRules; var PythonFoldMode = require("./folding/pythonic").FoldMode; var Range = require("../range").Range; - -var Mode = function() { +var Mode = function () { this.HighlightRules = PythonHighlightRules; this.foldingRules = new PythonFoldMode("\\:"); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { + this.$pairQuotesAfter = { + "'": /[ruf]/i, + '"': /[ruf]/i + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } } - return indent; }; - var outdents = { "pass": 1, "return": 1, @@ -230,36 +441,36 @@ oop.inherits(Mode, TextMode); "break": 1, "continue": 1 }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { if (input !== "\r\n" && input !== "\r" && input !== "\n") return false; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens) return false; do { var last = tokens.pop(); } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - if (!last) return false; - return (last.type == "keyword" && outdents[last.value]); }; - - this.autoOutdent = function(state, doc, row) { - + this.autoOutdent = function (state, doc, row) { row += 1; var indent = this.$getIndent(doc.getLine(row)); var tab = doc.getTabString(); if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); }; - this.$id = "ace/mode/python"; + this.snippetFileId = "ace/snippets/python"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/python"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-qml.js b/vendor/assets/javascripts/ace/mode-qml.js new file mode 100644 index 00000000..150bbb29 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-qml.js @@ -0,0 +1,346 @@ +define("ace/mode/qml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var QmlHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|" + + "readonly|string|int|bool|date|color|url|real|double|var|variant|" + + "height|width|anchors|parent|" + + "Abstract3DSeries|AbstractActionInput|AbstractAnimation|AbstractAxis|AbstractAxis3D|AbstractAxisInput|" + + "AbstractBarSeries|AbstractButton|AbstractClipAnimator|AbstractClipBlendNode|AbstractDataProxy|AbstractGraph3D|" + + "AbstractInputHandler3D|AbstractPhysicalDevice|AbstractRayCaster|AbstractSeries|AbstractSkeleton|AbstractTextureImage|" + + "Accelerometer|AccelerometerReading|Accessible|Action|ActionGroup|ActionInput|" + + "AdditiveClipBlend|Address|Affector|Age|AlphaCoverage|AlphaTest|" + + "Altimeter|AltimeterReading|AmbientLightReading|AmbientLightSensor|AmbientTemperatureReading|AmbientTemperatureSensor|" + + "AnalogAxisInput|AnchorAnimation|AnchorChanges|AngleDirection|AnimatedImage|AnimatedSprite|" + + "Animation|AnimationController|AnimationGroup|Animator|ApplicationWindow|ApplicationWindowStyle|" + + "AreaSeries|Armature|AttenuationModelInverse|AttenuationModelLinear|Attractor|Attribute|" + + "Audio|AudioCategory|AudioEngine|AudioListener|AudioSample|AuthenticationDialogRequest|" + + "Axis|AxisAccumulator|AxisSetting|BackspaceKey|Bar3DSeries|BarCategoryAxis|" + + "BarDataProxy|BarSeries|BarSet|Bars3D|BaseKey|Behavior|" + + "Binding|Blend|BlendEquation|BlendEquationArguments|BlendedClipAnimator|BlitFramebuffer|" + + "BluetoothDiscoveryModel|BluetoothService|BluetoothSocket|BorderImage|BorderImageMesh|BoxPlotSeries|" + + "BoxSet|BrightnessContrast|Buffer|BusyIndicator|BusyIndicatorStyle|Button|" + + "ButtonAxisInput|ButtonGroup|ButtonStyle|Calendar|CalendarStyle|Camera|" + + "Camera3D|CameraCapabilities|CameraCapture|CameraExposure|CameraFlash|CameraFocus|" + + "CameraImageProcessing|CameraLens|CameraRecorder|CameraSelector|CandlestickSeries|CandlestickSet|" + + "Canvas|Canvas3D|Canvas3DAbstractObject|Canvas3DActiveInfo|Canvas3DBuffer|Canvas3DContextAttributes|" + + "Canvas3DFrameBuffer|Canvas3DProgram|Canvas3DRenderBuffer|Canvas3DShader|Canvas3DShaderPrecisionFormat|Canvas3DTexture|" + + "Canvas3DTextureProvider|Canvas3DUniformLocation|CanvasGradient|CanvasImageData|CanvasPixelArray|Category|" + + "CategoryAxis|CategoryAxis3D|CategoryModel|CategoryRange|ChangeLanguageKey|ChartView|" + + "CheckBox|CheckBoxStyle|CheckDelegate|CircularGauge|CircularGaugeStyle|ClearBuffers|" + + "ClipAnimator|ClipPlane|CloseEvent|ColorAnimation|ColorDialog|ColorDialogRequest|" + + "ColorGradient|ColorGradientStop|ColorMask|ColorOverlay|Colorize|Column|" + + "ColumnLayout|ComboBox|ComboBoxStyle|Compass|CompassReading|Component|Component3D|" + + "ComputeCommand|ConeGeometry|ConeMesh|ConicalGradient|Connections|ContactDetail|" + + "ContactDetails|Container|Context2D|Context3D|ContextMenuRequest|Control|" + + "CoordinateAnimation|CuboidGeometry|CuboidMesh|CullFace|CumulativeDirection|" + + "Custom3DItem|Custom3DLabel|Custom3DVolume|CustomParticle|CylinderGeometry|CylinderMesh|" + + "Date|DateTimeAxis|DelayButton|DelayButtonStyle|DelegateChoice|DelegateChooser|DelegateModel|" + + "DelegateModelGroup|DepthTest|Desaturate|Dial|DialStyle|Dialog|DialogButtonBox|DiffuseMapMaterial|" + + "DiffuseSpecularMapMaterial|DiffuseSpecularMaterial|Direction|DirectionalBlur|DirectionalLight|DispatchCompute|" + + "Displace|DistanceReading|DistanceSensor|Dithering|DoubleValidator|Drag|DragEvent|DragHandler|Drawer|DropArea|" + + "DropShadow|DwmFeatures|DynamicParameter|EditorialModel|Effect|EllipseShape|Emitter|EnterKey|EnterKeyAction|" + + "Entity|EntityLoader|EnvironmentLight|EventConnection|EventPoint|EventTouchPoint|ExclusiveGroup|ExtendedAttributes|" + + "ExtrudedTextGeometry|ExtrudedTextMesh|FastBlur|FileDialog|FileDialogRequest|FillerKey|FilterKey|FinalState|" + + "FirstPersonCameraController|Flickable|Flipable|Flow|FocusScope|FolderListModel|FontDialog|FontLoader|" + + "FontMetrics|FormValidationMessageRequest|ForwardRenderer|Frame|FrameAction|FrameGraphNode|Friction|" + + "FrontFace|FrustumCulling|FullScreenRequest|GLStateDumpExt|GammaAdjust|Gauge|GaugeStyle|GaussianBlur|" + + "GeocodeModel|Geometry|GeometryRenderer|GestureEvent|Glow|GoochMaterial|Gradient|GradientStop|GraphicsApiFilter|" + + "GraphicsInfo|Gravity|Grid|GridLayout|GridMesh|GridView|GroupBox|GroupGoal|Gyroscope|GyroscopeReading|HBarModelMapper|" + + "HBoxPlotModelMapper|HCandlestickModelMapper|HPieModelMapper|HXYModelMapper|HandlerPoint|HandwritingInputPanel|" + + "HandwritingModeKey|HeightMapSurfaceDataProxy|HideKeyboardKey|HistoryState|HolsterReading|HolsterSensor|HorizontalBarSeries|" + + "|HorizontalPercentBarSeries|HorizontalStackedBarSeries|HoverHandler|HueSaturation|HumidityReading|HumiditySensor|" + + "IRProximityReading|IRProximitySensor|Icon|Image|ImageModel|ImageParticle|InnerShadow|InputChord|InputContext|InputEngine|" + + "InputHandler3D|InputMethod|InputModeKey|InputPanel|InputSequence|InputSettings|Instantiator|IntValidator|InvokedServices|" + + "Item|ItemDelegate|ItemGrabResult|ItemModelBarDataProxy|ItemModelScatterDataProxy|ItemModelSurfaceDataProxy|ItemParticle|" + + "ItemSelectionModel|IviApplication|IviSurface|JavaScriptDialogRequest|Joint|JumpList|JumpListCategory|JumpListDestination|" + + "JumpListLink|JumpListSeparator|Key|KeyEvent|KeyIcon|KeyNavigation|KeyPanel|KeyboardColumn|KeyboardDevice|KeyboardHandler|" + + "KeyboardLayout|KeyboardLayoutLoader|KeyboardRow|KeyboardStyle|KeyframeAnimation|Keys|Label|Layer|LayerFilter|Layout|" + + "LayoutMirroring|Legend|LerpBlend|LevelAdjust|LevelOfDetail|LevelOfDetailBoundingSphere|LevelOfDetailLoader|" + + "LevelOfDetailSwitch|LidReading|LidSensor|Light|Light3D|LightReading|LightSensor|LineSeries|LineShape|LineWidth|" + + "LinearGradient|ListElement|ListModel|ListView|Loader|Locale|Location|LogValueAxis|LogValueAxis3DFormatter|LoggingCategory|" + + "LogicalDevice|Magnetometer|MagnetometerReading|Map|MapCircle|MapCircleObject|MapCopyrightNotice|MapGestureArea|MapIconObject|" + + "MapItemGroup|MapItemView|MapObjectView|MapParameter|MapPinchEvent|MapPolygon|MapPolygonObject|MapPolyline|MapPolylineObject|" + + "MapQuickItem|MapRectangle|MapRoute|MapRouteObject|MapType|Margins|MaskShape|MaskedBlur|Material|Matrix4x4|MediaPlayer|" + + "MemoryBarrier|Menu|MenuBar|MenuBarItem|MenuBarStyle|MenuItem|MenuSeparator|MenuStyle|Mesh|MessageDialog|ModeKey|MorphTarget|" + + "MorphingAnimation|MouseArea|MouseDevice|MouseEvent|MouseHandler|MultiPointHandler|MultiPointTouchArea|MultiSampleAntiAliasing|" + + "Navigator|NdefFilter|NdefMimeRecord|NdefRecord|NdefTextRecord|NdefUriRecord|NearField|NoDepthMask|NoDraw|Node|NodeInstantiator|" + + "NormalDiffuseMapAlphaMaterial|NormalDiffuseMapMaterial|NormalDiffuseSpecularMapMaterial|Number|NumberAnimation|NumberKey|Object3D|" + + "ObjectModel|ObjectPicker|OpacityAnimator|OpacityMask|OpenGLInfo|OrbitCameraController|OrientationReading|OrientationSensor|Overlay|" + + "Package|Page|PageIndicator|Pane|ParallelAnimation|Parameter|ParentAnimation|ParentChange|Particle|ParticleGroup|ParticlePainter|" + + "ParticleSystem|Path|PathAngleArc|PathAnimation|PathArc|PathAttribute|PathCubic|PathCurve|PathElement|PathInterpolator|PathLine|" + + "PathMove|PathPercent|PathQuad|PathSvg|PathView|PauseAnimation|PerVertexColorMaterial|PercentBarSeries|PhongAlphaMaterial|" + + "PhongMaterial|PickEvent|PickLineEvent|PickPointEvent|PickTriangleEvent|PickingSettings|Picture|PieMenu|PieMenuStyle|PieSeries|" + + "PieSlice|PinchArea|PinchEvent|PinchHandler|Place|PlaceAttribute|PlaceSearchModel|PlaceSearchSuggestionModel|PlaneGeometry|" + + "PlaneMesh|PlayVariation|Playlist|PlaylistItem|Plugin|PluginParameter|PointDirection|PointHandler|PointLight|PointSize|" + + "PointerDevice|PointerDeviceHandler|PointerEvent|PointerHandler|PolarChartView|PolygonOffset|Popup|Position|PositionSource|" + + "Positioner|PressureReading|PressureSensor|Product|ProgressBar|ProgressBarStyle|PropertyAction|PropertyAnimation|PropertyChanges|" + + "ProximityFilter|ProximityReading|ProximitySensor|QAbstractState|QAbstractTransition|QSignalTransition|" + + "QVirtualKeyboardSelectionListModel|Qt|QtMultimedia|QtObject|QtPositioning|QuaternionAnimation|QuotaRequest|RadialBlur|" + + "RadialGradient|Radio|RadioButton|RadioButtonStyle|RadioData|RadioDelegate|RangeSlider|Ratings|RayCaster|Rectangle|" + + "RectangleShape|RectangularGlow|RecursiveBlur|RegExpValidator|RegisterProtocolHandlerRequest|RenderCapture|" + + "RenderCaptureReply|RenderPass|RenderPassFilter|RenderSettings|RenderState|RenderStateSet|RenderSurfaceSelector|" + + "RenderTarget|RenderTargetOutput|RenderTargetSelector|Repeater|ReviewModel|Rotation|RotationAnimation|RotationAnimator|" + + "RotationReading|RotationSensor|RoundButton|Route|RouteLeg|RouteManeuver|RouteModel|RouteQuery|RouteSegment|Row|" + + "RowLayout|Scale|ScaleAnimator|Scatter3D|Scatter3DSeries|ScatterDataProxy|ScatterSeries|Scene2D|Scene3D|SceneLoader|" + + "ScissorTest|Screen|ScreenRayCaster|ScriptAction|ScrollBar|ScrollIndicator|ScrollView|ScrollViewStyle|ScxmlStateMachine|" + + "SeamlessCubemap|SelectionListItem|Sensor|SensorGesture|SensorGlobal|SensorReading|SequentialAnimation|Settings|" + + "SettingsStore|ShaderEffect|ShaderEffectSource|ShaderProgram|ShaderProgramBuilder|Shape|ShellSurface|ShellSurfaceItem|" + + "ShiftHandler|ShiftKey|Shortcut|SignalSpy|SignalTransition|SinglePointHandler|Skeleton|SkeletonLoader|Slider|SliderStyle|" + + "SmoothedAnimation|SortPolicy|Sound|SoundEffect|SoundInstance|SpaceKey|SphereGeometry|SphereMesh|SpinBox|SpinBoxStyle|" + + "SplineSeries|SplitView|SpotLight|SpringAnimation|Sprite|SpriteGoal|SpriteSequence|Stack|StackLayout|StackView|" + + "StackViewDelegate|StackedBarSeries|State|StateChangeScript|StateGroup|StateMachine|StateMachineLoader|StatusBar|" + + "StatusBarStyle|StatusIndicator|StatusIndicatorStyle|StencilMask|StencilOperation|StencilOperationArguments|StencilTest|" + + "StencilTestArguments|Store|String|Supplier|Surface3D|Surface3DSeries|SurfaceDataProxy|SwipeDelegate|SwipeView|Switch|" + + "SwitchDelegate|SwitchStyle|SymbolModeKey|SystemPalette|Tab|TabBar|TabButton|TabView|TabViewStyle|TableView|TableViewColumn|" + + "TableViewStyle|TapHandler|TapReading|TapSensor|TargetDirection|TaskbarButton|Technique|TechniqueFilter|TestCase|Text|TextArea|" + + "TextAreaStyle|TextEdit|TextField|TextFieldStyle|TextInput|TextMetrics|TextureImage|TextureImageFactory|Theme3D|ThemeColor|" + + "ThresholdMask|ThumbnailToolBar|ThumbnailToolButton|TiltReading|TiltSensor|TimeoutTransition|Timer|ToggleButton|" + + "ToggleButtonStyle|ToolBar|ToolBarStyle|ToolButton|ToolSeparator|ToolTip|Torch|TorusGeometry|TorusMesh|TouchEventSequence|" + + "TouchInputHandler3D|TouchPoint|Trace|TraceCanvas|TraceInputArea|TraceInputKey|TraceInputKeyPanel|TrailEmitter|Transaction|" + + "Transform|Transition|Translate|TreeView|TreeViewStyle|Tumbler|TumblerColumn|TumblerStyle|Turbulence|UniformAnimator|User|" + + "VBarModelMapper|VBoxPlotModelMapper|VCandlestickModelMapper|VPieModelMapper|VXYModelMapper|ValueAxis|ValueAxis3D|" + + "ValueAxis3DFormatter|Vector3dAnimation|VertexBlendAnimation|Video|VideoOutput|ViewTransition|Viewport|" + + "VirtualKeyboardSettings|Wander|WavefrontMesh|WaylandClient|WaylandCompositor|WaylandHardwareLayer|" + + "WaylandOutput|WaylandQuickItem|WaylandSeat|WaylandSurface|WaylandView|Waypoint|" + + "WebChannel|WebEngine|WebEngineAction|WebEngineCertificateError|WebEngineDownloadItem|WebEngineHistory|" + + "WebEngineHistoryListModel|WebEngineLoadRequest|WebEngineNavigationRequest|WebEngineNewViewRequest|WebEngineProfile|WebEngineScript|" + + "WebEngineSettings|WebEngineView|WebSocket|WebSocketServer|WebView|WebViewLoadRequest|" + + "WheelEvent|Window|WlShell|WlShellSurface|WorkerScript|XAnimator|" + + "XYPoint|XYSeries|XdgDecorationManagerV1|XdgPopup|XdgPopupV5|XdgPopupV6|" + + "XdgShell|XdgShellV5|XdgShellV6|XdgSurface|XdgSurfaceV5|XdgSurfaceV6|" + + "XdgToplevel|XdgToplevelV6|XmlListModel|XmlRole|YAnimator|ZoomBlur", + "storage.type": "const|let|var|function|" + // js + "property|", // qml + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "print|console\\.log", + "constant.language.boolean": "true|false" + }, "identifier"); + this.$rules = { + "start": [ + { + token: "string", // single line + regex: '"', + next: "string" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "text", + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "comment", + regex: "\\/\\/.*$" + }, { + token: "comment.start", + regex: "\\/\\*", + next: "comment" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }, { + token: keywordMapper, + regex: "\\b\\w+\\b" + } + ], + "string": [ + { + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + } + ], + "comment": [ + { + token: "comment.end", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(QmlHighlightRules, TextHighlightRules); +exports.QmlHighlightRules = QmlHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/qml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/qml_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var QmlHighlightRules = require("./qml_highlight_rules").QmlHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = QmlHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'" }; + this.$id = "ace/mode/qml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/qml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-r.js b/vendor/assets/javascripts/ace/mode-r.js index 0f5be36f..4115911f 100644 --- a/vendor/assets/javascripts/ace/mode-r.js +++ b/vendor/assets/javascripts/ace/mode-r.js @@ -1,301 +1,387 @@ -define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * tex_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ "use strict"; - var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - +var TexHighlightRules = function (textClass) { if (!textClass) textClass = "text"; - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "%.*$" + token: "comment", + regex: "%.*$" }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" + token: textClass, // non-command + regex: "\\\\[$&%#\\{\\}]" }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" + token: "keyword", // command + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", + next: "nospell" }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + token: "keyword", // command + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" }, { - token : "paren.keyword.operator", - regex : "[[({]" + token: "paren.keyword.operator", + regex: "[[({]" }, { - token : "paren.keyword.operator", - regex : "[\\])}]" + token: "paren.keyword.operator", + regex: "[\\])}]" }, { - token : textClass, - regex : "\\s+" + token: textClass, + regex: "\\s+" } ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } + "nospell": [ + { + token: "comment", + regex: "%.*$", + next: "start" + }, { + token: "nospell." + textClass, // non-command + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", // command + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" + }, { + token: "keyword", // command + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next: "start" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])]" + }, { + token: "paren.keyword.operator", + regex: "}", + next: "start" + }, { + token: "nospell." + textClass, + regex: "\\s+" + }, { + token: "nospell." + textClass, + regex: "\\w+" + } ] }; }; - oop.inherits(TexHighlightRules, TextHighlightRules); - exports.TexHighlightRules = TexHighlightRules; + }); -define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"], function(require, exports, module) -{ - - var oop = require("../lib/oop"); - var lang = require("../lib/lang"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; - - var RHighlightRules = function() - { - - var keywords = lang.arrayToMap( - ("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") - .split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + - "NA_complex_").split("|") - ); - - this.$rules = { - "start" : [ +define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"], function(require, exports, module){/* + * r_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; +var RHighlightRules = function () { + var keywords = lang.arrayToMap(("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") + .split("|")); + var buildinConstants = lang.arrayToMap(("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + + "NA_complex_").split("|")); + this.$rules = { + "start": [ { - token : "comment.sectionhead", - regex : "#+(?!').*(?:----|====|####)\\s*$" + token: "comment.sectionhead", + regex: "#+(?!').*(?:----|====|####)\\s*$" }, { - token : "comment", - regex : "#+'", - next : "rd-start" + token: "comment", + regex: "#+'", + next: "rd-start" }, { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "string", // multi line string start - regex : '["]', - next : "qqstring" + token: "string", // multi line string start + regex: '["]', + next: "qqstring" }, { - token : "string", // multi line string start - regex : "[']", - next : "qstring" + token: "string", // multi line string start + regex: "[']", + next: "qstring" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+[Li]?\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+[Li]?\\b" }, { - token : "constant.numeric", // explicit integer - regex : "\\d+L\\b" + token: "constant.numeric", // explicit integer + regex: "\\d+L\\b" }, { - token : "constant.numeric", // number - regex : "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" + token: "constant.numeric", // number + regex: "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" }, { - token : "constant.numeric", // number with leading decimal - regex : "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" + token: "constant.numeric", // number with leading decimal + regex: "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" }, { - token : "constant.language.boolean", - regex : "(?:TRUE|FALSE|T|F)\\b" + token: "constant.language.boolean", + regex: "(?:TRUE|FALSE|T|F)\\b" }, { - token : "identifier", - regex : "`.*?`" + token: "identifier", + regex: "`.*?`" }, { - onMatch : function(value) { - if (keywords[value]) - return "keyword"; - else if (buildinConstants[value]) - return "constant.language"; - else if (value == '...' || value.match(/^\.\.\d+$/)) - return "variable.language"; - else - return "identifier"; - }, - regex : "[a-zA-Z.][a-zA-Z0-9._]*\\b" + onMatch: function (value) { + if (keywords[value]) + return "keyword"; + else if (buildinConstants[value]) + return "constant.language"; + else if (value == '...' || value.match(/^\.\.\d+$/)) + return "variable.language"; + else + return "identifier"; + }, + regex: "[a-zA-Z.][a-zA-Z0-9._]*\\b" }, { - token : "keyword.operator", - regex : "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" + token: "keyword.operator", + regex: "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" }, { - token : "keyword.operator", // infix operators - regex : "%.*?%" + token: "keyword.operator", // infix operators + regex: "%.*?%" }, { - token : "paren.keyword.operator", - regex : "[[({]" + token: "paren.keyword.operator", + regex: "[[({]" }, { - token : "paren.keyword.operator", - regex : "[\\])}]" + token: "paren.keyword.operator", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } - ], - "qqstring" : [ + ], + "qqstring": [ { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } - ], - "qstring" : [ + ], + "qstring": [ { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } - ] - }; + ] + }; + var rdRules = new TexHighlightRules("comment").getRules(); + for (var i = 0; i < rdRules["start"].length; i++) { + rdRules["start"][i].token += ".virtual-comment"; + } + this.addRules(rdRules, "rd-"); + this.$rules["rd-start"].unshift({ + token: "text", + regex: "^", + next: "start" + }); + this.$rules["rd-start"].unshift({ + token: "keyword", + regex: "@(?!@)[^ ]*" + }); + this.$rules["rd-start"].unshift({ + token: "comment", + regex: "@@" + }); + this.$rules["rd-start"].push({ + token: "comment", + regex: "[^%\\\\[({\\])}]+" + }); +}; +oop.inherits(RHighlightRules, TextHighlightRules); +exports.RHighlightRules = RHighlightRules; - var rdRules = new TexHighlightRules("comment").getRules(); - for (var i = 0; i < rdRules["start"].length; i++) { - rdRules["start"][i].token += ".virtual-comment"; - } - - this.addRules(rdRules, "rd-"); - this.$rules["rd-start"].unshift({ - token: "text", - regex: "^", - next: "start" - }); - this.$rules["rd-start"].unshift({ - token : "keyword", - regex : "@(?!@)[^ ]*" - }); - this.$rules["rd-start"].unshift({ - token : "comment", - regex : "@@" - }); - this.$rules["rd-start"].push({ - token : "comment", - regex : "[^%\\\\[({\\])}]+" - }); - }; - - oop.inherits(RHighlightRules, TextHighlightRules); - - exports.RHighlightRules = RHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/r",["require","exports","module","ace/range","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/r_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { - "use strict"; +define("ace/mode/r",["require","exports","module","ace/unicode","ace/range","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/r_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + * r.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +"use strict"; +var unicode = require("../unicode"); +var Range = require("../range").Range; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var RHighlightRules = require("./r_highlight_rules").RHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + this.HighlightRules = RHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.tokenRe = new RegExp("^[" + unicode.wordChars + "._]+", "g"); + this.nonTokenRe = new RegExp("^(?:[^" + unicode.wordChars + "._]|\s])+", "g"); + this.$id = "ace/mode/r"; + this.snippetFileId = "ace/snippets/r"; +}).call(Mode.prototype); +exports.Mode = Mode; - var Range = require("../range").Range; - var oop = require("../lib/oop"); - var TextMode = require("./text").Mode; - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var RHighlightRules = require("./r_highlight_rules").RHighlightRules; - var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - - var Mode = function(){ - this.HighlightRules = RHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = this.$defaultBehaviour; - }; - oop.inherits(Mode, TextMode); - - (function() - { - this.lineCommentStart = "#"; - this.$id = "ace/mode/r"; - }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/r"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-raku.js b/vendor/assets/javascripts/ace/mode-raku.js new file mode 100644 index 00000000..77b40c32 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-raku.js @@ -0,0 +1,516 @@ +define("ace/mode/raku_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var RakuHighlightRules = function () { + var keywords = ("my|our|class|role|grammar|is|does|sub|method|submethod|try|" + + "default|when|if|elsif|else|unless|with|orwith|without|for|given|proceed|" + + "succeed|loop|while|until|repeat|module|use|need|import|require|unit|" + + "constant|enum|multi|return|has|token|rule|make|made|proto|state|augment|" + + "but|anon|supersede|let|subset|gather|returns|return-rw|temp|" + + "BEGIN|CHECK|INIT|END|CLOSE|ENTER|LEAVE|KEEP|UNDO|PRE|POST|FIRST|NEXT|LAST|CATCH|CONTROL|QUIT|DOC"); + var types = ("Any|Array|Associative|AST|atomicint|Attribute|Backtrace|Backtrace::Frame|" + + "Bag|Baggy|BagHash|Blob|Block|Bool|Buf|Callable|CallFrame|Cancellation|" + + "Capture|Channel|Code|compiler|Complex|ComplexStr|Cool|CurrentThreadScheduler|" + + "Cursor|Date|Dateish|DateTime|Distro|Duration|Encoding|Exception|Failure|" + + "FatRat|Grammar|Hash|HyperWhatever|Instant|Int|IntStr|IO|IO::ArgFiles|" + + "IO::CatHandle|IO::Handle|IO::Notification|IO::Path|IO::Path::Cygwin|" + + "IO::Path::QNX|IO::Path::Unix|IO::Path::Win32|IO::Pipe|IO::Socket|" + + "IO::Socket::Async|IO::Socket::INET|IO::Spec|IO::Spec::Cygwin|IO::Spec::QNX|" + + "IO::Spec::Unix|IO::Spec::Win32|IO::Special|Iterable|Iterator|Junction|Kernel|" + + "Label|List|Lock|Lock::Async|Macro|Map|Match|Metamodel::AttributeContainer|" + + "Metamodel::C3MRO|Metamodel::ClassHOW|Metamodel::EnumHOW|Metamodel::Finalization|" + + "Metamodel::MethodContainer|Metamodel::MROBasedMethodDispatch|Metamodel::MultipleInheritance|" + + "Metamodel::Naming|Metamodel::Primitives|Metamodel::PrivateMethodContainer|" + + "Metamodel::RoleContainer|Metamodel::Trusting|Method|Mix|MixHash|Mixy|Mu|" + + "NFC|NFD|NFKC|NFKD|Nil|Num|Numeric|NumStr|ObjAt|Order|Pair|Parameter|Perl|" + + "Pod::Block|Pod::Block::Code|Pod::Block::Comment|Pod::Block::Declarator|" + + "Pod::Block::Named|Pod::Block::Para|Pod::Block::Table|Pod::Heading|Pod::Item|" + + "Positional|PositionalBindFailover|Proc|Proc::Async|Promise|Proxy|PseudoStash|" + + "Raku|QuantHash|Range|Rat|Rational|RatStr|Real|Regex|Routine|Scalar|Scheduler|" + + "Semaphore|Seq|Set|SetHash|Setty|Signature|Slip|Stash|Str|StrDistance|Stringy|" + + "Sub|Submethod|Supplier|Supplier::Preserving|Supply|Systemic|Tap|Telemetry|" + + "Telemetry::Instrument::Thread|Telemetry::Instrument::Usage|Telemetry::Period|" + + "Telemetry::Sampler|Thread|ThreadPoolScheduler|UInt|Uni|utf8|Variable|Version|" + + "VM|Whatever|WhateverCode|WrapHandle|int|uint|num|str|" + + "int8|int16|int32|int64|uint8|uint16|uint32|uint64|long|longlong|num32|num64|size_t|bool|CArray|Pointer|" + + "Backtrace|Backtrace::Frame|Exception|Failure|X::AdHoc|X::Anon::Augment|X::Anon::Multi|" + + "X::Assignment::RO|X::Attribute::NoPackage|X::Attribute::Package|X::Attribute::Undeclared|" + + "X::Augment::NoSuchType|X::Bind|X::Bind::NativeType|X::Bind::Slice|X::Caller::NotDynamic|" + + "X::Channel::ReceiveOnClosed|X::Channel::SendOnClosed|X::Comp|X::Composition::NotComposable|" + + "X::Constructor::Positional|X::ControlFlow|X::ControlFlow::Return|X::DateTime::TimezoneClash|" + + "X::Declaration::Scope|X::Declaration::Scope::Multi|X::Does::TypeObject|X::Eval::NoSuchLang|" + + "X::Export::NameClash|X::IO|X::IO::Chdir|X::IO::Chmod|X::IO::Copy|X::IO::Cwd|X::IO::Dir|" + + "X::IO::DoesNotExist|X::IO::Link|X::IO::Mkdir|X::IO::Move|X::IO::Rename|X::IO::Rmdir|X::IO::Symlink|" + + "X::IO::Unlink|X::Inheritance::NotComposed|X::Inheritance::Unsupported|X::Method::InvalidQualifier|" + + "X::Method::NotFound|X::Method::Private::Permission|X::Method::Private::Unqualified|" + + "X::Mixin::NotComposable|X::NYI|X::NoDispatcher|X::Numeric::Real|X::OS|X::Obsolete|X::OutOfRange|" + + "X::Package::Stubbed|X::Parameter::Default|X::Parameter::MultipleTypeConstraints|" + + "X::Parameter::Placeholder|X::Parameter::Twigil|X::Parameter::WrongOrder|X::Phaser::Multiple|" + + "X::Phaser::PrePost|X::Placeholder::Block|X::Placeholder::Mainline|X::Pod|X::Proc::Async|" + + "X::Proc::Async::AlreadyStarted|X::Proc::Async::CharsOrBytes|X::Proc::Async::MustBeStarted|" + + "X::Proc::Async::OpenForWriting|X::Proc::Async::TapBeforeSpawn|X::Proc::Unsuccessful|" + + "X::Promise::CauseOnlyValidOnBroken|X::Promise::Vowed|X::Redeclaration|X::Role::Initialization|" + + "X::Seq::Consumed|X::Sequence::Deduction|X::Signature::NameClash|X::Signature::Placeholder|" + + "X::Str::Numeric|X::StubCode|X::Syntax|X::Syntax::Augment::WithoutMonkeyTyping|" + + "X::Syntax::Comment::Embedded|X::Syntax::Confused|X::Syntax::InfixInTermPosition|" + + "X::Syntax::Malformed|X::Syntax::Missing|X::Syntax::NegatedPair|X::Syntax::NoSelf|" + + "X::Syntax::Number::RadixOutOfRange|X::Syntax::P5|X::Syntax::Regex::Adverb|" + + "X::Syntax::Regex::SolitaryQuantifier|X::Syntax::Reserved|X::Syntax::Self::WithoutObject|" + + "X::Syntax::Signature::InvocantMarker|X::Syntax::Term::MissingInitializer|X::Syntax::UnlessElse|" + + "X::Syntax::Variable::Match|X::Syntax::Variable::Numeric|X::Syntax::Variable::Twigil|X::Temporal|" + + "X::Temporal::InvalidFormat|X::TypeCheck|X::TypeCheck::Assignment|X::TypeCheck::Binding|" + + "X::TypeCheck::Return|X::TypeCheck::Splice|X::Undeclared"); + var builtinFunctions = ("abs|abs2rel|absolute|accept|ACCEPTS|accessed|acos|acosec|acosech|acosh|" + + "acotan|acotanh|acquire|act|action|actions|add|add_attribute|add_enum_value|" + + "add_fallback|add_method|add_parent|add_private_method|add_role|add_trustee|" + + "adverb|after|all|allocate|allof|allowed|alternative-names|annotations|antipair|" + + "antipairs|any|anyof|app_lifetime|append|arch|archname|args|arity|asec|asech|" + + "asin|asinh|ASSIGN-KEY|ASSIGN-POS|assuming|ast|at|atan|atan2|atanh|AT-KEY|" + + "atomic-assign|atomic-dec-fetch|atomic-fetch|atomic-fetch-add|atomic-fetch-dec|" + + "atomic-fetch-inc|atomic-fetch-sub|atomic-inc-fetch|AT-POS|attributes|auth|await|" + + "backtrace|Bag|BagHash|base|basename|base-repeating|batch|BIND-KEY|BIND-POS|" + + "bind-stderr|bind-stdin|bind-stdout|bind-udp|bits|bless|block|bool-only|" + + "bounds|break|Bridge|broken|BUILD|build-date|bytes|cache|callframe|calling-package|" + + "CALL-ME|callsame|callwith|can|cancel|candidates|cando|canonpath|caps|caption|" + + "Capture|cas|catdir|categorize|categorize-list|catfile|catpath|cause|ceiling|" + + "cglobal|changed|Channel|chars|chdir|child|child-name|child-typename|chmod|chomp|" + + "chop|chr|chrs|chunks|cis|classify|classify-list|cleanup|clone|close|closed|" + + "close-stdin|code|codes|collate|column|comb|combinations|command|comment|" + + "compiler|Complex|compose|compose_type|composer|condition|config|configure_destroy|" + + "configure_type_checking|conj|connect|constraints|construct|contains|contents|copy|" + + "cos|cosec|cosech|cosh|cotan|cotanh|count|count-only|cpu-cores|cpu-usage|CREATE|" + + "create_type|cross|cue|curdir|curupdir|d|Date|DateTime|day|daycount|day-of-month|" + + "day-of-week|day-of-year|days-in-month|declaration|decode|decoder|deepmap|" + + "defined|DEFINITE|delayed|DELETE-KEY|DELETE-POS|denominator|desc|DESTROY|destroyers|" + + "devnull|did-you-mean|die|dir|dirname|dir-sep|DISTROnames|do|done|duckmap|dynamic|" + + "e|eager|earlier|elems|emit|enclosing|encode|encoder|encoding|end|ends-with|enum_from_value|" + + "enum_value_list|enum_values|enums|eof|EVAL|EVALFILE|exception|excludes-max|excludes-min|" + + "EXISTS-KEY|EXISTS-POS|exit|exitcode|exp|expected|explicitly-manage|expmod|extension|f|" + + "fail|fc|feature|file|filename|find_method|find_method_qualified|finish|first|flat|flatmap|" + + "flip|floor|flush|fmt|format|formatter|freeze|from|from-list|from-loop|from-posix|full|" + + "full-barrier|get|get_value|getc|gist|got|grab|grabpairs|grep|handle|handled|handles|" + + "hardware|has_accessor|head|headers|hh-mm-ss|hidden|hides|hour|how|hyper|id|illegal|" + + "im|in|indent|index|indices|indir|infinite|infix|install_method_cache|" + + "Instant|instead|int-bounds|interval|in-timezone|invalid-str|invert|invocant|IO|" + + "IO::Notification.watch-path|is_trusted|is_type|isa|is-absolute|is-hidden|is-initial-thread|" + + "is-int|is-lazy|is-leap-year|isNaN|is-prime|is-relative|is-routine|is-setting|is-win|item|" + + "iterator|join|keep|kept|KERNELnames|key|keyof|keys|kill|kv|kxxv|l|lang|last|lastcall|later|" + + "lazy|lc|leading|level|line|lines|link|listen|live|local|lock|log|log10|lookup|lsb|" + + "MAIN|match|max|maxpairs|merge|message|method_table|methods|migrate|min|minmax|" + + "minpairs|minute|misplaced|Mix|MixHash|mkdir|mode|modified|month|move|mro|msb|multiness|" + + "name|named|named_names|narrow|nativecast|native-descriptor|nativesizeof|new|new_type|" + + "new-from-daycount|new-from-pairs|next|nextcallee|next-handle|nextsame|nextwith|NFC|NFD|" + + "NFKC|NFKD|nl-in|nl-out|nodemap|none|norm|not|note|now|nude|numerator|Numeric|of|" + + "offset|offset-in-hours|offset-in-minutes|old|on-close|one|on-switch|open|opened|" + + "operation|optional|ord|ords|orig|os-error|osname|out-buffer|pack|package|package-kind|" + + "package-name|packages|pair|pairs|pairup|parameter|params|parent|parent-name|parents|parse|" + + "parse-base|parsefile|parse-names|parts|path|path-sep|payload|peer-host|peer-port|periods|" + + "perl|permutations|phaser|pick|pickpairs|pid|placeholder|plus|polar|poll|polymod|pop|pos|" + + "positional|posix|postfix|postmatch|precomp-ext|precomp-target|pred|prefix|prematch|prepend|" + + "print|printf|print-nl|print-to|private|private_method_table|proc|produce|Promise|prompt|" + + "protect|pull-one|push|push-all|push-at-least|push-exactly|push-until-lazy|put|" + + "qualifier-type|quit|r|race|radix|raku|rand|range|raw|re|read|readchars|readonly|" + + "ready|Real|reallocate|reals|reason|rebless|receive|recv|redispatcher|redo|reduce|" + + "rel2abs|relative|release|rename|repeated|replacement|report|reserved|resolve|" + + "restore|result|resume|rethrow|reverse|right|rindex|rmdir|roles_to_compose|" + + "rolish|roll|rootdir|roots|rotate|rotor|round|roundrobin|routine-type|run|rwx|s|" + + "samecase|samemark|samewith|say|schedule-on|scheduler|scope|sec|sech|second|seek|" + + "self|send|Set|set_hidden|set_name|set_package|set_rw|set_value|SetHash|" + + "set-instruments|setup_finalization|shape|share|shell|shift|sibling|sigil|" + + "sign|signal|signals|signature|sin|sinh|sink|sink-all|skip|skip-at-least|" + + "skip-at-least-pull-one|skip-one|sleep|sleep-timer|sleep-until|Slip|slurp|" + + "slurp-rest|slurpy|snap|snapper|so|socket-host|socket-port|sort|source|" + + "source-package|spawn|SPEC|splice|split|splitdir|splitpath|sprintf|spurt|" + + "sqrt|squish|srand|stable|start|started|starts-with|status|stderr|stdout|" + + "sub_signature|subbuf|subbuf-rw|subname|subparse|subst|subst-mutate|" + + "substr|substr-eq|substr-rw|succ|sum|Supply|symlink|t|tail|take|take-rw|" + + "tan|tanh|tap|target|target-name|tc|tclc|tell|then|throttle|throw|timezone|" + + "tmpdir|to|today|toggle|to-posix|total|trailing|trans|tree|trim|trim-leading|" + + "trim-trailing|truncate|truncated-to|trusts|try_acquire|trying|twigil|type|" + + "type_captures|typename|uc|udp|uncaught_handler|unimatch|uniname|uninames|" + + "uniparse|uniprop|uniprops|unique|unival|univals|unlink|unlock|unpack|unpolar|" + + "unshift|unwrap|updir|USAGE|utc|val|value|values|VAR|variable|verbose-config|" + + "version|VMnames|volume|vow|w|wait|warn|watch|watch-path|week|weekday-of-month|" + + "week-number|week-year|WHAT|WHERE|WHEREFORE|WHICH|WHO|whole-second|WHY|" + + "wordcase|words|workaround|wrap|write|write-to|yada|year|yield|yyyy-mm-dd|" + + "z|zip|zip-latest|" + + "plan|done-testing|bail-out|todo|skip|skip-rest|diag|subtest|pass|flunk|ok|" + + "nok|cmp-ok|is-deeply|isnt|is-approx|like|unlike|use-ok|isa-ok|does-ok|" + + "can-ok|dies-ok|lives-ok|eval-dies-ok|eval-lives-ok|throws-like|fails-like|" + + "rw|required|native|repr|export|symbol"); + var constants_ascii = ("pi|Inf|tau|time"); + var ops_txt = ("eq|ne|gt|lt|le|ge|div|gcd|lcm|leg|cmp|ff|fff|" + + "x|before|after|Z|X|and|or|andthen|notandthen|orelse|xor"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "storage.type": types, + "constant.language": constants_ascii, + "support.function": builtinFunctions, + "keyword.operator": ops_txt + }, "identifier"); + var moduleName = "[a-zA-Z_][a-zA-Z_0-9:-]*\\b"; + var hex = { token: "constant.numeric", regex: "0x[0-9a-fA-F]+\\b" }; + var num_rat = { token: "constant.numeric", regex: "[+-.]?\\d[\\d_]*(?:(?:\\.\\d[\\d_]*)?(?:[eE][+-]?\\d[\\d_]*)?)?i?\\b" }; + var booleans = { token: "constant.language.boolean", regex: "(?:True|False)\\b" }; + var versions = { token: "constant.other", regex: "v[0-9](?:\\.[a-zA-Z0-9*])*\\b" }; + var lang_keywords = { token: keywordMapper, regex: "[a-zA-Z][\\:a-zA-Z0-9_-]*\\b" }; + var variables = { token: "variable.language", regex: "[$@%&][?*!.]?[a-zA-Z0-9_-]+\\b" }; + var vars_special = { token: "variable.language", regex: "\\$[/|!]?|@\\$/" }; + var ops_char = { token: "keyword.operator", regex: "=|<|>|\\+|\\*|-|/|~|%|\\?|!|\\^|\\.|\\:|\\,|" + + "»|«|\\||\\&|⚛|∘" }; + var constants_unicode = { token: "constant.language", regex: "𝑒|π|τ|∞" }; + var qstrings = { token: "string.quoted.single", regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }; + var word_quoting = { token: "string.quoted.single", regex: "[<](?:[a-zA-Z0-9 ])*[>]" }; + var regexp = { + token: "string.regexp", + regex: "[m|rx]?[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }; + this.$rules = { + "start": [ + { + token: "comment.block", // Embedded Comments - Parentheses + regex: "#[`|=]\\(.*\\)" + }, { + token: "comment.block", // Embedded Comments - Brackets + regex: "#[`|=]\\[.*\\]" + }, { + token: "comment.doc", // Multiline Comments + regex: "^=(?:begin)\\b", + next: "block_comment" + }, { + token: "string.unquoted", // q Heredocs + regex: "q[x|w]?\\:to/END/;", + next: "qheredoc" + }, { + token: "string.unquoted", // qq Heredocs + regex: "qq[x|w]?\\:to/END/;", + next: "qqheredoc" + }, + regexp, + qstrings, + { + token: "string.quoted.double", // Double Quoted String + regex: '"', + next: "qqstring" + }, + word_quoting, + { + token: ["keyword", "text", "variable.module"], // use - Module Names, Pragmas, etc. + regex: "(use)(\\s+)((?:" + moduleName + "\\.?)*)" + }, + hex, + num_rat, + booleans, + versions, + lang_keywords, + variables, + vars_special, + ops_char, + constants_unicode, + { + token: "comment", // Sigle Line Comments + regex: "#.*$" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: '\\\\(?:[nrtef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})' + }, + variables, + vars_special, + { + token: "lparen", + regex: "{", + next: "qqinterpolation" + }, { + token: "string.quoted.double", + regex: '"', + next: "start" + }, { + defaultToken: "string.quoted.double" + } + ], + "qqinterpolation": [ + hex, + num_rat, + booleans, + versions, + lang_keywords, + variables, + vars_special, + ops_char, + constants_unicode, + qstrings, + regexp, + { + token: "rparen", + regex: "}", + next: "qqstring" + } + ], + "block_comment": [ + { + token: "comment.doc", + regex: "^=end +[a-zA-Z_0-9]*", + next: "start" + }, + { + defaultToken: "comment.doc" + } + ], + "qheredoc": [ + { + token: "string.unquoted", + regex: "END$", + next: "start" + }, { + defaultToken: "string.unquoted" + } + ], + "qqheredoc": [ + variables, + vars_special, + { + token: "lparen", + regex: "{", + next: "qqheredocinterpolation" + }, { + token: "string.unquoted", + regex: "END$", + next: "start" + }, { + defaultToken: "string.unquoted" + } + ], + "qqheredocinterpolation": [ + hex, + num_rat, + booleans, + versions, + lang_keywords, + variables, + vars_special, + ops_char, + constants_unicode, + qstrings, + regexp, + { + token: "rparen", + regex: "}", + next: "qqheredoc" + } + ] + }; +}; +oop.inherits(RakuHighlightRules, TextHighlightRules); +exports.RakuHighlightRules = RakuHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/raku",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/raku_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RakuHighlightRules = require("./raku_highlight_rules").RakuHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = RakuHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode({ start: "^=(begin)\\b", end: "^=(end)\\b" }); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.blockComment = [ + { start: "=begin", end: "=end", lineStartOnly: true }, + { start: "=item", end: "=end", lineStartOnly: true } + ]; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/raku"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/raku"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-razor.js b/vendor/assets/javascripts/ace/mode-razor.js index 15b050b0..628aa380 100644 --- a/vendor/assets/javascripts/ace/mode-razor.js +++ b/vendor/assets/javascripts/ace/mode-razor.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,188 +2225,201 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var CSharpHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ - "variable.language": "this", - "keyword": "abstract|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|partial|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic", - "constant.language": "null|true|false" - }, "identifier"); - +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" - }, { - token : "string", // character - regex : /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/ - }, { - token : "string", start : '"', end : '"|$', next: [ - {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, - {token: "invalid", regex: /\\./} - ] - }, { - token : "string", start : '@"', end : '"', next:[ - {token: "constant.language.escape", regex: '""'} - ] - }, { - token : "string", start : /\$"/, end : '"|$', next: [ - {token: "constant.language.escape", regex: /\\(:?$)|{{/}, - {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, - {token: "invalid", regex: /\\./} - ] - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" - }, { - token : "keyword", - regex : "^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)" - }, { - token : "punctuation.operator", - regex : "\\?|\\:|\\,|\\;|\\." - }, { - token : "paren.lparen", - regex : "[[({]" - }, { - token : "paren.rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - this.normalizeRules(); }; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; -oop.inherits(CSharpHighlightRules, TextHighlightRules); - -exports.CSharpHighlightRules = CSharpHighlightRules; }); -define("ace/mode/razor_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/html_highlight_rules","ace/mode/csharp_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/csharp_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CSharpHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": "abstract|async|await|event|new|struct|as|explicit|null|switch|base|extern|object|this|bool|false|operator|throw|break|finally|out|true|byte|fixed|override|try|case|float|params|typeof|catch|for|private|uint|char|foreach|protected|ulong|checked|goto|public|unchecked|class|if|readonly|unsafe|const|implicit|ref|ushort|continue|in|return|using|decimal|int|sbyte|virtual|default|interface|sealed|volatile|delegate|internal|partial|short|void|do|is|sizeof|while|double|lock|stackalloc|else|long|static|enum|namespace|string|var|dynamic", + "constant.language": "null|true|false" + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "string", // character + regex: /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/ + }, { + token: "string", start: '"', end: '"|$', next: [ + { token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/ }, + { token: "invalid", regex: /\\./ } + ] + }, { + token: "string", start: '@"', end: '"', next: [ + { token: "constant.language.escape", regex: '""' } + ] + }, { + token: "string", start: /\$"/, end: '"|$', next: [ + { token: "constant.language.escape", regex: /\\(:?$)|{{/ }, + { token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/ }, + { token: "invalid", regex: /\\./ } + ] + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "keyword", + regex: "^\\s*#(if|else|elif|endif|define|undef|warning|error|line|region|endregion|pragma)" + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(CSharpHighlightRules, TextHighlightRules); +exports.CSharpHighlightRules = CSharpHighlightRules; +}); + +define("ace/mode/razor_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/html_highlight_rules","ace/mode/csharp_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var CSharpHighlightRules = require("./csharp_highlight_rules").CSharpHighlightRules; - var blockPrefix = 'razor-block-'; -var RazorLangHighlightRules = function() { +var RazorLangHighlightRules = function () { CSharpHighlightRules.call(this); - - var processPotentialCallback = function(value, stackItem) { + var processPotentialCallback = function (value, stackItem) { if (typeof stackItem === "function") return stackItem(value); - return stackItem; }; - var inBraces = 'in-braces'; this.$rules.start.unshift({ regex: '[\\[({]', - onMatch: function(value, state, stack) { + onMatch: function (value, state, stack) { var prefix = /razor-[^\-]+-/.exec(state)[0]; - stack.unshift(value); stack.unshift(prefix + inBraces); this.next = prefix + inBraces; @@ -2611,21 +2430,18 @@ var RazorLangHighlightRules = function() { end: "\\*@", token: "comment" }); - var parentCloseMap = { '{': '}', '[': ']', '(': ')' }; - this.$rules[inBraces] = lang.deepCopy(this.$rules.start); this.$rules[inBraces].unshift({ regex: '[\\])}]', - onMatch: function(value, state, stack) { + onMatch: function (value, state, stack) { var open = stack[1]; if (parentCloseMap[open] !== value) return 'invalid.illegal'; - stack.shift(); // exit in-braces block stack.shift(); // exit brace marker this.next = processPotentialCallback(value, stack[0]) || 'start'; @@ -2633,71 +2449,60 @@ var RazorLangHighlightRules = function() { } }); }; - oop.inherits(RazorLangHighlightRules, CSharpHighlightRules); - -var RazorHighlightRules = function() { +var RazorHighlightRules = function () { HtmlHighlightRules.call(this); - var blockStartRule = { regex: '@[({]|@functions{', - onMatch: function(value, state, stack) { + onMatch: function (value, state, stack) { stack.unshift(value); stack.unshift('razor-block-start'); this.next = 'razor-block-start'; return 'punctuation.block.razor'; } }; - var blockEndMap = { '@{': '}', '@(': ')', - '@functions{':'}' + '@functions{': '}' }; - var blockEndRule = { regex: '[})]', - onMatch: function(value, state, stack) { + onMatch: function (value, state, stack) { var blockStart = stack[1]; if (blockEndMap[blockStart] !== value) return 'invalid.illegal'; - stack.shift(); // exit razor block stack.shift(); // remove block type marker this.next = stack.shift() || 'start'; return 'punctuation.block.razor'; } }; - var shortStartRule = { regex: "@(?![{(])", - onMatch: function(value, state, stack) { + onMatch: function (value, state, stack) { stack.unshift("razor-short-start"); this.next = "razor-short-start"; return 'punctuation.short.razor'; } }; - var shortEndRule = { token: "", regex: "(?=[^A-Za-z_\\.()\\[\\]])", next: 'pop' }; - var ifStartRule = { regex: "@(?=if)", - onMatch: function(value, state, stack) { - stack.unshift(function(value) { + onMatch: function (value, state, stack) { + stack.unshift(function (value) { if (value !== '}') return 'start'; - return stack.shift() || 'start'; }); this.next = 'razor-block-start'; return 'punctuation.control.razor'; } }; - var razorStartRules = [ { start: "@\\*", @@ -2711,33 +2516,26 @@ var RazorHighlightRules = function() { blockStartRule, shortStartRule ]; - for (var key in this.$rules) this.$rules[key].unshift.apply(this.$rules[key], razorStartRules); - this.embedRules(RazorLangHighlightRules, "razor-block-", [blockEndRule], ["start"]); this.embedRules(RazorLangHighlightRules, "razor-short-", [shortEndRule], ["start"]); - this.normalizeRules(); }; - oop.inherits(RazorHighlightRules, HtmlHighlightRules); - exports.RazorHighlightRules = RazorHighlightRules; exports.RazorLangHighlightRules = RazorLangHighlightRules; + }); -define("ace/mode/razor_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/razor_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var keywords = [ "abstract", "as", "base", "bool", "break", "byte", "case", "catch", "char", "checked", "class", "const", "continue", "decimal", "default", "delegate", - "do", "double","else","enum", + "do", "double", "else", "enum", "event", "explicit", "extern", "false", "finally", "fixed", "float", "for", "foreach", "goto", "if", "implicit", @@ -2752,94 +2550,82 @@ var keywords = [ "true", "try", "typeof", "uint", "ulong", "unchecked", "unsafe", "ushort", "using", "var", "virtual", "void", - "volatile", "while"]; - -var shortHands = [ + "volatile", "while" +]; +var shortHands = [ "Html", "Model", "Url", "Layout" ]; - -var RazorCompletions = function() { - +var RazorCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { - - if(state.lastIndexOf("razor-short-start") == -1 && state.lastIndexOf("razor-block-start") == -1) +(function () { + this.getCompletions = function (state, session, pos, prefix) { + if (state.lastIndexOf("razor-short-start") == -1 && state.lastIndexOf("razor-block-start") == -1) return []; - var token = session.getTokenAt(pos.row, pos.column); if (!token) return []; - - if(state.lastIndexOf("razor-short-start") != -1) { + if (state.lastIndexOf("razor-short-start") != -1) { return this.getShortStartCompletions(state, session, pos, prefix); } - - if(state.lastIndexOf("razor-block-start") != -1) { + if (state.lastIndexOf("razor-block-start") != -1) { return this.getKeywordCompletions(state, session, pos, prefix); } - - }; - - this.getShortStartCompletions = function(state, session, pos, prefix) { - return shortHands.map(function(element){ + this.getShortStartCompletions = function (state, session, pos, prefix) { + return shortHands.map(function (element) { return { value: element, meta: "keyword", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getKeywordCompletions = function(state, session, pos, prefix) { - return shortHands.concat(keywords).map(function(element){ + this.getKeywordCompletions = function (state, session, pos, prefix) { + return shortHands.concat(keywords).map(function (element) { return { value: element, meta: "keyword", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(RazorCompletions.prototype); - exports.RazorCompletions = RazorCompletions; }); -define("ace/mode/razor",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/razor_highlight_rules","ace/mode/razor_completions","ace/mode/html_completions"], function(require, exports, module) { -"use strict"; - +define("ace/mode/razor",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/razor_highlight_rules","ace/mode/razor_completions","ace/mode/html_completions"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var RazorHighlightRules = require("./razor_highlight_rules").RazorHighlightRules; var RazorCompletions = require("./razor_completions").RazorCompletions; var HtmlCompletions = require("./html_completions").HtmlCompletions; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); this.$highlightRules = new RazorHighlightRules(); this.$completer = new RazorCompletions(); this.$htmlCompleter = new HtmlCompletions(); }; oop.inherits(Mode, HtmlMode); - -(function() { - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var razorToken = this.$completer.getCompletions(state, session, pos, prefix); var htmlToken = this.$htmlCompleter.getCompletions(state, session, pos, prefix); return razorToken.concat(htmlToken); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { return null; }; - this.$id = "ace/mode/razor"; + this.snippetFileId = "ace/snippets/razor"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/razor"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-rdoc.js b/vendor/assets/javascripts/ace/mode-rdoc.js index 0348053c..a135783b 100644 --- a/vendor/assets/javascripts/ace/mode-rdoc.js +++ b/vendor/assets/javascripts/ace/mode-rdoc.js @@ -1,236 +1,286 @@ -define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/latex_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var LatexHighlightRules = function() { - +var LatexHighlightRules = function () { this.$rules = { - "start" : [{ - token : "comment", - regex : "%.*$" - }, { - token : ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"], - regex : "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})" - }, { - token : ["keyword","lparen", "variable.parameter", "rparen"], - regex : "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\begin)({)(verbatim)(})", - next : "verbatim" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\begin)({)(lstlisting)(})", - next : "lstlisting" - }, { - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\(?:begin|end))({)([\\w*]*)(})" - }, { - token : "storage.type", - regex : /\\verb\b\*?/, - next : [{ - token : ["keyword.operator", "string", "keyword.operator"], - regex : "(.)(.*?)(\\1|$)|", - next : "start" - }] - }, { - token : "storage.type", - regex : "\\\\[a-zA-Z]+" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "constant.character.escape", - regex : "\\\\[^a-zA-Z]?" - }, { - token : "string", - regex : "\\${1,2}", - next : "equation" - }], - "equation" : [{ - token : "comment", - regex : "%.*$" - }, { - token : "string", - regex : "\\${1,2}", - next : "start" - }, { - token : "constant.character.escape", - regex : "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" - }, { - token : "error", - regex : "^\\s*$", - next : "start" - }, { - defaultToken : "string" - }], + "start": [{ + token: "comment", + regex: "%.*$" + }, { + token: ["keyword", "lparen", "variable.parameter", "rparen", "lparen", "storage.type", "rparen"], + regex: "(\\\\(?:documentclass|usepackage|input))(?:(\\[)([^\\]]*)(\\]))?({)([^}]*)(})" + }, { + token: ["keyword", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\(?:label|v?ref|cite(?:[^{]*)))(?:({)([^}]*)(}))?" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\begin)({)(verbatim)(})", + next: "verbatim" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\begin)({)(lstlisting)(})", + next: "lstlisting" + }, { + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\(?:begin|end))({)([\\w*]*)(})" + }, { + token: "storage.type", + regex: /\\verb\b\*?/, + next: [{ + token: ["keyword.operator", "string", "keyword.operator"], + regex: "(.)(.*?)(\\1|$)|", + next: "start" + }] + }, { + token: "storage.type", + regex: "\\\\[a-zA-Z]+" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "constant.character.escape", + regex: "\\\\[^a-zA-Z]?" + }, { + token: "string", + regex: "\\${1,2}", + next: "equation" + }], + "equation": [{ + token: "comment", + regex: "%.*$" + }, { + token: "string", + regex: "\\${1,2}", + next: "start" + }, { + token: "constant.character.escape", + regex: "\\\\(?:[^a-zA-Z]|[a-zA-Z]+)" + }, { + token: "error", + regex: "^\\s*$", + next: "start" + }, { + defaultToken: "string" + }], "verbatim": [{ - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\end)({)(verbatim)(})", - next : "start" - }, { - defaultToken : "text" - }], + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\end)({)(verbatim)(})", + next: "start" + }, { + defaultToken: "text" + }], "lstlisting": [{ - token : ["storage.type", "lparen", "variable.parameter", "rparen"], - regex : "(\\\\end)({)(lstlisting)(})", - next : "start" - }, { - defaultToken : "text" - }] + token: ["storage.type", "lparen", "variable.parameter", "rparen"], + regex: "(\\\\end)({)(lstlisting)(})", + next: "start" + }, { + defaultToken: "text" + }] }; - this.normalizeRules(); }; oop.inherits(LatexHighlightRules, TextHighlightRules); - exports.LatexHighlightRules = LatexHighlightRules; }); -define("ace/mode/rdoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/latex_highlight_rules"], function(require, exports, module) { +define("ace/mode/rdoc_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/latex_highlight_rules"], function(require, exports, module){/* + * rdoc_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ "use strict"; - var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var LaTeXHighlightRules = require("./latex_highlight_rules"); - -var RDocHighlightRules = function() { - +var RDocHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "%.*$" + token: "comment", + regex: "%.*$" }, { - token : "text", // non-command - regex : "\\\\[$&%#\\{\\}]" + token: "text", // non-command + regex: "\\\\[$&%#\\{\\}]" }, { - token : "keyword", // command - regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b", - next : "nospell" + token: "keyword", // command + regex: "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b", + next: "nospell" }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + token: "keyword", // command + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" }, { - token : "paren.keyword.operator", - regex : "[[({]" + token: "paren.keyword.operator", + regex: "[[({]" }, { - token : "paren.keyword.operator", - regex : "[\\])}]" + token: "paren.keyword.operator", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell.text", // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell.text", - regex : "\\s+" - }, { - token : "nospell.text", - regex : "\\w+" - } + "nospell": [ + { + token: "comment", + regex: "%.*$", + next: "start" + }, { + token: "nospell.text", // non-command + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", // command + regex: "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b" + }, { + token: "keyword", // command + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next: "start" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])]" + }, { + token: "paren.keyword.operator", + regex: "}", + next: "start" + }, { + token: "nospell.text", + regex: "\\s+" + }, { + token: "nospell.text", + regex: "\\w+" + } ] }; }; - oop.inherits(RDocHighlightRules, TextHighlightRules); - exports.RDocHighlightRules = RDocHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { +define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + * rdoc.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var RDocHighlightRules = require("./rdoc_highlight_rules").RDocHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function(suppressHighlighting) { - this.HighlightRules = RDocHighlightRules; +var Mode = function (suppressHighlighting) { + this.HighlightRules = RDocHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - this.getNextLineIndent = function(state, line, tab) { +(function () { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; this.$id = "ace/mode/rdoc"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/rdoc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-red.js b/vendor/assets/javascripts/ace/mode-red.js index d3534422..3e74c355 100644 --- a/vendor/assets/javascripts/ace/mode-red.js +++ b/vendor/assets/javascripts/ace/mode-red.js @@ -1,281 +1,242 @@ -define("ace/mode/red_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/red_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RedHighlightRules = function() { - - var compoundKeywords = ""; - +var RedHighlightRules = function () { + var compoundKeywords = ""; this.$rules = { - "start" : [ - {token : "keyword.operator", - regex: /\s([\-+%/=<>*]|(?:\*\*\|\/\/|==|>>>?|<>|<<|=>|<=|=\?))(\s|(?=:))/}, - {token : "string.email", regex : /\w[-\w._]*\@\w[-\w._]*/}, - {token : "value.time", regex : /\b\d+:\d+(:\d+)?/}, - {token : "string.url", regex : /\w[-\w_]*\:(\/\/)?\w[-\w._]*(:\d+)?/}, - {token : "value.date", regex : /(\b\d{1,4}[-/]\d{1,2}[-/]\d{1,2}|\d{1,2}[-/]\d{1,2}[-/]\d{1,4})\b/}, - {token : "value.tuple", regex : /\b\d{1,3}\.\d{1,3}\.\d{1,3}(\.\d{1,3}){0,9}/}, - {token : "value.pair", regex: /[+-]?\d+x[-+]?\d+/}, - {token : "value.binary", regex : /\b2#{([01]{8})+}/}, - {token : "value.binary", regex : /\b64#{([\w/=+])+}/}, - {token : "value.binary", regex : /(16)?#{([\dabcdefABCDEF][\dabcdefABCDEF])*}/}, - {token : "value.issue", regex : /#\w[-\w'*.]*/}, - {token : "value.numeric", regex: /[+-]?\d['\d]*(?:\.\d+)?e[-+]?\d{1,3}\%?(?!\w)/}, - {token : "invalid.illegal", regex: /[+-]?\d['\d]*(?:\.\d+)?\%?[a-zA-Z]/}, - {token : "value.numeric", regex: /[+-]?\d['\d]*(?:\.\d+)?\%?(?![a-zA-Z])/}, - {token : "value.character", regex : /#"(\^[-@/_~^"HKLM\[]|.)"/}, - {token : "string.file", regex : /%[-\w\.\/]+/}, - {token : "string.tag", regex : /*]|(?:\*\*\|\/\/|==|>>>?|<>|<<|=>|<=|=\?))(\s|(?=:))/ }, + { token: "string.email", regex: /\w[-\w._]*\@\w[-\w._]*/ }, + { token: "value.time", regex: /\b\d+:\d+(:\d+)?/ }, + { token: "string.url", regex: /\w[-\w_]*\:(\/\/)?\w[-\w._]*(:\d+)?/ }, + { token: "value.date", regex: /(\b\d{1,4}[-/]\d{1,2}[-/]\d{1,2}|\d{1,2}[-/]\d{1,2}[-/]\d{1,4})\b/ }, + { token: "value.tuple", regex: /\b\d{1,3}\.\d{1,3}\.\d{1,3}(\.\d{1,3}){0,9}/ }, + { token: "value.pair", regex: /[+-]?\d+x[-+]?\d+/ }, + { token: "value.binary", regex: /\b2#{([01]{8})+}/ }, + { token: "value.binary", regex: /\b64#{([\w/=+])+}/ }, + { token: "value.binary", regex: /(16)?#{([\dabcdefABCDEF][\dabcdefABCDEF])*}/ }, + { token: "value.issue", regex: /#\w[-\w'*.]*/ }, + { token: "value.numeric", regex: /[+-]?\d['\d]*(?:\.\d+)?e[-+]?\d{1,3}\%?(?!\w)/ }, + { token: "invalid.illegal", regex: /[+-]?\d['\d]*(?:\.\d+)?\%?[a-zA-Z]/ }, + { token: "value.numeric", regex: /[+-]?\d['\d]*(?:\.\d+)?\%?(?![a-zA-Z])/ }, + { token: "value.character", regex: /#"(\^[-@/_~^"HKLM\[]|.)"/ }, + { token: "string.file", regex: /%[-\w\.\/]+/ }, + { token: "string.tag", regex: //, next : "start"}, - {defaultToken : "string.tag"} + "tag": [ + { token: "string.tag", regex: />/, next: "start" }, + { defaultToken: "string.tag" } ], - "comment" : [ - {token : "comment", regex : /}/, next : "start"}, - {defaultToken : "comment"} + "comment": [ + { token: "comment", regex: /}/, next: "start" }, + { defaultToken: "comment" } ] }; }; oop.inherits(RedHighlightRules, TextHighlightRules); - exports.RedHighlightRules = RedHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -288,131 +249,112 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/red",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/red_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/red",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/red_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var RedHighlightRules = require("./red_highlight_rules").RedHighlightRules; var RedFoldMode = require("./folding/cstyle").FoldMode; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var Range = require("../range").Range; - -var Mode = function() { +var Mode = function () { this.HighlightRules = RedHighlightRules; this.foldingRules = new RedFoldMode(); this.$outdent = new MatchingBraceOutdent(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ";"; - this.blockCommentStart = "comment {"; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "comment {", end: "}" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\[\(]\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start") { return ""; } @@ -424,20 +366,23 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/red"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/red"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-redshift.js b/vendor/assets/javascripts/ace/mode-redshift.js new file mode 100644 index 00000000..ae380a82 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-redshift.js @@ -0,0 +1,321 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "variable", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)' + }, { + token: "string", // single line + regex: '"', + next: "string" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: "text", // single quoted strings are not allowed + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "comment", // comments are not allowed, but who cares? + regex: "\\/\\/.*$" + }, { + token: "comment.start", // comments are not allowed, but who cares? + regex: "\\/\\*", + next: "comment" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "punctuation.operator", + regex: /[,]/ + }, { + token: "text", + regex: "\\s+" + } + ], + "string": [ + { + token: "constant.language.escape", + regex: /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ + }, { + token: "string", + regex: '"|$', + next: "start" + }, { + defaultToken: "string" + } + ], + "comment": [ + { + token: "comment.end", // comments are not allowed, but who cares? + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; +}; +oop.inherits(JsonHighlightRules, TextHighlightRules); +exports.JsonHighlightRules = JsonHighlightRules; + +}); + +define("ace/mode/redshift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/json_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsonHighlightRules = require("./json_highlight_rules").JsonHighlightRules; +var RedshiftHighlightRules = function () { + var keywords = ("aes128|aes256|all|allowoverwrite|analyse|analyze|and|any|array|as|asc|authorization|backup|" + + "between|binary|blanksasnull|both|bytedict|bzip2|case|cast|check|collate|column|constraint|create|credentials|" + + "cross|current_date|current_time|current_timestamp|current_user|current_user_id|default|deferrable|deflate|defrag|delta|" + + "delta32k|desc|disable|distinct|do|else|emptyasnull|enable|encode|encrypt|encryption|end|except|explicit|false|for|foreign|" + + "freeze|from|full|globaldict256|globaldict64k|grant|group|gzip|having|identity|ignore|ilike|in|initially|inner|intersect|into|is|" + + "isnull|join|leading|left|like|limit|localtime|localtimestamp|lun|luns|lzo|lzop|minus|mostly13|mostly32|mostly8|natural|new|not|notnull|" + + "null|nulls|off|offline|offset|old|on|only|open|or|order|outer|overlaps|parallel|partition|percent|permissions|placing|primary|raw|readratio|" + + "recover|references|rejectlog|resort|restore|right|select|session_user|similar|some|sysdate|system|table|tag|tdes|text255|text32k|then|timestamp|" + + "to|top|trailing|true|truncatecolumns|union|unique|user|using|verbose|wallet|when|where|with|without"); + var builtinFunctions = ("current_schema|current_schemas|has_database_privilege|has_schema_privilege|has_table_privilege|age|current_time|current_timestamp|localtime|" + + "isfinite|now|ascii|get_bit|get_byte|octet_length|set_bit|set_byte|to_ascii|avg|count|listagg|max|min|stddev_samp|stddev_pop|sum|var_samp|var_pop|" + + "bit_and|bit_or|bool_and|bool_or|avg|count|cume_dist|dense_rank|first_value|last_value|lag|lead|listagg|max|median|min|nth_value|ntile|percent_rank|" + + "percentile_cont|percentile_disc|rank|ratio_to_report|row_number|case|coalesce|decode|greatest|least|nvl|nvl2|nullif|add_months|age|convert_timezone|" + + "current_date|timeofday|current_time|current_timestamp|date_cmp|date_cmp_timestamp|date_part_year|dateadd|datediff|date_part|date_trunc|extract|getdate|" + + "interval_cmp|isfinite|last_day|localtime|localtimestamp|months_between|next_day|now|sysdate|timestamp_cmp|timestamp_cmp_date|trunc|abs|acos|asin|atan|" + + "atan2|cbrt|ceiling|ceil|checksum|cos|cot|degrees|dexp|dlog1|dlog10|exp|floor|ln|log|mod|pi|power|radians|random|round|sin|sign|sqrt|tan|trunc|ascii|" + + "bpcharcmp|btrim|bttext_pattern_cmp|char_length|character_length|charindex|chr|concat|crc32|func_sha1|get_bit|get_byte|initcap|left|right|len|length|" + + "lower|lpad|rpad|ltrim|md5|octet_length|position|quote_ident|quote_literal|regexp_count|regexp_instr|regexp_replace|regexp_substr|repeat|replace|replicate|" + + "reverse|rtrim|set_bit|set_byte|split_part|strpos|strtol|substring|textlen|to_ascii|to_hex|translate|trim|upper|json_array_length|json_extract_array_element_text|" + + "json_extract_path_text|cast|convert|to_char|to_date|to_number|current_database|current_schema|current_schemas|current_user|current_user_id|has_database_privilege|" + + "has_schema_privilege|has_table_privilege|pg_backend_pid|pg_last_copy_count|pg_last_copy_id|pg_last_query_id|pg_last_unload_count|session_user|slice_num|user|version"); + var keywordMapper = this.createKeywordMapper({ + "support.function": builtinFunctions, + "keyword": keywords + }, "identifier", true); + var sqlRules = [{ + token: "string", // single line string -- assume dollar strings if multi-line for now + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "variable.language", // pg identifier + regex: '".*?"' + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_$]*\\b" // TODO - Unicode in identifiers + }, { + token: "keyword.operator", + regex: "!|!!|!~|!~\\*|!~~|!~~\\*|#|##|#<|#<=|#<>|#=|#>|#>=|%|\\&|\\&\\&|\\&<|\\&<\\||\\&>|\\*|\\+|" + + "\\-|/|<|<#>|<\\->|<<|<<=|<<\\||<=|<>|<\\?>|<@|<\\^|=|>|>=|>>|>>=|>\\^|\\?#|\\?\\-|\\?\\-\\||" + + "\\?\\||\\?\\|\\||@|@\\-@|@>|@@|@@@|\\^|\\||\\|\\&>|\\|/|\\|>>|\\|\\||\\|\\|/|~|~\\*|~<=~|~<~|" + + "~=|~>=~|~>~|~~|~~\\*" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + } + ]; + this.$rules = { + "start": [{ + token: "comment", + regex: "--.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi-line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "keyword.statementBegin", + regex: "^[a-zA-Z]+", // Could enumerate starting keywords but this allows things to work when new statements are added. + next: "statement" + }, { + token: "support.buildin", // psql directive + regex: "^\\\\[\\S]+.*$" + } + ], + "statement": [{ + token: "comment", + regex: "--.*$" + }, { + token: "comment", // multi-line comment + regex: "\\/\\*", + next: "commentStatement" + }, { + token: "statementEnd", + regex: ";", + next: "start" + }, { + token: "string", + regex: "\\$json\\$", + next: "json-start" + }, { + token: "string", + regex: "\\$[\\w_0-9]*\\$$", // dollar quote at the end of a line + next: "dollarSql" + }, { + token: "string", + regex: "\\$[\\w_0-9]*\\$", + next: "dollarStatementString" + } + ].concat(sqlRules), + "dollarSql": [{ + token: "comment", + regex: "--.*$" + }, { + token: "comment", // multi-line comment + regex: "\\/\\*", + next: "commentDollarSql" + }, { + token: "string", // end quoting with dollar at the start of a line + regex: "^\\$[\\w_0-9]*\\$", + next: "statement" + }, { + token: "string", + regex: "\\$[\\w_0-9]*\\$", + next: "dollarSqlString" + } + ].concat(sqlRules), + "comment": [{ + token: "comment", // closing comment + regex: ".*?\\*\\/", + next: "start" + }, { + token: "comment", // comment spanning whole line + regex: ".+" + } + ], + "commentStatement": [{ + token: "comment", // closing comment + regex: ".*?\\*\\/", + next: "statement" + }, { + token: "comment", // comment spanning whole line + regex: ".+" + } + ], + "commentDollarSql": [{ + token: "comment", // closing comment + regex: ".*?\\*\\/", + next: "dollarSql" + }, { + token: "comment", // comment spanning whole line + regex: ".+" + } + ], + "dollarStatementString": [{ + token: "string", // closing dollarstring + regex: ".*?\\$[\\w_0-9]*\\$", + next: "statement" + }, { + token: "string", // dollarstring spanning whole line + regex: ".+" + } + ], + "dollarSqlString": [{ + token: "string", // closing dollarstring + regex: ".*?\\$[\\w_0-9]*\\$", + next: "dollarSql" + }, { + token: "string", // dollarstring spanning whole line + regex: ".+" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.embedRules(JsonHighlightRules, "json-", [{ token: "string", regex: "\\$json\\$", next: "statement" }]); +}; +oop.inherits(RedshiftHighlightRules, TextHighlightRules); +exports.RedshiftHighlightRules = RedshiftHighlightRules; + +}); + +define("ace/mode/redshift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/redshift_highlight_rules"], function(require, exports, module){var oop = require("../lib/oop"); +var TextMode = require("../mode/text").Mode; +var RedshiftHighlightRules = require("./redshift_highlight_rules").RedshiftHighlightRules; +var Mode = function () { + this.HighlightRules = RedshiftHighlightRules; + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "--"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + if (state == "start" || state == "keyword.statementEnd") { + return ""; + } + else { + return this.$getIndent(line); // Keep whatever indent the previous line has + } + }; + this.$id = "ace/mode/redshift"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/redshift"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-rhtml.js b/vendor/assets/javascripts/ace/mode-rhtml.js index 005608fd..761f2fd9 100644 --- a/vendor/assets/javascripts/ace/mode-rhtml.js +++ b/vendor/assets/javascripts/ace/mode-rhtml.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,361 +2225,466 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * tex_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ "use strict"; - var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - +var TexHighlightRules = function (textClass) { if (!textClass) textClass = "text"; - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "%.*$" + token: "comment", + regex: "%.*$" }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" + token: textClass, // non-command + regex: "\\\\[$&%#\\{\\}]" }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" + token: "keyword", // command + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", + next: "nospell" }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + token: "keyword", // command + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" }, { - token : "paren.keyword.operator", - regex : "[[({]" + token: "paren.keyword.operator", + regex: "[[({]" }, { - token : "paren.keyword.operator", - regex : "[\\])}]" + token: "paren.keyword.operator", + regex: "[\\])}]" }, { - token : textClass, - regex : "\\s+" + token: textClass, + regex: "\\s+" } ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } + "nospell": [ + { + token: "comment", + regex: "%.*$", + next: "start" + }, { + token: "nospell." + textClass, // non-command + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", // command + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" + }, { + token: "keyword", // command + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next: "start" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])]" + }, { + token: "paren.keyword.operator", + regex: "}", + next: "start" + }, { + token: "nospell." + textClass, + regex: "\\s+" + }, { + token: "nospell." + textClass, + regex: "\\w+" + } ] }; }; - oop.inherits(TexHighlightRules, TextHighlightRules); - exports.TexHighlightRules = TexHighlightRules; + }); -define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"], function(require, exports, module) -{ - - var oop = require("../lib/oop"); - var lang = require("../lib/lang"); - var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; - - var RHighlightRules = function() - { - - var keywords = lang.arrayToMap( - ("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") - .split("|") - ); - - var buildinConstants = lang.arrayToMap( - ("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + - "NA_complex_").split("|") - ); - - this.$rules = { - "start" : [ +define("ace/mode/r_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules"], function(require, exports, module){/* + * r_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; +var RHighlightRules = function () { + var keywords = lang.arrayToMap(("function|if|in|break|next|repeat|else|for|return|switch|while|try|tryCatch|stop|warning|require|library|attach|detach|source|setMethod|setGeneric|setGroupGeneric|setClass") + .split("|")); + var buildinConstants = lang.arrayToMap(("NULL|NA|TRUE|FALSE|T|F|Inf|NaN|NA_integer_|NA_real_|NA_character_|" + + "NA_complex_").split("|")); + this.$rules = { + "start": [ { - token : "comment.sectionhead", - regex : "#+(?!').*(?:----|====|####)\\s*$" + token: "comment.sectionhead", + regex: "#+(?!').*(?:----|====|####)\\s*$" }, { - token : "comment", - regex : "#+'", - next : "rd-start" + token: "comment", + regex: "#+'", + next: "rd-start" }, { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "string", // multi line string start - regex : '["]', - next : "qqstring" + token: "string", // multi line string start + regex: '["]', + next: "qqstring" }, { - token : "string", // multi line string start - regex : "[']", - next : "qstring" + token: "string", // multi line string start + regex: "[']", + next: "qstring" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+[Li]?\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+[Li]?\\b" }, { - token : "constant.numeric", // explicit integer - regex : "\\d+L\\b" + token: "constant.numeric", // explicit integer + regex: "\\d+L\\b" }, { - token : "constant.numeric", // number - regex : "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" + token: "constant.numeric", // number + regex: "\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b" }, { - token : "constant.numeric", // number with leading decimal - regex : "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" + token: "constant.numeric", // number with leading decimal + regex: "\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b" }, { - token : "constant.language.boolean", - regex : "(?:TRUE|FALSE|T|F)\\b" + token: "constant.language.boolean", + regex: "(?:TRUE|FALSE|T|F)\\b" }, { - token : "identifier", - regex : "`.*?`" + token: "identifier", + regex: "`.*?`" }, { - onMatch : function(value) { - if (keywords[value]) - return "keyword"; - else if (buildinConstants[value]) - return "constant.language"; - else if (value == '...' || value.match(/^\.\.\d+$/)) - return "variable.language"; - else - return "identifier"; - }, - regex : "[a-zA-Z.][a-zA-Z0-9._]*\\b" + onMatch: function (value) { + if (keywords[value]) + return "keyword"; + else if (buildinConstants[value]) + return "constant.language"; + else if (value == '...' || value.match(/^\.\.\d+$/)) + return "variable.language"; + else + return "identifier"; + }, + regex: "[a-zA-Z.][a-zA-Z0-9._]*\\b" }, { - token : "keyword.operator", - regex : "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" + token: "keyword.operator", + regex: "%%|>=|<=|==|!=|\\->|<\\-|\\|\\||&&|=|\\+|\\-|\\*|/|\\^|>|<|!|&|\\||~|\\$|:" }, { - token : "keyword.operator", // infix operators - regex : "%.*?%" + token: "keyword.operator", // infix operators + regex: "%.*?%" }, { - token : "paren.keyword.operator", - regex : "[[({]" + token: "paren.keyword.operator", + regex: "[[({]" }, { - token : "paren.keyword.operator", - regex : "[\\])}]" + token: "paren.keyword.operator", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } - ], - "qqstring" : [ + ], + "qqstring": [ { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } - ], - "qstring" : [ + ], + "qstring": [ { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } - ] - }; + ] + }; + var rdRules = new TexHighlightRules("comment").getRules(); + for (var i = 0; i < rdRules["start"].length; i++) { + rdRules["start"][i].token += ".virtual-comment"; + } + this.addRules(rdRules, "rd-"); + this.$rules["rd-start"].unshift({ + token: "text", + regex: "^", + next: "start" + }); + this.$rules["rd-start"].unshift({ + token: "keyword", + regex: "@(?!@)[^ ]*" + }); + this.$rules["rd-start"].unshift({ + token: "comment", + regex: "@@" + }); + this.$rules["rd-start"].push({ + token: "comment", + regex: "[^%\\\\[({\\])}]+" + }); +}; +oop.inherits(RHighlightRules, TextHighlightRules); +exports.RHighlightRules = RHighlightRules; - var rdRules = new TexHighlightRules("comment").getRules(); - for (var i = 0; i < rdRules["start"].length; i++) { - rdRules["start"][i].token += ".virtual-comment"; - } - - this.addRules(rdRules, "rd-"); - this.$rules["rd-start"].unshift({ - token: "text", - regex: "^", - next: "start" - }); - this.$rules["rd-start"].unshift({ - token : "keyword", - regex : "@(?!@)[^ ]*" - }); - this.$rules["rd-start"].unshift({ - token : "comment", - regex : "@@" - }); - this.$rules["rd-start"].push({ - token : "comment", - regex : "[^%\\\\[({\\])}]+" - }); - }; - - oop.inherits(RHighlightRules, TextHighlightRules); - - exports.RHighlightRules = RHighlightRules; }); -define("ace/mode/rhtml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/r_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/rhtml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/r_highlight_rules","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * rhtml_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ "use strict"; - var oop = require("../lib/oop"); var RHighlightRules = require("./r_highlight_rules").RHighlightRules; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RHtmlHighlightRules = function() { +var RHtmlHighlightRules = function () { HtmlHighlightRules.call(this); - this.$rules["start"].unshift({ token: "support.function.codebegin", regex: "^<" + "!--\\s*begin.rcode\\s*(?:.*)", next: "r-start" }); - this.embedRules(RHighlightRules, "r-", [{ - token: "support.function.codeend", - regex: "^\\s*end.rcode\\s*-->", - next: "start" - }], ["start"]); - + token: "support.function.codeend", + regex: "^\\s*end.rcode\\s*-->", + next: "start" + }], ["start"]); this.normalizeRules(); }; oop.inherits(RHtmlHighlightRules, TextHighlightRules); - exports.RHtmlHighlightRules = RHtmlHighlightRules; + }); -define("ace/mode/rhtml",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/rhtml_highlight_rules"], function(require, exports, module) { +define("ace/mode/rhtml",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/rhtml_highlight_rules"], function(require, exports, module){/* + * rhtml.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + */ "use strict"; - var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; - var RHtmlHighlightRules = require("./rhtml_highlight_rules").RHtmlHighlightRules; - -var Mode = function(doc, session) { - HtmlMode.call(this); - this.$session = session; - this.HighlightRules = RHtmlHighlightRules; +var Mode = function (doc, session) { + HtmlMode.call(this); + this.$session = session; + this.HighlightRules = RHtmlHighlightRules; }; oop.inherits(Mode, HtmlMode); - -(function() { - this.insertChunkInfo = { - value: "\n", - position: {row: 0, column: 15} - }; - - this.getLanguageMode = function(position) - { - return this.$session.getState(position.row).match(/^r-/) ? 'R' : 'HTML'; - }; - +(function () { + this.insertChunkInfo = { + value: "\n", + position: { row: 0, column: 15 } + }; + this.getLanguageMode = function (position) { + return this.$session.getState(position.row).match(/^r-/) ? 'R' : 'HTML'; + }; this.$id = "ace/mode/rhtml"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/rhtml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-robot.js b/vendor/assets/javascripts/ace/mode-robot.js new file mode 100644 index 00000000..26f6cdf8 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-robot.js @@ -0,0 +1,168 @@ +define("ace/mode/robot_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){'use strict'; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var RobotHighlightRules = function () { + var builtinConstantsRegex = new RegExp(/\$\{CURDIR\}|\$\{TEMPDIR\}|\$\{EXECDIR\}|\$\{\/\}|\$\{\:\}|\$\{\\n\}|\$\{true\}|\$\{false\}|\$\{none\}|\$\{null\}|\$\{space(?:\s*\*\s+[0-9]+)?\}|\$\{empty\}|&\{empty\}|@\{empty\}|\$\{TEST NAME\}|@\{TEST[\s_]TAGS\}|\$\{TEST[\s_]DOCUMENTATION\}|\$\{TEST[\s_]STATUS\}|\$\{TEST[\s_]MESSAGE\}|\$\{PREV[\s_]TEST[\s_]NAME\}|\$\{PREV[\s_]TEST[\s_]STATUS\}|\$\{PREV[\s_]TEST[\s_]MESSAGE\}|\$\{SUITE[\s_]NAME\}|\$\{SUITE[\s_]SOURCE\}|\$\{SUITE[\s_]DOCUMENTATION\}|&\{SUITE[\s_]METADATA\}|\$\{SUITE[\s_]STATUS\}|\$\{SUITE[\s_]MESSAGE\}|\$\{KEYWORD[\s_]STATUS\}|\$\{KEYWORD[\s_]MESSAGE\}|\$\{LOG[\s_]LEVEL\}|\$\{OUTPUT[\s_]FILE\}|\$\{LOG[\s_]FILE\}|\$\{REPORT[\s_]FILE\}|\$\{DEBUG[\s_]FILE\}|\$\{OUTPUT[\s_]DIR\}/); + this.$rules = { + "start": [{ + token: "string.robot.header", + regex: /^\*{3}\s+(?:settings?|metadata|(?:user )?keywords?|test ?cases?|tasks?|variables?)/, + caseInsensitive: true, + push: [{ + token: "string.robot.header", + regex: /$/, + next: "pop" + }, { + defaultToken: "string.robot.header" + }], + comment: "start of a table" + }, { + token: "comment.robot", + regex: /(?:^|\s{2,}|\t|\|\s{1,})(?=[^\\])#/, + push: [{ + token: "comment.robot", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.robot" + }] + }, { + token: "comment", + regex: /^\s*\[?Documentation\]?/, + caseInsensitive: true, + push: [{ + token: "comment", + regex: /^(?!\s*\.\.\.)/, + next: "pop" + }, { + defaultToken: "comment" + }] + }, { + token: "storage.type.method.robot", + regex: /\[(?:Arguments|Setup|Teardown|Precondition|Postcondition|Template|Return|Timeout)\]/, + caseInsensitive: true, + comment: "testcase settings" + }, { + token: "storage.type.method.robot", + regex: /\[Tags\]/, + caseInsensitive: true, + push: [{ + token: "storage.type.method.robot", + regex: /^(?!\s*\.\.\.)/, + next: "pop" + }, { + token: "comment", + regex: /^\s*\.\.\./ + }, { + defaultToken: "storage.type.method.robot" + }], + comment: "test tags" + }, { + token: "constant.language", + regex: builtinConstantsRegex, + caseInsensitive: true + }, { + token: "entity.name.variable.wrapper", + regex: /[$@&%]\{\{?/, + push: [{ + token: "entity.name.variable.wrapper", + regex: /\}\}?(\s?=)?/, + next: "pop" + }, { + include: "$self" + }, { + token: "entity.name.variable", + regex: /./ + }, { + defaultToken: "entity.name.variable" + }] + }, { + token: "keyword.control.robot", + regex: /^[^\s\t*$|]+|(?=^\|)\s+[^\s\t*$|]+/, + push: [{ + token: "keyword.control.robot", + regex: /(?=\s{2})|\t|$|\s+(?=\|)/, + next: "pop" + }, { + defaultToken: "keyword.control.robot" + }] + }, { + token: "constant.numeric.robot", + regex: /\b[0-9]+(?:\.[0-9]+)?\b/ + }, { + token: "keyword", + regex: /\s{2,}(for|in range|in|end|else if|if|else|with name)(\s{2,}|$)/, + caseInsensitive: true + }, { + token: "storage.type.function", + regex: /^(?:\s{2,}\s+)[^ \t*$@&%[.|]+/, + push: [{ + token: "storage.type.function", + regex: /(?=\s{2})|\t|$|\s+(?=\|)/, + next: "pop" + }, { + defaultToken: "storage.type.function" + }] + }] + }; + this.normalizeRules(); +}; +RobotHighlightRules.metadata = { + fileTypes: ['robot'], + name: 'Robot', + scopeName: 'source.robot' +}; +oop.inherits(RobotHighlightRules, TextHighlightRules); +exports.RobotHighlightRules = RobotHighlightRules; + +}); + +define("ace/mode/folding/pythonic",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (markers) { + this.foldingStartMarker = new RegExp("([\\[{])(?:\\s*)$|(" + markers + ")(?:\\s*)(?:#.*)?$"); +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var match = line.match(this.foldingStartMarker); + if (match) { + if (match[1]) + return this.openingBracketBlock(session, match[1], row, match.index); + if (match[2]) + return this.indentationBlock(session, row, match.index + match[2].length); + return this.indentationBlock(session, row); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/robot",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/robot_highlight_rules","ace/mode/folding/pythonic"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RobotHighlightRules = require("./robot_highlight_rules").RobotHighlightRules; +var FoldMode = require("./folding/pythonic").FoldMode; +var Mode = function () { + this.HighlightRules = RobotHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$id = "ace/mode/robot"; + this.snippetFileId = "ace/snippets/robot"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/robot"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-rst.js b/vendor/assets/javascripts/ace/mode-rst.js index c6a02130..b831bd35 100644 --- a/vendor/assets/javascripts/ace/mode-rst.js +++ b/vendor/assets/javascripts/ace/mode-rst.js @@ -1,249 +1,245 @@ -define("ace/mode/rst_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/rst_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var RSTHighlightRules = function() { - - var tokens = { - title: "markup.heading", - list: "markup.heading", - table: "constant", - directive: "keyword.operator", - entity: "string", - link: "markup.underline.list", - bold: "markup.bold", - italic: "markup.italic", - literal: "support.function", - comment: "comment" - }; - - var startStringPrefix = "(^|\\s|[\"'(<\\[{\\-/:])"; - var endStringSuffix = "(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))"; - - this.$rules = { - "start": [ - { - token : tokens.title, - regex : "(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)" - }, - { - token : ["text", tokens.directive, tokens.literal], - regex : "(^\\s*\\.\\. )([^: ]+::)(.*$)", - next : "codeblock" - }, - { - token : tokens.directive, - regex : "::$", - next : "codeblock" - }, - { - token : [tokens.entity, tokens.link], - regex : "(^\\.\\. _[^:]+:)(.*$)" - }, - { - token : [tokens.entity, tokens.link], - regex : "(^__ )(https?://.*$)" - }, - { - token : tokens.entity, - regex : "^\\.\\. \\[[^\\]]+\\] " - }, - { - token : tokens.comment, - regex : "^\\.\\. .*$", - next : "comment" - }, - { - token : tokens.list, - regex : "^\\s*[\\*\\+-] " - }, - { - token : tokens.list, - regex : "^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. " - }, - { - token : tokens.list, - regex : "^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) " - }, - { - token : tokens.table, - regex : "^={2,}(?: +={2,})+$" - }, - { - token : tokens.table, - regex : "^\\+-{2,}(?:\\+-{2,})+\\+$" - }, - { - token : tokens.table, - regex : "^\\+={2,}(?:\\+={2,})+\\+$" - }, - { - token : ["text", tokens.literal], - regex : startStringPrefix + "(``)(?=\\S)", - next : "code" - }, - { - token : ["text", tokens.bold], - regex : startStringPrefix + "(\\*\\*)(?=\\S)", - next : "bold" - }, - { - token : ["text", tokens.italic], - regex : startStringPrefix + "(\\*)(?=\\S)", - next : "italic" - }, - { - token : tokens.entity, - regex : "\\|[\\w\\-]+?\\|" - }, - { - token : tokens.entity, - regex : ":[\\w-:]+:`\\S", - next : "entity" - }, - { - token : ["text", tokens.entity], - regex : startStringPrefix + "(_`)(?=\\S)", - next : "entity" - }, - { - token : tokens.entity, - regex : "_[A-Za-z0-9\\-]+?" - }, - { - token : ["text", tokens.link], - regex : startStringPrefix + "(`)(?=\\S)", - next : "link" - }, - { - token : tokens.link, - regex : "[A-Za-z0-9\\-]+?__?" - }, - { - token : tokens.link, - regex : "\\[[^\\]]+?\\]_" - }, - { - token : tokens.link, - regex : "https?://\\S+" - }, - { - token : tokens.table, - regex : "\\|" - } - ], - "codeblock": [ - { - token : tokens.literal, - regex : "^ +.+$", - next : "codeblock" - }, - { - token : tokens.literal, - regex : '^$', - next: "codeblock" - }, - { - token : "empty", - regex : "", - next : "start" - } - ], - "code": [ - { - token : tokens.literal, - regex : "\\S``" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.literal - } - ], - "bold": [ - { - token : tokens.bold, - regex : "\\S\\*\\*" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.bold - } - ], - "italic": [ - { - token : tokens.italic, - regex : "\\S\\*" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.italic - } - ], - "entity": [ - { - token : tokens.entity, - regex : "\\S`" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.entity - } - ], - "link": [ - { - token : tokens.link, - regex : "\\S`__?" + endStringSuffix, - next : "start" - }, - { - defaultToken: tokens.link - } - ], - "comment": [ - { - token : tokens.comment, - regex : "^ +.+$", - next : "comment" - }, - { - token : tokens.comment, - regex : '^$', - next: "comment" - }, - { - token : "empty", - regex : "", - next : "start" - } - ] - }; +var RSTHighlightRules = function () { + var tokens = { + title: "markup.heading", + list: "markup.heading", + table: "constant", + directive: "keyword.operator", + entity: "string", + link: "markup.underline.list", + bold: "markup.bold", + italic: "markup.italic", + literal: "support.function", + comment: "comment" + }; + var startStringPrefix = "(^|\\s|[\"'(<\\[{\\-/:])"; + var endStringSuffix = "(?:$|(?=\\s|[\\\\.,;!?\\-/:\"')>\\]}]))"; + this.$rules = { + "start": [ + { + token: tokens.title, + regex: "(^)([\\=\\-`:\\.'\"~\\^_\\*\\+#])(\\2{2,}\\s*$)" + }, + { + token: ["text", tokens.directive, tokens.literal], + regex: "(^\\s*\\.\\. )([^: ]+::)(.*$)", + next: "codeblock" + }, + { + token: tokens.directive, + regex: "::$", + next: "codeblock" + }, + { + token: [tokens.entity, tokens.link], + regex: "(^\\.\\. _[^:]+:)(.*$)" + }, + { + token: [tokens.entity, tokens.link], + regex: "(^__ )(https?://.*$)" + }, + { + token: tokens.entity, + regex: "^\\.\\. \\[[^\\]]+\\] " + }, + { + token: tokens.comment, + regex: "^\\.\\. .*$", + next: "comment" + }, + { + token: tokens.list, + regex: "^\\s*[\\*\\+-] " + }, + { + token: tokens.list, + regex: "^\\s*(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\. " + }, + { + token: tokens.list, + regex: "^\\s*\\(?(?:[A-Za-z]|[0-9]+|[ivxlcdmIVXLCDM]+)\\) " + }, + { + token: tokens.table, + regex: "^={2,}(?: +={2,})+$" + }, + { + token: tokens.table, + regex: "^\\+-{2,}(?:\\+-{2,})+\\+$" + }, + { + token: tokens.table, + regex: "^\\+={2,}(?:\\+={2,})+\\+$" + }, + { + token: ["text", tokens.literal], + regex: startStringPrefix + "(``)(?=\\S)", + next: "code" + }, + { + token: ["text", tokens.bold], + regex: startStringPrefix + "(\\*\\*)(?=\\S)", + next: "bold" + }, + { + token: ["text", tokens.italic], + regex: startStringPrefix + "(\\*)(?=\\S)", + next: "italic" + }, + { + token: tokens.entity, + regex: "\\|[\\w\\-]+?\\|" + }, + { + token: tokens.entity, + regex: ":[\\w-:]+:`\\S", + next: "entity" + }, + { + token: ["text", tokens.entity], + regex: startStringPrefix + "(_`)(?=\\S)", + next: "entity" + }, + { + token: tokens.entity, + regex: "_[A-Za-z0-9\\-]+?" + }, + { + token: ["text", tokens.link], + regex: startStringPrefix + "(`)(?=\\S)", + next: "link" + }, + { + token: tokens.link, + regex: "[A-Za-z0-9\\-]+?__?" + }, + { + token: tokens.link, + regex: "\\[[^\\]]+?\\]_" + }, + { + token: tokens.link, + regex: "https?://\\S+" + }, + { + token: tokens.table, + regex: "\\|" + } + ], + "codeblock": [ + { + token: tokens.literal, + regex: "^ +.+$", + next: "codeblock" + }, + { + token: tokens.literal, + regex: '^$', + next: "codeblock" + }, + { + token: "empty", + regex: "", + next: "start" + } + ], + "code": [ + { + token: tokens.literal, + regex: "\\S``" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.literal + } + ], + "bold": [ + { + token: tokens.bold, + regex: "\\S\\*\\*" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.bold + } + ], + "italic": [ + { + token: tokens.italic, + regex: "\\S\\*" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.italic + } + ], + "entity": [ + { + token: tokens.entity, + regex: "\\S`" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.entity + } + ], + "link": [ + { + token: tokens.link, + regex: "\\S`__?" + endStringSuffix, + next: "start" + }, + { + defaultToken: tokens.link + } + ], + "comment": [ + { + token: tokens.comment, + regex: "^ +.+$", + next: "comment" + }, + { + token: tokens.comment, + regex: '^$', + next: "comment" + }, + { + token: "empty", + regex: "", + next: "start" + } + ] + }; }; oop.inherits(RSTHighlightRules, TextHighlightRules); - exports.RSTHighlightRules = RSTHighlightRules; + }); -define("ace/mode/rst",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rst_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/rst",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rst_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var RSTHighlightRules = require("./rst_highlight_rules").RSTHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = RSTHighlightRules; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.type = "text"; - this.$id = "ace/mode/rst"; + this.snippetFileId = "ace/snippets/rst"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/rst"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-ruby.js b/vendor/assets/javascripts/ace/mode-ruby.js index 70d6e2b1..70dbeaad 100644 --- a/vendor/assets/javascripts/ace/mode-ruby.js +++ b/vendor/assets/javascripts/ace/mode-ruby.js @@ -1,47 +1,56 @@ -define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var constantOtherSymbol = exports.constantOtherSymbol = { - token : "constant.other.symbol.ruby", // symbol - regex : "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" + token: "constant.other.symbol.ruby", // symbol + regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" }; - -var qString = exports.qString = { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" +exports.qString = { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }; - -var qqString = exports.qqString = { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' +exports.qqString = { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }; - -var tString = exports.tString = { - token : "string", // backtick string - regex : "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" +exports.tString = { + token: "string", // backtick string + regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" }; - var constantNumericHex = exports.constantNumericHex = { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" +}; +var constantNumericBinary = exports.constantNumericBinary = { + token: "constant.numeric", + regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ +}; +var constantNumericDecimal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ +}; +var constantNumericOctal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ +}; +var constantNumericRational = exports.constantNumericRational = { + token: "constant.numeric", //rational + complex + regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ +}; +var constantNumericComplex = exports.constantNumericComplex = { + token: "constant.numeric", //simple complex numbers + regex: /\b([\d]i)\b/ }; - var constantNumericFloat = exports.constantNumericFloat = { - token : "constant.numeric", // float - regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + complex + regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" }; - var instanceVariable = exports.instanceVariable = { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" + token: "variable.instance", // instance variable + regex: "@{1,2}[a-zA-Z_\\d]+" }; - -var RubyHighlightRules = function() { - - var builtinFunctions = ( - "abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + +var RubyHighlightRules = function () { + var builtinFunctions = ("abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + @@ -70,25 +79,15 @@ var RubyHighlightRules = function() { "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + - "has_many|has_one|belongs_to|has_and_belongs_to_many" - ); - - var keywords = ( - "alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + + "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + + "private_class_method|remove_method|undef_method"); + var keywords = ("alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + - "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield" - ); - - var buildinConstants = ( - "true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + - "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING" - ); - - var builtinVariables = ( - "$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + - "$!|root_url|flash|session|cookies|params|request|response|logger|self" - ); - + "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"); + var buildinConstants = ("true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + + "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"); + var builtinVariables = ("$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + + "$!|root_url|flash|session|cookies|params|request|response|logger|self"); var keywordMapper = this.$keywords = this.createKeywordMapper({ "keyword": keywords, "constant.language": buildinConstants, @@ -96,381 +95,795 @@ var RubyHighlightRules = function() { "support.function": builtinFunctions, "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? }, "identifier"); - + var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; + var closeParen = { + "(": ")", + "[": "]", + "{": "}", + "<": ">", + "^": "^", + "|": "|", + "%": "%" + }; this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "comment", // multi line comment - regex : "^=begin(?:$|\\s.*$)", - next : "comment" + token: "comment.multiline", // multi line comment + regex: "^=begin(?=$|\\s.*$)", + next: "comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: /[/](?=.*\/)/, + next: "regex" }, - [{ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren.lparen"; + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(")/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(')/, + push: [{ + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "string.end", + regex: /'/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithoutInterpolation"; + return this.token; } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1) - return "paren.end"; + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithInterpolation"; + return this.token; } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.start", - regex : /"/, - push : [{ - token : "constant.language.escape", - regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ }, { - token : "paren.start", - regex : /#{/, - push : "start" + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithoutInterpolation"; + return this.token; + } }, { - token : "string.end", - regex : /"/, - next : "pop" + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithInterpolation"; + return this.token; + } }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : /\\(?:[nsrtvfbae'"\\]|c.|C-.|M-.(?:\\C-.)?|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4})/ - }, { - token : "paren.start", - regex : /#{/, - push : "start" - }, { - token : "string.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : /'/, - push : [{ - token : "constant.language.escape", - regex : /\\['\\]/ - }, { - token : "string.end", - regex : /'/, - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "string.regexp", + regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "rState"; + return this.token; + } + }], { - token : "text", // namespaces aren't symbols - regex : "::" - }, { - token : "variable.instance", // instance variable - regex : "@{1,2}[a-zA-Z_\\d]+" - }, { - token : "support.class", // class name - regex : "[A-Z][a-zA-Z_\\d]+" + token: "punctuation", // namespaces aren't symbols + regex: "::" }, - + instanceVariable, + { + token: "variable.global", // global variable + regex: "[$][a-zA-Z_\\d]+" + }, { + token: "support.class", // class name + regex: "[A-Z][a-zA-Z_\\d]*" + }, { + token: ["punctuation.operator", "support.function"], + regex: /(\.)([a-zA-Z_\d]+)(?=\()/ + }, { + token: ["punctuation.operator", "identifier"], + regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ + }, { + token: "string.character", + regex: "\\B\\?(?:" + escapedChars + "|\\S)" + }, { + token: "punctuation.operator", + regex: /\?(?=.+:)/ + }, + constantNumericRational, + constantNumericComplex, constantOtherSymbol, constantNumericHex, constantNumericFloat, - + constantNumericBinary, + constantNumericDecimal, + constantNumericOctal, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "punctuation.separator.key-value", - regex : "=>" + token: "punctuation.separator.key-value", + regex: "=>" }, { stateName: "heredoc", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + onMatch: function (value, currentState, stack) { + var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; var tokens = value.split(this.splitRegex); stack.push(next, tokens[3]); return [ - {type:"constant", value: tokens[1]}, - {type:"string", value: tokens[2]}, - {type:"support.class", value: tokens[3]}, - {type:"string", value: tokens[4]} + { type: "constant", value: tokens[1] }, + { type: "string", value: tokens[2] }, + { type: "support.class", value: tokens[3] }, + { type: "string", value: tokens[4] } ]; }, - regex : "(<<-?)(['\"`]?)([\\w]+)(['\"`]?)", + regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", rules: { heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], indentedHeredoc: [{ - token: "string", - regex: "^ +" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] + token: "string", + regex: "^ +" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] } }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { + regex: "$", + token: "empty", + next: function (currentState, stack) { if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") return stack[0]; return currentState; } }, { - token : "string.character", - regex : "\\B\\?." + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.rparen", + regex: "[\\])}]", + onMatch: function (value, currentState, stack) { + this.next = ''; + if (value == "}" && stack.length > 1 && stack[1] != "start") { + stack.shift(); + this.next = stack.shift(); + } + return this.token; + } }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "text", + regex: "\\s+" }, { - token : "text", - regex : "\\s+" + token: "punctuation.operator", + regex: /[?:,;.]/ } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "^=end(?:$|\\s.*$)", - next : "start" + token: "comment.multiline", // closing comment + regex: "^=end(?=$|\\s.*$)", + next: "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + token: "comment", // comment spanning whole line + regex: ".+" + } + ], + "qStateWithInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "qStateWithoutInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "sStateWithoutInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "sStateWithInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "rState": [{ + token: "string.regexp", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.language.escape"; + } + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.regexp", + regex: /\// + }, { + token: "string.regexp", + regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { + if (stack.length && val[0] === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.language.escape"; + } + }, + { include: "regex" }, + { + defaultToken: "string.regexp" + }], + "regex": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "constant.language.escape", + regex: /\\[AGbBzZ]/ + }, { + token: "constant.language.escape", + regex: /\\g<[a-zA-Z0-9]*>/ + }, { + token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], + regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ + }, { + token: ["constant.language.escape", "invalid", "constant.language.escape"], + regex: /(\\p{\^?)([^/]*)(})/ + }, { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: /[/][imxouesn]*/, + next: "start" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "regexp.keyword", + regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + push: "regex_character_class" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: /&?&?\[\^?/, + push: "regex_character_class" + }, { + token: "constant.language.escape", + regex: "]", + next: "pop" + }, { + token: "constant.language.escape", + regex: "-" + }, { + defaultToken: "string.regexp.characterclass" } ] }; - this.normalizeRules(); }; - oop.inherits(RubyHighlightRules, TextHighlightRules); - exports.RubyHighlightRules = RubyHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var TokenIterator = require("../../token_iterator").TokenIterator; +var FoldMode = exports.FoldMode = function () { +}; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - - var re = /\S/; - var line = session.getLine(row); - var startLevel = line.search(re); - if (startLevel == -1 || line[startLevel] != "#") - return; - - var startColumn = line.length; - var maxRow = session.getLength(); - var startRow = row; - var endRow = row; - - while (++row < maxRow) { - line = session.getLine(row); - var level = line.search(re); - - if (level == -1) - continue; - - if (line[level] != "#") - break; - - endRow = row; - } - - if (endRow > startRow) { - var endColumn = session.getLine(endRow).length; - return new Range(startRow, startColumn, endRow, endColumn); - } +(function () { + this.indentKeywords = { + "class": 1, + "def": 1, + "module": 1, + "do": 1, + "unless": 1, + "if": 1, + "while": 1, + "for": 1, + "until": 1, + "begin": 1, + "else": 0, + "elsif": 0, + "rescue": 0, + "ensure": 0, + "when": 0, + "end": -1, + "case": 1, + "=begin": 1, + "=end": -1 }; - this.getFoldWidget = function(session, foldStyle, row) { + this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; + this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - var indent = line.search(/\S/); - var next = session.getLine(row + 1); - var prev = session.getLine(row - 1); - var prevIndent = prev.search(/\S/); - var nextIndent = next.search(/\S/); - - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; - return ""; - } - if (prevIndent == -1) { - if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { - session.foldWidgets[row - 1] = ""; - session.foldWidgets[row + 1] = ""; + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart && !isEnd) { + var match = line.match(this.foldingStartMarker); + if (match[1]) { + if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { + if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { + return; + } + if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { + return; + } + } + if (match[1] == "when") { + if (/\sthen\s/.test(line) === true) { + return; + } + } + if (session.getTokenAt(row, match.index + 2).type === "keyword") + return "start"; + } + else if (match[3]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "start"; + } + else { return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { - if (session.getLine(row - 2).search(/\S/) == -1) { - session.foldWidgets[row - 1] = "start"; - session.foldWidgets[row + 1] = ""; - return ""; + } + if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) + return ""; + var match = line.match(this.foldingStopMarker); + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return "end"; + } + else if (match[1]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "end"; + } + else + return "end"; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.doc.getLine(row); + var match = this.foldingStartMarker.exec(line); + if (match) { + if (match[1] || match[3]) + return this.rubyBlock(session, row, match.index + 2); + return this.openingBracketBlock(session, "{", row, match.index); + } + var match = this.foldingStopMarker.exec(line); + if (match) { + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return this.rubyBlock(session, row, match.index + 1); + } + if (match[1] === "=end") { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return this.rubyBlock(session, row, match.index + 1); + } + return this.closingBracketBlock(session, "}", row, match.index + match[0].length); + } + }; + this.rubyBlock = function (session, row, column, tokenRange) { + var stream = new TokenIterator(session, row, column); + var token = stream.getCurrentToken(); + if (!token || (token.type != "keyword" && token.type != "comment.multiline")) + return; + var val = token.value; + var line = session.getLine(row); + switch (token.value) { + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + return; + } + var dir = this.indentKeywords[val]; + break; + case "when": + if (/\sthen\s/.test(line)) { + return; + } + case "elsif": + case "rescue": + case "ensure": + var dir = 1; + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line)) { + return; + } + var dir = 1; + break; + default: + var dir = this.indentKeywords[val]; + break; + } + var stack = [val]; + if (!dir) + return; + var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; + var startRow = row; + var ranges = []; + ranges.push(stream.getCurrentTokenRange()); + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + if (token.type == "comment.multiline") { + while (token = stream.step()) { + if (token.type !== "comment.multiline") + continue; + if (dir == 1) { + startColumn = 6; + if (token.value == "=end") { + break; + } + } + else { + if (token.value == "=begin") { + break; + } + } } } - - if (prevIndent!= -1 && prevIndent < indent) - session.foldWidgets[row - 1] = "start"; + else { + while (token = stream.step()) { + var ignore = false; + if (token.type !== "keyword") + continue; + var level = dir * this.indentKeywords[token.value]; + line = session.getLine(stream.getCurrentTokenRow()); + switch (token.value) { + case "do": + for (var i = stream.$tokenIndex - 1; i >= 0; i--) { + var prevToken = stream.$rowTokens[i]; + if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { + level = 0; + break; + } + } + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + level = 0; + ignore = true; + } + break; + case "when": + if (/\sthen\s/.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + } + if (level > 0) { + stack.unshift(token.value); + } + else if (level <= 0 && ignore === false) { + stack.shift(); + if (!stack.length) { + if ((val == "while" || val == "until" || val == "for") && token.value != "do") { + break; + } + if (token.value == "do" && dir == -1 && level != 0) + break; + if (token.value != "do") + break; + } + if (level === 0) { + stack.unshift(token.value); + } + } + } + } + if (!token) + return null; + if (tokenRange) { + ranges.push(stream.getCurrentTokenRange()); + return ranges; + } + var row = stream.getCurrentTokenRow(); + if (dir === -1) { + if (token.type === "comment.multiline") { + var endColumn = 6; + } + else { + var endColumn = session.getLine(row).length; + } + return new Range(row, endColumn, startRow - 1, startColumn); + } else - session.foldWidgets[row - 1] = ""; - - if (indent < nextIndent) - return "start"; - else - return ""; + return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); }; - }).call(FoldMode.prototype); }); -define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - +define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var Range = require("../range").Range; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var FoldMode = require("./folding/ruby").FoldMode; +var Mode = function () { this.HighlightRules = RubyHighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new FoldMode(); + this.indentKeywords = this.foldingRules.indentKeywords; }; oop.inherits(Mode, TextMode); - -(function() { - - +(function () { this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); - var startingConditional = line.match(/^\s*(if|else|when)\s*/); + var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); if (match || startingClassOrMethod || startingDoBlock || startingConditional) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { - return /^\s+(end|else)$/.test(line + input) || this.$outdent.checkOutdent(line, input); + this.checkOutdent = function (state, line, input) { + return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, session, row) { + this.autoOutdent = function (state, session, row) { var line = session.getLine(row); if (/}/.test(line)) return this.$outdent.autoOutdent(session, row); @@ -480,12 +893,29 @@ oop.inherits(Mode, TextMode); var tab = session.getTabString(); if (prevIndent.length <= indent.length) { if (indent.slice(-tab.length) == tab) - session.remove(new Range(row, indent.length-tab.length, row, indent.length)); + session.remove(new Range(row, indent.length - tab.length, row, indent.length)); } }; - + this.getMatching = function (session, row, column) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; + } + var startToken = session.getTokenAt(row, column); + if (startToken && startToken.value in this.indentKeywords) + return this.foldingRules.rubyBlock(session, row, column, true); + }; this.$id = "ace/mode/ruby"; + this.snippetFileId = "ace/snippets/ruby"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/ruby"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-rust.js b/vendor/assets/javascripts/ace/mode-rust.js index 69a9c159..627dbfb6 100644 --- a/vendor/assets/javascripts/ace/mode-rust.js +++ b/vendor/assets/javascripts/ace/mode-rust.js @@ -1,194 +1,301 @@ -define("ace/mode/rust_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var stringEscape = /\\(?:[nrt0'"\\]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\})/.source; -var RustHighlightRules = function() { - - this.$rules = { start: - [ { token: 'variable.other.source.rust', - regex: '\'[a-zA-Z_][a-zA-Z0-9_]*(?![\\\'])' }, - { token: 'string.quoted.single.source.rust', - regex: "'(?:[^'\\\\]|" + stringEscape + ")'" }, - { - stateName: "bracketedComment", - onMatch : function(value, currentState, stack){ - stack.unshift(this.next, value.length - 1, currentState); - return "string.quoted.raw.source.rust"; - }, - regex : /r#*"/, - next : [ - { - onMatch : function(value, currentState, stack) { - var token = "string.quoted.raw.source.rust"; - if (value.length >= stack[1]) { - if (value.length > stack[1]) - token = "invalid"; - stack.shift(); - stack.shift(); - this.next = stack.shift(); - } else { - this.next = ""; - } - return token; - }, - regex : /"#*/, - next : "start" - }, { - defaultToken : "string.quoted.raw.source.rust" - } - ] - }, - { token: 'string.quoted.double.source.rust', - regex: '"', - push: - [ { token: 'string.quoted.double.source.rust', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.source.rust', - regex: stringEscape }, - { defaultToken: 'string.quoted.double.source.rust' } ] }, - { token: [ 'keyword.source.rust', 'text', 'entity.name.function.source.rust' ], - regex: '\\b(fn)(\\s+)([a-zA-Z_][a-zA-Z0-9_]*)' }, - { token: 'support.constant', regex: '\\b[a-zA-Z_][\\w\\d]*::' }, - { token: 'keyword.source.rust', - regex: '\\b(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\\b' }, - { token: 'storage.type.source.rust', - regex: '\\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|u128|f16|f32|f64|i8|i16|i32|i64|i128|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b' }, - { token: 'variable.language.source.rust', regex: '\\bself\\b' }, - - { token: 'comment.line.doc.source.rust', - regex: '//!.*$' }, - { token: 'comment.line.double-dash.source.rust', - regex: '//.*$' }, - { token: 'comment.start.block.source.rust', - regex: '/\\*', - stateName: 'comment', - push: - [ { token: 'comment.start.block.source.rust', - regex: '/\\*', - push: 'comment' }, - { token: 'comment.end.block.source.rust', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.source.rust' } ] }, - - { token: 'keyword.operator', - regex: /\$|[-=]>|[-+%^=!&|<>]=?|[*/](?![*/])=?/ }, - { token : "punctuation.operator", regex : /[?:,;.]/ }, - { token : "paren.lparen", regex : /[\[({]/ }, - { token : "paren.rparen", regex : /[\])}]/ }, - { token: 'constant.language.source.rust', - regex: '\\b(?:true|false|Some|None|Ok|Err)\\b' }, - { token: 'support.constant.source.rust', - regex: '\\b(?:EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|_IONBF|_IOLBF|BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO)\\b' }, - { token: 'meta.preprocessor.source.rust', - regex: '\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b' }, - { token: 'constant.numeric.source.rust', - regex: /\b(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64|128))?\b/ }, - { token: 'constant.numeric.source.rust', - regex: /\b(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/ } ] }; - - this.normalizeRules(); +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; }; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; -RustHighlightRules.metaData = { fileTypes: [ 'rs', 'rc' ], - foldingStartMarker: '^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$', - foldingStopMarker: '^\\s*\\}', - name: 'Rust', - scopeName: 'source.rust' }; - - -oop.inherits(RustHighlightRules, TextHighlightRules); - -exports.RustHighlightRules = RustHighlightRules; }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { +define("ace/mode/rust_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/doc_comment_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.github.com/dbp/sublime-rust/master/Rust.tmLanguage (uuid: ) */ "use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var stringEscape = /\\(?:[nrt0'"\\]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\})/.source; +var wordPattern = /[a-zA-Z_\xa1-\uffff][a-zA-Z0-9_\xa1-\uffff]*/.source; +var RustHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword.source.rust": "abstract|alignof|as|async|await|become|box|break|catch|continue|const|crate|" + + "default|do|dyn|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|" + + "override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|union|" + + "unsafe|unsized|use|virtual|where|while|yield|try", + "storage.type.source.rust": "Self|isize|usize|char|bool|u8|u16|u32|u64|u128|f16|f32|f64|i8|i16|i32|i64|" + + "i128|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|" + + "c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|" + + "uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t", + "constant.language.source.rust": "true|false|Some|None|Ok|Err|FALSE|TRUE", + "support.constant.source.rust": "EXIT_FAILURE|EXIT_SUCCESS|RAND_MAX|EOF|SEEK_SET|SEEK_CUR|SEEK_END|_IOFBF|" + + "_IONBF|_IOLBF|" + + "BUFSIZ|FOPEN_MAX|FILENAME_MAX|L_tmpnam|TMP_MAX|O_RDONLY|O_WRONLY|O_RDWR|O_APPEND|O_CREAT|O_EXCL|O_TRUNC|" + + "S_IFIFO|S_IFCHR|S_IFBLK|S_IFDIR|S_IFREG|S_IFMT|S_IEXEC|S_IWRITE|S_IREAD|S_IRWXU|S_IXUSR|S_IWUSR|S_IRUSR|" + + "F_OK|R_OK|W_OK|X_OK|STDIN_FILENO|STDOUT_FILENO|STDERR_FILENO", + "constant.language": "macro_rules|mac_variant" + }, "identifier"); + this.$rules = { + start: [ + { + token: 'variable.other.source.rust', // `(?![\\\'])` to keep a lifetime name highlighting from continuing one character + regex: '\'' + wordPattern + '(?![\\\'])' + }, { + token: 'string.quoted.single.source.rust', + regex: "'(?:[^'\\\\]|" + stringEscape + ")'" + }, { + token: 'identifier', + regex: "r#" + wordPattern + "\\b" + }, { + stateName: "bracketedComment", + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, value.length - 1, currentState); + return "string.quoted.raw.source.rust"; + }, + regex: /r#*"/, + next: [ + { + onMatch: function (value, currentState, stack) { + var token = "string.quoted.raw.source.rust"; + if (value.length >= stack[1]) { + if (value.length > stack[1]) + token = "invalid"; + stack.shift(); + stack.shift(); + this.next = stack.shift(); + } + else { + this.next = ""; + } + return token; + }, + regex: /"#*/, + next: "start" + }, { + defaultToken: "string.quoted.raw.source.rust" + } + ] + }, { + token: 'string.quoted.double.source.rust', + regex: '"', + push: [ + { + token: 'string.quoted.double.source.rust', + regex: '"', + next: 'pop' + }, { + token: 'constant.character.escape.source.rust', + regex: stringEscape + }, { defaultToken: 'string.quoted.double.source.rust' } + ] + }, { + token: ['keyword.source.rust', 'text', 'entity.name.function.source.rust', 'punctuation'], + regex: '\\b(fn)(\\s+)((?:r#)?' + wordPattern + ')(<)', + push: "generics" + }, { + token: ['keyword.source.rust', 'text', 'entity.name.function.source.rust'], + regex: '\\b(fn)(\\s+)((?:r#)?' + wordPattern + ')' + }, { + token: ['support.constant', "punctuation"], + regex: "(" + wordPattern + '::)(<)', + push: "generics" + }, { + token: 'support.constant', + regex: wordPattern + '::' + }, { + token: 'variable.language.source.rust', + regex: '\\bself\\b' + }, DocCommentHighlightRules.getStartRule("doc-start"), { + token: 'comment.line.doc.source.rust', + regex: '///.*$' + }, { + token: 'comment.line.doc.source.rust', + regex: '//!.*$' + }, { + token: 'comment.line.double-dash.source.rust', + regex: '//.*$' + }, { + token: 'comment.start.block.source.rust', + regex: '/\\*', + stateName: 'comment', + push: [ + { + token: 'comment.start.block.source.rust', + regex: '/\\*', + push: 'comment' + }, { + token: 'comment.end.block.source.rust', + regex: '\\*/', + next: 'pop' + }, { defaultToken: 'comment.block.source.rust' } + ] + }, { + token: ["keyword.source.rust", "identifier", "punctuaction"], + regex: "(?:(impl)|(" + wordPattern + "))(<)", + stateName: 'generics', + push: [ + { + token: "punctuaction", + regex: "<", + push: "generics" + }, { + token: 'variable.other.source.rust', // `(?![\\\'])` to keep a lifetime name highlighting from continuing one character + regex: '\'' + wordPattern + '(?![\\\'])' + }, { + token: "storage.type.source.rust", + regex: "\\b(u8|u16|u32|u64|u128|usize|i8|i16|i32|i64|i128|isize|char|bool)\\b" + }, { + token: "punctuation.operator", + regex: "[,:]" + }, { + token: "keyword", + regex: "\\b(?:const|dyn)\\b" + }, { + token: "punctuation", + regex: ">", + next: "pop" + }, { + token: "paren.lparen", + regex: "[(]" + }, { + token: "paren.rparen", + regex: "[)]" + }, { + token: "identifier", + regex: "\\b" + wordPattern + "\\b" + }, { + token: 'keyword.operator', + regex: "=" + } + ] + }, { + token: keywordMapper, + regex: wordPattern + }, { + token: 'keyword.operator', // `[*/](?![*/])=?` is separated because `//` and `/* */` become comments and must be + regex: /\$|[-=]>|[-+%^=!&|<>]=?|[*/](?![*/])=?/ + }, { + token: "punctuation.operator", + regex: /[?:,;.]/ + }, { + token: "paren.lparen", + regex: /[\[({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: 'meta.preprocessor.source.rust', + regex: '\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b' + }, { + token: 'constant.numeric.source.rust', + regex: /\b(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64|128))?\b/ + }, { + token: 'constant.numeric.source.rust', + regex: /\b(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/ + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +RustHighlightRules.metaData = { fileTypes: ['rs', 'rc'], + foldingStartMarker: '^.*\\bfn\\s*(\\w+\\s*)?\\([^\\)]*\\)(\\s*\\{[^\\}]*)?\\s*$', + foldingStopMarker: '^\\s*\\}', + name: 'Rust', + scopeName: 'source.rust' }; +oop.inherits(RustHighlightRules, TextHighlightRules); +exports.RustHighlightRules = RustHighlightRules; +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -201,72 +308,78 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/rust",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rust_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/rust",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rust_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var RustHighlightRules = require("./rust_highlight_rules").RustHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = RustHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/", nestable: true}; + this.blockComment = { start: "/*", end: "*/", nestable: true }; this.$quotes = { '"': '"' }; this.$id = "ace/mode/rust"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/rust"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-sac.js b/vendor/assets/javascripts/ace/mode-sac.js new file mode 100644 index 00000000..6ae0e8d6 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-sac.js @@ -0,0 +1,349 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +define("ace/mode/sac_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var sacHighlightRules = function () { + var keywordControls = ("break|continue|do|else|for|if|" + + "return|with|while|use|class|all|void"); + var storageType = ("bool|char|complex|double|float|" + + "byte|int|short|long|longlong|" + + "ubyte|uint|ushort|ulong|ulonglong|" + + "struct|typedef"); + var storageModifiers = ("inline|external|specialize"); + var keywordOperators = ("step|width"); + var builtinConstants = ("true|false"); + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "keyword.control": keywordControls, + "storage.type": storageType, + "storage.modifier": storageModifiers, + "keyword.operator": keywordOperators, + "constant.language": builtinConstants + }, "identifier"); + var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; + var escapeRe = /\\(?:['"?\\abfnrtv]|[0-7]{1,3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}U[a-fA-F\d]{8}|.)/.source; + var formatRe = "%" + + /(\d+\$)?/.source // field (argument #) + + /[#0\- +']*/.source // flags + + /[,;:_]?/.source // separator character (AltiVec) + + /((-?\d+)|\*(-?\d+\$)?)?/.source // minimum field width + + /(\.((-?\d+)|\*(-?\d+\$)?)?)?/.source // precision + + /(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?/.source // length modifier + + /(\[[^"\]]+\]|[diouxXDOUeEfFgGaACcSspn%])/.source; // conversion type + this.$rules = { + "start": [ + { + token: "comment", + regex: "//$", + next: "start" + }, { + token: "comment", + regex: "//", + next: "singleLineComment" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "string", // character + regex: "'(?:" + escapeRe + "|.)?'" + }, { + token: "string.start", + regex: '"', + stateName: "qqstring", + next: [ + { token: "string", regex: /\\\s*$/, next: "qqstring" }, + { token: "constant.language.escape", regex: escapeRe }, + { token: "constant.language.escape", regex: formatRe }, + { token: "string.end", regex: '"|$', next: "start" }, + { defaultToken: "string" } + ] + }, { + token: "string.start", + regex: 'R"\\(', + stateName: "rawString", + next: [ + { token: "string.end", regex: '\\)"', next: "start" }, + { defaultToken: "string" } + ] + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b" + }, { + token: "keyword", // pre-compiler directives + regex: "#\\s*(?:include|import|pragma|line|define|undef)\\b", + next: "directive" + }, { + token: "keyword", // special case pre-compiler directive + regex: "#\\s*(?:endif|if|ifdef|else|elif|ifndef)\\b" + }, { + token: "support.function", + regex: "fold|foldfix|genarray|modarray|propagate" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*" + }, { + token: "keyword.operator", + regex: /--|\+\+|<<=|>>=|>>>=|<>|&&|\|\||\?:|[*%\/+\-&\^|~!<>=]=?/ + }, { + token: "punctuation.operator", + regex: "\\?|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "singleLineComment": [ + { + token: "comment", + regex: /\\$/, + next: "singleLineComment" + }, { + token: "comment", + regex: /$/, + next: "start" + }, { + defaultToken: "comment" + } + ], + "directive": [ + { + token: "constant.other.multiline", + regex: /\\/ + }, + { + token: "constant.other.multiline", + regex: /.*\\/ + }, + { + token: "constant.other", + regex: "\\s*<.+?>", + next: "start" + }, + { + token: "constant.other", // single line + regex: '\\s*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]', + next: "start" + }, + { + token: "constant.other", // single line + regex: "\\s*['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']", + next: "start" + }, + { + token: "constant.other", + regex: /[^\\\/]+/, + next: "start" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(sacHighlightRules, TextHighlightRules); +exports.sacHighlightRules = sacHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/sac",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sac_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SaCHighlightRules = require("./sac_highlight_rules").sacHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = SaCHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/sac"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/sac"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-sass.js b/vendor/assets/javascripts/ace/mode-sass.js index bb731a72..6eb853d9 100644 --- a/vendor/assets/javascripts/ace/mode-sass.js +++ b/vendor/assets/javascripts/ace/mode-sass.js @@ -1,193 +1,249 @@ -define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap( (function () { - - var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); - - var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + - "background-size|binding|border-bottom-colors|border-left-colors|" + - "border-right-colors|border-top-colors|border-end|border-end-color|" + - "border-end-style|border-end-width|border-image|border-start|" + - "border-start-color|border-start-style|border-start-width|box-align|" + - "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + - "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + - "column-rule-width|column-rule-style|column-rule-color|float-edge|" + - "font-feature-settings|font-language-override|force-broken-image-icon|" + - "image-region|margin-end|margin-start|opacity|outline|outline-color|" + - "outline-offset|outline-radius|outline-radius-bottomleft|" + - "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + - "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + - "tab-size|text-blink|text-decoration-color|text-decoration-line|" + - "text-decoration-style|transform|transform-origin|transition|" + - "transition-delay|transition-duration|transition-property|" + - "transition-timing-function|user-focus|user-input|user-modify|user-select|" + - "window-shadow|border-radius").split("|"); - - var properties = ("azimuth|background-attachment|background-color|background-image|" + - "background-position|background-repeat|background|border-bottom-color|" + - "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + - "border-color|border-left-color|border-left-style|border-left-width|" + - "border-left|border-right-color|border-right-style|border-right-width|" + - "border-right|border-spacing|border-style|border-top-color|" + - "border-top-style|border-top-width|border-top|border-width|border|bottom|" + - "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + - "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + - "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + - "font-stretch|font-style|font-variant|font-weight|font|height|left|" + - "letter-spacing|line-height|list-style-image|list-style-position|" + - "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + - "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + - "min-width|opacity|orphans|outline-color|" + - "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + - "padding-left|padding-right|padding-top|padding|page-break-after|" + - "page-break-before|page-break-inside|page|pause-after|pause-before|" + - "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + - "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + - "stress|table-layout|text-align|text-decoration|text-indent|" + - "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + - "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + - "z-index").split("|"); - var ret = []; - for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" + token: "keyword.operator", + regex: "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { caseInsensitive: true } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - "qqstring" : [ + "qqstring": [ { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ], - "qstring" : [ + "qstring": [ { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ] }; }; - oop.inherits(ScssHighlightRules, TextHighlightRules); - exports.ScssHighlightRules = ScssHighlightRules; }); -define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; - -var SassHighlightRules = function() { +var SassHighlightRules = function () { ScssHighlightRules.call(this); var start = this.$rules.start; if (start[1].token == "comment") { start.splice(1, 1, { - onMatch: function(value, currentState, stack) { + onMatch: function (value, currentState, stack) { stack.unshift(this.next, -1, value.length - 2, currentState); return "comment"; }, @@ -298,86 +349,78 @@ var SassHighlightRules = function() { token: "support.type", regex: /^\s*:[\w\-]+\s/ }); - this.$rules.comment = [ - {regex: /^\s*/, onMatch: function(value, currentState, stack) { - if (stack[1] === -1) - stack[1] = Math.max(stack[2], value.length - 1); - if (value.length <= stack[1]) {stack.shift();stack.shift();stack.shift(); - this.next = stack.shift(); - return "text"; - } else { - this.next = ""; - return "comment"; - } - }, next: "start"}, - {defaultToken: "comment"} + { regex: /^\s*/, onMatch: function (value, currentState, stack) { + if (stack[1] === -1) + stack[1] = Math.max(stack[2], value.length - 1); + if (value.length <= stack[1]) { stack.shift(); + stack.shift(); + stack.shift(); + this.next = stack.shift(); + return "text"; + } + else { + this.next = ""; + return "comment"; + } + }, next: "start" }, + { defaultToken: "comment" } ]; } }; - oop.inherits(SassHighlightRules, ScssHighlightRules); - exports.SassHighlightRules = SassHighlightRules; }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -386,49 +429,49 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var SassHighlightRules = require("./sass_highlight_rules").SassHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = SassHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; this.$id = "ace/mode/sass"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/sass"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-scad.js b/vendor/assets/javascripts/ace/mode-scad.js index 1e56cb0d..e11e7eb9 100644 --- a/vendor/assets/javascripts/ace/mode-scad.js +++ b/vendor/assets/javascripts/ace/mode-scad.js @@ -1,285 +1,234 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/scad_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/scad_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var scadHighlightRules = function() { +var scadHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "variable.language": "this", "keyword": "module|if|else|for", "constant.language": "NULL" }, "identifier"); - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment", + regex: "\\/\\/.*$" }, DocCommentHighlightRules.getStartRule("start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // multi line string start - regex : '["].*\\\\$', - next : "qqstring" + token: "string", // multi line string start + regex: '["].*\\\\$', + next: "qqstring" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "string", // multi line string start - regex : "['].*\\\\$", - next : "qstring" + token: "string", // multi line string start + regex: "['].*\\\\$", + next: "qstring" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : "constant", // - regex : "<[a-zA-Z0-9.]+>" + token: "constant", // + regex: "<[a-zA-Z0-9.]+>" }, { - token : "keyword", // pre-compiler directivs - regex : "(?:use|include)" + token: "keyword", // pre-compiler directivs + regex: "(?:use|include)" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|new|delete|typeof|void)" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - "qqstring" : [ + "qqstring": [ { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ], - "qstring" : [ + "qstring": [ { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - oop.inherits(scadHighlightRules, TextHighlightRules); - exports.scadHighlightRules = scadHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -292,91 +241,82 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var scadHighlightRules = require("./scad_highlight_rules").scadHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = scadHighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start") { return ""; } @@ -388,20 +328,23 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/scad"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/scad"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-scala.js b/vendor/assets/javascripts/ace/mode-scala.js index 60ab7a7c..740490b5 100644 --- a/vendor/assets/javascripts/ace/mode-scala.js +++ b/vendor/assets/javascripts/ace/mode-scala.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,221 +851,238 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/scala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; +}); + +define("ace/mode/scala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScalaHighlightRules = function() { - - var keywords = ( - "case|default|do|else|for|if|match|while|throw|return|try|trye|catch|finally|yield|" + - "abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|null|" + - "override|package|private|protected|sealed|super|this|trait|type|val|var|with|" + - "assert|assume|require|print|println|printf|readLine|readBoolean|readByte|readShort|" + // package scala - "readChar|readInt|readLong|readFloat|readDouble" // package scala +var ScalaHighlightRules = function () { + var keywords = ("case|default|do|else|for|if|match|while|throw|return|try|trye|catch|finally|yield|" + + "abstract|class|def|extends|final|forSome|implicit|implicits|import|lazy|new|object|null|" + + "override|package|private|protected|sealed|super|this|trait|type|val|var|with|" + + "assert|assume|require|print|println|printf|readLine|readBoolean|readByte|readShort|" + // package scala + "readChar|readInt|readLong|readFloat|readDouble" // package scala ); - var buildinConstants = ("true|false"); - - var langClasses = ( - "AbstractMethodError|AssertionError|ClassCircularityError|"+ - "ClassFormatError|Deprecated|EnumConstantNotPresentException|"+ - "ExceptionInInitializerError|IllegalAccessError|"+ - "IllegalThreadStateException|InstantiationError|InternalError|"+ - - "NegativeArraySizeException|NoSuchFieldError|Override|Process|"+ - "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|"+ - "SuppressWarnings|TypeNotPresentException|UnknownError|"+ - "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|"+ - "InstantiationException|IndexOutOfBoundsException|"+ - "ArrayIndexOutOfBoundsException|CloneNotSupportedException|"+ - "NoSuchFieldException|IllegalArgumentException|NumberFormatException|"+ - "SecurityException|Void|InheritableThreadLocal|IllegalStateException|"+ - "InterruptedException|NoSuchMethodException|IllegalAccessException|"+ - "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|"+ - "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|"+ - "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|"+ - "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|"+ - "Character|Boolean|StackTraceElement|Appendable|StringBuffer|"+ - "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|"+ - "StackOverflowError|OutOfMemoryError|VirtualMachineError|"+ - "ArrayStoreException|ClassCastException|LinkageError|"+ - "NoClassDefFoundError|ClassNotFoundException|RuntimeException|"+ - "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|"+ + var langClasses = ("AbstractMethodError|AssertionError|ClassCircularityError|" + + "ClassFormatError|Deprecated|EnumConstantNotPresentException|" + + "ExceptionInInitializerError|IllegalAccessError|" + + "IllegalThreadStateException|InstantiationError|InternalError|" + + "NegativeArraySizeException|NoSuchFieldError|Override|Process|" + + "ProcessBuilder|SecurityManager|StringIndexOutOfBoundsException|" + + "SuppressWarnings|TypeNotPresentException|UnknownError|" + + "UnsatisfiedLinkError|UnsupportedClassVersionError|VerifyError|" + + "InstantiationException|IndexOutOfBoundsException|" + + "ArrayIndexOutOfBoundsException|CloneNotSupportedException|" + + "NoSuchFieldException|IllegalArgumentException|NumberFormatException|" + + "SecurityException|Void|InheritableThreadLocal|IllegalStateException|" + + "InterruptedException|NoSuchMethodException|IllegalAccessException|" + + "UnsupportedOperationException|Enum|StrictMath|Package|Compiler|" + + "Readable|Runtime|StringBuilder|Math|IncompatibleClassChangeError|" + + "NoSuchMethodError|ThreadLocal|RuntimePermission|ArithmeticException|" + + "NullPointerException|Long|Integer|Short|Byte|Double|Number|Float|" + + "Character|Boolean|StackTraceElement|Appendable|StringBuffer|" + + "Iterable|ThreadGroup|Runnable|Thread|IllegalMonitorStateException|" + + "StackOverflowError|OutOfMemoryError|VirtualMachineError|" + + "ArrayStoreException|ClassCastException|LinkageError|" + + "NoClassDefFoundError|ClassNotFoundException|RuntimeException|" + + "Exception|ThreadDeath|Error|Throwable|System|ClassLoader|" + "Cloneable|Class|CharSequence|Comparable|String|Object|" + "Unit|Any|AnyVal|AnyRef|Null|ScalaObject|Singleton|Seq|Iterable|List|" + "Option|Array|Char|Byte|Int|Long|Nothing|" + - "App|Application|BufferedIterator|BigDecimal|BigInt|Console|Either|" + "Enumeration|Equiv|Fractional|Function|IndexedSeq|Integral|Iterator|" + "Map|Numeric|Nil|NotNull|Ordered|Ordering|PartialFunction|PartialOrdering|" + "Product|Proxy|Range|Responder|Seq|Serializable|Set|Specializable|Stream|" + - "StringContext|Symbol|Traversable|TraversableOnce|Tuple|Vector|Pair|Triple" - - - ); - + "StringContext|Symbol|Traversable|TraversableOnce|Tuple|Vector|Pair|Triple"); var keywordMapper = this.createKeywordMapper({ "variable.language": "this", "keyword": keywords, "support.function": langClasses, "constant.language": buildinConstants }, "identifier"); - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment", + regex: "\\/\\/.*$" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" }, { - token : "string", - regex : '"""', - next : "tstring" + token: "string", + regex: '"""', + next: "tstring" }, { - token : "string", - regex : '"(?=.)', // " strings can't span multiple lines - next : "string" + token: "string", + regex: '"(?=.)', // " strings can't span multiple lines + next: "string" }, { - token : "symbol.constant", // single line - regex : "'[\\w\\d_]+" + token: "symbol.constant", // single line + regex: "'[\\w\\d_]+" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - "string" : [ + "string": [ { - token : "escape", - regex : '\\\\"' + token: "escape", + regex: '\\\\"' }, { - token : "string", - regex : '"', - next : "start" + token: "string", + regex: '"', + next: "start" }, { - token : "string.invalid", - regex : '[^"\\\\]*$', - next : "start" + token: "string.invalid", + regex: '[^"\\\\]*$', + next: "start" }, { - token : "string", - regex : '[^"\\\\]+' + token: "string", + regex: '[^"\\\\]+' } ], - "tstring" : [ + "tstring": [ { - token : "string", - regex : '"{3,5}', - next : "start" + token: "string", + regex: '"{3,5}', + next: "start" }, { - defaultToken : "string" + defaultToken: "string" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - oop.inherits(ScalaHighlightRules, TextHighlightRules); - exports.ScalaHighlightRules = ScalaHighlightRules; + }); -define("ace/mode/scala",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/scala_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/scala",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/scala_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JavaScriptMode = require("./javascript").Mode; var ScalaHighlightRules = require("./scala_highlight_rules").ScalaHighlightRules; - -var Mode = function() { +var Mode = function () { JavaScriptMode.call(this); this.HighlightRules = ScalaHighlightRules; }; oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { +(function () { + this.createWorker = function (session) { return null; }; - this.$id = "ace/mode/scala"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/scala"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-scheme.js b/vendor/assets/javascripts/ace/mode-scheme.js index cb362b87..ba17f596 100644 --- a/vendor/assets/javascripts/ace/mode-scheme.js +++ b/vendor/assets/javascripts/ace/mode-scheme.js @@ -1,165 +1,140 @@ -define("ace/mode/scheme_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/scheme_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SchemeHighlightRules = function() { +var SchemeHighlightRules = function () { var keywordControl = "case|do|let|loop|if|else|when"; var keywordOperator = "eq?|eqv?|equal?|and|or|not|null?"; var constantLanguage = "#t|#f"; var supportFunctions = "cons|car|cdr|cond|lambda|lambda*|syntax-rules|format|set!|quote|eval|append|list|list?|member?|load"; - var keywordMapper = this.createKeywordMapper({ "keyword.control": keywordControl, "keyword.operator": keywordOperator, "constant.language": constantLanguage, "support.function": supportFunctions }, "identifier", true); - - this.$rules = + this.$rules = { - "start": [ - { - token : "comment", - regex : ";.*$" - }, - { - "token": ["storage.type.function-type.scheme", "text", "entity.name.function.scheme"], - "regex": "(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" - }, - { - "token": "punctuation.definition.constant.character.scheme", - "regex": "#:\\S+" - }, - { - "token": ["punctuation.definition.variable.scheme", "variable.other.global.scheme", "punctuation.definition.variable.scheme"], - "regex": "(\\*)(\\S*)(\\*)" - }, - { - "token" : "constant.numeric", // hex - "regex" : "#[xXoObB][0-9a-fA-F]+" - }, - { - "token" : "constant.numeric", // float - "regex" : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?" - }, - { - "token" : keywordMapper, - "regex" : "[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*" - }, - { - "token" : "string", - "regex" : '"(?=.)', - "next" : "qqstring" - } - ], - "qqstring": [ - { - "token": "constant.character.escape.scheme", - "regex": "\\\\." - }, - { - "token" : "string", - "regex" : '[^"\\\\]+', - "merge" : true - }, { - "token" : "string", - "regex" : "\\\\$", - "next" : "qqstring", - "merge" : true - }, { - "token" : "string", - "regex" : '"|$', - "next" : "start", - "merge" : true - } - ] + "start": [ + { + token: "comment", + regex: ";.*$" + }, + { + "token": ["storage.type.function-type.scheme", "text", "entity.name.function.scheme"], + "regex": "(?:\\b(?:(define|define-syntax|define-macro))\\b)(\\s+)((?:\\w|\\-|\\!|\\?)*)" + }, + { + "token": "punctuation.definition.constant.character.scheme", + "regex": "#:\\S+" + }, + { + "token": ["punctuation.definition.variable.scheme", "variable.other.global.scheme", "punctuation.definition.variable.scheme"], + "regex": "(\\*)(\\S*)(\\*)" + }, + { + "token": "constant.numeric", // hex + "regex": "#[xXoObB][0-9a-fA-F]+" + }, + { + "token": "constant.numeric", // float + "regex": "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?" + }, + { + "token": keywordMapper, + "regex": "[a-zA-Z_#][a-zA-Z0-9_\\-\\?\\!\\*]*" + }, + { + "token": "string", + "regex": '"(?=.)', + "next": "qqstring" + } + ], + "qqstring": [ + { + "token": "constant.character.escape.scheme", + "regex": "\\\\." + }, + { + "token": "string", + "regex": '[^"\\\\]+', + "merge": true + }, { + "token": "string", + "regex": "\\\\$", + "next": "qqstring", + "merge": true + }, { + "token": "string", + "regex": '"|$', + "next": "start", + "merge": true + } + ] + }; }; - -}; - oop.inherits(SchemeHighlightRules, TextHighlightRules); - exports.SchemeHighlightRules = SchemeHighlightRules; + }); -define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_parens_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingParensOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingParensOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\)/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\))/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { var match = line.match(/^(\s+)/); if (match) { return match[1]; } - return ""; }; - }).call(MatchingParensOutdent.prototype); - exports.MatchingParensOutdent = MatchingParensOutdent; + }); -define("ace/mode/scheme",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scheme_highlight_rules","ace/mode/matching_parens_outdent"], function(require, exports, module) { -"use strict"; - +define("ace/mode/scheme",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scheme_highlight_rules","ace/mode/matching_parens_outdent"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var SchemeHighlightRules = require("./scheme_highlight_rules").SchemeHighlightRules; var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensOutdent; - -var Mode = function() { +var Mode = function () { this.HighlightRules = SchemeHighlightRules; - this.$outdent = new MatchingParensOutdent(); + this.$outdent = new MatchingParensOutdent(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ";"; this.minorIndentFunctions = ["define", "lambda", "define-macro", "define-syntax", "syntax-rules", "define-record-type", "define-structure"]; - - this.$toIndent = function(str) { - return str.split('').map(function(ch) { + this.$toIndent = function (str) { + return str.split('').map(function (ch) { if (/\s/.exec(ch)) { return ch; - } else { + } + else { return ' '; } }).join(''); }; - - this.$calculateIndent = function(line, tab) { + this.$calculateIndent = function (line, tab) { var baseIndent = this.$getIndent(line); var delta = 0; var isParen, ch; @@ -168,10 +143,12 @@ oop.inherits(Mode, TextMode); if (ch === '(') { delta--; isParen = true; - } else if (ch === '(' || ch === '[' || ch === '{') { + } + else if (ch === '(' || ch === '[' || ch === '{') { delta--; isParen = false; - } else if (ch === ')' || ch === ']' || ch === '}') { + } + else if (ch === ')' || ch === ']' || ch === '}') { delta++; } if (delta < 0) { @@ -185,41 +162,49 @@ oop.inherits(Mode, TextMode); while (true) { ch = line[i]; if (ch === ' ' || ch === '\t') { - if(this.minorIndentFunctions.indexOf(fn) !== -1) { + if (this.minorIndentFunctions.indexOf(fn) !== -1) { return this.$toIndent(line.substring(0, iBefore - 1) + tab); - } else { + } + else { return this.$toIndent(line.substring(0, i + 1)); } - } else if (ch === undefined) { + } + else if (ch === undefined) { return this.$toIndent(line.substring(0, iBefore - 1) + tab); } fn += line[i]; i++; } - } else if(delta < 0 && !isParen) { - return this.$toIndent(line.substring(0, i+1)); - } else if(delta > 0) { + } + else if (delta < 0 && !isParen) { + return this.$toIndent(line.substring(0, i + 1)); + } + else if (delta > 0) { baseIndent = baseIndent.substring(0, baseIndent.length - tab.length); return baseIndent; - } else { + } + else { return baseIndent; } }; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$calculateIndent(line, tab); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/scheme"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/scheme"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-scrypt.js b/vendor/assets/javascripts/ace/mode-scrypt.js new file mode 100644 index 00000000..51d7f398 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-scrypt.js @@ -0,0 +1,317 @@ +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; + +}); + +define("ace/mode/scrypt_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from ./tmthemes/tmscrypt.tmLanguage (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var scryptHighlightRules = function () { + var keywords = ("contract|library|loop|new|private|" + + "public|if|else|struct|type|" + + "require|static|const|import|exit|return|asm"); + var buildinConstants = ("true|false"); + var langClasses = ("function|auto|constructor|bytes|int|bool|SigHashPreimage|PrivKey|PubKey|Sig|Ripemd160|Sha1|Sha256|" + + "SigHashType|SigHashPreimage|OpCodeType"); + var keywordMapper = this.createKeywordMapper({ + "variable.language": "this", + "keyword": keywords, + "constant.language": buildinConstants, + "support.function": langClasses + }, "identifier"); + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + DocCommentHighlightRules.getStartRule("doc-start"), + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", // hex + regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + }, { + token: "constant.numeric", // float + regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, + { + token: ["support.function.math.scrypt", "text", "text"], + regex: /\b(abs|min|max|within|ripemd160|sha1|sha256|hash160|hash256|checkSig|checkMultiSig|num2bin|pack|unpack|len|reverseBytes|repeat)(\s*)(\()/ + }, { + token: [ + "entity.name.type.scrypt", + "text", + "text", + "text", + "variable.object.property.scrypt" + ], + regex: /\b(SigHash)(\s*)(\.)(\s*)(ANYONECANPAY|ALL|FORKID|NONE|SINGLE)\b/ + }, + { + token: [ + "entity.name.type.scrypt", + "text", + "text", + "text", + "variable.object.property.scrypt" + ], + regex: /\b(OpCode)(\s*)(\.)(\s*)(OP_PUSHDATA1|OP_PUSHDATA2|OP_PUSHDATA4|OP_0|OP_FALSE|OP_1NEGATE|OP_1|OP_TRUE|OP_2|OP_3|OP_4|OP_5|OP_6|OP_7|OP_8|OP_9|OP_10|OP_11|OP_12|OP_13|OP_14|OP_15|OP_16|OP_1ADD|OP_1SUB|OP_NEGATE|OP_ABS|OP_NOT|OP_0NOTEQUAL|OP_ADD|OP_SUB|OP_MUL|OP_DIV|OP_MOD|OP_LSHIFT|OP_RSHIFT|OP_BOOLAND|OP_BOOLOR|OP_NUMEQUAL|OP_NUMEQUALVERIFY|OP_NUMNOTEQUAL|OP_LESSTHAN|OP_GREATERTHAN|OP_LESSTHANOREQUAL|OP_GREATERTHANOREQUAL|OP_MIN|OP_MAX|OP_WITHIN|OP_CAT|OP_SPLIT|OP_BIN2NUM|OP_NUM2BIN|OP_SIZE|OP_NOP|OP_IF|OP_NOTIF|OP_ELSE|OP_ENDIF|OP_VERIFY|OP_RETURN|OP_TOALTSTACK|OP_FROMALTSTACK|OP_IFDUP|OP_DEPTH|OP_DROP|OP_DUP|OP_NIP|OP_OVER|OP_PICK|OP_ROLL|OP_ROT|OP_SWAP|OP_TUCK|OP_2DROP|OP_2DUP|OP_3DUP|OP_2OVER|OP_2ROT|OP_2SWAP|OP_RIPEMD160|OP_SHA1|OP_SHA256|OP_HASH160|OP_HASH256|OP_CODESEPARATOR|OP_CHECKSIG|OP_CHECKSIGVERIFY|OP_CHECKMULTISIG|OP_CHECKMULTISIGVERIFY|OP_INVERT|OP_AND|OP_OR|OP_XOR|OP_EQUAL|OP_EQUALVERIFY)\b/ + }, { + token: "entity.name.type.scrypt", + regex: /\b(?:P2PKH|P2PK|Tx|HashPuzzleRipemd160|HashPuzzleSha1|HashPuzzleSha256|HashPuzzleHash160|OpCode|SigHash)\b/ + }, { + token: [ + "punctuation.separator.period.scrypt", + 'text', + "entity.name.function.scrypt", + "text", + "punctuation.definition.parameters.begin.bracket.round.scrypt" + ], + regex: /(\.)([^\S$\r]*)([\w][\w\d]*)(\s*)(\()/, + push: [{ + token: "punctuation.definition.parameters.end.bracket.round.scrypt", + regex: /\)/, + next: "pop" + }, { + defaultToken: "start" + }] + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\||\\^|\\*|\\/|\\-\\-|\\-|\\+\\+|\\+|~|==|=|!=|<=|>=|<>|<|>|!|&&|\\|\\||\\?|\\:|\\*=|\\/=|%=|\\+=|\\-=|&=|\\|=|\\^=" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); + this.normalizeRules(); +}; +oop.inherits(scryptHighlightRules, TextHighlightRules); +exports.scryptHighlightRules = scryptHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/scrypt",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scrypt_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var scryptHighlightRules = require("./scrypt_highlight_rules").scryptHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = scryptHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { + start: "/*", + end: "*/" + }; + this.$quotes = { + '"': '"', + "'": "'" + }; + this.createWorker = function (session) { + return null; + }; + this.$id = "ace/mode/scrypt"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/scrypt"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-scss.js b/vendor/assets/javascripts/ace/mode-scss.js index 80189933..75d6b88f 100644 --- a/vendor/assets/javascripts/ace/mode-scss.js +++ b/vendor/assets/javascripts/ace/mode-scss.js @@ -1,193 +1,249 @@ -define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ScssHighlightRules = function() { - - var properties = lang.arrayToMap( (function () { - - var browserPrefix = ("-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-").split("|"); - - var prefixProperties = ("appearance|background-clip|background-inline-policy|background-origin|" + - "background-size|binding|border-bottom-colors|border-left-colors|" + - "border-right-colors|border-top-colors|border-end|border-end-color|" + - "border-end-style|border-end-width|border-image|border-start|" + - "border-start-color|border-start-style|border-start-width|box-align|" + - "box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|" + - "box-pack|box-sizing|column-count|column-gap|column-width|column-rule|" + - "column-rule-width|column-rule-style|column-rule-color|float-edge|" + - "font-feature-settings|font-language-override|force-broken-image-icon|" + - "image-region|margin-end|margin-start|opacity|outline|outline-color|" + - "outline-offset|outline-radius|outline-radius-bottomleft|" + - "outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|" + - "outline-style|outline-width|padding-end|padding-start|stack-sizing|" + - "tab-size|text-blink|text-decoration-color|text-decoration-line|" + - "text-decoration-style|transform|transform-origin|transition|" + - "transition-delay|transition-duration|transition-property|" + - "transition-timing-function|user-focus|user-input|user-modify|user-select|" + - "window-shadow|border-radius").split("|"); - - var properties = ("azimuth|background-attachment|background-color|background-image|" + - "background-position|background-repeat|background|border-bottom-color|" + - "border-bottom-style|border-bottom-width|border-bottom|border-collapse|" + - "border-color|border-left-color|border-left-style|border-left-width|" + - "border-left|border-right-color|border-right-style|border-right-width|" + - "border-right|border-spacing|border-style|border-top-color|" + - "border-top-style|border-top-width|border-top|border-width|border|bottom|" + - "box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|" + - "counter-reset|cue-after|cue-before|cue|cursor|direction|display|" + - "elevation|empty-cells|float|font-family|font-size-adjust|font-size|" + - "font-stretch|font-style|font-variant|font-weight|font|height|left|" + - "letter-spacing|line-height|list-style-image|list-style-position|" + - "list-style-type|list-style|margin-bottom|margin-left|margin-right|" + - "margin-top|marker-offset|margin|marks|max-height|max-width|min-height|" + - "min-width|opacity|orphans|outline-color|" + - "outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|" + - "padding-left|padding-right|padding-top|padding|page-break-after|" + - "page-break-before|page-break-inside|page|pause-after|pause-before|" + - "pause|pitch-range|pitch|play-during|position|quotes|richness|right|" + - "size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|" + - "stress|table-layout|text-align|text-decoration|text-indent|" + - "text-shadow|text-transform|top|unicode-bidi|vertical-align|" + - "visibility|voice-family|volume|white-space|widows|width|word-spacing|" + - "z-index").split("|"); - var ret = []; - for (var i=0, ln=browserPrefix.length; i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" + token: "keyword.operator", + regex: "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { caseInsensitive: true } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" }, { - defaultToken : "comment" + defaultToken: "comment" } ], - "qqstring" : [ + "qqstring": [ { - token : "string", - regex : '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next : "start" + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ], - "qstring" : [ + "qstring": [ { - token : "string", - regex : "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", - next : "start" + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } ] }; }; - oop.inherits(ScssHighlightRules, TextHighlightRules); - exports.ScssHighlightRules = ScssHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -338,20 +376,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -365,116 +402,102 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -487,100 +510,256 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; +}); + +define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle","ace/mode/css_completions"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var CssCompletions = require("./css_completions").CssCompletions; +var Mode = function () { this.HighlightRules = ScssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; this.$id = "ace/mode/scss"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/scss"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-sh.js b/vendor/assets/javascripts/ace/mode-sh.js index ff45813b..ad24fe5e 100644 --- a/vendor/assets/javascripts/ace/mode-sh.js +++ b/vendor/assets/javascripts/ace/mode-sh.js @@ -1,305 +1,264 @@ -define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var reservedKeywords = exports.reservedKeywords = ( - '!|{|}|case|do|done|elif|else|'+ - 'esac|fi|for|if|in|then|until|while|'+ - '&|;|export|local|read|typeset|unset|'+ - 'elif|select|set|function|declare|readonly' - ); - -var languageConstructs = exports.languageConstructs = ( - '[|]|alias|bg|bind|break|builtin|'+ - 'cd|command|compgen|complete|continue|'+ - 'dirs|disown|echo|enable|eval|exec|'+ - 'exit|fc|fg|getopts|hash|help|history|'+ - 'jobs|kill|let|logout|popd|printf|pushd|'+ - 'pwd|return|set|shift|shopt|source|'+ - 'suspend|test|times|trap|type|ulimit|'+ - 'umask|unalias|wait' -); - -var ShHighlightRules = function() { +var reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' + + 'esac|fi|for|if|in|then|until|while|' + + '&|;|export|local|read|typeset|unset|' + + 'elif|select|set|function|declare|readonly'); +var languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' + + 'cd|command|compgen|complete|continue|' + + 'dirs|disown|echo|enable|eval|exec|' + + 'exit|fc|fg|getopts|hash|help|history|' + + 'jobs|kill|let|logout|popd|printf|pushd|' + + 'pwd|return|set|shift|shopt|source|' + + 'suspend|test|times|trap|type|ulimit|' + + 'umask|unalias|wait'); +var ShHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "keyword": reservedKeywords, "support.function.builtin": languageConstructs, "invalid.deprecated": "debugger" }, "identifier"); - var integer = "(?:(?:[1-9]\\d*)|(?:0))"; - var fraction = "(?:\\.\\d+)"; var intPart = "(?:\\d+)"; var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; - var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; var fileDescriptor = "(?:&" + intPart + ")"; - var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; var variable = "(?:" + variableName + "(?==))"; - var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; - var func = "(?:" + variableName + "\\s*\\(\\))"; - this.$rules = { - "start" : [{ - token : "constant", - regex : /\\./ - }, { - token : ["text", "comment"], - regex : /(^|\s)(#.*)$/ - }, { - token : "string.start", - regex : '"', - push : [{ - token : "constant.language.escape", - regex : /\\(?:[$`"\\]|$)/ + "start": [{ + token: "constant", + regex: /\\./ }, { - include : "variables" + token: ["text", "comment"], + regex: /(^|\s)(#.*)$/ }, { - token : "keyword.operator", - regex : /`/ // TODO highlight ` + token: "string.start", + regex: '"', + push: [{ + token: "constant.language.escape", + regex: /\\(?:[$`"\\]|$)/ + }, { + include: "variables" + }, { + token: "keyword.operator", + regex: /`/ // TODO highlight ` + }, { + token: "string.end", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }] }, { - token : "string.end", - regex : '"', + token: "string", + regex: "\\$'", + push: [{ + token: "constant.language.escape", + regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex: "<<<", + token: "keyword.operator" + }, { + stateName: "heredoc", + regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch: function (value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + { type: "constant", value: tokens[1] }, + { type: "text", value: tokens[2] }, + { type: "string", value: tokens[3] }, + { type: "support.class", value: tokens[4] }, + { type: "string", value: tokens[5] } + ]; + }, + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: ["keyword", "text", "text", "text", "variable"], + regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token: "variable.language", + regex: builtinVariable + }, { + token: "variable", + regex: variable + }, { + include: "variables" + }, { + token: "support.function", + regex: func + }, { + token: "support.function", + regex: fileDescriptor + }, { + token: "string", // ' string + start: "'", end: "'" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token: "punctuation.operator", + regex: ";" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]]" + }, { + token: "paren.rparen", + regex: "[\\)\\}]", next: "pop" - }, { - defaultToken: "string" - }] - }, { - token : "string", - regex : "\\$'", - push : [{ - token : "constant.language.escape", - regex : /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ - }, { - token : "string", - regex : "'", - next: "pop" - }, { - defaultToken: "string" - }] - }, { - regex : "<<<", - token : "keyword.operator" - }, { - stateName: "heredoc", - regex : "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", - onMatch : function(value, currentState, stack) { - var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; - var tokens = value.split(this.splitRegex); - stack.push(next, tokens[4]); - return [ - {type:"constant", value: tokens[1]}, - {type:"text", value: tokens[2]}, - {type:"string", value: tokens[3]}, - {type:"support.class", value: tokens[4]}, - {type:"string", value: tokens[5]} - ]; - }, - rules: { - heredoc: [{ - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }], - indentedHeredoc: [{ - token: "string", - regex: "^\t+" - }, { - onMatch: function(value, currentState, stack) { - if (value === stack[1]) { - stack.shift(); - stack.shift(); - this.next = stack[0] || "start"; - return "support.class"; - } - this.next = ""; - return "string"; - }, - regex: ".*$", - next: "start" - }] - } - }, { - regex : "$", - token : "empty", - next : function(currentState, stack) { - if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") - return stack[0]; - return currentState; - } - }, { - token : ["keyword", "text", "text", "text", "variable"], - regex : /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ - }, { - token : "variable.language", - regex : builtinVariable - }, { - token : "variable", - regex : variable - }, { - include : "variables" - }, { - token : "support.function", - regex : func - }, { - token : "support.function", - regex : fileDescriptor - }, { - token : "string", // ' string - start : "'", end : "'" - }, { - token : "constant.numeric", // float - regex : floatNumber - }, { - token : "constant.numeric", // integer - regex : integer + "\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" - }, { - token : "punctuation.operator", - regex : ";" - }, { - token : "paren.lparen", - regex : "[\\[\\(\\{]" - }, { - token : "paren.rparen", - regex : "[\\]]" - }, { - token : "paren.rparen", - regex : "[\\)\\}]", - next : "pop" - }], + }], variables: [{ - token : "variable", - regex : /(\$)(\w+)/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\()/, - push : "start" - }, { - token : ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], - regex : /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, - push : "start" - }, { - token : "variable", - regex : /\$[*@#?\-$!0_]/ - }, { - token : ["variable", "paren.lparen"], - regex : /(\$)(\{)/, - push : "start" - }] + token: "variable", + regex: /(\$)(\w+)/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\()/, + push: "start" + }, { + token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push: "start" + }, { + token: "variable", + regex: /\$[*@#?\-$!0_]/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\{)/, + push: "start" + }] }; - this.normalizeRules(); }; - oop.inherits(ShHighlightRules, TextHighlightRules); - exports.ShHighlightRules = ShHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -312,93 +271,80 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; var Range = require("../range").Range; var CStyleFoldMode = require("./folding/cstyle").FoldMode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ShHighlightRules; this.foldingRules = new CStyleFoldMode(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - - +(function () { this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[:]\s*$/); if (match) { indent += tab; } } - return indent; }; - var outdents = { "pass": 1, "return": 1, @@ -406,36 +352,36 @@ oop.inherits(Mode, TextMode); "break": 1, "continue": 1 }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { if (input !== "\r\n" && input !== "\r" && input !== "\n") return false; - var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; - if (!tokens) return false; do { var last = tokens.pop(); } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); - if (!last) return false; - return (last.type == "keyword" && outdents[last.value]); }; - - this.autoOutdent = function(state, doc, row) { - + this.autoOutdent = function (state, doc, row) { row += 1; var indent = this.$getIndent(doc.getLine(row)); var tab = doc.getTabString(); if (indent.slice(-tab.length) == tab) - doc.remove(new Range(row, indent.length-tab.length, row, indent.length)); + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); }; - this.$id = "ace/mode/sh"; + this.snippetFileId = "ace/snippets/sh"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/sh"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-sjs.js b/vendor/assets/javascripts/ace/mode-sjs.js index 78a1e63c..72014dda 100644 --- a/vendor/assets/javascripts/ace/mode-sjs.js +++ b/vendor/assets/javascripts/ace/mode-sjs.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,48 +851,38 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/sjs_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sjs_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SJSHighlightRules = function() { - var parent = new JavaScriptHighlightRules({noES6: true}); +var SJSHighlightRules = function () { + var parent = new JavaScriptHighlightRules({ noES6: true }); var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "[0-2][0-7]{0,2}|" + // oct @@ -804,17 +890,15 @@ var SJSHighlightRules = function() { "37[0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - - var contextAware = function(f) { + var contextAware = function (f) { f.isContextAware = true; return f; }; - - var ctxBegin = function(opts) { + var ctxBegin = function (opts) { return { token: opts.token, regex: opts.regex, - next: contextAware(function(currentState, stack) { + next: contextAware(function (currentState, stack) { if (stack.length === 0) stack.unshift(currentState); stack.unshift(opts.next); @@ -822,18 +906,16 @@ var SJSHighlightRules = function() { }) }; }; - - var ctxEnd = function(opts) { + var ctxEnd = function (opts) { return { token: opts.token, regex: opts.regex, - next: contextAware(function(currentState, stack) { + next: contextAware(function (currentState, stack) { stack.shift(); return stack[0] || "start"; }) }; }; - this.$rules = parent.$rules; this.$rules.no_regex = [ { @@ -868,9 +950,7 @@ var SJSHighlightRules = function() { regex: "(\\{)(\\s*)(\\|)", next: "block_arguments" } - ].concat(this.$rules.no_regex); - this.$rules.block_arguments = [ { token: "paren.rparen", @@ -878,68 +958,65 @@ var SJSHighlightRules = function() { next: "no_regex" } ].concat(this.$rules.function_arguments); - this.$rules.bstring = [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", + token: "string", + regex: "\\\\$", next: "bstring" }, ctxBegin({ - token : "paren.lparen", - regex : "\\$\\{", + token: "paren.lparen", + regex: "\\$\\{", next: "string_interp" }), ctxBegin({ - token : "paren.lparen", - regex : "\\$", + token: "paren.lparen", + regex: "\\$", next: "bstring_interp_single" }), ctxEnd({ - token : "string", - regex : "`" + token: "string", + regex: "`" }), { defaultToken: "string" } ]; - this.$rules.qqstring = [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", + token: "string", + regex: "\\\\$", next: "qqstring" }, ctxBegin({ - token : "paren.lparen", - regex : "#\\{", + token: "paren.lparen", + regex: "#\\{", next: "string_interp" }), ctxEnd({ - token : "string", - regex : '"' + token: "string", + regex: '"' }), { defaultToken: "string" } ]; var embeddableRules = []; - for (var i=0; i < this.$rules.no_regex.length; i++) { + for (var i = 0; i < this.$rules.no_regex.length; i++) { var rule = this.$rules.no_regex[i]; var token = String(rule.token); if (token.indexOf('paren') == -1 && (!rule.next || rule.next.isContextAware)) { embeddableRules.push(rule); } } - this.$rules.string_interp = [ ctxEnd({ token: "paren.rparen", @@ -958,8 +1035,8 @@ var SJSHighlightRules = function() { next: 'bstring_interp_single_call' }, ctxEnd({ - token : "identifier", - regex : "\\w*" + token: "identifier", + regex: "\\w*" }) ]; this.$rules.bstring_interp_single_call = [ @@ -975,32 +1052,36 @@ var SJSHighlightRules = function() { ].concat(embeddableRules); }; oop.inherits(SJSHighlightRules, TextHighlightRules); - exports.SJSHighlightRules = SJSHighlightRules; + }); -define("ace/mode/sjs",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/sjs_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; +define("ace/mode/sjs",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/sjs_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JSMode = require("./javascript").Mode; var SJSHighlightRules = require("./sjs_highlight_rules").SJSHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = SJSHighlightRules; this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, JSMode); -(function() { - this.createWorker = function(session) { +(function () { + this.createWorker = function (session) { return null; }; this.$id = "ace/mode/sjs"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/sjs"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-slim.js b/vendor/assets/javascripts/ace/mode-slim.js new file mode 100644 index 00000000..0cf63939 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-slim.js @@ -0,0 +1,4710 @@ +define("ace/mode/slim_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var modes = require("../config").$modes; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var SlimHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "keyword", + regex: /^(\s*)(\w+):\s*/, + onMatch: function (value, state, stack, line) { + var indent = /^\s*/.exec(line)[0]; + var m = value.match(/^(\s*)(\w+):/); + var language = m[2]; + if (!/^(javascript|ruby|coffee|markdown|css|scss|sass|less)$/.test(language)) + language = ""; + stack.unshift("language-embed", [], [indent, language], state); + return this.token; + }, + stateName: "language-embed", + next: [{ + token: "string", + regex: /^(\s*)/, + onMatch: function (value, state, stack, line) { + var indent = stack[2][0]; + if (indent.length >= value.length) { + stack.splice(0, 3); + this.next = stack.shift(); + return this.token; + } + this.next = ""; + return [{ type: "text", value: indent }]; + }, + next: "" + }, { + token: "string", + regex: /.+/, + onMatch: function (value, state, stack, line) { + var indent = stack[2][0]; + var language = stack[2][1]; + var embedState = stack[1]; + if (modes[language]) { + var data = modes[language].getTokenizer().getLineTokens(line.slice(indent.length), embedState.slice(0)); + stack[1] = data.state; + return data.tokens; + } + return this.token; + } + }] + }, + { + token: 'constant.begin.javascript.filter.slim', + regex: '^(\\s*)():$' + }, { + token: 'constant.begin..filter.slim', + regex: '^(\\s*)(ruby):$' + }, { + token: 'constant.begin.coffeescript.filter.slim', + regex: '^(\\s*)():$' + }, { + token: 'constant.begin..filter.slim', + regex: '^(\\s*)(markdown):$' + }, { + token: 'constant.begin.css.filter.slim', + regex: '^(\\s*)():$' + }, { + token: 'constant.begin.scss.filter.slim', + regex: '^(\\s*)():$' + }, { + token: 'constant.begin..filter.slim', + regex: '^(\\s*)(sass):$' + }, { + token: 'constant.begin..filter.slim', + regex: '^(\\s*)(less):$' + }, { + token: 'constant.begin..filter.slim', + regex: '^(\\s*)(erb):$' + }, { + token: 'keyword.html.tags.slim', + regex: '^(\\s*)((:?\\*(\\w)+)|doctype html|abbr|acronym|address|applet|area|article|aside|audio|base|basefont|bdo|big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command|datalist|dd|del|details|dialog|dfn|dir|div|dl|dt|embed|fieldset|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|link|li|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|source|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|xmp|b|u|s|em|a)(?:([.#](\\w|\\.)+)+\\s?)?\\b' + }, { + token: 'keyword.slim', + regex: '^(\\s*)(?:([.#](\\w|\\.)+)+\\s?)' + }, { + token: "string", + regex: /^(\s*)('|\||\/|(\/!))\s*/, + onMatch: function (val, state, stack, line) { + var indent = /^\s*/.exec(line)[0]; + if (stack.length < 1) { + stack.push(this.next); + } + else { + stack[0] = "mlString"; + } + if (stack.length < 2) { + stack.push(indent.length); + } + else { + stack[1] = indent.length; + } + return this.token; + }, + next: "mlString" + }, { + token: 'keyword.control.slim', + regex: '^(\\s*)(\\-|==|=)', + push: [{ + token: 'control.end.slim', + regex: '$', + next: "pop" + }, { + include: "rubyline" + }, { + include: "misc" + }] + }, { + token: 'paren', + regex: '\\(', + push: [{ + token: 'paren', + regex: '\\)', + next: "pop" + }, { + include: "misc" + }] + }, { + token: 'paren', + regex: '\\[', + push: [{ + token: 'paren', + regex: '\\]', + next: "pop" + }, { + include: "misc" + }] + }, { + include: "misc" + } + ], + "mlString": [{ + token: "indent", + regex: /^\s*/, + onMatch: function (val, state, stack) { + var curIndent = stack[1]; + if (curIndent >= val.length) { + this.next = "start"; + stack.splice(0); + } + else { + this.next = "mlString"; + } + return this.token; + }, + next: "start" + }, { + defaultToken: "string" + }], + "rubyline": [{ + token: "keyword.operator.ruby.embedded.slim", + regex: "(==|=)(<>|><|<'|'<|<|>)?|-" + }, { + token: "list.ruby.operators.slim", + regex: "(\\b)(for|in|do|if|else|elsif|unless|while|yield|not|and|or)\\b" + }, { + token: "string", + regex: "['](.)*?[']" + }, { + token: "string", + regex: "[\"](.)*?[\"]" + }], + "misc": [{ + token: 'class.variable.slim', + regex: '\\@([a-zA-Z_][a-zA-Z0-9_]*)\\b' + }, { + token: "list.meta.slim", + regex: "(\\b)(true|false|nil)(\\b)" + }, { + token: 'keyword.operator.equals.slim', + regex: '=' + }, { + token: "string", + regex: "['](.)*?[']" + }, { + token: "string", + regex: "[\"](.)*?[\"]" + }] + }; + this.normalizeRules(); +}; +oop.inherits(SlimHighlightRules, TextHighlightRules); +exports.SlimHighlightRules = SlimHighlightRules; + +}); + +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", // multi line comment + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/config","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; +var modes = require("../config").$modes; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var escaped = function (ch) { + return "(?:[^" + lang.escapeRegExp(ch) + "\\\\]|\\\\.)*"; +}; +var MarkdownHighlightRules = function () { + HtmlHighlightRules.call(this); + var codeBlockStartRule = { + token: "support.function", + regex: /^\s*(```+[^`]*|~~~+[^~]*)$/, + onMatch: function (value, state, stack, line) { + var m = value.match(/^(\s*)([`~]+)(.*)/); + var language = /[\w-]+|$/.exec(m[3])[0]; + if (!modes[language]) + language = ""; + stack.unshift("githubblock", [], [m[1], m[2], language], state); + return this.token; + }, + next: "githubblock" + }; + var codeBlockRules = [{ + token: "support.function", + regex: ".*", + onMatch: function (value, state, stack, line) { + var embedState = stack[1]; + var indent = stack[2][0]; + var endMarker = stack[2][1]; + var language = stack[2][2]; + var m = /^(\s*)(`+|~+)\s*$/.exec(value); + if (m && m[1].length < indent.length + 3 + && m[2].length >= endMarker.length && m[2][0] == endMarker[0]) { + stack.splice(0, 3); + this.next = stack.shift(); + return this.token; + } + this.next = ""; + if (language && modes[language]) { + var data = modes[language].getTokenizer().getLineTokens(value, embedState.slice(0)); + stack[1] = data.state; + return data.tokens; + } + return this.token; + } + }]; + this.$rules["start"].unshift({ + token: "empty_line", + regex: '^$', + next: "allowBlock" + }, { + token: "markup.heading.1", + regex: "^=+(?=\\s*$)" + }, { + token: "markup.heading.2", + regex: "^\\-+(?=\\s*$)" + }, { + token: function (value) { + return "markup.heading." + value.length; + }, + regex: /^#{1,6}(?=\s|$)/, + next: "header" + }, codeBlockStartRule, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" + }, { + token: "constant", + regex: "^ {0,3}(?:(?:\\* ?){3,}|(?:\\- ?){3,}|(?:\\_ ?){3,})\\s*$", + next: "allowBlock" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic" + }); + this.addRules({ + "basic": [{ + token: "constant.language.escape", + regex: /\\[\\`*_{}\[\]()#+\-.!]/ + }, { + token: "support.function", + regex: "(`+)(.*?[^`])(\\1)" + }, { + token: ["text", "constant", "text", "url", "string", "text"], + regex: "^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:[\"][^\"]+[\"])?(\\s*))$" + }, { + token: ["text", "string", "text", "constant", "text"], + regex: "(\\[)(" + escaped("]") + ")(\\]\\s*\\[)(" + escaped("]") + ")(\\])" + }, { + token: ["text", "string", "text", "markup.underline", "string", "text"], + regex: "(\\!?\\[)(" + // [ + escaped("]") + // link text or alt text + ")(\\]\\()" + // ]( + '((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)' + // href or image + '(\\s*"' + escaped('"') + '"\\s*)?' + // "title" + "(\\))" // ) + }, { + token: "string.strong", + regex: "([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: "string.emphasis", + regex: "([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)" + }, { + token: ["text", "url", "text"], + regex: "(<)(" + + "(?:https?|ftp|dict):[^'\">\\s]+" + + "|" + + "(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+" + + ")(>)" + }], + "allowBlock": [ + { token: "support.function", regex: "^ {4}.+", next: "allowBlock" }, + { token: "empty_line", regex: '^$', next: "allowBlock" }, + { token: "empty", regex: "", next: "start" } + ], + "header": [{ + regex: "$", + next: "start" + }, { + include: "basic" + }, { + defaultToken: "heading" + }], + "listblock-start": [{ + token: "support.variable", + regex: /(?:\[[ x]\])?/, + next: "listblock" + }], + "listblock": [{ + token: "empty_line", + regex: "^$", + next: "start" + }, { + token: "markup.list", + regex: "^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+", + next: "listblock-start" + }, { + include: "basic", noEscape: true + }, + codeBlockStartRule, + { + defaultToken: "list" //do not use markup.list to allow stling leading `*` differntly + }], + "blockquote": [{ + token: "empty_line", + regex: "^\\s*$", + next: "start" + }, { + token: "string.blockquote", + regex: "^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+", + next: "blockquote" + }, { + include: "basic", noEscape: true + }, { + defaultToken: "string.blockquote" + }], + "githubblock": codeBlockRules + }); + this.normalizeRules(); +}; +oop.inherits(MarkdownHighlightRules, TextHighlightRules); +exports.MarkdownHighlightRules = MarkdownHighlightRules; + +}); + +define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /^(?:[=-]+\s*$|#{1,6} |`{3})/; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (!this.foldingStartMarker.test(line)) + return ""; + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) == "start") + return "end"; + return "start"; + } + return "start"; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (!line.match(this.foldingStartMarker)) + return; + if (line[0] == "`") { + if (session.bgTokenizer.getState(row) !== "start") { + while (++row < maxRow) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(startRow, startColumn, row, 0); + } + else { + while (row-- > 0) { + line = session.getLine(row); + if (line[0] == "`" & line.substring(0, 3) == "```") + break; + } + return new Range(row, line.length, startRow, 0); + } + } + var token; + function isHeading(row) { + token = session.getTokens(row)[0]; + return token && token.type.lastIndexOf(heading, 0) === 0; + } + var heading = "markup.heading"; + function getLevel() { + var ch = token.value[0]; + if (ch == "=") + return 6; + if (ch == "-") + return 5; + return 7 - token.value.search(/[^#]|$/); + } + if (isHeading(row)) { + var startHeadingLevel = getLevel(); + while (++row < maxRow) { + if (!isHeading(row)) + continue; + var level = getLevel(); + if (level >= startHeadingLevel) + break; + } + endRow = row - (!token || ["=", "-"].indexOf(token.value[0]) == -1 ? 1 : 2); + if (endRow > startRow) { + while (endRow > startRow && /^\s*$/.test(session.getLine(endRow))) + endRow--; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/sh_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var reservedKeywords = exports.reservedKeywords = ('!|{|}|case|do|done|elif|else|' + + 'esac|fi|for|if|in|then|until|while|' + + '&|;|export|local|read|typeset|unset|' + + 'elif|select|set|function|declare|readonly'); +var languageConstructs = exports.languageConstructs = ('[|]|alias|bg|bind|break|builtin|' + + 'cd|command|compgen|complete|continue|' + + 'dirs|disown|echo|enable|eval|exec|' + + 'exit|fc|fg|getopts|hash|help|history|' + + 'jobs|kill|let|logout|popd|printf|pushd|' + + 'pwd|return|set|shift|shopt|source|' + + 'suspend|test|times|trap|type|ulimit|' + + 'umask|unalias|wait'); +var ShHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "keyword": reservedKeywords, + "support.function.builtin": languageConstructs, + "invalid.deprecated": "debugger" + }, "identifier"); + var integer = "(?:(?:[1-9]\\d*)|(?:0))"; + var fraction = "(?:\\.\\d+)"; + var intPart = "(?:\\d+)"; + var pointFloat = "(?:(?:" + intPart + "?" + fraction + ")|(?:" + intPart + "\\.))"; + var exponentFloat = "(?:(?:" + pointFloat + "|" + intPart + ")" + ")"; + var floatNumber = "(?:" + exponentFloat + "|" + pointFloat + ")"; + var fileDescriptor = "(?:&" + intPart + ")"; + var variableName = "[a-zA-Z_][a-zA-Z0-9_]*"; + var variable = "(?:" + variableName + "(?==))"; + var builtinVariable = "(?:\\$(?:SHLVL|\\$|\\!|\\?))"; + var func = "(?:" + variableName + "\\s*\\(\\))"; + this.$rules = { + "start": [{ + token: "constant", + regex: /\\./ + }, { + token: ["text", "comment"], + regex: /(^|\s)(#.*)$/ + }, { + token: "string.start", + regex: '"', + push: [{ + token: "constant.language.escape", + regex: /\\(?:[$`"\\]|$)/ + }, { + include: "variables" + }, { + token: "keyword.operator", + regex: /`/ // TODO highlight ` + }, { + token: "string.end", + regex: '"', + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string", + regex: "\\$'", + push: [{ + token: "constant.language.escape", + regex: /\\(?:[abeEfnrtv\\'"]|x[a-fA-F\d]{1,2}|u[a-fA-F\d]{4}([a-fA-F\d]{4})?|c.|\d{1,3})/ + }, { + token: "string", + regex: "'", + next: "pop" + }, { + defaultToken: "string" + }] + }, { + regex: "<<<", + token: "keyword.operator" + }, { + stateName: "heredoc", + regex: "(<<-?)(\\s*)(['\"`]?)([\\w\\-]+)(['\"`]?)", + onMatch: function (value, currentState, stack) { + var next = value[2] == '-' ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[4]); + return [ + { type: "constant", value: tokens[1] }, + { type: "text", value: tokens[2] }, + { type: "string", value: tokens[3] }, + { type: "support.class", value: tokens[4] }, + { type: "string", value: tokens[5] } + ]; + }, + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^\t+" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: ["keyword", "text", "text", "text", "variable"], + regex: /(declare|local|readonly)(\s+)(?:(-[fixar]+)(\s+))?([a-zA-Z_][a-zA-Z0-9_]*\b)/ + }, { + token: "variable.language", + regex: builtinVariable + }, { + token: "variable", + regex: variable + }, { + include: "variables" + }, { + token: "support.function", + regex: func + }, { + token: "support.function", + regex: fileDescriptor + }, { + token: "string", // ' string + start: "'", end: "'" + }, { + token: "constant.numeric", // float + regex: floatNumber + }, { + token: "constant.numeric", // integer + regex: integer + "\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|~|<|>|<=|=>|=|!=|[%&|`]" + }, { + token: "punctuation.operator", + regex: ";" + }, { + token: "paren.lparen", + regex: "[\\[\\(\\{]" + }, { + token: "paren.rparen", + regex: "[\\]]" + }, { + token: "paren.rparen", + regex: "[\\)\\}]", + next: "pop" + }], + variables: [{ + token: "variable", + regex: /(\$)(\w+)/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\()/, + push: "start" + }, { + token: ["variable", "paren.lparen", "keyword.operator", "variable", "keyword.operator"], + regex: /(\$)(\{)([#!]?)(\w+|[*@#?\-$!0_])(:[?+\-=]?|##?|%%?|,,?\/|\^\^?)?/, + push: "start" + }, { + token: "variable", + regex: /\$[*@#?\-$!0_]/ + }, { + token: ["variable", "paren.lparen"], + regex: /(\$)(\{)/, + push: "start" + }] + }; + this.normalizeRules(); +}; +oop.inherits(ShHighlightRules, TextHighlightRules); +exports.ShHighlightRules = ShHighlightRules; + +}); + +define("ace/mode/sh",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sh_highlight_rules","ace/range","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ShHighlightRules = require("./sh_highlight_rules").ShHighlightRules; +var Range = require("../range").Range; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = ShHighlightRules; + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[:]\s*$/); + if (match) { + indent += tab; + } + } + return indent; + }; + var outdents = { + "pass": 1, + "return": 1, + "raise": 1, + "break": 1, + "continue": 1 + }; + this.checkOutdent = function (state, line, input) { + if (input !== "\r\n" && input !== "\r" && input !== "\n") + return false; + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + if (!tokens) + return false; + do { + var last = tokens.pop(); + } while (last && (last.type == "comment" || (last.type == "text" && last.value.match(/^\s+$/)))); + if (!last) + return false; + return (last.type == "keyword" && outdents[last.value]); + }; + this.autoOutdent = function (state, doc, row) { + row += 1; + var indent = this.$getIndent(doc.getLine(row)); + var tab = doc.getTabString(); + if (indent.slice(-tab.length) == tab) + doc.remove(new Range(row, indent.length - tab.length, row, indent.length)); + }; + this.$id = "ace/mode/sh"; + this.snippetFileId = "ace/snippets/sh"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var XmlFoldMode = require("./folding/xml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.voidElements = lang.arrayToMap([]); + this.blockComment = { start: "" }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/xml"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/behaviour/cstyle","ace/mode/text","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown","ace/mode/javascript","ace/mode/html","ace/mode/sh","ace/mode/sh","ace/mode/xml","ace/mode/css"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var TextMode = require("./text").Mode; +var MarkdownHighlightRules = require("./markdown_highlight_rules").MarkdownHighlightRules; +var MarkdownFoldMode = require("./folding/markdown").FoldMode; +var Mode = function () { + this.HighlightRules = MarkdownHighlightRules; + this.createModeDelegates({ + javascript: require("./javascript").Mode, + html: require("./html").Mode, + bash: require("./sh").Mode, + sh: require("./sh").Mode, + xml: require("./xml").Mode, + css: require("./css").Mode + }); + this.foldingRules = new MarkdownFoldMode(); + this.$behaviour = new CstyleBehaviour({ braces: true }); +}; +oop.inherits(Mode, TextMode); +(function () { + this.type = "text"; + this.blockComment = { start: "" }; + this.$quotes = { '"': '"', "`": "`" }; + this.getNextLineIndent = function (state, line, tab) { + if (state == "listblock") { + var match = /^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(line); + if (!match) + return ""; + var marker = match[2]; + if (!marker) + marker = parseInt(match[3], 10) + 1 + "."; + return match[1] + marker + match[4]; + } + else { + return this.$getIndent(line); + } + }; + this.$id = "ace/mode/markdown"; + this.snippetFileId = "ace/snippets/markdown"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/coffee_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +oop.inherits(CoffeeHighlightRules, TextHighlightRules); +function CoffeeHighlightRules() { + var identifier = "[$A-Za-z_\\x7f-\\uffff][$\\w\\x7f-\\uffff]*"; + var keywords = ("this|throw|then|try|typeof|super|switch|return|break|by|continue|" + + "catch|class|in|instanceof|is|isnt|if|else|extends|for|own|" + + "finally|function|while|when|new|no|not|delete|debugger|do|loop|of|off|" + + "or|on|unless|until|and|yes|yield|export|import|default"); + var langConstant = ("true|false|null|undefined|NaN|Infinity"); + var illegal = ("case|const|function|var|void|with|enum|implements|" + + "interface|let|package|private|protected|public|static"); + var supportClass = ("Array|Boolean|Date|Function|Number|Object|RegExp|ReferenceError|String|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + + "SyntaxError|TypeError|URIError|" + + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray"); + var supportFunction = ("Math|JSON|isNaN|isFinite|parseInt|parseFloat|encodeURI|" + + "encodeURIComponent|decodeURI|decodeURIComponent|String|"); + var variableLanguage = ("window|arguments|prototype|document"); + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": langConstant, + "invalid.illegal": illegal, + "language.support.class": supportClass, + "language.support.function": supportFunction, + "variable.language": variableLanguage + }, "identifier"); + var functionRule = { + token: ["paren.lparen", "variable.parameter", "paren.rparen", "text", "storage.type"], + regex: /(?:(\()((?:"[^")]*?"|'[^')]*?'|\/[^\/)]*?\/|[^()"'\/])*?)(\))(\s*))?([\-=]>)/.source + }; + var stringEscape = /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)/; + this.$rules = { + start: [ + { + token: "constant.numeric", + regex: "(?:0x[\\da-fA-F]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+-]?\\d+)?)" + }, { + stateName: "qdoc", + token: "string", regex: "'''", next: [ + { token: "string", regex: "'''", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qqdoc", + token: "string", + regex: '"""', + next: [ + { token: "string", regex: '"""', next: "start" }, + { token: "paren.string", regex: '#{', push: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qstring", + token: "string", regex: "'", next: [ + { token: "string", regex: "'", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "qqstring", + token: "string.start", regex: '"', next: [ + { token: "string.end", regex: '"', next: "start" }, + { token: "paren.string", regex: '#{', push: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + stateName: "js", + token: "string", regex: "`", next: [ + { token: "string", regex: "`", next: "start" }, + { token: "constant.language.escape", regex: stringEscape }, + { defaultToken: "string" } + ] + }, { + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + return "paren"; + } + if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift() || ""; + if (this.next.indexOf("string") != -1) + return "paren.string"; + } + return "paren"; + } + }, { + token: "string.regex", + regex: "///", + next: "heregex" + }, { + token: "string.regex", + regex: /(?:\/(?![\s=])[^[\/\n\\]*(?:(?:\\[\s\S]|\[[^\]\n\\]*(?:\\[\s\S][^\]\n\\]*)*])[^[\/\n\\]*)*\/)(?:[imgy]{0,4})(?!\w)/ + }, { + token: "comment", + regex: "###(?!#)", + next: "comment" + }, { + token: "comment", + regex: "#.*" + }, { + token: ["punctuation.operator", "text", "identifier"], + regex: "(\\.)(\\s*)(" + illegal + ")" + }, { + token: "punctuation.operator", + regex: "\\.{1,3}" + }, { + token: ["keyword", "text", "language.support.class", + "text", "keyword", "text", "language.support.class"], + regex: "(class)(\\s+)(" + identifier + ")(?:(\\s+)(extends)(\\s+)(" + identifier + "))?" + }, { + token: ["entity.name.function", "text", "keyword.operator", "text"].concat(functionRule.token), + regex: "(" + identifier + ")(\\s*)([=:])(\\s*)" + functionRule.regex + }, + functionRule, + { + token: "variable", + regex: "@(?:" + identifier + ")?" + }, { + token: keywordMapper, + regex: identifier + }, { + token: "punctuation.operator", + regex: "\\,|\\." + }, { + token: "storage.type", + regex: "[\\-=]>" + }, { + token: "keyword.operator", + regex: "(?:[-+*/%<>&|^!?=]=|>>>=?|\\-\\-|\\+\\+|::|&&=|\\|\\|=|<<=|>>=|\\?\\.|\\.{2,3}|[!*+-=><])" + }, { + token: "paren.lparen", + regex: "[({[]" + }, { + token: "paren.rparen", + regex: "[\\]})]" + }, { + token: "text", + regex: "\\s+" + } + ], + heregex: [{ + token: "string.regex", + regex: '.*?///[imgy]{0,4}', + next: "start" + }, { + token: "comment.regex", + regex: "\\s+(?:#.*)?" + }, { + token: "string.regex", + regex: "\\S+" + }], + comment: [{ + token: "comment", + regex: '###', + next: "start" + }, { + defaultToken: "comment" + }] + }; + this.normalizeRules(); +} +exports.CoffeeHighlightRules = CoffeeHighlightRules; + +}); + +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.commentBlock = function (session, row) { + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + if (startLevel == -1 || line[startLevel] != "#") + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + while (++row < maxRow) { + line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (line[level] != "#") + break; + endRow = row; + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) + session.foldWidgets[row - 1] = "start"; + else + session.foldWidgets[row - 1] = ""; + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/coffee",["require","exports","module","ace/mode/coffee_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee","ace/range","ace/mode/text","ace/worker/worker_client","ace/lib/oop"], function(require, exports, module){"use strict"; +var Rules = require("./coffee_highlight_rules").CoffeeHighlightRules; +var Outdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var FoldMode = require("./folding/coffee").FoldMode; +var Range = require("../range").Range; +var TextMode = require("./text").Mode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var oop = require("../lib/oop"); +function Mode() { + this.HighlightRules = Rules; + this.$outdent = new Outdent(); + this.foldingRules = new FoldMode(); +} +oop.inherits(Mode, TextMode); +(function () { + var indenter = /(?:[({[=:]|[-=]>|\b(?:else|try|(?:swi|ca)tch(?:\s+[$A-Za-z_\x7f-\uffff][$\w\x7f-\uffff]*)?|finally))\s*$|^\s*(else\b\s*)?(?:if|for|while|loop)\b(?!.*\bthen\b)/; + this.lineCommentStart = "#"; + this.blockComment = { start: "###", end: "###" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (!(tokens.length && tokens[tokens.length - 1].type === 'comment') && + state === 'start' && indenter.test(line)) + indent += tab; + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/coffee_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/coffee"; + this.snippetFileId = "ace/snippets/coffee"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CssHighlightRules = require("./css_highlight_rules"); +var ScssHighlightRules = function () { + var properties = lang.arrayToMap(CssHighlightRules.supportType.split("|")); + var functions = lang.arrayToMap(("hsl|hsla|rgb|rgba|url|attr|counter|counters|abs|adjust_color|adjust_hue|" + + "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + + "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + + "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + + "scale_color|transparentize|type_of|unit|unitless|unquote").split("|")); + var constants = lang.arrayToMap(CssHighlightRules.supportConstant.split("|")); + var colors = lang.arrayToMap(CssHighlightRules.supportConstantColor.split("|")); + var keywords = lang.arrayToMap(("@mixin|@extend|@include|@import|@media|@debug|@warn|@if|@for|@each|@while|@else|@font-face|@-webkit-keyframes|if|and|!default|module|def|end|declare").split("|")); + var tags = lang.arrayToMap(("a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdo|" + + "big|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|" + + "command|datalist|dd|del|details|dfn|dir|div|dl|dt|em|embed|fieldset|" + + "figcaption|figure|font|footer|form|frame|frameset|h1|h2|h3|h4|h5|h6|head|" + + "header|hgroup|hr|html|i|iframe|img|input|ins|keygen|kbd|label|legend|li|" + + "link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|" + + "option|output|p|param|pre|progress|q|rp|rt|ruby|s|samp|script|section|select|" + + "small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|" + + "textarea|tfoot|th|thead|time|title|tr|tt|u|ul|var|video|wbr|xmp").split("|")); + var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // multi line string start + regex: '["].*\\\\$', + next: "qqstring" + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "string", // multi line string start + regex: "['].*\\\\$", + next: "qstring" + }, { + token: "constant.numeric", + regex: numRe + "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: ["support.function", "string", "support.function"], + regex: "(url\\()(.*)(\\))" + }, { + token: function (value) { + if (properties.hasOwnProperty(value.toLowerCase())) + return "support.type"; + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (constants.hasOwnProperty(value)) + return "constant.language"; + else if (functions.hasOwnProperty(value)) + return "support.function"; + else if (colors.hasOwnProperty(value.toLowerCase())) + return "support.constant.color"; + else if (tags.hasOwnProperty(value.toLowerCase())) + return "variable.language"; + else + return "text"; + }, + regex: "\\-?[@a-z_][@a-z0-9_\\-]*" + }, { + token: "variable", + regex: "[a-z_\\-$][a-z0-9_\\-$]*\\b" + }, { + token: "variable.language", + regex: "#[a-z0-9-_]+" + }, { + token: "variable.language", + regex: "\\.[a-z0-9-_]+" + }, { + token: "variable.language", + regex: ":[a-z0-9-_]+" + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + token: "keyword.operator", + regex: "<|>|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }, { + caseInsensitive: true + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "qqstring": [ + { + token: "string", + regex: '(?:(?:\\\\.)|(?:[^"\\\\]))*?"', + next: "start" + }, { + token: "string", + regex: '.+' + } + ], + "qstring": [ + { + token: "string", + regex: "(?:(?:\\\\.)|(?:[^'\\\\]))*?'", + next: "start" + }, { + token: "string", + regex: '.+' + } + ] + }; +}; +oop.inherits(ScssHighlightRules, TextHighlightRules); +exports.ScssHighlightRules = ScssHighlightRules; + +}); + +define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle","ace/mode/css_completions"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var CssCompletions = require("./css_completions").CssCompletions; +var Mode = function () { + this.HighlightRules = ScssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.$id = "ace/mode/scss"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var ScssHighlightRules = require("./scss_highlight_rules").ScssHighlightRules; +var SassHighlightRules = function () { + ScssHighlightRules.call(this); + var start = this.$rules.start; + if (start[1].token == "comment") { + start.splice(1, 1, { + onMatch: function (value, currentState, stack) { + stack.unshift(this.next, -1, value.length - 2, currentState); + return "comment"; + }, + regex: /^\s*\/\*/, + next: "comment" + }, { + token: "error.invalid", + regex: "/\\*|[{;}]" + }, { + token: "support.type", + regex: /^\s*:[\w\-]+\s/ + }); + this.$rules.comment = [ + { regex: /^\s*/, onMatch: function (value, currentState, stack) { + if (stack[1] === -1) + stack[1] = Math.max(stack[2], value.length - 1); + if (value.length <= stack[1]) { stack.shift(); + stack.shift(); + stack.shift(); + this.next = stack.shift(); + return "text"; + } + else { + this.next = ""; + return "comment"; + } + }, next: "start" }, + { defaultToken: "comment" } + ]; + } +}; +oop.inherits(SassHighlightRules, ScssHighlightRules); +exports.SassHighlightRules = SassHighlightRules; + +}); + +define("ace/mode/sass",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sass_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SassHighlightRules = require("./sass_highlight_rules").SassHighlightRules; +var FoldMode = require("./folding/coffee").FoldMode; +var Mode = function () { + this.HighlightRules = SassHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$id = "ace/mode/sass"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var CssHighlightRules = require('./css_highlight_rules'); +var LessHighlightRules = function () { + var keywordList = "@import|@media|@font-face|@keyframes|@-webkit-keyframes|@supports|" + + "@charset|@plugin|@namespace|@document|@page|@viewport|@-ms-viewport|" + + "or|and|when|not"; + var keywords = keywordList.split('|'); + var properties = CssHighlightRules.supportType.split('|'); + var keywordMapper = this.createKeywordMapper({ + "support.constant": CssHighlightRules.supportConstant, + "keyword": keywordList, + "support.constant.color": CssHighlightRules.supportConstantColor, + "support.constant.fonts": CssHighlightRules.supportConstantFonts + }, "identifier", true); + var numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; + this.$rules = { + "start": [ + { + token: "comment", + regex: "\\/\\/.*$" + }, + { + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: ["support.function", "paren.lparen", "string", "paren.rparen"], + regex: "(url)(\\()(.*)(\\))" + }, { + token: ["support.function", "paren.lparen"], + regex: "(:extend|[a-z0-9_\\-]+)(\\()" + }, { + token: function (value) { + if (keywords.indexOf(value.toLowerCase()) > -1) + return "keyword"; + else + return "variable"; + }, + regex: "[@\\$][a-z0-9_\\-@\\$]*\\b" + }, { + token: "variable", + regex: "[@\\$]\\{[a-z0-9_\\-@\\$]*\\}" + }, { + token: function (first, second) { + if (properties.indexOf(first.toLowerCase()) > -1) { + return ["support.type.property", "text"]; + } + else { + return ["support.type.unknownProperty", "text"]; + } + }, + regex: "([a-z0-9-_]+)(\\s*:)" + }, { + token: "keyword", + regex: "&" // special case - always treat as keyword + }, { + token: keywordMapper, + regex: "\\-?[@a-z_][@a-z0-9_\\-]*" + }, { + token: "variable.language", + regex: "#[a-z0-9-_]+" + }, { + token: "variable.language", + regex: "\\.[a-z0-9-_]+" + }, { + token: "variable.language", + regex: ":[a-z_][a-z0-9-_]*" + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + token: "keyword.operator", + regex: "<|>|<=|>=|=|!=|-|%|\\+|\\*" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }, { + caseInsensitive: true + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(LessHighlightRules, TextHighlightRules); +exports.LessHighlightRules = LessHighlightRules; + +}); + +define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/css_completions","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var LessHighlightRules = require("./less_highlight_rules").LessHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CssCompletions = require("./css_completions").CssCompletions; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = LessHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions("ruleset", session, pos, prefix); + }; + this.$id = "ace/mode/less"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/ruby_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var constantOtherSymbol = exports.constantOtherSymbol = { + token: "constant.other.symbol.ruby", // symbol + regex: "[:](?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?" +}; +exports.qString = { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" +}; +exports.qqString = { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' +}; +exports.tString = { + token: "string", // backtick string + regex: "[`](?:(?:\\\\.)|(?:[^'\\\\]))*?[`]" +}; +var constantNumericHex = exports.constantNumericHex = { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F](?:[0-9a-fA-F]|_(?=[0-9a-fA-F]))*\\b" +}; +var constantNumericBinary = exports.constantNumericBinary = { + token: "constant.numeric", + regex: /\b(0[bB][01](?:[01]|_(?=[01]))*)\b/ +}; +var constantNumericDecimal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[dD](?:[1-9](?:[\d]|_(?=[\d]))*|0))\b/ +}; +var constantNumericOctal = exports.constantNumericDecimal = { + token: "constant.numeric", + regex: /\b(0[oO]?(?:[1-7](?:[0-7]|_(?=[0-7]))*|0))\b/ +}; +var constantNumericRational = exports.constantNumericRational = { + token: "constant.numeric", //rational + complex + regex: /\b([\d]+(?:[./][\d]+)?ri?)\b/ +}; +var constantNumericComplex = exports.constantNumericComplex = { + token: "constant.numeric", //simple complex numbers + regex: /\b([\d]i)\b/ +}; +var constantNumericFloat = exports.constantNumericFloat = { + token: "constant.numeric", // float + complex + regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?i?\\b" +}; +var instanceVariable = exports.instanceVariable = { + token: "variable.instance", // instance variable + regex: "@{1,2}[a-zA-Z_\\d]+" +}; +var RubyHighlightRules = function () { + var builtinFunctions = ("abort|Array|assert|assert_equal|assert_not_equal|assert_same|assert_not_same|" + + "assert_nil|assert_not_nil|assert_match|assert_no_match|assert_in_delta|assert_throws|" + + "assert_raise|assert_nothing_raised|assert_instance_of|assert_kind_of|assert_respond_to|" + + "assert_operator|assert_send|assert_difference|assert_no_difference|assert_recognizes|" + + "assert_generates|assert_response|assert_redirected_to|assert_template|assert_select|" + + "assert_select_email|assert_select_rjs|assert_select_encoded|css_select|at_exit|" + + "attr|attr_writer|attr_reader|attr_accessor|attr_accessible|autoload|binding|block_given?|callcc|" + + "caller|catch|chomp|chomp!|chop|chop!|defined?|delete_via_redirect|eval|exec|exit|" + + "exit!|fail|Float|flunk|follow_redirect!|fork|form_for|form_tag|format|gets|global_variables|gsub|" + + "gsub!|get_via_redirect|host!|https?|https!|include|Integer|lambda|link_to|" + + "link_to_unless_current|link_to_function|link_to_remote|load|local_variables|loop|open|open_session|" + + "p|print|printf|proc|putc|puts|post_via_redirect|put_via_redirect|raise|rand|" + + "raw|readline|readlines|redirect?|request_via_redirect|require|scan|select|" + + "set_trace_func|sleep|split|sprintf|srand|String|stylesheet_link_tag|syscall|system|sub|sub!|test|" + + "throw|trace_var|trap|untrace_var|atan2|cos|exp|frexp|ldexp|log|log10|sin|sqrt|tan|" + + "render|javascript_include_tag|csrf_meta_tag|label_tag|text_field_tag|submit_tag|check_box_tag|" + + "content_tag|radio_button_tag|text_area_tag|password_field_tag|hidden_field_tag|" + + "fields_for|select_tag|options_for_select|options_from_collection_for_select|collection_select|" + + "time_zone_select|select_date|select_time|select_datetime|date_select|time_select|datetime_select|" + + "select_year|select_month|select_day|select_hour|select_minute|select_second|file_field_tag|" + + "file_field|respond_to|skip_before_filter|around_filter|after_filter|verify|" + + "protect_from_forgery|rescue_from|helper_method|redirect_to|before_filter|" + + "send_data|send_file|validates_presence_of|validates_uniqueness_of|validates_length_of|" + + "validates_format_of|validates_acceptance_of|validates_associated|validates_exclusion_of|" + + "validates_inclusion_of|validates_numericality_of|validates_with|validates_each|" + + "authenticate_or_request_with_http_basic|authenticate_or_request_with_http_digest|" + + "filter_parameter_logging|match|get|post|resources|redirect|scope|assert_routing|" + + "translate|localize|extract_locale_from_tld|caches_page|expire_page|caches_action|expire_action|" + + "cache|expire_fragment|expire_cache_for|observe|cache_sweeper|" + + "has_many|has_one|belongs_to|has_and_belongs_to_many|p|warn|refine|using|module_function|extend|alias_method|" + + "private_class_method|remove_method|undef_method"); + var keywords = ("alias|and|BEGIN|begin|break|case|class|def|defined|do|else|elsif|END|end|ensure|" + + "__FILE__|finally|for|gem|if|in|__LINE__|module|next|not|or|private|protected|public|" + + "redo|rescue|retry|return|super|then|undef|unless|until|when|while|yield|__ENCODING__|prepend"); + var buildinConstants = ("true|TRUE|false|FALSE|nil|NIL|ARGF|ARGV|DATA|ENV|RUBY_PLATFORM|RUBY_RELEASE_DATE|" + + "RUBY_VERSION|STDERR|STDIN|STDOUT|TOPLEVEL_BINDING|RUBY_PATCHLEVEL|RUBY_REVISION|RUBY_COPYRIGHT|RUBY_ENGINE|RUBY_ENGINE_VERSION|RUBY_DESCRIPTION"); + var builtinVariables = ("$DEBUG|$defout|$FILENAME|$LOAD_PATH|$SAFE|$stdin|$stdout|$stderr|$VERBOSE|" + + "$!|root_url|flash|session|cookies|params|request|response|logger|self"); + var keywordMapper = this.$keywords = this.createKeywordMapper({ + "keyword": keywords, + "constant.language": buildinConstants, + "variable.language": builtinVariables, + "support.function": builtinFunctions, + "invalid.deprecated": "debugger" // TODO is this a remnant from js mode? + }, "identifier"); + var escapedChars = "\\\\(?:n(?:[1-7][0-7]{0,2}|0)|[nsrtvfbae'\"\\\\]|c(?:\\\\M-)?.|M-(?:\\\\C-|\\\\c)?.|C-(?:\\\\M-)?.|[0-7]{3}|x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u{[\\da-fA-F]{1,6}(?:\\s[\\da-fA-F]{1,6})*})"; + var closeParen = { + "(": ")", + "[": "]", + "{": "}", + "<": ">", + "^": "^", + "|": "|", + "%": "%" + }; + this.$rules = { + "start": [ + { + token: "comment", + regex: "#.*$" + }, { + token: "comment.multiline", // multi line comment + regex: "^=begin(?=$|\\s.*$)", + next: "comment" + }, { + token: "string.regexp", + regex: /[/](?=.*\/)/, + next: "regex" + }, + [{ + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(")/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /"/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedChars + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: ["constant.other.symbol.ruby", "string.start"], + regex: /(:)?(')/, + push: [{ + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "string.end", + regex: /'/, + next: "pop" + }, { + defaultToken: "string" + }] + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[qwx]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithoutInterpolation"; + return this.token; + } + }, { + token: "string.start", //doesn't see any differences between strings and array of strings in highlighting + regex: /%[QWX]?([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "qStateWithInterpolation"; + return this.token; + } + }, { + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[si]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithoutInterpolation"; + return this.token; + } + }, { + token: "constant.other.symbol.ruby", //doesn't see any differences between symbols and array of symbols in highlighting + regex: /%[SI]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "sStateWithInterpolation"; + return this.token; + } + }, { + token: "string.regexp", + regex: /%[r]([(\[<{^|%])/, onMatch: function (val, state, stack) { + if (stack.length) + stack = []; + var paren = val[val.length - 1]; + stack.unshift(paren, state); + this.next = "rState"; + return this.token; + } + }], + { + token: "punctuation", // namespaces aren't symbols + regex: "::" + }, + instanceVariable, + { + token: "variable.global", // global variable + regex: "[$][a-zA-Z_\\d]+" + }, { + token: "support.class", // class name + regex: "[A-Z][a-zA-Z_\\d]*" + }, { + token: ["punctuation.operator", "support.function"], + regex: /(\.)([a-zA-Z_\d]+)(?=\()/ + }, { + token: ["punctuation.operator", "identifier"], + regex: /(\.)([a-zA-Z_][a-zA-Z_\d]*)/ + }, { + token: "string.character", + regex: "\\B\\?(?:" + escapedChars + "|\\S)" + }, { + token: "punctuation.operator", + regex: /\?(?=.+:)/ + }, + constantNumericRational, + constantNumericComplex, + constantOtherSymbol, + constantNumericHex, + constantNumericFloat, + constantNumericBinary, + constantNumericDecimal, + constantNumericOctal, + { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "punctuation.separator.key-value", + regex: "=>" + }, { + stateName: "heredoc", + onMatch: function (value, currentState, stack) { + var next = (value[2] == '-' || value[2] == '~') ? "indentedHeredoc" : "heredoc"; + var tokens = value.split(this.splitRegex); + stack.push(next, tokens[3]); + return [ + { type: "constant", value: tokens[1] }, + { type: "string", value: tokens[2] }, + { type: "support.class", value: tokens[3] }, + { type: "string", value: tokens[4] } + ]; + }, + regex: "(<<[-~]?)(['\"`]?)([\\w]+)(['\"`]?)", + rules: { + heredoc: [{ + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }], + indentedHeredoc: [{ + token: "string", + regex: "^ +" + }, { + onMatch: function (value, currentState, stack) { + if (value === stack[1]) { + stack.shift(); + stack.shift(); + this.next = stack[0] || "start"; + return "support.class"; + } + this.next = ""; + return "string"; + }, + regex: ".*$", + next: "start" + }] + } + }, { + regex: "$", + token: "empty", + next: function (currentState, stack) { + if (stack[0] === "heredoc" || stack[0] === "indentedHeredoc") + return stack[0]; + return currentState; + } + }, { + token: "keyword.operator", + regex: "!|\\$|%|&|\\*|/|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\||\\b(?:in|instanceof|new|delete|typeof|void)" + }, { + token: "paren.lparen", + regex: "[[({]" + }, { + token: "paren.rparen", + regex: "[\\])}]", + onMatch: function (value, currentState, stack) { + this.next = ''; + if (value == "}" && stack.length > 1 && stack[1] != "start") { + stack.shift(); + this.next = stack.shift(); + } + return this.token; + } + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/ + } + ], + "comment": [ + { + token: "comment.multiline", // closing comment + regex: "^=end(?=$|\\s.*$)", + next: "start" + }, { + token: "comment", // comment spanning whole line + regex: ".+" + } + ], + "qStateWithInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "qStateWithoutInterpolation": [{ + token: "string.start", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "string"; + } + }, { + token: "constant.language.escape", + regex: /\\['\\]/ + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "string.end", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "string"; + } + }, { + defaultToken: "string" + }], + "sStateWithoutInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "sStateWithInterpolation": [{ + token: "constant.other.symbol.ruby", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.other.symbol.ruby"; + } + }, { + token: "constant.language.escape", + regex: escapedChars + }, { + token: "constant.language.escape", + regex: /\\./ + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "constant.other.symbol.ruby", + regex: /[)\]>}^|%]/, onMatch: function (val, state, stack) { + if (stack.length && val === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.other.symbol.ruby"; + } + }, { + defaultToken: "constant.other.symbol.ruby" + }], + "rState": [{ + token: "string.regexp", // excluded nested |^% due to difficulty in realization + regex: /[(\[<{]/, onMatch: function (val, state, stack) { + if (stack.length && val === stack[0]) { + stack.unshift(val, state); + return this.token; + } + return "constant.language.escape"; + } + }, { + token: "paren.start", + regex: /#{/, + push: "start" + }, { + token: "string.regexp", + regex: /\// + }, { + token: "string.regexp", + regex: /[)\]>}^|%][imxouesn]*/, onMatch: function (val, state, stack) { + if (stack.length && val[0] === closeParen[stack[0]]) { + stack.shift(); + this.next = stack.shift(); + return this.token; + } + this.next = ''; + return "constant.language.escape"; + } + }, + { include: "regex" }, + { + defaultToken: "string.regexp" + }], + "regex": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "constant.language.escape", + regex: /\\[AGbBzZ]/ + }, { + token: "constant.language.escape", + regex: /\\g<[a-zA-Z0-9]*>/ + }, { + token: ["constant.language.escape", "regexp.keyword", "constant.language.escape"], + regex: /(\\p{\^?)(Alnum|Alpha|Blank|Cntrl|Digit|Graph|Lower|Print|Punct|Space|Upper|XDigit|Word|ASCII|Any|Assigned|Arabic|Armenian|Balinese|Bengali|Bopomofo|Braille|Buginese|Buhid|Canadian_Aboriginal|Carian|Cham|Cherokee|Common|Coptic|Cuneiform|Cypriot|Cyrillic|Deseret|Devanagari|Ethiopic|Georgian|Glagolitic|Gothic|Greek|Gujarati|Gurmukhi|Han|Hangul|Hanunoo|Hebrew|Hiragana|Inherited|Kannada|Katakana|Kayah_Li|Kharoshthi|Khmer|Lao|Latin|Lepcha|Limbu|Linear_B|Lycian|Lydian|Malayalam|Mongolian|Myanmar|New_Tai_Lue|Nko|Ogham|Ol_Chiki|Old_Italic|Old_Persian|Oriya|Osmanya|Phags_Pa|Phoenician|Rejang|Runic|Saurashtra|Shavian|Sinhala|Sundanese|Syloti_Nagri|Syriac|Tagalog|Tagbanwa|Tai_Le|Tamil|Telugu|Thaana|Thai|Tibetan|Tifinagh|Ugaritic|Vai|Yi|Ll|Lm|Lt|Lu|Lo|Mn|Mc|Me|Nd|Nl|Pc|Pd|Ps|Pe|Pi|Pf|Po|No|Sm|Sc|Sk|So|Zs|Zl|Zp|Cc|Cf|Cn|Co|Cs|N|L|M|P|S|Z|C)(})/ + }, { + token: ["constant.language.escape", "invalid", "constant.language.escape"], + regex: /(\\p{\^?)([^/]*)(})/ + }, { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: /[/][imxouesn]*/, + next: "start" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?(?:[:=!>]|<'?[a-zA-Z]*'?>|<[=!])|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "regexp.keyword", + regex: /\[\[:(?:alnum|alpha|blank|cntrl|digit|graph|lower|print|punct|space|upper|xdigit|word|ascii):\]\]/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + push: "regex_character_class" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.keyword", + regex: /\\[wWdDhHsS]/ + }, { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: /&?&?\[\^?/, + push: "regex_character_class" + }, { + token: "constant.language.escape", + regex: "]", + next: "pop" + }, { + token: "constant.language.escape", + regex: "-" + }, { + defaultToken: "string.regexp.characterclass" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(RubyHighlightRules, TextHighlightRules); +exports.RubyHighlightRules = RubyHighlightRules; + +}); + +define("ace/mode/folding/ruby",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var TokenIterator = require("../../token_iterator").TokenIterator; +var FoldMode = exports.FoldMode = function () { +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.indentKeywords = { + "class": 1, + "def": 1, + "module": 1, + "do": 1, + "unless": 1, + "if": 1, + "while": 1, + "for": 1, + "until": 1, + "begin": 1, + "else": 0, + "elsif": 0, + "rescue": 0, + "ensure": 0, + "when": 0, + "end": -1, + "case": 1, + "=begin": 1, + "=end": -1 + }; + this.foldingStartMarker = /(?:\s|^)(def|do|while|class|unless|module|if|for|until|begin|else|elsif|case|rescue|ensure|when)\b|({\s*$)|(=begin)/; + this.foldingStopMarker = /(=end(?=$|\s.*$))|(^\s*})|\b(end)\b/; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart && !isEnd) { + var match = line.match(this.foldingStartMarker); + if (match[1]) { + if (match[1] == "if" || match[1] == "else" || match[1] == "while" || match[1] == "until" || match[1] == "unless") { + if (match[1] == "else" && /^\s*else\s*$/.test(line) === false) { + return; + } + if (/^\s*(?:if|else|while|until|unless)\s*/.test(line) === false) { + return; + } + } + if (match[1] == "when") { + if (/\sthen\s/.test(line) === true) { + return; + } + } + if (session.getTokenAt(row, match.index + 2).type === "keyword") + return "start"; + } + else if (match[3]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "start"; + } + else { + return "start"; + } + } + if (foldStyle != "markbeginend" || !isEnd || isStart && isEnd) + return ""; + var match = line.match(this.foldingStopMarker); + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return "end"; + } + else if (match[1]) { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return "end"; + } + else + return "end"; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.doc.getLine(row); + var match = this.foldingStartMarker.exec(line); + if (match) { + if (match[1] || match[3]) + return this.rubyBlock(session, row, match.index + 2); + return this.openingBracketBlock(session, "{", row, match.index); + } + var match = this.foldingStopMarker.exec(line); + if (match) { + if (match[3] === "end") { + if (session.getTokenAt(row, match.index + 1).type === "keyword") + return this.rubyBlock(session, row, match.index + 1); + } + if (match[1] === "=end") { + if (session.getTokenAt(row, match.index + 1).type === "comment.multiline") + return this.rubyBlock(session, row, match.index + 1); + } + return this.closingBracketBlock(session, "}", row, match.index + match[0].length); + } + }; + this.rubyBlock = function (session, row, column, tokenRange) { + var stream = new TokenIterator(session, row, column); + var token = stream.getCurrentToken(); + if (!token || (token.type != "keyword" && token.type != "comment.multiline")) + return; + var val = token.value; + var line = session.getLine(row); + switch (token.value) { + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + return; + } + var dir = this.indentKeywords[val]; + break; + case "when": + if (/\sthen\s/.test(line)) { + return; + } + case "elsif": + case "rescue": + case "ensure": + var dir = 1; + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line)) { + return; + } + var dir = 1; + break; + default: + var dir = this.indentKeywords[val]; + break; + } + var stack = [val]; + if (!dir) + return; + var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; + var startRow = row; + var ranges = []; + ranges.push(stream.getCurrentTokenRange()); + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + if (token.type == "comment.multiline") { + while (token = stream.step()) { + if (token.type !== "comment.multiline") + continue; + if (dir == 1) { + startColumn = 6; + if (token.value == "=end") { + break; + } + } + else { + if (token.value == "=begin") { + break; + } + } + } + } + else { + while (token = stream.step()) { + var ignore = false; + if (token.type !== "keyword") + continue; + var level = dir * this.indentKeywords[token.value]; + line = session.getLine(stream.getCurrentTokenRow()); + switch (token.value) { + case "do": + for (var i = stream.$tokenIndex - 1; i >= 0; i--) { + var prevToken = stream.$rowTokens[i]; + if (prevToken && (prevToken.value == "while" || prevToken.value == "until" || prevToken.value == "for")) { + level = 0; + break; + } + } + break; + case "else": + var checkToken = new RegExp("^\\s*" + token.value + "\\s*$"); + if (!checkToken.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + case "if": + case "unless": + case "while": + case "until": + var checkToken = new RegExp("^\\s*" + token.value); + if (!checkToken.test(line)) { + level = 0; + ignore = true; + } + break; + case "when": + if (/\sthen\s/.test(line) || val == "case") { + level = 0; + ignore = true; + } + break; + } + if (level > 0) { + stack.unshift(token.value); + } + else if (level <= 0 && ignore === false) { + stack.shift(); + if (!stack.length) { + if ((val == "while" || val == "until" || val == "for") && token.value != "do") { + break; + } + if (token.value == "do" && dir == -1 && level != 0) + break; + if (token.value != "do") + break; + } + if (level === 0) { + stack.unshift(token.value); + } + } + } + } + if (!token) + return null; + if (tokenRange) { + ranges.push(stream.getCurrentTokenRange()); + return ranges; + } + var row = stream.getCurrentTokenRow(); + if (dir === -1) { + if (token.type === "comment.multiline") { + var endColumn = 6; + } + else { + var endColumn = session.getLine(row).length; + } + return new Range(row, endColumn, startRow - 1, startColumn); + } + else + return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/ruby",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ruby_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/ruby"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var RubyHighlightRules = require("./ruby_highlight_rules").RubyHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Range = require("../range").Range; +var FoldMode = require("./folding/ruby").FoldMode; +var Mode = function () { + this.HighlightRules = RubyHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new FoldMode(); + this.indentKeywords = this.foldingRules.indentKeywords; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start") { + var match = line.match(/^.*[\{\(\[]\s*$/); + var startingClassOrMethod = line.match(/^\s*(class|def|module)\s.*$/); + var startingDoBlock = line.match(/.*do(\s*|\s+\|.*\|\s*)$/); + var startingConditional = line.match(/^\s*(if|else|when|elsif|unless|while|for|begin|rescue|ensure)\s*/); + if (match || startingClassOrMethod || startingDoBlock || startingConditional) { + indent += tab; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return /^\s+(end|else|rescue|ensure)$/.test(line + input) || this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, session, row) { + var line = session.getLine(row); + if (/}/.test(line)) + return this.$outdent.autoOutdent(session, row); + var indent = this.$getIndent(line); + var prevLine = session.getLine(row - 1); + var prevIndent = this.$getIndent(prevLine); + var tab = session.getTabString(); + if (prevIndent.length <= indent.length) { + if (indent.slice(-tab.length) == tab) + session.remove(new Range(row, indent.length - tab.length, row, indent.length)); + } + }; + this.getMatching = function (session, row, column) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; + } + var startToken = session.getTokenAt(row, column); + if (startToken && startToken.value in this.indentKeywords) + return this.foldingRules.rubyBlock(session, row, column, true); + }; + this.$id = "ace/mode/ruby"; + this.snippetFileId = "ace/snippets/ruby"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/slim",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/slim_highlight_rules","ace/mode/javascript","ace/mode/markdown","ace/mode/coffee","ace/mode/scss","ace/mode/sass","ace/mode/less","ace/mode/ruby","ace/mode/css"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SlimHighlightRules = require("./slim_highlight_rules").SlimHighlightRules; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = SlimHighlightRules; + this.createModeDelegates({ + javascript: require("./javascript").Mode, + markdown: require("./markdown").Mode, + coffee: require("./coffee").Mode, + scss: require("./scss").Mode, + sass: require("./sass").Mode, + less: require("./less").Mode, + ruby: require("./ruby").Mode, + css: require("./css").Mode + }); +}; +oop.inherits(Mode, TextMode); +(function () { + this.$id = "ace/mode/slim"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/slim"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-smarty.js b/vendor/assets/javascripts/ace/mode-smarty.js index 9742f588..f7d9933e 100644 --- a/vendor/assets/javascripts/ace/mode-smarty.js +++ b/vendor/assets/javascripts/ace/mode-smarty.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,188 +2225,152 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/smarty_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { +define("ace/mode/smarty_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.github.com/amitsnyderman/sublime-smarty/master/Syntaxes/Smarty.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var SmartyHighlightRules = function() { +var SmartyHighlightRules = function () { HtmlHighlightRules.call(this); - var smartyRules = { start: - [ { include: '#comments' }, - { include: '#blocks' } ], - '#blocks': - [ { token: 'punctuation.section.embedded.begin.smarty', - regex: '\\{%?', - push: - [ { token: 'punctuation.section.embedded.end.smarty', - regex: '%?\\}', - next: 'pop' }, - { include: '#strings' }, - { include: '#variables' }, - { include: '#lang' }, - { defaultToken: 'source.smarty' } ] } ], - '#comments': - [ { token: - [ 'punctuation.definition.comment.smarty', - 'comment.block.smarty' ], - regex: '(\\{%?)(\\*)', - push: - [ { token: 'comment.block.smarty', regex: '\\*%?\\}', next: 'pop' }, - { defaultToken: 'comment.block.smarty' } ] } ], - '#lang': - [ { token: 'keyword.operator.smarty', - regex: '(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b' }, - { token: 'constant.language.smarty', - regex: '\\b(?:TRUE|FALSE|true|false)\\b' }, - { token: 'keyword.control.smarty', - regex: '\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b' }, - { token: 'variable.parameter.smarty', regex: '\\b[a-zA-Z]+=' }, - { token: 'support.function.built-in.smarty', - regex: '\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b' }, - { token: 'support.function.variable-modifier.smarty', - regex: '\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)' } ], - '#strings': - [ { token: 'punctuation.definition.string.begin.smarty', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.smarty', + var smartyRules = { start: [{ include: '#comments' }, + { include: '#blocks' }], + '#blocks': [{ token: 'punctuation.section.embedded.begin.smarty', + regex: '\\{%?', + push: [{ token: 'punctuation.section.embedded.end.smarty', + regex: '%?\\}', + next: 'pop' }, + { include: '#strings' }, + { include: '#variables' }, + { include: '#lang' }, + { defaultToken: 'source.smarty' }] }], + '#comments': [{ token: ['punctuation.definition.comment.smarty', + 'comment.block.smarty'], + regex: '(\\{%?)(\\*)', + push: [{ token: 'comment.block.smarty', regex: '\\*%?\\}', next: 'pop' }, + { defaultToken: 'comment.block.smarty' }] }], + '#lang': [{ token: 'keyword.operator.smarty', + regex: '(?:!=|!|<=|>=|<|>|===|==|%|&&|\\|\\|)|\\b(?:and|or|eq|neq|ne|gte|gt|ge|lte|lt|le|not|mod)\\b' }, + { token: 'constant.language.smarty', + regex: '\\b(?:TRUE|FALSE|true|false)\\b' }, + { token: 'keyword.control.smarty', + regex: '\\b(?:if|else|elseif|foreach|foreachelse|section|switch|case|break|default)\\b' }, + { token: 'variable.parameter.smarty', regex: '\\b[a-zA-Z]+=' }, + { token: 'support.function.built-in.smarty', + regex: '\\b(?:capture|config_load|counter|cycle|debug|eval|fetch|include_php|include|insert|literal|math|strip|rdelim|ldelim|assign|constant|block|html_[a-z_]*)\\b' }, + { token: 'support.function.variable-modifier.smarty', + regex: '\\|(?:capitalize|cat|count_characters|count_paragraphs|count_sentences|count_words|date_format|default|escape|indent|lower|nl2br|regex_replace|replace|spacify|string_format|strip_tags|strip|truncate|upper|wordwrap)' }], + '#strings': [{ token: 'punctuation.definition.string.begin.smarty', regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.smarty', regex: '\\\\.' }, - { defaultToken: 'string.quoted.single.smarty' } ] }, - { token: 'punctuation.definition.string.begin.smarty', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.smarty', + push: [{ token: 'punctuation.definition.string.end.smarty', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.smarty', regex: '\\\\.' }, + { defaultToken: 'string.quoted.single.smarty' }] }, + { token: 'punctuation.definition.string.begin.smarty', regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.smarty', regex: '\\\\.' }, - { defaultToken: 'string.quoted.double.smarty' } ] } ], - '#variables': - [ { token: - [ 'punctuation.definition.variable.smarty', - 'variable.other.global.smarty' ], - regex: '\\b(\\$)(Smarty\\.)' }, - { token: - [ 'punctuation.definition.variable.smarty', - 'variable.other.smarty' ], - regex: '(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, - { token: [ 'keyword.operator.smarty', 'variable.other.property.smarty' ], - regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, - { token: - [ 'keyword.operator.smarty', - 'meta.function-call.object.smarty', - 'punctuation.definition.variable.smarty', - 'variable.other.smarty', - 'punctuation.definition.variable.smarty' ], - regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))' } ] }; - + push: [{ token: 'punctuation.definition.string.end.smarty', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.smarty', regex: '\\\\.' }, + { defaultToken: 'string.quoted.double.smarty' }] }], + '#variables': [{ token: ['punctuation.definition.variable.smarty', + 'variable.other.global.smarty'], + regex: '\\b(\\$)(Smarty\\.)' }, + { token: ['punctuation.definition.variable.smarty', + 'variable.other.smarty'], + regex: '(\\$)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, + { token: ['keyword.operator.smarty', 'variable.other.property.smarty'], + regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)\\b' }, + { token: ['keyword.operator.smarty', + 'meta.function-call.object.smarty', + 'punctuation.definition.variable.smarty', + 'variable.other.smarty', + 'punctuation.definition.variable.smarty'], + regex: '(->)([a-zA-Z_][a-zA-Z0-9_]*)(\\()(.*?)(\\))' }] }; var smartyStart = smartyRules.start; - for (var rule in this.$rules) { this.$rules[rule].unshift.apply(this.$rules[rule], smartyStart); } - - Object.keys(smartyRules).forEach(function(x) { + Object.keys(smartyRules).forEach(function (x) { if (!this.$rules[x]) this.$rules[x] = smartyRules[x]; }, this); - this.normalizeRules(); }; - -SmartyHighlightRules.metaData = { fileTypes: [ 'tpl' ], - foldingStartMarker: '\\{%?', - foldingStopMarker: '%?\\}', - name: 'Smarty', - scopeName: 'text.html.smarty' }; - - +SmartyHighlightRules.metaData = { fileTypes: ['tpl'], + foldingStartMarker: '\\{%?', + foldingStopMarker: '%?\\}', + name: 'Smarty', + scopeName: 'text.html.smarty' }; oop.inherits(SmartyHighlightRules, HtmlHighlightRules); - exports.SmartyHighlightRules = SmartyHighlightRules; + }); -define("ace/mode/smarty",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/smarty_highlight_rules"], function(require, exports, module) { - "use strict"; - +define("ace/mode/smarty",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/smarty_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var SmartyHighlightRules = require("./smarty_highlight_rules").SmartyHighlightRules; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); this.HighlightRules = SmartyHighlightRules; }; - oop.inherits(Mode, HtmlMode); - -(function() { - +(function () { this.$id = "ace/mode/smarty"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/smarty"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-smithy.js b/vendor/assets/javascripts/ace/mode-smithy.js new file mode 100644 index 00000000..12692095 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-smithy.js @@ -0,0 +1,456 @@ +define("ace/mode/smithy_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.githubusercontent.com/awslabs/smithy-vscode/master/syntaxes/smithy.tmLanguage (uuid: ) */ +"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var SmithyHighlightRules = function () { + this.$rules = { + start: [{ + include: "#comment" + }, { + token: [ + "meta.keyword.statement.smithy", + "variable.other.smithy", + "text", + "keyword.operator.smithy" + ], + regex: /^(\$)(\s+.+)(\s*)(=)/ + }, { + token: [ + "keyword.statement.smithy", + "text", + "entity.name.type.namespace.smithy" + ], + regex: /^(namespace)(\s+)([A-Z-a-z0-9_\.#$-]+)/ + }, { + token: [ + "keyword.statement.smithy", + "text", + "keyword.statement.smithy", + "text", + "entity.name.type.smithy" + ], + regex: /^(use)(\s+)(shape|trait)(\s+)([A-Z-a-z0-9_\.#$-]+)\b/ + }, { + token: [ + "keyword.statement.smithy", + "variable.other.smithy", + "text", + "keyword.operator.smithy" + ], + regex: /^(metadata)(\s+.+)(\s*)(=)/ + }, { + token: [ + "keyword.statement.smithy", + "text", + "entity.name.type.smithy" + ], + regex: /^(apply|byte|short|integer|long|float|double|bigInteger|bigDecimal|boolean|blob|string|timestamp|service|resource|trait|list|map|set|structure|union|document)(\s+)([A-Z-a-z0-9_\.#$-]+)\b/ + }, { + token: [ + "keyword.operator.smithy", + "text", + "entity.name.type.smithy", + "text", + "text", + "support.function.smithy", + "text", + "text", + "support.function.smithy" + ], + regex: /^(operation)(\s+)([A-Z-a-z0-9_\.#$-]+)(\(.*\))(?:(\s*)(->)(\s*[A-Z-a-z0-9_\.#$-]+))?(?:(\s+)(errors))?/ + }, { + include: "#trait" + }, { + token: [ + "support.type.property-name.smithy", + "punctuation.separator.dictionary.pair.smithy" + ], + regex: /([A-Z-a-z0-9_\.#$-]+)(:)/ + }, { + include: "#value" + }, { + token: "keyword.other.smithy", + regex: /\->/ + }], + "#comment": [{ + include: "#doc_comment" + }, { + include: "#line_comment" + }], + "#doc_comment": [{ + token: "comment.block.documentation.smithy", + regex: /\/\/\/.*/ + }], + "#line_comment": [{ + token: "comment.line.double-slash.smithy", + regex: /\/\/.*/ + }], + "#trait": [{ + token: [ + "punctuation.definition.annotation.smithy", + "storage.type.annotation.smithy" + ], + regex: /(@)([0-9a-zA-Z\.#-]+)/ + }, { + token: [ + "punctuation.definition.annotation.smithy", + "punctuation.definition.object.end.smithy", + "meta.structure.smithy" + ], + regex: /(@)([0-9a-zA-Z\.#-]+)(\()/, + push: [{ + token: "punctuation.definition.object.end.smithy", + regex: /\)/, + next: "pop" + }, { + include: "#value" + }, { + include: "#object_inner" + }, { + defaultToken: "meta.structure.smithy" + }] + }], + "#value": [{ + include: "#constant" + }, { + include: "#number" + }, { + include: "#string" + }, { + include: "#array" + }, { + include: "#object" + }], + "#array": [{ + token: "punctuation.definition.array.begin.smithy", + regex: /\[/, + push: [{ + token: "punctuation.definition.array.end.smithy", + regex: /\]/, + next: "pop" + }, { + include: "#comment" + }, { + include: "#value" + }, { + token: "punctuation.separator.array.smithy", + regex: /,/ + }, { + token: "invalid.illegal.expected-array-separator.smithy", + regex: /[^\s\]]/ + }, { + defaultToken: "meta.structure.array.smithy" + }] + }], + "#constant": [{ + token: "constant.language.smithy", + regex: /\b(?:true|false|null)\b/ + }], + "#number": [{ + token: "constant.numeric.smithy", + regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/ + }], + "#object": [{ + token: "punctuation.definition.dictionary.begin.smithy", + regex: /\{/, + push: [{ + token: "punctuation.definition.dictionary.end.smithy", + regex: /\}/, + next: "pop" + }, { + include: "#trait" + }, { + include: "#object_inner" + }, { + defaultToken: "meta.structure.dictionary.smithy" + }] + }], + "#object_inner": [{ + include: "#comment" + }, { + include: "#string_key" + }, { + token: "punctuation.separator.dictionary.key-value.smithy", + regex: /:/, + push: [{ + token: "punctuation.separator.dictionary.pair.smithy", + regex: /,|(?=\})/, + next: "pop" + }, { + include: "#value" + }, { + token: "invalid.illegal.expected-dictionary-separator.smithy", + regex: /[^\s,]/ + }, { + defaultToken: "meta.structure.dictionary.value.smithy" + }] + }, { + token: "invalid.illegal.expected-dictionary-separator.smithy", + regex: /[^\s\}]/ + }], + "#string_key": [{ + include: "#identifier_key" + }, { + include: "#dquote_key" + }, { + include: "#squote_key" + }], + "#identifier_key": [{ + token: "support.type.property-name.smithy", + regex: /[A-Z-a-z0-9_\.#$-]+/ + }], + "#dquote_key": [{ + include: "#dquote" + }], + "#squote_key": [{ + include: "#squote" + }], + "#string": [{ + include: "#textblock" + }, { + include: "#dquote" + }, { + include: "#squote" + }, { + include: "#identifier" + }], + "#textblock": [{ + token: "punctuation.definition.string.begin.smithy", + regex: /"""/, + push: [{ + token: "punctuation.definition.string.end.smithy", + regex: /"""/, + next: "pop" + }, { + token: "constant.character.escape.smithy", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.smithy" + }] + }], + "#dquote": [{ + token: "punctuation.definition.string.begin.smithy", + regex: /"/, + push: [{ + token: "punctuation.definition.string.end.smithy", + regex: /"/, + next: "pop" + }, { + token: "constant.character.escape.smithy", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.smithy" + }] + }], + "#squote": [{ + token: "punctuation.definition.string.begin.smithy", + regex: /'/, + push: [{ + token: "punctuation.definition.string.end.smithy", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.smithy", + regex: /\\./ + }, { + defaultToken: "string.quoted.single.smithy" + }] + }], + "#identifier": [{ + token: "storage.type.smithy", + regex: /[A-Z-a-z_][A-Z-a-z0-9_\.#$-]*/ + }] + }; + this.normalizeRules(); +}; +SmithyHighlightRules.metaData = { + name: "Smithy", + fileTypes: ["smithy"], + scopeName: "source.smithy", + foldingStartMarker: "(\\{|\\[)\\s*", + foldingStopMarker: "\\s*(\\}|\\])" +}; +oop.inherits(SmithyHighlightRules, TextHighlightRules); +exports.SmithyHighlightRules = SmithyHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/smithy",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/smithy_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SmithyHighlightRules = require("./smithy_highlight_rules").SmithyHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = SmithyHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$quotes = { '"': '"' }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.$id = "ace/mode/smithy"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/smithy"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-snippets.js b/vendor/assets/javascripts/ace/mode-snippets.js index 9344f4de..7e39996f 100644 --- a/vendor/assets/javascripts/ace/mode-snippets.js +++ b/vendor/assets/javascripts/ace/mode-snippets.js @@ -1,59 +1,51 @@ -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -62,138 +54,130 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/snippets",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; - +define("ace/mode/snippets",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SnippetHighlightRules = function() { - +var SnippetHighlightRules = function () { var builtins = "SELECTION|CURRENT_WORD|SELECTED_TEXT|CURRENT_LINE|LINE_INDEX|" + "LINE_NUMBER|SOFT_TABS|TAB_SIZE|FILENAME|FILEPATH|FULLNAME"; - this.$rules = { - "start" : [ - {token:"constant.language.escape", regex: /\\[\$}`\\]/}, - {token:"keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b"}, - {token:"variable", regex: "\\$\\w+"}, - {onMatch: function(value, state, stack) { - if (stack[1]) - stack[1]++; - else - stack.unshift(state, 1); - return this.tokenName; - }, tokenName: "markup.list", regex: "\\${", next: "varDecl"}, - {onMatch: function(value, state, stack) { - if (!stack[1]) - return "text"; - stack[1]--; - if (!stack[1]) - stack.splice(0,2); - return this.tokenName; - }, tokenName: "markup.list", regex: "}"}, - {token: "doc.comment", regex:/^\${2}-{5,}$/} + "start": [ + { token: "constant.language.escape", regex: /\\[\$}`\\]/ }, + { token: "keyword", regex: "\\$(?:TM_)?(?:" + builtins + ")\\b" }, + { token: "variable", regex: "\\$\\w+" }, + { onMatch: function (value, state, stack) { + if (stack[1]) + stack[1]++; + else + stack.unshift(state, 1); + return this.tokenName; + }, tokenName: "markup.list", regex: "\\${", next: "varDecl" }, + { onMatch: function (value, state, stack) { + if (!stack[1]) + return "text"; + stack[1]--; + if (!stack[1]) + stack.splice(0, 2); + return this.tokenName; + }, tokenName: "markup.list", regex: "}" }, + { token: "doc.comment", regex: /^\${2}-{5,}$/ } ], - "varDecl" : [ - {regex: /\d+\b/, token: "constant.numeric"}, - {token:"keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b"}, - {token:"variable", regex: "\\w+"}, - {regex: /:/, token: "punctuation.operator", next: "start"}, - {regex: /\//, token: "string.regex", next: "regexp"}, - {regex: "", next: "start"} + "varDecl": [ + { regex: /\d+\b/, token: "constant.numeric" }, + { token: "keyword", regex: "(?:TM_)?(?:" + builtins + ")\\b" }, + { token: "variable", regex: "\\w+" }, + { regex: /:/, token: "punctuation.operator", next: "start" }, + { regex: /\//, token: "string.regex", next: "regexp" }, + { regex: "", next: "start" } ], - "regexp" : [ - {regex: /\\./, token: "escape"}, - {regex: /\[/, token: "regex.start", next: "charClass"}, - {regex: "/", token: "string.regex", next: "format"}, - {"token": "string.regex", regex:"."} + "regexp": [ + { regex: /\\./, token: "escape" }, + { regex: /\[/, token: "regex.start", next: "charClass" }, + { regex: "/", token: "string.regex", next: "format" }, + { "token": "string.regex", regex: "." } ], - charClass : [ - {regex: "\\.", token: "escape"}, - {regex: "\\]", token: "regex.end", next: "regexp"}, - {"token": "string.regex", regex:"."} + charClass: [ + { regex: "\\.", token: "escape" }, + { regex: "\\]", token: "regex.end", next: "regexp" }, + { "token": "string.regex", regex: "." } ], - "format" : [ - {regex: /\\[ulULE]/, token: "keyword"}, - {regex: /\$\d+/, token: "variable"}, - {regex: "/[gim]*:?", token: "string.regex", next: "start"}, - {"token": "string", regex:"."} + "format": [ + { regex: /\\[ulULE]/, token: "keyword" }, + { regex: /\$\d+/, token: "variable" }, + { regex: "/[gim]*:?", token: "string.regex", next: "start" }, + { "token": "string", regex: "." } ] }; }; oop.inherits(SnippetHighlightRules, TextHighlightRules); - exports.SnippetHighlightRules = SnippetHighlightRules; - -var SnippetGroupHighlightRules = function() { +var SnippetGroupHighlightRules = function () { this.$rules = { - "start" : [ - {token: "text", regex: "^\\t", next: "sn-start"}, - {token:"invalid", regex: /^ \s*/}, - {token:"comment", regex: /^#.*/}, - {token:"constant.language.escape", regex: "^regex ", next: "regex"}, - {token:"constant.language.escape", regex: "^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b"} + "start": [ + { token: "text", regex: "^\\t", next: "sn-start" }, + { token: "invalid", regex: /^ \s*/ }, + { token: "comment", regex: /^#.*/ }, + { token: "constant.language.escape", regex: "^regex ", next: "regex" }, + { token: "constant.language.escape", regex: "^(trigger|endTrigger|name|snippet|guard|endGuard|tabTrigger|key)\\b" } ], - "regex" : [ - {token:"text", regex: "\\."}, - {token:"keyword", regex: "/"}, - {token:"empty", regex: "$", next: "start"} - ] + "regex": [ + { token: "text", regex: "\\." }, + { token: "keyword", regex: "/" }, + { token: "empty", regex: "$", next: "start" } + ] }; - this.embedRules(SnippetHighlightRules, "sn-", [ - {token: "text", regex: "^\\t", next: "sn-start"}, - {onMatch: function(value, state, stack) { - stack.splice(stack.length); - return this.tokenName; - }, tokenName: "text", regex: "^(?!\t)", next: "start"} - ]); - + this.embedRules(SnippetHighlightRules, "sn-", [ + { token: "text", regex: "^\\t", next: "sn-start" }, + { onMatch: function (value, state, stack) { + stack.splice(stack.length); + return this.tokenName; + }, tokenName: "text", regex: "^(?!\t)", next: "start" } + ]); }; - oop.inherits(SnippetGroupHighlightRules, TextHighlightRules); - exports.SnippetGroupHighlightRules = SnippetGroupHighlightRules; - var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = SnippetGroupHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.$indentWithTabs = true; this.lineCommentStart = "#"; this.$id = "ace/mode/snippets"; + this.snippetFileId = "ace/snippets/snippets"; }).call(Mode.prototype); exports.Mode = Mode; - -}); +}); (function() { + window.require(["ace/mode/snippets"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-soy_template.js b/vendor/assets/javascripts/ace/mode-soy_template.js index a50bf8e2..6cea45d5 100644 --- a/vendor/assets/javascripts/ace/mode-soy_template.js +++ b/vendor/assets/javascripts/ace/mode-soy_template.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,401 +2225,327 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/soy_template_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module) { +define("ace/mode/soy_template_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module){/* This file was autogenerated from tm bundles\SoyTemplate\Syntaxes\SoyTemplate.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var SoyTemplateHighlightRules = function() { +var SoyTemplateHighlightRules = function () { HtmlHighlightRules.call(this); - - var soyRules = { start: - [ { include: '#template' }, - { include: '#if' }, - { include: '#comment-line' }, - { include: '#comment-block' }, - { include: '#comment-doc' }, - { include: '#call' }, - { include: '#css' }, - { include: '#param' }, - { include: '#print' }, - { include: '#msg' }, - { include: '#for' }, - { include: '#foreach' }, - { include: '#switch' }, - { include: '#tag' }, - { include: 'text.html.basic' } ], - '#call': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.call.soy' ], - regex: '(\\{/?)(\\s*)(?=call|delcall)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { token: ['entity.name.tag.soy', 'variable.parameter.soy'], - regex: '(call|delcall)(\\s+[\\.\\w]+)'}, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b(data)(\\s*)(=)' }, - { defaultToken: 'meta.tag.call.soy' } ] } ], - '#comment-line': - [ { token: - [ 'comment.line.double-slash.soy', - 'comment.line.double-slash.soy' ], - regex: '(//)(.*$)' } ], - '#comment-block': - [ { token: 'punctuation.definition.comment.begin.soy', - regex: '/\\*(?!\\*)', - push: - [ { token: 'punctuation.definition.comment.end.soy', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.soy' } ] } ], - '#comment-doc': - [ { token: 'punctuation.definition.comment.begin.soy', - regex: '/\\*\\*(?!/)', - push: - [ { token: 'punctuation.definition.comment.end.soy', - regex: '\\*/', - next: 'pop' }, - { token: [ 'support.type.soy', 'text', 'variable.parameter.soy' ], - regex: '(@param|@param\\?)(\\s+)(\\w+)' }, - { defaultToken: 'comment.block.documentation.soy' } ] } ], - '#css': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.css.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(css)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'support.constant.soy', - regex: '\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b' }, - { defaultToken: 'meta.tag.css.soy' } ] } ], - '#for': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.for.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(for)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'keyword.operator.soy', regex: '\\bin\\b' }, - { token: 'support.function.soy', regex: '\\brange\\b' }, - { include: '#variable' }, - { include: '#number' }, - { include: '#primitive' }, - { defaultToken: 'meta.tag.for.soy' } ] } ], - '#foreach': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.foreach.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(foreach)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: 'keyword.operator.soy', regex: '\\bin\\b' }, - { include: '#variable' }, - { defaultToken: 'meta.tag.foreach.soy' } ] } ], - '#function': - [ { token: 'support.function.soy', - regex: '\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b' } ], - '#if': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.if.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(if|elseif)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#operator' }, - { include: '#function' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { defaultToken: 'meta.tag.if.soy' } ] } ], - '#namespace': - [ { token: [ 'entity.name.tag.soy', 'text', 'variable.parameter.soy' ], - regex: '(namespace|delpackage)(\\s+)([\\w\\.]+)' } ], - '#number': [ { token: 'constant.numeric', regex: '[\\d]+' } ], - '#operator': - [ { token: 'keyword.operator.soy', - regex: '==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:' } ], - '#param': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.param.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(param)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b([\\w]+)(\\s*)((?::)?)' }, - { defaultToken: 'meta.tag.param.soy' } ] } ], - '#primitive': - [ { token: 'constant.language.soy', - regex: '\\b(?:null|false|true)\\b' } ], - '#msg': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.msg.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(msg)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy' ], - regex: '\\b(meaning|desc)(\\s*)(=)' }, - { defaultToken: 'meta.tag.msg.soy' } ] } ], - '#print': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.print.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(print)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#print-parameter' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#attribute-lookup' }, - { defaultToken: 'meta.tag.print.soy' } ] } ], - '#print-parameter': - [ { token: 'keyword.operator.soy', regex: '\\|' }, - { token: 'variable.parameter.soy', - regex: 'noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate' } ], - '#special-character': - [ { token: 'support.constant.soy', - regex: '\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b' } ], - '#string-quoted-double': [ { token: 'string.quoted.double', regex: '"[^"]*"' } ], - '#string-quoted-single': [ { token: 'string.quoted.single', regex: '\'[^\']*\'' } ], - '#switch': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.switch.soy', - 'entity.name.tag.soy' ], - regex: '(\\{/?)(\\s*)(switch|case)\\b', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#variable' }, - { include: '#function' }, - { include: '#number' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' }, - { defaultToken: 'meta.tag.switch.soy' } ] } ], - '#attribute-lookup': - [ { token: 'punctuation.definition.attribute-lookup.begin.soy', - regex: '\\[', - push: - [ { token: 'punctuation.definition.attribute-lookup.end.soy', - regex: '\\]', - next: 'pop' }, - { include: '#variable' }, - { include: '#function' }, - { include: '#operator' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#string-quoted-single' }, - { include: '#string-quoted-double' } ] } ], - '#tag': - [ { token: 'punctuation.definition.tag.begin.soy', - regex: '\\{', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { include: '#namespace' }, - { include: '#variable' }, - { include: '#special-character' }, - { include: '#tag-simple' }, - { include: '#function' }, - { include: '#operator' }, - { include: '#attribute-lookup' }, - { include: '#number' }, - { include: '#primitive' }, - { include: '#print-parameter' } ] } ], - '#tag-simple': - [ { token: 'entity.name.tag.soy', - regex: '{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})'} ], - '#template': - [ { token: - [ 'punctuation.definition.tag.begin.soy', - 'meta.tag.template.soy' ], - regex: '(\\{/?)(\\s*)(?=template|deltemplate)', - push: - [ { token: 'punctuation.definition.tag.end.soy', - regex: '\\}', - next: 'pop' }, - { token: ['entity.name.tag.soy', 'text', 'entity.name.function.soy' ], - regex: '(template|deltemplate)(\\s+)([\\.\\w]+)', - originalRegex: '(?<=template|deltemplate)\\s+([\\.\\w]+)' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.double.soy' ], - regex: '\\b(private)(\\s*)(=)(\\s*)("true"|"false")' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.single.soy' ], - regex: '\\b(private)(\\s*)(=)(\\s*)(\'true\'|\'false\')' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.double.soy' ], - regex: '\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")' }, - { token: - [ 'entity.other.attribute-name.soy', - 'text', - 'keyword.operator.soy', - 'text', - 'string.quoted.single.soy' ], - regex: '\\b(autoescape)(\\s*)(=)(\\s*)(\'true\'|\'false\'|\'contextual\')' }, - { defaultToken: 'meta.tag.template.soy' } ] } ], - '#variable': [ { token: 'variable.other.soy', regex: '\\$[\\w\\.]+' } ] }; - - + var soyRules = { start: [{ include: '#template' }, + { include: '#if' }, + { include: '#comment-line' }, + { include: '#comment-block' }, + { include: '#comment-doc' }, + { include: '#call' }, + { include: '#css' }, + { include: '#param' }, + { include: '#print' }, + { include: '#msg' }, + { include: '#for' }, + { include: '#foreach' }, + { include: '#switch' }, + { include: '#tag' }, + { include: 'text.html.basic' }], + '#call': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.call.soy'], + regex: '(\\{/?)(\\s*)(?=call|delcall)', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }, + { token: ['entity.name.tag.soy', 'variable.parameter.soy'], + regex: '(call|delcall)(\\s+[\\.\\w]+)' }, + { token: ['entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy'], + regex: '\\b(data)(\\s*)(=)' }, + { defaultToken: 'meta.tag.call.soy' }] }], + '#comment-line': [{ token: ['comment.line.double-slash.soy', + 'comment.line.double-slash.soy'], + regex: '(//)(.*$)' }], + '#comment-block': [{ token: 'punctuation.definition.comment.begin.soy', + regex: '/\\*(?!\\*)', + push: [{ token: 'punctuation.definition.comment.end.soy', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.soy' }] }], + '#comment-doc': [{ token: 'punctuation.definition.comment.begin.soy', + regex: '/\\*\\*(?!/)', + push: [{ token: 'punctuation.definition.comment.end.soy', + regex: '\\*/', + next: 'pop' }, + { token: ['support.type.soy', 'text', 'variable.parameter.soy'], + regex: '(@param|@param\\?)(\\s+)(\\w+)' }, + { defaultToken: 'comment.block.documentation.soy' }] }], + '#css': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.css.soy', + 'entity.name.tag.soy'], + regex: '(\\{/?)(\\s*)(css)\\b', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { token: 'support.constant.soy', + regex: '\\b(?:LITERAL|REFERENCE|BACKEND_SPECIFIC|GOOG)\\b' }, + { defaultToken: 'meta.tag.css.soy' }] }], + '#for': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.for.soy', + 'entity.name.tag.soy'], + regex: '(\\{/?)(\\s*)(for)\\b', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { token: 'keyword.operator.soy', regex: '\\bin\\b' }, + { token: 'support.function.soy', regex: '\\brange\\b' }, + { include: '#variable' }, + { include: '#number' }, + { include: '#primitive' }, + { defaultToken: 'meta.tag.for.soy' }] }], + '#foreach': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.foreach.soy', + 'entity.name.tag.soy'], + regex: '(\\{/?)(\\s*)(foreach)\\b', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { token: 'keyword.operator.soy', regex: '\\bin\\b' }, + { include: '#variable' }, + { defaultToken: 'meta.tag.foreach.soy' }] }], + '#function': [{ token: 'support.function.soy', + regex: '\\b(?:isFirst|isLast|index|hasData|length|keys|round|floor|ceiling|min|max|randomInt)\\b' }], + '#if': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.if.soy', + 'entity.name.tag.soy'], + regex: '(\\{/?)(\\s*)(if|elseif)\\b', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#variable' }, + { include: '#operator' }, + { include: '#function' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }, + { defaultToken: 'meta.tag.if.soy' }] }], + '#namespace': [{ token: ['entity.name.tag.soy', 'text', 'variable.parameter.soy'], + regex: '(namespace|delpackage)(\\s+)([\\w\\.]+)' }], + '#number': [{ token: 'constant.numeric', regex: '[\\d]+' }], + '#operator': [{ token: 'keyword.operator.soy', + regex: '==|!=|\\band\\b|\\bor\\b|\\bnot\\b|-|\\+|/|\\?:' }], + '#param': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.param.soy', + 'entity.name.tag.soy'], + regex: '(\\{/?)(\\s*)(param)', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#variable' }, + { token: ['entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy'], + regex: '\\b([\\w]+)(\\s*)((?::)?)' }, + { defaultToken: 'meta.tag.param.soy' }] }], + '#primitive': [{ token: 'constant.language.soy', + regex: '\\b(?:null|false|true)\\b' }], + '#msg': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.msg.soy', + 'entity.name.tag.soy'], + regex: '(\\{/?)(\\s*)(msg)\\b', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }, + { token: ['entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy'], + regex: '\\b(meaning|desc)(\\s*)(=)' }, + { defaultToken: 'meta.tag.msg.soy' }] }], + '#print': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.print.soy', + 'entity.name.tag.soy'], + regex: '(\\{/?)(\\s*)(print)\\b', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#variable' }, + { include: '#print-parameter' }, + { include: '#number' }, + { include: '#primitive' }, + { include: '#attribute-lookup' }, + { defaultToken: 'meta.tag.print.soy' }] }], + '#print-parameter': [{ token: 'keyword.operator.soy', regex: '\\|' }, + { token: 'variable.parameter.soy', + regex: 'noAutoescape|id|escapeHtml|escapeJs|insertWorkBreaks|truncate' }], + '#special-character': [{ token: 'support.constant.soy', + regex: '\\bsp\\b|\\bnil\\b|\\\\r|\\\\n|\\\\t|\\blb\\b|\\brb\\b' }], + '#string-quoted-double': [{ token: 'string.quoted.double', regex: '"[^"]*"' }], + '#string-quoted-single': [{ token: 'string.quoted.single', regex: '\'[^\']*\'' }], + '#switch': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.switch.soy', + 'entity.name.tag.soy'], + regex: '(\\{/?)(\\s*)(switch|case)\\b', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#variable' }, + { include: '#function' }, + { include: '#number' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }, + { defaultToken: 'meta.tag.switch.soy' }] }], + '#attribute-lookup': [{ token: 'punctuation.definition.attribute-lookup.begin.soy', + regex: '\\[', + push: [{ token: 'punctuation.definition.attribute-lookup.end.soy', + regex: '\\]', + next: 'pop' }, + { include: '#variable' }, + { include: '#function' }, + { include: '#operator' }, + { include: '#number' }, + { include: '#primitive' }, + { include: '#string-quoted-single' }, + { include: '#string-quoted-double' }] }], + '#tag': [{ token: 'punctuation.definition.tag.begin.soy', + regex: '\\{', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { include: '#namespace' }, + { include: '#variable' }, + { include: '#special-character' }, + { include: '#tag-simple' }, + { include: '#function' }, + { include: '#operator' }, + { include: '#attribute-lookup' }, + { include: '#number' }, + { include: '#primitive' }, + { include: '#print-parameter' }] }], + '#tag-simple': [{ token: 'entity.name.tag.soy', + regex: '{{\\s*(?:literal|else|ifempty|default)\\s*(?=\\})' }], + '#template': [{ token: ['punctuation.definition.tag.begin.soy', + 'meta.tag.template.soy'], + regex: '(\\{/?)(\\s*)(?=template|deltemplate)', + push: [{ token: 'punctuation.definition.tag.end.soy', + regex: '\\}', + next: 'pop' }, + { token: ['entity.name.tag.soy', 'text', 'entity.name.function.soy'], + regex: '(template|deltemplate)(\\s+)([\\.\\w]+)', + originalRegex: '(?<=template|deltemplate)\\s+([\\.\\w]+)' }, + { token: ['entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy', + 'text', + 'string.quoted.double.soy'], + regex: '\\b(private)(\\s*)(=)(\\s*)("true"|"false")' }, + { token: ['entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy', + 'text', + 'string.quoted.single.soy'], + regex: '\\b(private)(\\s*)(=)(\\s*)(\'true\'|\'false\')' }, + { token: ['entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy', + 'text', + 'string.quoted.double.soy'], + regex: '\\b(autoescape)(\\s*)(=)(\\s*)("true"|"false"|"contextual")' }, + { token: ['entity.other.attribute-name.soy', + 'text', + 'keyword.operator.soy', + 'text', + 'string.quoted.single.soy'], + regex: '\\b(autoescape)(\\s*)(=)(\\s*)(\'true\'|\'false\'|\'contextual\')' }, + { defaultToken: 'meta.tag.template.soy' }] }], + '#variable': [{ token: 'variable.other.soy', regex: '\\$[\\w\\.]+' }] }; for (var i in soyRules) { if (this.$rules[i]) { this.$rules[i].unshift.apply(this.$rules[i], soyRules[i]); - } else { + } + else { this.$rules[i] = soyRules[i]; } } - this.normalizeRules(); }; - SoyTemplateHighlightRules.metaData = { comment: 'SoyTemplate', - fileTypes: [ 'soy' ], - firstLineMatch: '\\{\\s*namespace\\b', - foldingStartMarker: '\\{\\s*template\\s+[^\\}]*\\}', - foldingStopMarker: '\\{\\s*/\\s*template\\s*\\}', - name: 'SoyTemplate', - scopeName: 'source.soy' }; - - + fileTypes: ['soy'], + firstLineMatch: '\\{\\s*namespace\\b', + foldingStartMarker: '\\{\\s*template\\s+[^\\}]*\\}', + foldingStopMarker: '\\{\\s*/\\s*template\\s*\\}', + name: 'SoyTemplate', + scopeName: 'source.soy' }; oop.inherits(SoyTemplateHighlightRules, HtmlHighlightRules); - exports.SoyTemplateHighlightRules = SoyTemplateHighlightRules; + }); -define("ace/mode/soy_template",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/soy_template_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/soy_template",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/soy_template_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var SoyTemplateHighlightRules = require("./soy_template_highlight_rules").SoyTemplateHighlightRules; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); this.HighlightRules = SoyTemplateHighlightRules; }; oop.inherits(Mode, HtmlMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/soy_template"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/soy_template"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-space.js b/vendor/assets/javascripts/ace/mode-space.js index b1633d2d..8ec3b157 100644 --- a/vendor/assets/javascripts/ace/mode-space.js +++ b/vendor/assets/javascripts/ace/mode-space.js @@ -1,59 +1,51 @@ -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -62,99 +54,98 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/space_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/space_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SpaceHighlightRules = function() { +var SpaceHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "empty_line", - regex : / */, - next : "key" + token: "empty_line", + regex: / */, + next: "key" }, { - token : "empty_line", - regex : /$/, - next : "key" + token: "empty_line", + regex: /$/, + next: "key" } ], - "key" : [ + "key": [ { - token : "variable", - regex : /\S+/ + token: "variable", + regex: /\S+/ }, { - token : "empty_line", - regex : /$/, - next : "start" - },{ - token : "keyword.operator", - regex : / /, - next : "value" + token: "empty_line", + regex: /$/, + next: "start" + }, { + token: "keyword.operator", + regex: / /, + next: "value" } ], - "value" : [ + "value": [ { - token : "keyword.operator", - regex : /$/, - next : "start" + token: "keyword.operator", + regex: /$/, + next: "start" }, { - token : "string", - regex : /[^$]/ + token: "string", + regex: /[^$]/ } ] }; - }; - oop.inherits(SpaceHighlightRules, TextHighlightRules); - exports.SpaceHighlightRules = SpaceHighlightRules; + }); -define("ace/mode/space",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/coffee","ace/mode/space_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/space",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/coffee","ace/mode/space_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var FoldMode = require("./folding/coffee").FoldMode; var SpaceHighlightRules = require("./space_highlight_rules").SpaceHighlightRules; -var Mode = function() { +var Mode = function () { this.HighlightRules = SpaceHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); -(function() { - +(function () { this.$id = "ace/mode/space"; }).call(Mode.prototype); exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/space"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-sparql.js b/vendor/assets/javascripts/ace/mode-sparql.js index c2da510c..ffce6eed 100644 --- a/vendor/assets/javascripts/ace/mode-sparql.js +++ b/vendor/assets/javascripts/ace/mode-sparql.js @@ -1,239 +1,208 @@ -define("ace/mode/sparql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/sparql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from sparql.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SPARQLHighlightRules = function() { - +var SPARQLHighlightRules = function () { this.$rules = { start: [{ - include: "#comments" - }, { - include: "#strings" - }, { - include: "#string-language-suffixes" - }, { - include: "#string-datatype-suffixes" - }, { - include: "#logic-operators" - }, { - include: "#relative-urls" - }, { - include: "#xml-schema-types" - }, { - include: "#rdf-schema-types" - }, { - include: "#owl-types" - }, { - include: "#qnames" - }, { - include: "#keywords" - }, { - include: "#built-in-functions" - }, { - include: "#variables" - }, { - include: "#boolean-literal" - }, { - include: "#punctuation-operators" - }], - "#boolean-literal": [{ - token: "constant.language.boolean.sparql", - regex: /true|false/ - }], - "#built-in-functions": [{ - token: "support.function.sparql", - regex: /[Aa][Bb][Ss]|[Aa][Vv][Gg]|[Bb][Nn][Oo][Dd][Ee]|[Bb][Oo][Uu][Nn][Dd]|[Cc][Ee][Ii][Ll]|[Cc][Oo][Aa][Ll][Ee][Ss][Cc][Ee]|[Cc][Oo][Nn][Cc][Aa][Tt]|[Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]|[Cc][Oo][Uu][Nn][Tt]|[Dd][Aa][Tt][Aa][Tt][Yy][Pp][Ee]|[Dd][Aa][Yy]|[Ee][Nn][Cc][Oo][Dd][Ee]_[Ff][Oo][Rr]_[Uu][Rr][Ii]|[Ee][Xx][Ii][Ss][Tt][Ss]|[Ff][Ll][Oo][Oo][Rr]|[Gg][Rr][Oo][Uu][Pp]_[Cc][Oo][Nn][Cc][Aa][Tt]|[Hh][Oo][Uu][Rr][Ss]|[Ii][Ff]|[Ii][Rr][Ii]|[Ii][Ss][Bb][Ll][Aa][Nn][Kk]|[Ii][Ss][Ii][Rr][Ii]|[Ii][Ss][Ll][Ii][Tt][Ee][Rr][Aa][Ll]|[Ii][Ss][Nn][Uu][Mm][Ee][Rr][Ii][Cc]|[Ii][Ss][Uu][Rr][Ii]|[Ll][Aa][Nn][Gg]|[Ll][Aa][Nn][Gg][Mm][Aa][Tt][Cc][Hh][Ee][Ss]|[Ll][Cc][Aa][Ss][Ee]|[Mm][Aa][Xx]|[Mm][Dd]5|[Mm][Ii][Nn]|[Mm][Ii][Nn][Uu][Tt][Ee][Ss]|[Mm][Oo][Nn][Tt][Hh]|[Nn][Oo][Ww]|[Rr][Aa][Nn][Dd]|[Rr][Ee][Gg][Ee][Xx]|[Rr][Ee][Pp][Ll][Aa][Cc][Ee]|[Rr][Oo][Uu][Nn][Dd]|[Ss][Aa][Mm][Ee][Tt][Ee][Rr][Mm]|[Ss][Aa][Mm][Pp][Ll][Ee]|[Ss][Ee][Cc][Oo][Nn][Dd][Ss]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Hh][Aa](?:1|256|384|512)|[Ss][Tt][Rr]|[Ss][Tt][Rr][Aa][Ff][Tt][Ee][Rr]|[Ss][Tt][Rr][Bb][Ee][Ff][Oo][Rr][Ee]|[Ss][Tt][Rr][Dd][Tt]|[Ss][Tt][Rr][Ee][Nn][Dd][Ss]|[Ss][Tt][Rr][Ll][Aa][Nn][Gg]|[Ss][Tt][Rr][Ll][Ee][Nn]|[Ss][Tt][Rr][Ss][Tt][Aa][Rr][Tt][Ss]|[Ss][Tt][Rr][Uu][Uu][Ii][Dd]|[Ss][Uu][Bb][Ss][Tt][Rr]|[Ss][Uu][Mm]|[Tt][Ii][Mm][Ee][Zz][Oo][Nn][Ee]|[Tt][Zz]|[Uu][Cc][Aa][Ss][Ee]|[Uu][Rr][Ii]|[Uu][Uu][Ii][Dd]|[Yy][Ee][Aa][Rr]/ - }], - "#comments": [{ - token: [ - "punctuation.definition.comment.sparql", - "comment.line.hash.sparql" - ], - regex: /(#)(.*$)/ - }], - "#keywords": [{ - token: "keyword.other.sparql", - regex: /[Aa][Dd][Dd]|[Aa][Ll][Ll]|[Aa][Ss]|[As][Ss][Cc]|[Aa][Ss][Kk]|[Bb][Aa][Ss][Ee]|[Bb][Ii][Nn][Dd]|[Bb][Yy]|[Cc][Ll][Ee][Aa][Rr]|[Cc][Oo][Nn][Ss][Tt][Rr][Uu][Cc][Tt]|[Cc][Oo][Pp][Yy]|[Cc][Rr][Ee][Aa][Tt][Ee]|[Dd][Aa][Tt][Aa]|[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Dd][Ee][Ll][Ee][Tt][Ee]|[Dd][Ee][Sc][Cc]|[Dd][Ee][Ss][Cc][Rr][Ii][Bb][Ee]|[Dd][Ii][Ss][Tt][Ii][Nn][Cc][Tt]|[Dd][Rr][Oo][Pp]|[Ff][Ii][Ll][Tt][Ee][Rr]|[Ff][Rr][Oo][Mm]|[Gg][Rr][Aa][Pp][Hh]|[Gg][Rr][Oo][Uu][Pp]|[Hh][Aa][Vv][Ii][Nn][Gg]|[Ii][Nn][Ss][Ee][Rr][Tt]|[Ll][Ii][Mm][Ii][Tt]|[Ll][Oo][Aa][Dd]|[Mm][Ii][Nn][Uu][Ss]|[Mm][Oo][Vv][Ee]|[Nn][Aa][Mm][Ee][Dd]|[Oo][Ff][Ff][Ss][Ee][Tt]|[Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll]|[Oo][Rr][Dd][Ee][Rr]|[Pp][Rr][Ee][Ff][Ii][Xx]|[Rr][Ee][Dd][Uu][Cc][Ee][Dd]|[Ss][Ee][Ll][Ee][Cc][Tt]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Ee][Rr][Vv][Ii][Cc][Ee]|[Ss][Ii][Ll][Ee][Nn][Tt]|[Tt][Oo]|[Uu][Nn][Dd][Ee][Ff]|[Uu][Nn][Ii][Oo][Nn]|[Uu][Ss][Ii][Nn][Gg]|[Vv][Aa][Ll][Uu][Ee][Ss]|[Ww][He][Ee][Rr][Ee]|[Ww][Ii][Tt][Hh]/ - }], - "#logic-operators": [{ - token: "keyword.operator.logical.sparql", - regex: /\|\||&&|=|!=|<|>|<=|>=|(?:^|!?\s)IN(?:!?\s|$)|(?:^|!?\s)NOT(?:!?\s|$)|-|\+|\*|\/|\!/ - }], - "#owl-types": [{ - token: "support.type.datatype.owl.sparql", - regex: /owl:[a-zA-Z]+/ - }], - "#punctuation-operators": [{ - token: "keyword.operator.punctuation.sparql", - regex: /;|,|\.|\(|\)|\{|\}|\|/ - }], - "#qnames": [{ - token: "entity.name.other.qname.sparql", - regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ - }], - "#rdf-schema-types": [{ - token: "support.type.datatype.rdf.schema.sparql", - regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ - }], - "#relative-urls": [{ - token: "string.quoted.other.relative.url.sparql", - regex: //, - next: "pop" + include: "#comments" }, { - defaultToken: "string.quoted.other.relative.url.sparql" - }] - }], + include: "#strings" + }, { + include: "#string-language-suffixes" + }, { + include: "#string-datatype-suffixes" + }, { + include: "#logic-operators" + }, { + include: "#relative-urls" + }, { + include: "#xml-schema-types" + }, { + include: "#rdf-schema-types" + }, { + include: "#owl-types" + }, { + include: "#qnames" + }, { + include: "#keywords" + }, { + include: "#built-in-functions" + }, { + include: "#variables" + }, { + include: "#boolean-literal" + }, { + include: "#punctuation-operators" + }], + "#boolean-literal": [{ + token: "constant.language.boolean.sparql", + regex: /true|false/ + }], + "#built-in-functions": [{ + token: "support.function.sparql", + regex: /[Aa][Bb][Ss]|[Aa][Vv][Gg]|[Bb][Nn][Oo][Dd][Ee]|[Bb][Oo][Uu][Nn][Dd]|[Cc][Ee][Ii][Ll]|[Cc][Oo][Aa][Ll][Ee][Ss][Cc][Ee]|[Cc][Oo][Nn][Cc][Aa][Tt]|[Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]|[Cc][Oo][Uu][Nn][Tt]|[Dd][Aa][Tt][Aa][Tt][Yy][Pp][Ee]|[Dd][Aa][Yy]|[Ee][Nn][Cc][Oo][Dd][Ee]_[Ff][Oo][Rr]_[Uu][Rr][Ii]|[Ee][Xx][Ii][Ss][Tt][Ss]|[Ff][Ll][Oo][Oo][Rr]|[Gg][Rr][Oo][Uu][Pp]_[Cc][Oo][Nn][Cc][Aa][Tt]|[Hh][Oo][Uu][Rr][Ss]|[Ii][Ff]|[Ii][Rr][Ii]|[Ii][Ss][Bb][Ll][Aa][Nn][Kk]|[Ii][Ss][Ii][Rr][Ii]|[Ii][Ss][Ll][Ii][Tt][Ee][Rr][Aa][Ll]|[Ii][Ss][Nn][Uu][Mm][Ee][Rr][Ii][Cc]|[Ii][Ss][Uu][Rr][Ii]|[Ll][Aa][Nn][Gg]|[Ll][Aa][Nn][Gg][Mm][Aa][Tt][Cc][Hh][Ee][Ss]|[Ll][Cc][Aa][Ss][Ee]|[Mm][Aa][Xx]|[Mm][Dd]5|[Mm][Ii][Nn]|[Mm][Ii][Nn][Uu][Tt][Ee][Ss]|[Mm][Oo][Nn][Tt][Hh]|[Nn][Oo][Ww]|[Rr][Aa][Nn][Dd]|[Rr][Ee][Gg][Ee][Xx]|[Rr][Ee][Pp][Ll][Aa][Cc][Ee]|[Rr][Oo][Uu][Nn][Dd]|[Ss][Aa][Mm][Ee][Tt][Ee][Rr][Mm]|[Ss][Aa][Mm][Pp][Ll][Ee]|[Ss][Ee][Cc][Oo][Nn][Dd][Ss]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Hh][Aa](?:1|256|384|512)|[Ss][Tt][Rr]|[Ss][Tt][Rr][Aa][Ff][Tt][Ee][Rr]|[Ss][Tt][Rr][Bb][Ee][Ff][Oo][Rr][Ee]|[Ss][Tt][Rr][Dd][Tt]|[Ss][Tt][Rr][Ee][Nn][Dd][Ss]|[Ss][Tt][Rr][Ll][Aa][Nn][Gg]|[Ss][Tt][Rr][Ll][Ee][Nn]|[Ss][Tt][Rr][Ss][Tt][Aa][Rr][Tt][Ss]|[Ss][Tt][Rr][Uu][Uu][Ii][Dd]|[Ss][Uu][Bb][Ss][Tt][Rr]|[Ss][Uu][Mm]|[Tt][Ii][Mm][Ee][Zz][Oo][Nn][Ee]|[Tt][Zz]|[Uu][Cc][Aa][Ss][Ee]|[Uu][Rr][Ii]|[Uu][Uu][Ii][Dd]|[Yy][Ee][Aa][Rr]/ + }], + "#comments": [{ + token: [ + "punctuation.definition.comment.sparql", + "comment.line.hash.sparql" + ], + regex: /(#)(.*$)/ + }], + "#keywords": [{ + token: "keyword.other.sparql", + regex: /[Aa][Dd][Dd]|[Aa][Ll][Ll]|[Aa][Ss]|[As][Ss][Cc]|[Aa][Ss][Kk]|[Bb][Aa][Ss][Ee]|[Bb][Ii][Nn][Dd]|[Bb][Yy]|[Cc][Ll][Ee][Aa][Rr]|[Cc][Oo][Nn][Ss][Tt][Rr][Uu][Cc][Tt]|[Cc][Oo][Pp][Yy]|[Cc][Rr][Ee][Aa][Tt][Ee]|[Dd][Aa][Tt][Aa]|[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Dd][Ee][Ll][Ee][Tt][Ee]|[Dd][Ee][Sc][Cc]|[Dd][Ee][Ss][Cc][Rr][Ii][Bb][Ee]|[Dd][Ii][Ss][Tt][Ii][Nn][Cc][Tt]|[Dd][Rr][Oo][Pp]|[Ff][Ii][Ll][Tt][Ee][Rr]|[Ff][Rr][Oo][Mm]|[Gg][Rr][Aa][Pp][Hh]|[Gg][Rr][Oo][Uu][Pp]|[Hh][Aa][Vv][Ii][Nn][Gg]|[Ii][Nn][Ss][Ee][Rr][Tt]|[Ll][Ii][Mm][Ii][Tt]|[Ll][Oo][Aa][Dd]|[Mm][Ii][Nn][Uu][Ss]|[Mm][Oo][Vv][Ee]|[Nn][Aa][Mm][Ee][Dd]|[Oo][Ff][Ff][Ss][Ee][Tt]|[Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll]|[Oo][Rr][Dd][Ee][Rr]|[Pp][Rr][Ee][Ff][Ii][Xx]|[Rr][Ee][Dd][Uu][Cc][Ee][Dd]|[Ss][Ee][Ll][Ee][Cc][Tt]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Ee][Rr][Vv][Ii][Cc][Ee]|[Ss][Ii][Ll][Ee][Nn][Tt]|[Tt][Oo]|[Uu][Nn][Dd][Ee][Ff]|[Uu][Nn][Ii][Oo][Nn]|[Uu][Ss][Ii][Nn][Gg]|[Vv][Aa][Ll][Uu][Ee][Ss]|[Ww][He][Ee][Rr][Ee]|[Ww][Ii][Tt][Hh]/ + }], + "#logic-operators": [{ + token: "keyword.operator.logical.sparql", + regex: /\|\||&&|=|!=|<|>|<=|>=|(?:^|!?\s)IN(?:!?\s|$)|(?:^|!?\s)NOT(?:!?\s|$)|-|\+|\*|\/|\!/ + }], + "#owl-types": [{ + token: "support.type.datatype.owl.sparql", + regex: /owl:[a-zA-Z]+/ + }], + "#punctuation-operators": [{ + token: "keyword.operator.punctuation.sparql", + regex: /;|,|\.|\(|\)|\{|\}|\|/ + }], + "#qnames": [{ + token: "entity.name.other.qname.sparql", + regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ + }], + "#rdf-schema-types": [{ + token: "support.type.datatype.rdf.schema.sparql", + regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ + }], + "#relative-urls": [{ + token: "string.quoted.other.relative.url.sparql", + regex: //, + next: "pop" + }, { + defaultToken: "string.quoted.other.relative.url.sparql" + }] + }], "#string-datatype-suffixes": [{ - token: "keyword.operator.datatype.suffix.sparql", - regex: /\^\^/ - }], + token: "keyword.operator.datatype.suffix.sparql", + regex: /\^\^/ + }], "#string-language-suffixes": [{ - token: [ - "keyword.operator.language.suffix.sparql", - "constant.language.suffix.sparql" - ], - regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ - }], + token: [ + "keyword.operator.language.suffix.sparql", + "constant.language.suffix.sparql" + ], + regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ + }], "#strings": [{ - token: "string.quoted.triple.sparql", - regex: /"""/, - push: [{ token: "string.quoted.triple.sparql", regex: /"""/, - next: "pop" + push: [{ + token: "string.quoted.triple.sparql", + regex: /"""/, + next: "pop" + }, { + defaultToken: "string.quoted.triple.sparql" + }] }, { - defaultToken: "string.quoted.triple.sparql" - }] - }, { - token: "string.quoted.double.sparql", - regex: /"/, - push: [{ token: "string.quoted.double.sparql", regex: /"/, - next: "pop" - }, { - token: "invalid.string.newline", - regex: /$/ - }, { - token: "constant.character.escape.sparql", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.sparql" - }] - }], + push: [{ + token: "string.quoted.double.sparql", + regex: /"/, + next: "pop" + }, { + token: "invalid.string.newline", + regex: /$/ + }, { + token: "constant.character.escape.sparql", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.sparql" + }] + }], "#variables": [{ - token: "variable.other.sparql", - regex: /(?:\?|\$)[-_a-zA-Z0-9]+/ - }], + token: "variable.other.sparql", + regex: /(?:\?|\$)[-_a-zA-Z0-9]+/ + }], "#xml-schema-types": [{ - token: "support.type.datatype.schema.sparql", - regex: /xsd?:[a-z][a-zA-Z]+/ - }] + token: "support.type.datatype.schema.sparql", + regex: /xsd?:[a-z][a-zA-Z]+/ + }] }; - this.normalizeRules(); }; - SPARQLHighlightRules.metaData = { fileTypes: ["rq", "sparql"], name: "SPARQL", scopeName: "source.sparql" }; - - oop.inherits(SPARQLHighlightRules, TextHighlightRules); - exports.SPARQLHighlightRules = SPARQLHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -246,68 +215,74 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/sparql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sparql_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/sparql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sparql_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var SPARQLHighlightRules = require("./sparql_highlight_rules").SPARQLHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = SPARQLHighlightRules; this.foldingRules = new FoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.$id = "ace/mode/sparql"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/sparql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-sql.js b/vendor/assets/javascripts/ace/mode-sql.js index c8311c74..66572d86 100644 --- a/vendor/assets/javascripts/ace/mode-sql.js +++ b/vendor/assets/javascripts/ace/mode-sql.js @@ -1,103 +1,221 @@ -define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SqlHighlightRules = function() { - - var keywords = ( - "select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|" + - "when|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|" + - "foreign|not|references|default|null|inner|cross|natural|database|drop|grant" - ); - - var builtinConstants = ( - "true|false" - ); - - var builtinFunctions = ( - "avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|" + - "coalesce|ifnull|isnull|nvl" - ); - - var dataTypes = ( - "int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" + - "money|real|number|integer" - ); - +var SqlHighlightRules = function () { + var keywords = ("select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|" + + "when|then|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|" + + "foreign|not|references|default|null|inner|cross|natural|database|drop|grant|distinct|is|in|" + + "all|alter|any|array|at|authorization|between|both|cast|check|collate|column|commit|constraint|" + + "cube|current|current_date|current_time|current_timestamp|current_user|describe|escape|except|" + + "exists|external|extract|fetch|filter|for|full|function|global|grouping|intersect|interval|" + + "into|leading|like|local|no|of|only|out|overlaps|partition|position|range|revoke|rollback|rollup|" + + "row|rows|session_user|set|some|start|tablesample|time|to|trailing|truncate|unique|unknown|" + + "user|using|values|window|with"); + var builtinConstants = ("true|false"); + var builtinFunctions = ("avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|" + + "coalesce|ifnull|isnull|nvl"); + var dataTypes = ("int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|" + + "money|real|number|integer|string"); var keywordMapper = this.createKeywordMapper({ "support.function": builtinFunctions, "keyword": keywords, "constant.language": builtinConstants, "storage.type": dataTypes }, "identifier", true); - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "comment", - start : "/\\*", - end : "\\*/" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "string", // ` string (apache drill) - regex : "`.*?`" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] + "start": [{ + token: "comment", + regex: "--.*$" + }, { + token: "comment", + start: "/\\*", + end: "\\*/" + }, { + token: "string", // " string + regex: '".*?"' + }, { + token: "string", // ' string + regex: "'.*?'" + }, { + token: "string", // ` string (apache drill) + regex: "`.*?`" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + }] }; this.normalizeRules(); }; - oop.inherits(SqlHighlightRules, TextHighlightRules); - exports.SqlHighlightRules = SqlHighlightRules; + }); -define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); +}); + +define("ace/mode/folding/sql",["require","exports","module","ace/lib/oop","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { +}).call(FoldMode.prototype); + +}); + +define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/mode/folding/sql"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var SqlHighlightRules = require("./sql_highlight_rules").SqlHighlightRules; - -var Mode = function() { +var SqlFoldMode = require("./folding/sql").FoldMode; +var Mode = function () { this.HighlightRules = SqlHighlightRules; + this.foldingRules = new SqlFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "--"; - + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/sql"; + this.snippetFileId = "ace/snippets/sql"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/sql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-sqlserver.js b/vendor/assets/javascripts/ace/mode-sqlserver.js index 42405fe8..eb7ba582 100644 --- a/vendor/assets/javascripts/ace/mode-sqlserver.js +++ b/vendor/assets/javascripts/ace/mode-sqlserver.js @@ -1,73 +1,59 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/sqlserver_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sqlserver_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SqlServerHighlightRules = function() { +var SqlServerHighlightRules = function () { var logicalOperators = "ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|SOME"; logicalOperators += "|NULL|IS|APPLY|INNER|OUTER|LEFT|RIGHT|JOIN|CROSS"; //SSMS colors these gray too - - var builtinFunctions = ( - "OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|" + + "OPENDATASOURCE|OPENQUERY|OPENROWSET|OPENXML|" + "AVG|CHECKSUM_AGG|COUNT|COUNT_BIG|GROUPING|GROUPING_ID|MAX|MIN|STDEV|STDEVP|SUM|VAR|VARP|" + "DENSE_RANK|NTILE|RANK|ROW_NUMBER" + "@@DATEFIRST|@@DBTS|@@LANGID|@@LANGUAGE|@@LOCK_TIMEOUT|@@MAX_CONNECTIONS|@@MAX_PRECISION|@@NESTLEVEL|@@OPTIONS|@@REMSERVER|@@SERVERNAME|@@SERVICENAME|@@SPID|@@TEXTSIZE|@@VERSION|" + "CAST|CONVERT|PARSE|TRY_CAST|TRY_CONVERT|TRY_PARSE" + "@@CURSOR_ROWS|@@FETCH_STATUS|CURSOR_STATUS|" + - "@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|" + + "@@DATEFIRST|@@LANGUAGE|CURRENT_TIMESTAMP|DATEADD|DATEDIFF|DATEFROMPARTS|DATENAME|DATEPART|DATETIME2FROMPARTS|DATETIMEFROMPARTS|DATETIMEOFFSETFROMPARTS|DAY|EOMONTH|GETDATE|GETUTCDATE|ISDATE|MONTH|SET DATEFIRST|SET DATEFORMAT|SET LANGUAGE|SMALLDATETIMEFROMPARTS|SP_HELPLANGUAGE|SWITCHOFFSET|SYSDATETIME|SYSDATETIMEOFFSET|SYSUTCDATETIME|TIMEFROMPARTS|TODATETIMEOFFSET|YEAR|DATETRUNC|" + "CHOOSE|IIF|" + "ABS|ACOS|ASIN|ATAN|ATN2|CEILING|COS|COT|DEGREES|EXP|FLOOR|LOG|LOG10|PI|POWER|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|SQUARE|TAN|" + "@@PROCID|APPLOCK_MODE|APPLOCK_TEST|APP_NAME|ASSEMBLYPROPERTY|COLUMNPROPERTY|COL_LENGTH|COL_NAME|DATABASEPROPERTYEX|DATABASE_PRINCIPAL_ID|DB_ID|DB_NAME|FILEGROUPPROPERTY|FILEGROUP_ID|FILEGROUP_NAME|FILEPROPERTY|FILE_ID|FILE_IDEX|FILE_NAME|FULLTEXTCATALOGPROPERTY|FULLTEXTSERVICEPROPERTY|INDEXKEY_PROPERTY|INDEXPROPERTY|INDEX_COL|OBJECTPROPERTY|OBJECTPROPERTYEX|OBJECT_DEFINITION|OBJECT_ID|OBJECT_NAME|OBJECT_SCHEMA_NAME|ORIGINAL_DB_NAME|PARSENAME|SCHEMA_ID|SCHEMA_NAME|SCOPE_IDENTITY|SERVERPROPERTY|STATS_DATE|TYPEPROPERTY|TYPE_ID|TYPE_NAME|" + @@ -76,22 +62,23 @@ var SqlServerHighlightRules = function() { "$PARTITION|@@ERROR|@@IDENTITY|@@PACK_RECEIVED|@@ROWCOUNT|@@TRANCOUNT|BINARY_CHECKSUM|CHECKSUM|CONNECTIONPROPERTY|CONTEXT_INFO|CURRENT_REQUEST_ID|ERROR_LINE|ERROR_MESSAGE|ERROR_NUMBER|ERROR_PROCEDURE|ERROR_SEVERITY|ERROR_STATE|FORMATMESSAGE|GETANSINULL|GET_FILESTREAM_TRANSACTION_CONTEXT|HOST_ID|HOST_NAME|ISNULL|ISNUMERIC|MIN_ACTIVE_ROWVERSION|NEWID|NEWSEQUENTIALID|ROWCOUNT_BIG|XACT_STATE|" + "@@CONNECTIONS|@@CPU_BUSY|@@IDLE|@@IO_BUSY|@@PACKET_ERRORS|@@PACK_RECEIVED|@@PACK_SENT|@@TIMETICKS|@@TOTAL_ERRORS|@@TOTAL_READ|@@TOTAL_WRITE|FN_VIRTUALFILESTATS|" + "PATINDEX|TEXTPTR|TEXTVALID|" + - "COALESCE|NULLIF" - ); + "GREATEST|LEAST|" + + "GENERATE_SERIES|DATE_BUCKET|" + + "JSON_ARRAY|JSON_OBJECT|JSON_PATH_EXISTS|ISJSON|" + + "FIRST_VALUE|LAST_VALUE|" + + "COALESCE|NULLIF"); var dataTypes = ("BIGINT|BINARY|BIT|CHAR|CURSOR|DATE|DATETIME|DATETIME2|DATETIMEOFFSET|DECIMAL|FLOAT|HIERARCHYID|IMAGE|INTEGER|INT|MONEY|NCHAR|NTEXT|NUMERIC|NVARCHAR|REAL|SMALLDATETIME|SMALLINT|SMALLMONEY|SQL_VARIANT|TABLE|TEXT|TIME|TIMESTAMP|TINYINT|UNIQUEIDENTIFIER|VARBINARY|VARCHAR|XML"); var builtInStoredProcedures = "sp_addextendedproc|sp_addextendedproperty|sp_addmessage|sp_addtype|sp_addumpdevice|sp_add_data_file_recover_suspect_db|sp_add_log_file_recover_suspect_db|sp_altermessage|sp_attach_db|sp_attach_single_file_db|sp_autostats|sp_bindefault|sp_bindrule|sp_bindsession|sp_certify_removable|sp_clean_db_file_free_space|sp_clean_db_free_space|sp_configure|sp_control_plan_guide|sp_createstats|sp_create_plan_guide|sp_create_plan_guide_from_handle|sp_create_removable|sp_cycle_errorlog|sp_datatype_info|sp_dbcmptlevel|sp_dbmmonitoraddmonitoring|sp_dbmmonitorchangealert|sp_dbmmonitorchangemonitoring|sp_dbmmonitordropalert|sp_dbmmonitordropmonitoring|sp_dbmmonitorhelpalert|sp_dbmmonitorhelpmonitoring|sp_dbmmonitorresults|sp_db_increased_partitions|sp_delete_backuphistory|sp_depends|sp_describe_first_result_set|sp_describe_undeclared_parameters|sp_detach_db|sp_dropdevice|sp_dropextendedproc|sp_dropextendedproperty|sp_dropmessage|sp_droptype|sp_execute|sp_executesql|sp_getapplock|sp_getbindtoken|sp_help|sp_helpconstraint|sp_helpdb|sp_helpdevice|sp_helpextendedproc|sp_helpfile|sp_helpfilegroup|sp_helpindex|sp_helplanguage|sp_helpserver|sp_helpsort|sp_helpstats|sp_helptext|sp_helptrigger|sp_indexoption|sp_invalidate_textptr|sp_lock|sp_monitor|sp_prepare|sp_prepexec|sp_prepexecrpc|sp_procoption|sp_recompile|sp_refreshview|sp_releaseapplock|sp_rename|sp_renamedb|sp_resetstatus|sp_sequence_get_range|sp_serveroption|sp_setnetname|sp_settriggerorder|sp_spaceused|sp_tableoption|sp_unbindefault|sp_unbindrule|sp_unprepare|sp_updateextendedproperty|sp_updatestats|sp_validname|sp_who|sys.sp_merge_xtp_checkpoint_files|sys.sp_xtp_bind_db_resource_pool|sys.sp_xtp_checkpoint_force_garbage_collection|sys.sp_xtp_control_proc_exec_stats|sys.sp_xtp_control_query_exec_stats|sys.sp_xtp_unbind_db_resource_pool"; - var keywords = "ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE"; + var keywords = "ABSOLUTE|ACTION|ADA|ADD|ADMIN|AFTER|AGGREGATE|ALIAS|ALL|ALLOCATE|ALTER|AND|ANY|ARE|ARRAY|AS|ASC|ASENSITIVE|ASSERTION|ASYMMETRIC|AT|ATOMIC|AUTHORIZATION|BACKUP|BEFORE|BEGIN|BETWEEN|BIT_LENGTH|BLOB|BOOLEAN|BOTH|BREADTH|BREAK|BROWSE|BULK|BY|CALL|CALLED|CARDINALITY|CASCADE|CASCADED|CASE|CATALOG|CHARACTER|CHARACTER_LENGTH|CHAR_LENGTH|CHECK|CHECKPOINT|CLASS|CLOB|CLOSE|CLUSTERED|COALESCE|COLLATE|COLLATION|COLLECT|COLUMN|COMMIT|COMPLETION|COMPUTE|CONDITION|CONNECT|CONNECTION|CONSTRAINT|CONSTRAINTS|CONSTRUCTOR|CONTAINS|CONTAINSTABLE|CONTINUE|CORR|CORRESPONDING|COVAR_POP|COVAR_SAMP|CREATE|CROSS|CUBE|CUME_DIST|CURRENT|CURRENT_CATALOG|CURRENT_DATE|CURRENT_DEFAULT_TRANSFORM_GROUP|CURRENT_PATH|CURRENT_ROLE|CURRENT_SCHEMA|CURRENT_TIME|CURRENT_TRANSFORM_GROUP_FOR_TYPE|CYCLE|DATA|DATABASE|DBCC|DEALLOCATE|DEC|DECLARE|DEFAULT|DEFERRABLE|DEFERRED|DELETE|DENY|DEPTH|DEREF|DESC|DESCRIBE|DESCRIPTOR|DESTROY|DESTRUCTOR|DETERMINISTIC|DIAGNOSTICS|DICTIONARY|DISCONNECT|DISK|DISTINCT|DISTRIBUTED|DOMAIN|DOUBLE|DROP|DUMP|DYNAMIC|EACH|ELEMENT|ELSE|END|END-EXEC|EQUALS|ERRLVL|ESCAPE|EVERY|EXCEPT|EXCEPTION|EXEC|EXECUTE|EXISTS|EXIT|EXTERNAL|EXTRACT|FETCH|FILE|FILLFACTOR|FILTER|FIRST|FOR|FOREIGN|FORTRAN|FOUND|FREE|FREETEXT|FREETEXTTABLE|FROM|FULL|FULLTEXTTABLE|FUNCTION|FUSION|GENERAL|GET|GLOBAL|GO|GOTO|GRANT|GROUP|HAVING|HOLD|HOLDLOCK|HOST|HOUR|IDENTITY|IDENTITYCOL|IDENTITY_INSERT|IF|IGNORE|IMMEDIATE|IN|INCLUDE|INDEX|INDICATOR|INITIALIZE|INITIALLY|INNER|INOUT|INPUT|INSENSITIVE|INSERT|INTEGER|INTERSECT|INTERSECTION|INTERVAL|INTO|IS|ISOLATION|ITERATE|JOIN|KEY|KILL|LANGUAGE|LARGE|LAST|LATERAL|LEADING|LESS|LEVEL|LIKE|LIKE_REGEX|LIMIT|LINENO|LN|LOAD|LOCAL|LOCALTIME|LOCALTIMESTAMP|LOCATOR|MAP|MATCH|MEMBER|MERGE|METHOD|MINUTE|MOD|MODIFIES|MODIFY|MODULE|MULTISET|NAMES|NATIONAL|NATURAL|NCLOB|NEW|NEXT|NO|NOCHECK|NONCLUSTERED|NONE|NORMALIZE|NOT|NULL|NULLIF|OBJECT|OCCURRENCES_REGEX|OCTET_LENGTH|OF|OFF|OFFSETS|OLD|ON|ONLY|OPEN|OPERATION|OPTION|OR|ORDER|ORDINALITY|OUT|OUTER|OUTPUT|OVER|OVERLAPS|OVERLAY|PAD|PARAMETER|PARAMETERS|PARTIAL|PARTITION|PASCAL|PATH|PERCENT|PERCENTILE_CONT|PERCENTILE_DISC|PERCENT_RANK|PIVOT|PLAN|POSITION|POSITION_REGEX|POSTFIX|PRECISION|PREFIX|PREORDER|PREPARE|PRESERVE|PRIMARY|PRINT|PRIOR|PRIVILEGES|PROC|PROCEDURE|PUBLIC|RAISERROR|RANGE|READ|READS|READTEXT|RECONFIGURE|RECURSIVE|REF|REFERENCES|REFERENCING|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|RELATIVE|RELEASE|REPLICATION|RESTORE|RESTRICT|RESULT|RETURN|RETURNS|REVERT|REVOKE|ROLE|ROLLBACK|ROLLUP|ROUTINE|ROW|ROWCOUNT|ROWGUIDCOL|ROWS|RULE|SAVE|SAVEPOINT|SCHEMA|SCOPE|SCROLL|SEARCH|SECOND|SECTION|SECURITYAUDIT|SELECT|SEMANTICKEYPHRASETABLE|SEMANTICSIMILARITYDETAILSTABLE|SEMANTICSIMILARITYTABLE|SENSITIVE|SEQUENCE|SESSION|SET|SETS|SETUSER|SHUTDOWN|SIMILAR|SIZE|SOME|SPECIFIC|SPECIFICTYPE|SQL|SQLCA|SQLCODE|SQLERROR|SQLEXCEPTION|SQLSTATE|SQLWARNING|START|STATE|STATEMENT|STATIC|STATISTICS|STDDEV_POP|STDDEV_SAMP|STRUCTURE|SUBMULTISET|SUBSTRING_REGEX|STRING_SPLIT|SYMMETRIC|SYSTEM|TABLESAMPLE|TEMPORARY|TERMINATE|TEXTSIZE|THAN|THEN|TIMEZONE_HOUR|TIMEZONE_MINUTE|TO|TOP|TRAILING|TRAN|TRANSACTION|TRANSLATE|TRANSLATE_REGEX|TRANSLATION|TREAT|TRIGGER|TRIM|TRUNCATE|TSEQUAL|UESCAPE|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARIABLE|VARYING|VAR_POP|VAR_SAMP|VIEW|WAITFOR|WHEN|WHENEVER|WHERE|WHILE|WIDTH_BUCKET|WINDOW|WITH|WITHIN|WITHIN GROUP|WITHOUT|WORK|WRITE|WRITETEXT|XMLAGG|XMLATTRIBUTES|XMLBINARY|XMLCAST|XMLCOMMENT|XMLCONCAT|XMLDOCUMENT|XMLELEMENT|XMLEXISTS|XMLFOREST|XMLITERATE|XMLNAMESPACES|XMLPARSE|XMLPI|XMLQUERY|XMLSERIALIZE|XMLTABLE|XMLTEXT|XMLVALIDATE|ZONE"; keywords += "|KEEPIDENTITY|KEEPDEFAULTS|IGNORE_CONSTRAINTS|IGNORE_TRIGGERS|XLOCK|FORCESCAN|FORCESEEK|HOLDLOCK|NOLOCK|NOWAIT|PAGLOCK|READCOMMITTED|READCOMMITTEDLOCK|READPAST|READUNCOMMITTED|REPEATABLEREAD|ROWLOCK|SERIALIZABLE|SNAPSHOT|SPATIAL_WINDOW_MAX_CELLS|TABLOCK|TABLOCKX|UPDLOCK|XLOCK|IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX|EXPAND|VIEWS|FAST|FORCE|KEEP|KEEPFIXED|MAXDOP|MAXRECURSION|OPTIMIZE|PARAMETERIZATION|SIMPLE|FORCED|RECOMPILE|ROBUST|PLAN|SPATIAL_WINDOW_MAX_CELLS|NOEXPAND|HINT"; keywords += "|LOOP|HASH|MERGE|REMOTE"; keywords += "|TRY|CATCH|THROW"; keywords += "|TYPE"; keywords = keywords.split('|'); - keywords = keywords.filter(function(value, index, self) { + keywords = keywords.filter(function (value, index, self) { return logicalOperators.split('|').indexOf(value) === -1 && builtinFunctions.split('|').indexOf(value) === -1 && dataTypes.split('|').indexOf(value) === -1; }); keywords = keywords.sort().join('|'); - - var keywordMapper = this.createKeywordMapper({ "constant.language": logicalOperators, "storage.type": dataTypes, @@ -104,64 +91,63 @@ var SqlServerHighlightRules = function() { for (var i = 0; i < isolationLevels.length; i++) { setStatements.push('SET TRANSACTION ISOLATION LEVEL ' + isolationLevels[i]); } - - this.$rules = { start: [{ - token: "string.start", - regex: "'", - next: [{ - token: "constant.language.escape", - regex: /''/ + token: "string.start", + regex: "'", + next: [{ + token: "constant.language.escape", + regex: /''/ + }, { + token: "string.end", + next: "start", + regex: "'" + }, { + defaultToken: "string" + }] + }, + DocCommentHighlightRules.getStartRule("doc-start"), { + token: "comment", + regex: "--.*$" }, { - token: "string.end", - next: "start", - regex: "'" + token: "comment", + start: "/\\*", + end: "\\*/" }, { - defaultToken: "string" - }] - }, - DocCommentHighlightRules.getStartRule("doc-start"), { - token: "comment", - regex: "--.*$" - }, { - token: "comment", - start: "/\\*", - end: "\\*/" - }, { - token: "constant.numeric", // float - regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token: keywordMapper, - regex: "@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])" //up to 2 @symbols for some built in functions - }, { - token: "constant.class", - regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token: "keyword.operator", - regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*" - }, { - token: "paren.lparen", - regex: "[\\(]" - }, { - token: "paren.rparen", - regex: "[\\)]" - }, { - token: "punctuation", - regex: ",|;" - }, { - token: "text", - regex: "\\s+" - }], + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "@{0,2}[a-zA-Z_$][a-zA-Z0-9_$]*\\b(?!])" //up to 2 @symbols for some built in functions + }, { + token: "constant.class", + regex: "@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=|\\*" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "punctuation", + regex: ",|;" + }, { + token: "text", + regex: "\\s+" + }], comment: [ - DocCommentHighlightRules.getTagRule(), { - token: "comment", - regex: "\\*\\/", - next: "no_regex" - }, { - defaultToken: "comment", - caseInsensitive: true - }] + DocCommentHighlightRules.getTagRule(), { + token: "comment", + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment", + caseInsensitive: true + } + ] }; for (var i = 0; i < setStatements.length; i++) { this.$rules.start.unshift({ @@ -169,12 +155,11 @@ var SqlServerHighlightRules = function() { regex: setStatements[i] }); } - this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); var completions = []; - var addCompletions = function(arr, meta) { - arr.forEach(function(v) { + var addCompletions = function (arr, meta) { + arr.forEach(function (v) { completions.push({ name: v, value: v, @@ -189,98 +174,72 @@ var SqlServerHighlightRules = function() { addCompletions(dataTypes.split('|'), 'type'); addCompletions(setStatements, 'statement'); addCompletions(keywords.split('|'), 'keyword'); - this.completions = completions; }; - oop.inherits(SqlServerHighlightRules, TextHighlightRules); - exports.SqlHighlightRules = SqlServerHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -293,145 +252,140 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/sqlserver",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/sqlserver",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function() {}; - +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /(\bCASE\b|\bBEGIN\b)|^\s*(\/\*)/i; this.startRegionRe = /^\s*(\/\*|--)#?region\b/; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.getBeginEndBlock(session, row, i, match[1]); - + if (match[1]) + return this.getBeginEndBlock(session, row, i, match[1]); var range = session.getCommentFoldRange(row, i + match[0].length, 1); if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); } - else if (foldStyle != "all") range = null; + else if (foldStyle != "all") + range = null; } - return range; } - - if (foldStyle === "markbegin") return; + if (foldStyle === "markbegin") + return; return; }; - this.getBeginEndBlock = function(session, row, column, matchSequence) { + this.getBeginEndBlock = function (session, row, column, matchSequence) { var start = { row: row, column: column + matchSequence.length }; var maxRow = session.getLength(); var line; - var depth = 1; var re = /(\bCASE\b|\bBEGIN\b)|(\bEND\b)/i; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth++; - else depth--; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth++; + else + depth--; + if (!depth) + break; } var endRow = row; if (endRow > start.row) { return new Range(start.row, start.column, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/mode/folding/sqlserver"], function(require, exports, module) { -"use strict"; - +define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/mode/folding/sqlserver"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var SqlServerHighlightRules = require("./sqlserver_highlight_rules").SqlHighlightRules; var SqlServerFoldMode = require("./folding/sqlserver").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = SqlServerHighlightRules; this.foldingRules = new SqlServerFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "--"; - this.blockComment = {start: "/*", end: "*/"}; - this.getCompletions = function(state, session, pos, prefix) { + this.blockComment = { start: "/*", end: "*/" }; + this.getCompletions = function (state, session, pos, prefix) { return session.$mode.$highlightRules.completions; }; - - this.$id = "ace/mode/sql"; + this.$id = "ace/mode/sqlserver"; + this.snippetFileId = "ace/snippets/sqlserver"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/sqlserver"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-stylus.js b/vendor/assets/javascripts/ace/mode-stylus.js index a9eb9888..72ee6887 100644 --- a/vendor/assets/javascripts/ace/mode-stylus.js +++ b/vendor/assets/javascripts/ace/mode-stylus.js @@ -1,21 +1,16 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -23,182 +18,173 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/stylus_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module) { +define("ace/mode/stylus_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules","ace/mode/css_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY Stylus.tmlanguage (UUID: 60519324-6A3A-4382-9E0B-546993A3869A) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var CssHighlightRules = require("./css_highlight_rules"); - -var StylusHighlightRules = function() { - +var StylusHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.type": CssHighlightRules.supportType, "support.function": CssHighlightRules.supportFunction, @@ -206,205 +192,194 @@ var StylusHighlightRules = function() { "support.constant.color": CssHighlightRules.supportConstantColor, "support.constant.fonts": CssHighlightRules.supportConstantFonts }, "text", true); - this.$rules = { - start: [ - { - token : "comment", - regex : /\/\/.*$/ - }, - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, - { - token: ["entity.name.function.stylus", "text"], - regex: "^([-a-zA-Z_][-\\w]*)?(\\()" - }, - { - token: ["entity.other.attribute-name.class.stylus"], - regex: "\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*" - }, - { - token: ["entity.language.stylus"], - regex: "^ *&" - }, - { - token: ["variable.language.stylus"], - regex: "(arguments)" - }, - { - token: ["keyword.stylus"], - regex: "@[-\\w]+" - }, - { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : CssHighlightRules.pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : CssHighlightRules.pseudoClasses - }, - { - token: ["entity.name.tag.stylus"], - regex: "(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)" - }, - { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, - { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, - { - token: ["punctuation.definition.entity.stylus", "entity.other.attribute-name.id.stylus"], - regex: "(#)([a-zA-Z][a-zA-Z0-9_-]*)" - }, - { - token: "meta.vendor-prefix.stylus", - regex: "-webkit-|-moz\\-|-ms-|-o-" - }, - { - token: "keyword.control.stylus", - regex: "(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b" - }, - { - token: "keyword.operator.stylus", - regex: "!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=" - }, - { - token: "keyword.operator.stylus", - regex: "(?:in|is(?:nt)?|not)\\b" - }, - { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token : "constant.numeric", - regex : CssHighlightRules.numRe - }, - { - token : "keyword", - regex : "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b" - }, - { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - } - ], - "comment" : [ - { - token : "comment", // closing comment - regex : "\\*\\/", - next : "start" - }, { - defaultToken : "comment" - } - ], - "qqstring" : [ - { - token : "string", - regex : '[^"\\\\]+' - }, - { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, - { - token : "string", - regex : '"|$', - next : "start" - } - ], - "qstring" : [ - { - token : "string", - regex : "[^'\\\\]+" - }, - { - token : "string", - regex : "\\\\$", - next : "qstring" - }, - { - token : "string", - regex : "'|$", - next : "start" - } - ] + start: [ + { + token: "comment", + regex: /\/\/.*$/ + }, + { + token: "comment", // multi line comment + regex: /\/\*/, + next: "comment" + }, + { + token: ["entity.name.function.stylus", "text"], + regex: "^([-a-zA-Z_][-\\w]*)?(\\()" + }, + { + token: ["entity.other.attribute-name.class.stylus"], + regex: "\\.-?[_a-zA-Z]+[_a-zA-Z0-9-]*" + }, + { + token: ["entity.language.stylus"], + regex: "^ *&" + }, + { + token: ["variable.language.stylus"], + regex: "(arguments)" + }, + { + token: ["keyword.stylus"], + regex: "@[-\\w]+" + }, + { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: CssHighlightRules.pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: CssHighlightRules.pseudoClasses + }, + { + token: ["entity.name.tag.stylus"], + regex: "(?:\\b)(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(?:h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|samp|script|section|select|small|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)(?:\\b)" + }, + { + token: "constant.numeric", // hex6 color + regex: "#[a-fA-F0-9]{6}" + }, + { + token: "constant.numeric", // hex3 color + regex: "#[a-fA-F0-9]{3}" + }, + { + token: ["punctuation.definition.entity.stylus", "entity.other.attribute-name.id.stylus"], + regex: "(#)([a-zA-Z][a-zA-Z0-9_-]*)" + }, + { + token: "meta.vendor-prefix.stylus", + regex: "-webkit-|-moz\\-|-ms-|-o-" + }, + { + token: "keyword.control.stylus", + regex: "(?:!important|for|in|return|true|false|null|if|else|unless|return)\\b" + }, + { + token: "keyword.operator.stylus", + regex: "!|~|\\+|-|(?:\\*)?\\*|\\/|%|(?:\\.)\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=" + }, + { + token: "keyword.operator.stylus", + regex: "(?:in|is(?:nt)?|not)\\b" + }, + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, + { + token: "constant.numeric", + regex: CssHighlightRules.numRe + }, + { + token: "keyword", + regex: "(?:ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)\\b" + }, + { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + } + ], + "comment": [ + { + token: "comment", // closing comment + regex: "\\*\\/", + next: "start" + }, { + defaultToken: "comment" + } + ], + "qqstring": [ + { + token: "string", + regex: '[^"\\\\]+' + }, + { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, + { + token: "string", + regex: '"|$', + next: "start" + } + ], + "qstring": [ + { + token: "string", + regex: "[^'\\\\]+" + }, + { + token: "string", + regex: "\\\\$", + next: "qstring" + }, + { + token: "string", + regex: "'|$", + next: "start" + } + ] + }; }; - -}; - oop.inherits(StylusHighlightRules, TextHighlightRules); - exports.StylusHighlightRules = StylusHighlightRules; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -413,50 +388,53 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/stylus",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/stylus_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module) { +define("ace/mode/stylus",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/stylus_highlight_rules","ace/mode/folding/coffee"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var StylusHighlightRules = require("./stylus_highlight_rules").StylusHighlightRules; var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = StylusHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - + this.blockComment = { start: "/*", end: "*/" }; this.$id = "ace/mode/stylus"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/stylus"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-svg.js b/vendor/assets/javascripts/ace/mode-svg.js index f9fee798..d084aecb 100644 --- a/vendor/assets/javascripts/ace/mode-svg.js +++ b/vendor/assets/javascripts/ace/mode-svg.js @@ -1,220 +1,192 @@ -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -225,26 +197,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -257,8 +224,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -269,7 +235,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -280,14 +245,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -295,63 +264,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -473,153 +413,21 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -627,129 +435,183 @@ var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; var XmlFoldMode = require("./folding/xml").FoldMode; var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); +var Mode = function () { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); }; - oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.voidElements = lang.arrayToMap([]); - - this.blockComment = {start: ""}; - - this.createWorker = function(session) { + this.blockComment = { start: "" }; + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/xml"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -757,142 +619,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -907,9 +769,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -925,13 +787,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -964,13 +826,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -980,44 +876,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -1032,40 +946,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -1073,7 +1007,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -1083,14 +1018,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -1321,54 +1221,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -1376,39 +1274,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -1420,76 +1314,57 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/svg_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/svg_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var SvgHighlightRules = function() { +var SvgHighlightRules = function () { XmlHighlightRules.call(this); - this.embedTagRules(JavaScriptHighlightRules, "js-", "script"); - this.normalizeRules(); }; - oop.inherits(SvgHighlightRules, XmlHighlightRules); - exports.SvgHighlightRules = SvgHighlightRules; + }); -define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(defaultMode, subModes) { +var FoldMode = exports.FoldMode = function (defaultMode, subModes) { this.defaultMode = defaultMode; this.subModes = subModes; }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - - this.$getMode = function(state) { - if (typeof state != "string") +(function () { + this.$getMode = function (state) { + if (typeof state != "string") state = state[0]; for (var key in this.subModes) { if (state.indexOf(key) === 0) @@ -1497,39 +1372,28 @@ oop.inherits(FoldMode, BaseFoldMode); } return null; }; - - this.$tryMode = function(state, session, foldStyle, row) { + this.$tryMode = function (state, session, foldStyle, row) { var mode = this.$getMode(state); return (mode ? mode.getFoldWidget(session, foldStyle, row) : ""); }; - - this.getFoldWidget = function(session, foldStyle, row) { - return ( - this.$tryMode(session.getState(row-1), session, foldStyle, row) || + this.getFoldWidget = function (session, foldStyle, row) { + return (this.$tryMode(session.getState(row - 1), session, foldStyle, row) || this.$tryMode(session.getState(row), session, foldStyle, row) || - this.defaultMode.getFoldWidget(session, foldStyle, row) - ); + this.defaultMode.getFoldWidget(session, foldStyle, row)); }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var mode = this.$getMode(session.getState(row-1)); - + this.getFoldWidgetRange = function (session, foldStyle, row) { + var mode = this.$getMode(session.getState(row - 1)); if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.$getMode(session.getState(row)); - if (!mode || !mode.getFoldWidget(session, foldStyle, row)) mode = this.defaultMode; - return mode.getFoldWidgetRange(session, foldStyle, row); }; - }).call(FoldMode.prototype); }); -define("ace/mode/svg",["require","exports","module","ace/lib/oop","ace/mode/xml","ace/mode/javascript","ace/mode/svg_highlight_rules","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/svg",["require","exports","module","ace/lib/oop","ace/mode/xml","ace/mode/javascript","ace/mode/svg_highlight_rules","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var XmlMode = require("./xml").Mode; var JavaScriptMode = require("./javascript").Mode; @@ -1537,32 +1401,30 @@ var SvgHighlightRules = require("./svg_highlight_rules").SvgHighlightRules; var MixedFoldMode = require("./folding/mixed").FoldMode; var XmlFoldMode = require("./folding/xml").FoldMode; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { XmlMode.call(this); - this.HighlightRules = SvgHighlightRules; - this.createModeDelegates({ "js-": JavaScriptMode }); - this.foldingRules = new MixedFoldMode(new XmlFoldMode(), { "js-": new CStyleFoldMode() }); }; - oop.inherits(Mode, XmlMode); - -(function() { - - this.getNextLineIndent = function(state, line, tab) { +(function () { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.$id = "ace/mode/svg"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/svg"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-swift.js b/vendor/assets/javascripts/ace/mode-swift.js index 3b269a2e..256f0a62 100644 --- a/vendor/assets/javascripts/ace/mode-swift.js +++ b/vendor/assets/javascripts/ace/mode-swift.js @@ -1,63 +1,51 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var DocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] }; }; - oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +DocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +DocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - DocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - exports.DocCommentHighlightRules = DocCommentHighlightRules; }); -define("ace/mode/swift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/swift_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SwiftHighlightRules = function() { - var keywordMapper = this.createKeywordMapper({ +var SwiftHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ "variable.language": "", "keyword": "__COLUMN__|__FILE__|__FUNCTION__|__LINE__" + "|as|associativity|break|case|class|continue|default|deinit|didSet" @@ -69,13 +57,10 @@ var SwiftHighlightRules = function() { + "|convenience|dynamic|final|infix|lazy|mutating|nonmutating|optional|override|postfix" + "|prefix|required|static|guard|defer", "storage.type": "bool|double|Double" - + "|extension|float|Float|int|Int|private|public|string|String", - "constant.language": - "false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes", - "support.function": - "" + + "|extension|float|Float|int|Int|open|internal|fileprivate|private|public|string|String", + "constant.language": "false|Infinity|NaN|nil|no|null|null|off|on|super|this|true|undefined|yes", + "support.function": "" }, "identifier"); - function string(start, options) { var nestable = options.nestable || options.interpolation; var interpStart = options.interpolation && options.interpolation.nextState || "start"; @@ -89,14 +74,14 @@ var SwiftHighlightRules = function() { token: "character.escape" }, options.interpolation && { - token : "paren.quasi.start", - regex : lang.escapeRegExp(options.interpolation.lead + options.interpolation.open), - push : interpStart + token: "paren.quasi.start", + regex: lang.escapeRegExp(options.interpolation.lead + options.interpolation.open), + push: interpStart }, options.error && { regex: options.error, token: "error.invalid" - }, + }, { regex: start + (options.multiline ? "" : "|$"), token: "string.end", @@ -105,20 +90,17 @@ var SwiftHighlightRules = function() { defaultToken: "string" } ].filter(Boolean); - if (nestable) mainRule.push = nextState; else mainRule.next = nextState; - if (!options.interpolation) return mainRule; - var open = options.interpolation.open; var close = options.interpolation.close; var counter = { regex: "[" + lang.escapeRegExp(open + close) + "]", - onMatch: function(val, state, stack) { + onMatch: function (val, state, stack) { this.next = val == open ? this.nextState : ""; if (val == open && stack.length) { stack.unshift("start", state); @@ -133,170 +115,144 @@ var SwiftHighlightRules = function() { return val == open ? "paren.lparen" : "paren.rparen"; }, nextState: interpStart - }; + }; return [counter, mainRule]; } - function comments() { return [{ - token : "comment", - regex : "\\/\\/(?=.)", - next : [ + token: "comment", + regex: /\/\//, + next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next: "start"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: "start" }, + { defaultToken: "comment", caseInsensitive: true } ] }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment.start", - regex : /\/\*/, + token: "comment.start", + regex: /\/\*/, stateName: "nested_comment", - push : [ + push: [ DocCommentHighlightRules.getTagRule(), - {token : "comment.start", regex : /\/\*/, push: "nested_comment"}, - {token : "comment.end", regex : "\\*\\/", next : "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment.start", regex: /\/\*/, push: "nested_comment" }, + { token: "comment.end", regex: "\\*\\/", next: "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } - - this.$rules = { start: [ + string('"""', { + escape: /\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/, + interpolation: { lead: "\\", open: "(", close: ")" }, + error: /\\./, + multiline: true + }), string('"', { escape: /\\(?:[0\\tnr"']|u{[a-fA-F1-9]{0,8}})/, - interpolation: {lead: "\\", open: "(", close: ")"}, + interpolation: { lead: "\\", open: "(", close: ")" }, error: /\\./, multiline: false }), - comments({type: "c", nestable: true}), + comments(), { - regex: /@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, - token: "variable.parameter" + regex: /@[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, + token: "variable.parameter" }, { regex: /[a-zA-Z_$][a-zA-Z_$\d\u0080-\ufffe]*/, token: keywordMapper - }, + }, { - token : "constant.numeric", - regex : /[+-]?(?:0(?:b[01]+|o[0-7]+|x[\da-fA-F])|\d+(?:(?:\.\d*)?(?:[PpEe][+-]?\d+)?)\b)/ + token: "constant.numeric", + regex: /[+-]?(?:0(?:b[01]+|o[0-7]+|x[\da-fA-F])|\d+(?:(?:\.\d*)?(?:[PpEe][+-]?\d+)?)\b)/ }, { - token : "keyword.operator", - regex : /--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ - } - + token: "paren.rparen", + regex: /[\])}]/ + } ] }; - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); this.normalizeRules(); }; - - oop.inherits(SwiftHighlightRules, TextHighlightRules); - exports.HighlightRules = SwiftHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -309,74 +265,77 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/swift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/swift_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/swift",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/swift_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var HighlightRules = require("./swift_highlight_rules").HighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = HighlightRules; this.foldingRules = new FoldMode(); - this.$behaviour = new CstyleBehaviour(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/", nestable: true}; - + this.blockComment = { start: "/*", end: "*/", nestable: true }; this.$id = "ace/mode/swift"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/swift"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-swig.js b/vendor/assets/javascripts/ace/mode-swig.js deleted file mode 100644 index 5e4c8b97..00000000 --- a/vendor/assets/javascripts/ace/mode-swig.js +++ /dev/null @@ -1,1099 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index"; -var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; -var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; -var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - - var keywordMapper = this.createKeywordMapper({ - "support.function": supportFunction, - "support.constant": supportConstant, - "support.type": supportType, - "support.constant.color": supportConstantColor, - "support.constant.fonts": supportConstantFonts - }, "text", true); - - this.$rules = { - "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "@.*?{", - push: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token: "paren.lparen", - regex: "\\{", - push: "ruleset" - }, { - token: "string", - regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" - }], - - "ruleset" : [ - { - token : "paren.rparen", - regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }] - }; - - this.normalizeRules(); -}; - -oop.inherits(CssHighlightRules, TextHighlightRules); - -exports.CssHighlightRules = CssHighlightRules; - -}); - -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { - this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] - }; -}; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { - return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" - }; -} - -DocCommentHighlightRules.getStartRule = function(start) { - return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start - }; -}; - -DocCommentHighlightRules.getEndRule = function (start) { - return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start - }; -}; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; - -}); - -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - -var JavaScriptHighlightRules = function(options) { - var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + - "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|" + - "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + - "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", - "constant.language.boolean": "true|false" - }, "identifier"); - var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex - "u[0-9a-fA-F]{4}|" + // unicode - "[0-2][0-7]{0,2}|" + // oct - "3[0-6][0-7]?|" + // oct - "37[0-7]?|" + // oct - "[4-7][0-7]?|" + //oct - ".)"; - - this.$rules = { - "no_regex" : [ - { - token : "comment", - regex : "\\/\\/", - next : "line_comment" - }, - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : /\/\*/, - next : "comment" - }, { - token : "string", - regex : "'(?=.)", - next : "qstring" - }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, { - token : "constant.numeric", // hex - regex : /0[xX][0-9a-fA-F]+\b/ - }, { - token : "constant.numeric", // float - regex : /[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ - }, { - token : [ - "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" - ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "keyword.operator", "text", "storage.type", - "text", "paren.lparen" - ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "entity.name.function", "text", "punctuation.operator", - "text", "storage.type", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : [ - "text", "text", "storage.type", "text", "paren.lparen" - ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", - next: "function_arguments" - }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" - }, { - token : ["support.constant"], - regex : /that\b/ - }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ - }, { - token : keywordMapper, - regex : identifierRe - }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" - }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|[!$%&*+\-~\/^]=?/, - next : "start" - }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" - }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token: "comment", - regex: /^#!.*$/ - } - ], - property: [{ - token : "text", - regex : "\\s+" - }, { - token : [ - "storage.type", "punctuation.operator", "entity.name.function", "text", - "keyword.operator", "text", - "storage.type", "text", "entity.name.function", "text", "paren.lparen" - ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", - next: "function_arguments" - }, { - token : "punctuation.operator", - regex : /[.](?![.])/ - }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ - }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ - }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ - }, { - token : "identifier", - regex : identifierRe - }, { - regex: "", - token: "empty", - next: "no_regex" - } - ], - "start": [ - DocCommentHighlightRules.getStartRule("doc-start"), - { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment_regex_allowed" - }, { - token : "comment", - regex : "\\/\\/", - next : "line_comment_regex_allowed" - }, { - token: "string.regexp", - regex: "\\/", - next: "regex" - }, { - token : "text", - regex : "\\s+|^$", - next : "start" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "regex": [ - { - token: "regexp.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "string.regexp", - regex: "/[sxngimy]*", - next: "no_regex" - }, { - token : "invalid", - regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ - }, { - token : "constant.language.escape", - regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ - }, { - token : "constant.language.delimiter", - regex: /\|/ - }, { - token: "constant.language.escape", - regex: /\[\^?/, - next: "regex_character_class" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp" - } - ], - "regex_character_class": [ - { - token: "regexp.charclass.keyword.operator", - regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" - }, { - token: "constant.language.escape", - regex: "]", - next: "regex" - }, { - token: "constant.language.escape", - regex: "-" - }, { - token: "empty", - regex: "$", - next: "no_regex" - }, { - defaultToken: "string.regexp.charachterclass" - } - ], - "function_arguments": [ - { - token: "variable.parameter", - regex: identifierRe - }, { - token: "punctuation.operator", - regex: "[, ]+" - }, { - token: "punctuation.operator", - regex: "$" - }, { - token: "empty", - regex: "", - next: "no_regex" - } - ], - "comment_regex_allowed" : [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : "start"}, - {defaultToken : "comment", caseInsensitive: true} - ], - "comment" : [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : "no_regex"}, - {defaultToken : "comment", caseInsensitive: true} - ], - "line_comment_regex_allowed" : [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : "start"}, - {defaultToken : "comment", caseInsensitive: true} - ], - "line_comment" : [ - DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : "no_regex"}, - {defaultToken : "comment", caseInsensitive: true} - ], - "qqstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, { - token : "string", - regex : '"|$', - next : "no_regex" - }, { - defaultToken: "string" - } - ], - "qstring" : [ - { - token : "constant.language.escape", - regex : escapedRe - }, { - token : "string", - regex : "\\\\$", - next : "qstring" - }, { - token : "string", - regex : "'|$", - next : "no_regex" - }, { - defaultToken: "string" - } - ] - }; - - - if (!options || !options.noES6) { - this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { - this.next = val == "{" ? this.nextState : ""; - if (val == "{" && stack.length) { - stack.unshift("start", state); - return "paren"; - } - if (val == "}" && stack.length) { - stack.shift(); - this.next = stack.shift(); - if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) - return "paren.quasi.end"; - } - return val == "{" ? "paren.lparen" : "paren.rparen"; - }, - nextState: "start" - }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] - }); - - if (!options || !options.noJSX) - JSX.call(this); - } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - - this.normalizeRules(); -}; - -oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - -function JSX() { - var tagRegex = identifierRe.replace("\\d", "\\d\\-"); - var jsxTag = { - onMatch : function(val, state, stack) { - var offset = val.charAt(1) == "/" ? 2 : 1; - if (offset == 1) { - if (state != this.nextState) - stack.unshift(this.next, this.nextState, 0); - else - stack.unshift(this.next); - stack[2]++; - } else if (offset == 2) { - if (state == this.nextState) { - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.shift(); - stack.shift(); - } - } - } - return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; - }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); - } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; - }, - nextState: "jsx" - }, - jsxJsRule, - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - jsxJsRule, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - jsxJsRule, - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }]; - this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; -} - -exports.JavaScriptHighlightRules = JavaScriptHighlightRules; -}); - -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { - var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, - { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction", - }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, - { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true - }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} - ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} - ], - - comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} - ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} - ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} - ], - string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - - attributes: [{ - token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - - attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] - }; - - if (this.constructor === XmlHighlightRules) - this.normalizeRules(); -}; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ - this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", - next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} - ] - }); - - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { - stack.splice(0); - return this.token; - }} - ] - - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); - }; - -}).call(TextHighlightRules.prototype); - -oop.inherits(XmlHighlightRules, TextHighlightRules); - -exports.XmlHighlightRules = XmlHighlightRules; -}); - -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; -var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; -var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - -var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' -}); - -var HtmlHighlightRules = function() { - XmlHighlightRules.call(this); - - this.addRules({ - attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ - include: "tag_whitespace" - }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" - }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], - tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} - ], - }); - - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({noJSX: true}).getRules(), "js-", "script"); - - if (this.constructor === HtmlHighlightRules) - this.normalizeRules(); -}; - -oop.inherits(HtmlHighlightRules, XmlHighlightRules); - -exports.HtmlHighlightRules = HtmlHighlightRules; -}); - -define("ace/mode/swig",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - -var oop = require("../lib/oop"); -var lang = require("../lib/lang"); -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var SwigHighlightRules = function() { - HtmlHighlightRules.call(this); - - var tags = "autoescape|block|else|elif|extends|filter|for|if|import|include|macro|parent|raw|set|spaceless"; - tags = tags + "|end" + tags.replace(/\|/g, "|end"); - var filters = "addslashes|capitalize|date|default|escape|first|groupBy|join|json|last|lower|raw|replace|reverse|safe|sort|striptags|title|uniq|upper|url_encode|url_decode"; - var special = "first|last|index|index0|revindex|revindex0|key" - var constants = "null|none|true|false|loop"; - var operators = "in|is|and|or|not|as|with|only"; - - var keywordMapper = this.createKeywordMapper({ - "keyword.control.swig": tags, - "support.function.swig": filters+"|"+special, - "keyword.operator.swig": operators, - "constant.language.swig": constants, - }, "identifier"); - for (var rule in this.$rules) { - this.$rules[rule].unshift({ - token : "variable.other.readwrite.local.swig", - regex : "\\{\\{-?", - push : "swig-start" - }, { - token : "meta.tag.swig", - regex : "\\{%-?", - push : "swig-start" - }, { - token : "comment.block.swig", - regex : "\\{#-?", - push : "swig-comment" - }); - } - this.$rules["swig-comment"] = [{ - token : "comment.block.swig", - regex : ".*-?#}", - next : "pop" - }]; - - this.$rules["swig-start"] = [{ - token : "variable.other.readwrite.local.swig", - regex : "-?\\}\\}", - next : "pop" - }, { - token : "meta.tag.swig", - regex : "-?%\\}", - next : "pop" - }, { - token : "string", - regex : "'", - next : "swig-qstring" - }, { - token : "string", - regex : '"', - next : "swig-qqstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator.assignment", - regex : "=|~" - }, { - token : "keyword.operator.comparison", - regex : "==|!=|<|>|>=|<=|===" - }, { - token : "keyword.operator.arithmetic", - regex : "\\+|-|/|%|//|\\*|\\*\\*" - }, { - token : "keyword.operator.other", - regex : "\\.\\.|\\|" - }, { - token : "punctuation.operator", - regex : /\?|\:|\,|\;|\./ - }, { - token : "paren.lparen", - regex : /[\[\({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "text", - regex : "\\s+" - } ]; - - this.$rules["swig-qqstring"] = [{ - token : "constant.language.escape", - regex : /\\[\\"$#ntr]|#{[^"}]*}/ - }, { - token : "string", - regex : '"', - next : "swig-start" - }, { - defaultToken : "string" - } - ]; - - this.$rules["swig-qstring"] = [{ - token : "constant.language.escape", - regex : /\\[\\'ntr]}/ - }, { - token : "string", - regex : "'", - next : "swig-start" - }, { - defaultToken : "string" - } - ]; - - this.normalizeRules(); -}; - -oop.inherits(SwigHighlightRules, TextHighlightRules); - -exports.SwigHighlightRules = SwigHighlightRules; -}); diff --git a/vendor/assets/javascripts/ace/mode-tcl.js b/vendor/assets/javascripts/ace/mode-tcl.js index 35603de0..8dab7078 100644 --- a/vendor/assets/javascripts/ace/mode-tcl.js +++ b/vendor/assets/javascripts/ace/mode-tcl.js @@ -1,86 +1,62 @@ -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -93,284 +69,270 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/tcl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/tcl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TclHighlightRules = function() { - +var TclHighlightRules = function () { this.$rules = { - "start" : [ - { - token : "comment", - regex : "#.*\\\\$", - next : "commentfollow" + "start": [ + { + token: "comment", + regex: "#.*\\\\$", + next: "commentfollow" }, { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "support.function", - regex : '[\\\\]$', - next : "splitlineStart" + token: "support.function", + regex: '[\\\\]$', + next: "splitlineStart" }, { - token : "text", - regex : /\\(?:["{}\[\]$\\])/ + token: "text", + regex: /\\(?:["{}\[\]$\\])/ }, { - token : "text", // last value before command - regex : '^|[^{][;][^}]|[/\r/]', - next : "commandItem" + token: "text", // last value before command + regex: '^|[^{][;][^}]|[/\r/]', + next: "commandItem" }, { - token : "string", // single line - regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // multi line """ string start - regex : '[ ]*["]', - next : "qqstring" + token: "string", // multi line """ string start + regex: '[ ]*["]', + next: "qqstring" }, { - token : "variable.instance", - regex : "[$]", - next : "variable" + token: "variable.instance", + regex: "[$]", + next: "variable" }, { - token : "support.function", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" + token: "support.function", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" }, { - token : "identifier", - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: "identifier", + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "paren.lparen", - regex : "[[{]", - next : "commandItem" + token: "paren.lparen", + regex: "[[{]", + next: "commandItem" }, { - token : "paren.lparen", - regex : "[(]" - }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.lparen", + regex: "[(]" }, { - token : "text", - regex : "\\s+" + token: "paren.rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" } ], - "commandItem" : [ + "commandItem": [ { - token : "comment", - regex : "#.*\\\\$", - next : "commentfollow" + token: "comment", + regex: "#.*\\\\$", + next: "commentfollow" }, { - token : "comment", - regex : "#.*$", - next : "start" + token: "comment", + regex: "#.*$", + next: "start" }, { - token : "string", // single line - regex : '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '[ ]*["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "variable.instance", - regex : "[$]", - next : "variable" + token: "variable.instance", + regex: "[$]", + next: "variable" }, { - token : "support.function", - regex : "(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])", - next : "commandItem" + token: "support.function", + regex: "(?:[:][:])[a-zA-Z0-9_/]+(?:[:][:])", + next: "commandItem" }, { - token : "support.function", - regex : "[a-zA-Z0-9_/]+(?:[:][:])", - next : "commandItem" + token: "support.function", + regex: "[a-zA-Z0-9_/]+(?:[:][:])", + next: "commandItem" }, { - token : "support.function", - regex : "(?:[:][:])", - next : "commandItem" + token: "support.function", + regex: "(?:[:][:])", + next: "commandItem" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "support.function", - regex : "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" + token: "paren.lparen", + regex: "[[({]" }, { - token : "keyword", - regex : "[a-zA-Z0-9_/]+", - next : "start" - } ], - "commentfollow" : [ + token: "support.function", + regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|{\\*}|;|::" + }, { + token: "keyword", + regex: "[a-zA-Z0-9_/]+", + next: "start" + } + ], + "commentfollow": [ { - token : "comment", - regex : ".*\\\\$", - next : "commentfollow" + token: "comment", + regex: ".*\\\\$", + next: "commentfollow" }, { - token : "comment", - regex : '.+', - next : "start" - } ], - "splitlineStart" : [ + token: "comment", + regex: '.+', + next: "start" + } + ], + "splitlineStart": [ { - token : "text", - regex : "^.", - next : "start" - }], - "variable" : [ + token: "text", + regex: "^.", + next: "start" + } + ], + "variable": [ { - token : "variable.instance", // variable tcl - regex : "[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?", - next : "start" + token: "variable.instance", // variable tcl + regex: "[a-zA-Z_\\d]+(?:[(][a-zA-Z_\\d]+[)])?", + next: "start" }, { - token : "variable.instance", // variable tcl with braces - regex : "{?[a-zA-Z_\\d]+}?", - next : "start" - }], - "qqstring" : [ { - token : "string", // multi line """ string end - regex : '(?:[^\\\\]|\\\\.)*?["]', - next : "start" - }, { - token : "string", - regex : '.+' - } ] + token: "variable.instance", // variable tcl with braces + regex: "{?[a-zA-Z_\\d]+}?", + next: "start" + } + ], + "qqstring": [{ + token: "string", // multi line """ string end + regex: '(?:[^\\\\]|\\\\.)*?["]', + next: "start" + }, { + token: "string", + regex: '.+' + }] }; }; - oop.inherits(TclHighlightRules, TextHighlightRules); - exports.TclHighlightRules = TclHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/tcl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/cstyle","ace/mode/tcl_highlight_rules","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/tcl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/cstyle","ace/mode/tcl_highlight_rules","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var TclHighlightRules = require("./tcl_highlight_rules").TclHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var Range = require("../range").Range; - -var Mode = function() { +var Mode = function () { this.HighlightRules = TclHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new CStyleFoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "#"; - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/tcl"; + this.snippetFileId = "ace/snippets/tcl"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/tcl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-terraform.js b/vendor/assets/javascripts/ace/mode-terraform.js new file mode 100644 index 00000000..489770db --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-terraform.js @@ -0,0 +1,346 @@ +define("ace/mode/terraform_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var TerraformHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ['storage.function.terraform'], + regex: '\\b(output|resource|data|variable|module|export)\\b' + }, + { + token: "variable.terraform", + regex: "\\$\\s", + push: [ + { + token: "keyword.terraform", + regex: "(-var-file|-var)" + }, + { + token: "variable.terraform", + regex: "\\n|$", + next: "pop" + }, + { include: "strings" }, + { include: "variables" }, + { include: "operators" }, + { defaultToken: "text" } + ] + }, + { + token: "language.support.class", + regex: "\\b(timeouts|provider|connection|provisioner|lifecycleprovider|atlas)\\b" + }, + { + token: "singleline.comment.terraform", + regex: '#.*$' + }, + { + token: "singleline.comment.terraform", + regex: '//.*$' + }, + { + token: "multiline.comment.begin.terraform", + regex: /\/\*/, + push: "blockComment" + }, + { + token: "storage.function.terraform", + regex: "^\\s*(locals|terraform)\\s*{" + }, + { + token: "paren.lparen", + regex: "[[({]" + }, + { + token: "paren.rparen", + regex: "[\\])}]" + }, + { include: "constants" }, + { include: "strings" }, + { include: "operators" }, + { include: "variables" } + ], + blockComment: [{ + regex: /\*\//, + token: "multiline.comment.end.terraform", + next: "pop" + }, { + defaultToken: "comment" + }], + "constants": [ + { + token: "constant.language.terraform", + regex: "\\b(true|false|yes|no|on|off|EOF)\\b" + }, + { + token: "constant.numeric.terraform", + regex: "(\\b([0-9]+)([kKmMgG]b?)?\\b)|(\\b(0x[0-9A-Fa-f]+)([kKmMgG]b?)?\\b)" + } + ], + "variables": [ + { + token: ["variable.assignment.terraform", "keyword.operator"], + regex: "\\b([a-zA-Z_]+)(\\s*=)" + } + ], + "interpolated_variables": [ + { + token: "variable.terraform", + regex: "\\b(var|self|count|path|local)\\b(?:\\.*[a-zA-Z_-]*)?" + } + ], + "strings": [ + { + token: "punctuation.quote.terraform", + regex: "'", + push: [{ + token: 'punctuation.quote.terraform', + regex: "'", + next: 'pop' + }, + { include: "escaped_chars" }, + { defaultToken: 'string' }] + }, + { + token: "punctuation.quote.terraform", + regex: '"', + push: [{ + token: 'punctuation.quote.terraform', + regex: '"', + next: 'pop' + }, + { include: "interpolation" }, + { include: "escaped_chars" }, + { defaultToken: 'string' }] + } + ], + "escaped_chars": [ + { + token: "constant.escaped_char.terraform", + regex: "\\\\." + } + ], + "operators": [ + { + token: "keyword.operator", + regex: "\\?|:|==|!=|>|<|>=|<=|&&|\\|\\\||!|%|&|\\*|\\+|\\-|/|=" + } + ], + "interpolation": [ + { + token: "punctuation.interpolated.begin.terraform", + regex: "\\$?\\$\\{", + push: [{ + token: "punctuation.interpolated.end.terraform", + regex: "\\}", + next: "pop" + }, + { include: "interpolated_variables" }, + { include: "operators" }, + { include: "constants" }, + { include: "strings" }, + { include: "functions" }, + { include: "parenthesis" }, + { defaultToken: "punctuation" } + ] + } + ], + "functions": [ + { + token: "keyword.function.terraform", + regex: "\\b(abs|basename|base64decode|base64encode|base64gzip|base64sha256|base64sha512|bcrypt|ceil|chomp|chunklist|cidrhost|cidrnetmask|cidrsubnet|coalesce|coalescelist|compact|concat|contains|dirname|distinct|element|file|floor|flatten|format|formatlist|indent|index|join|jsonencode|keys|length|list|log|lookup|lower|map|matchkeys|max|merge|min|md5|pathexpand|pow|replace|rsadecrypt|sha1|sha256|sha512|signum|slice|sort|split|substr|timestamp|timeadd|title|transpose|trimspace|upper|urlencode|uuid|values|zipmap)\\b" + } + ], + "parenthesis": [ + { + token: "paren.lparen", + regex: "\\[" + }, + { + token: "paren.rparen", + regex: "\\]" + } + ] + }; + this.normalizeRules(); +}; +oop.inherits(TerraformHighlightRules, TextHighlightRules); +exports.TerraformHighlightRules = TerraformHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/terraform",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/terraform_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TerraformHighlightRules = require("./terraform_highlight_rules").TerraformHighlightRules; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var Mode = function () { + TextMode.call(this); + this.HighlightRules = TerraformHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = ["#", "//"]; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/terraform"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/terraform"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-tex.js b/vendor/assets/javascripts/ace/mode-tex.js index 2e0f2960..3721dd5e 100644 --- a/vendor/assets/javascripts/ace/mode-tex.js +++ b/vendor/assets/javascripts/ace/mode-tex.js @@ -1,132 +1,186 @@ -define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/tex_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){/* + * tex_highlight_rules.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ "use strict"; - var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TexHighlightRules = function(textClass) { - +var TexHighlightRules = function (textClass) { if (!textClass) textClass = "text"; - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "%.*$" + token: "comment", + regex: "%.*$" }, { - token : textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" + token: textClass, // non-command + regex: "\\\\[$&%#\\{\\}]" }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", - next : "nospell" + token: "keyword", // command + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b", + next: "nospell" }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" + token: "keyword", // command + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" }, { - token : "paren.keyword.operator", - regex : "[[({]" + token: "paren.keyword.operator", + regex: "[[({]" }, { - token : "paren.keyword.operator", - regex : "[\\])}]" + token: "paren.keyword.operator", + regex: "[\\])}]" }, { - token : textClass, - regex : "\\s+" + token: textClass, + regex: "\\s+" } ], - "nospell" : [ - { - token : "comment", - regex : "%.*$", - next : "start" - }, { - token : "nospell." + textClass, // non-command - regex : "\\\\[$&%#\\{\\}]" - }, { - token : "keyword", // command - regex : "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" - }, { - token : "keyword", // command - regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", - next : "start" - }, { - token : "paren.keyword.operator", - regex : "[[({]" - }, { - token : "paren.keyword.operator", - regex : "[\\])]" - }, { - token : "paren.keyword.operator", - regex : "}", - next : "start" - }, { - token : "nospell." + textClass, - regex : "\\s+" - }, { - token : "nospell." + textClass, - regex : "\\w+" - } + "nospell": [ + { + token: "comment", + regex: "%.*$", + next: "start" + }, { + token: "nospell." + textClass, // non-command + regex: "\\\\[$&%#\\{\\}]" + }, { + token: "keyword", // command + regex: "\\\\(?:documentclass|usepackage|newcounter|setcounter|addtocounter|value|arabic|stepcounter|newenvironment|renewenvironment|ref|vref|eqref|pageref|label|cite[a-zA-Z]*|tag|begin|end|bibitem)\\b" + }, { + token: "keyword", // command + regex: "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", + next: "start" + }, { + token: "paren.keyword.operator", + regex: "[[({]" + }, { + token: "paren.keyword.operator", + regex: "[\\])]" + }, { + token: "paren.keyword.operator", + regex: "}", + next: "start" + }, { + token: "nospell." + textClass, + regex: "\\s+" + }, { + token: "nospell." + textClass, + regex: "\\w+" + } ] }; }; - oop.inherits(TexHighlightRules, TextHighlightRules); - exports.TexHighlightRules = TexHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/tex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { +define("ace/mode/tex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/tex_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + * tex.js + * + * Copyright (C) 2009-11 by RStudio, Inc. + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Distributed under the BSD license: + * + * Copyright (c) 2010, Ajax.org B.V. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of Ajax.org B.V. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * + */ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var TexHighlightRules = require("./tex_highlight_rules").TexHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function(suppressHighlighting) { +var Mode = function (suppressHighlighting) { if (suppressHighlighting) this.HighlightRules = TextHighlightRules; else @@ -135,18 +189,24 @@ var Mode = function(suppressHighlighting) { this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - this.lineCommentStart = "%"; - this.getNextLineIndent = function(state, line, tab) { - return this.$getIndent(line); - }; - - this.allowAutoInsert = function() { - return false; - }; +(function () { + this.lineCommentStart = "%"; + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.allowAutoInsert = function () { + return false; + }; this.$id = "ace/mode/tex"; + this.snippetFileId = "ace/snippets/tex"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/tex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-text.js b/vendor/assets/javascripts/ace/mode-text.js index 8b137891..13aa31f2 100644 --- a/vendor/assets/javascripts/ace/mode-text.js +++ b/vendor/assets/javascripts/ace/mode-text.js @@ -1 +1,9 @@ +; (function() { + window.require(["ace/mode/text"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-textile.js b/vendor/assets/javascripts/ace/mode-textile.js index f64d88eb..3cad20de 100644 --- a/vendor/assets/javascripts/ace/mode-textile.js +++ b/vendor/assets/javascripts/ace/mode-textile.js @@ -1,142 +1,125 @@ -define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/textile_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TextileHighlightRules = function() { +var TextileHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : function(value) { + token: function (value) { if (value.charAt(0) == "h") return "markup.heading." + value.charAt(1); else return "markup.heading"; }, - regex : "h1|h2|h3|h4|h5|h6|bq|p|bc|pre", - next : "blocktag" + regex: "h1|h2|h3|h4|h5|h6|bq|p|bc|pre", + next: "blocktag" }, { - token : "keyword", - regex : "[\\*]+|[#]+" + token: "keyword", + regex: "[\\*]+|[#]+" }, { - token : "text", - regex : ".+" + token: "text", + regex: ".+" } ], - "blocktag" : [ + "blocktag": [ { - token : "keyword", - regex : "\\. ", - next : "start" + token: "keyword", + regex: "\\. ", + next: "start" }, { - token : "keyword", - regex : "\\(", - next : "blocktagproperties" + token: "keyword", + regex: "\\(", + next: "blocktagproperties" } ], - "blocktagproperties" : [ + "blocktagproperties": [ { - token : "keyword", - regex : "\\)", - next : "blocktag" + token: "keyword", + regex: "\\)", + next: "blocktag" }, { - token : "string", - regex : "[a-zA-Z0-9\\-_]+" + token: "string", + regex: "[a-zA-Z0-9\\-_]+" }, { - token : "keyword", - regex : "#" + token: "keyword", + regex: "#" } ] }; }; - oop.inherits(TextileHighlightRules, TextHighlightRules); - exports.TextileHighlightRules = TextileHighlightRules; }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - +define("ace/mode/textile",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/textile_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var TextileHighlightRules = require("./textile_highlight_rules").TextileHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { +var Mode = function () { this.HighlightRules = TextileHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.type = "text"; - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { if (state == "intag") return tab; - return ""; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - this.$id = "ace/mode/textile"; + this.snippetFileId = "ace/snippets/textile"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/textile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-toml.js b/vendor/assets/javascripts/ace/mode-toml.js index bd678ba7..bc8c26aa 100644 --- a/vendor/assets/javascripts/ace/mode-toml.js +++ b/vendor/assets/javascripts/ace/mode-toml.js @@ -1,106 +1,89 @@ -define("ace/mode/toml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/toml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TomlHighlightRules = function() { +var TomlHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "constant.language.boolean": "true|false" }, "identifier"); - var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b"; - this.$rules = { - "start": [ - { - token: "comment.toml", - regex: /#.*$/ - }, - { - token : "string", - regex : '"(?=.)', - next : "qqstring" - }, - { - token: ["variable.keygroup.toml"], - regex: "(?:^\\s*)(\\[\\[([^\\]]+)\\]\\])" - }, - { - token: ["variable.keygroup.toml"], - regex: "(?:^\\s*)(\\[([^\\]]+)\\])" - }, - { - token : keywordMapper, - regex : identifierRe - }, - { - token : "support.date.toml", - regex: "\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)" - }, - { - token: "constant.numeric.toml", - regex: "-?\\d+(\\.?\\d+)?" - } - ], - "qqstring" : [ - { - token : "string", - regex : "\\\\$", - next : "qqstring" - }, - { - token : "constant.language.escape", - regex : '\\\\[0tnr"\\\\]' - }, - { - token : "string", - regex : '"|$', - next : "start" - }, - { - defaultToken: "string" - } - ] + "start": [ + { + token: "comment.toml", + regex: /#.*$/ + }, + { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, + { + token: ["variable.keygroup.toml"], + regex: "(?:^\\s*)(\\[\\[([^\\]]+)\\]\\])" + }, + { + token: ["variable.keygroup.toml"], + regex: "(?:^\\s*)(\\[([^\\]]+)\\])" + }, + { + token: keywordMapper, + regex: identifierRe + }, + { + token: "support.date.toml", + regex: "\\d{4}-\\d{2}-\\d{2}(T)\\d{2}:\\d{2}:\\d{2}(Z)" + }, + { + token: "constant.numeric.toml", + regex: "-?\\d+(\\.?\\d+)?" + } + ], + "qqstring": [ + { + token: "string", + regex: "\\\\$", + next: "qqstring" + }, + { + token: "constant.language.escape", + regex: '\\\\[0tnr"\\\\]' + }, + { + token: "string", + regex: '"|$', + next: "start" + }, + { + defaultToken: "string" + } + ] }; - }; - oop.inherits(TomlHighlightRules, TextHighlightRules); - exports.TomlHighlightRules = TomlHighlightRules; + }); -define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/ini",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function() { +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /^\s*\[([^\])]*)]\s*(?:$|[;#])/; - - this.getFoldWidgetRange = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { var re = this.foldingStartMarker; var line = session.getLine(row); - var m = line.match(re); - - if (!m) return; - + if (!m) + return; var startName = m[1] + "."; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); if (/^\s*$/.test(line)) @@ -108,39 +91,39 @@ oop.inherits(FoldMode, BaseFoldMode); m = line.match(re); if (m && m[1].lastIndexOf(startName, 0) !== 0) break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/toml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/toml_highlight_rules","ace/mode/folding/ini"], function(require, exports, module) { -"use strict"; - +define("ace/mode/toml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/toml_highlight_rules","ace/mode/folding/ini"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var TomlHighlightRules = require("./toml_highlight_rules").TomlHighlightRules; var FoldMode = require("./folding/ini").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = TomlHighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "#"; this.$id = "ace/mode/toml"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/toml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-tsx.js b/vendor/assets/javascripts/ace/mode-tsx.js index a14ad96e..5a3408a2 100644 --- a/vendor/assets/javascripts/ace/mode-tsx.js +++ b/vendor/assets/javascripts/ace/mode-tsx.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,137 +851,116 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"], function(require, exports, module) { +define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 21e323af-f665-4161-96e7-5087d262557e) */ "use strict"; - var oop = require("../lib/oop"); var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var TypeScriptHighlightRules = function(options) { - - var tsRules = [ +var TypeScriptHighlightRules = function (options) { + var tsRules = [ { - token: ["keyword.operator.ts", "text", "variable.parameter.function.ts", "text"], - regex: "\\b(module)(\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*\\{)" - }, - { - token: ["storage.type.variable.ts", "text", "keyword.other.ts", "text"], - regex: "(super)(\\s*\\()([a-zA-Z0-9,_?.$\\s]+\\s*)(\\))" - }, - { - token: ["entity.name.function.ts","paren.lparen", "paren.rparen"], - regex: "([a-zA-Z_?.$][\\w?.$]*)(\\()(\\))" - }, - { - token: ["variable.parameter.function.ts", "text", "variable.parameter.function.ts"], - regex: "([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*:\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)" - }, - { - token: ["keyword.operator.ts"], - regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\b)" - }, - { - token: ["storage.type.variable.ts"], - regex: "(?:\\b(this\\.|string\\b|bool\\b|number)\\b)" - }, - { - token: ["keyword.operator.ts", "storage.type.variable.ts", "keyword.operator.ts", "storage.type.variable.ts"], - regex: "(class)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)(extends)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)?" + token: ["storage.type", "text", "entity.name.function.ts"], + regex: "(function)(\\s+)([a-zA-Z0-9\$_\u00a1-\uffff][a-zA-Z0-9\d\$_\u00a1-\uffff]*)" }, { token: "keyword", - regex: "(?:super|export|class|extends|import)\\b" + regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)" + }, + { + token: ["keyword", "storage.type.variable.ts"], + regex: "(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)" + }, + { + token: "keyword", + regex: "\\b(?:super|export|import|keyof|infer)\\b" + }, + { + token: ["storage.type.variable.ts"], + regex: "(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))" } ]; - - var JSRules = new JavaScriptHighlightRules({jsx: (options && options.jsx) == true}).getRules(); - - JSRules.start = tsRules.concat(JSRules.start); + var JSRules = new JavaScriptHighlightRules({ jsx: (options && options.jsx) == true }).getRules(); + JSRules.no_regex = tsRules.concat(JSRules.no_regex); this.$rules = JSRules; }; - oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules); - exports.TypeScriptHighlightRules = TypeScriptHighlightRules; + }); -define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module) { +define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var jsMode = require("./javascript").Mode; var TypeScriptHighlightRules = require("./typescript_highlight_rules").TypeScriptHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { +var Mode = function () { this.HighlightRules = TypeScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, jsMode); - -(function() { - this.createWorker = function(session) { +(function () { + this.createWorker = function (session) { return null; }; this.$id = "ace/mode/typescript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/tsx",["require","exports","module","ace/lib/oop","ace/mode/typescript"], function(require, exports, module) { +define("ace/mode/tsx",["require","exports","module","ace/lib/oop","ace/mode/typescript"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var tsMode = require("./typescript").Mode; - -var Mode = function() { +var Mode = function () { tsMode.call(this); - this.$highlightRuleConfig = {jsx: true}; + this.$highlightRuleConfig = { jsx: true }; }; oop.inherits(Mode, tsMode); - -(function() { +(function () { this.$id = "ace/mode/tsx"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/tsx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-turtle.js b/vendor/assets/javascripts/ace/mode-turtle.js index 2e2e6f7e..92cc6ba7 100644 --- a/vendor/assets/javascripts/ace/mode-turtle.js +++ b/vendor/assets/javascripts/ace/mode-turtle.js @@ -1,215 +1,184 @@ -define("ace/mode/turtle_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/turtle_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from turtle.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TurtleHighlightRules = function() { - +var TurtleHighlightRules = function () { this.$rules = { start: [{ - include: "#comments" - }, { - include: "#strings" - }, { - include: "#base-prefix-declarations" - }, { - include: "#string-language-suffixes" - }, { - include: "#string-datatype-suffixes" - }, { - include: "#relative-urls" - }, { - include: "#xml-schema-types" - }, { - include: "#rdf-schema-types" - }, { - include: "#owl-types" - }, { - include: "#qnames" - }, { - include: "#punctuation-operators" - }], - "#base-prefix-declarations": [{ - token: "keyword.other.prefix.turtle", - regex: /@(?:base|prefix)/ - }], - "#comments": [{ - token: [ - "punctuation.definition.comment.turtle", - "comment.line.hash.turtle" - ], - regex: /(#)(.*$)/ - }], - "#owl-types": [{ - token: "support.type.datatype.owl.turtle", - regex: /owl:[a-zA-Z]+/ - }], - "#punctuation-operators": [{ - token: "keyword.operator.punctuation.turtle", - regex: /;|,|\.|\(|\)|\[|\]/ - }], - "#qnames": [{ - token: "entity.name.other.qname.turtle", - regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ - }], - "#rdf-schema-types": [{ - token: "support.type.datatype.rdf.schema.turtle", - regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ - }], - "#relative-urls": [{ - token: "string.quoted.other.relative.url.turtle", - regex: //, - next: "pop" + include: "#comments" }, { - defaultToken: "string.quoted.other.relative.url.turtle" - }] - }], + include: "#strings" + }, { + include: "#base-prefix-declarations" + }, { + include: "#string-language-suffixes" + }, { + include: "#string-datatype-suffixes" + }, { + include: "#relative-urls" + }, { + include: "#xml-schema-types" + }, { + include: "#rdf-schema-types" + }, { + include: "#owl-types" + }, { + include: "#qnames" + }, { + include: "#punctuation-operators" + }], + "#base-prefix-declarations": [{ + token: "keyword.other.prefix.turtle", + regex: /@(?:base|prefix)/ + }], + "#comments": [{ + token: [ + "punctuation.definition.comment.turtle", + "comment.line.hash.turtle" + ], + regex: /(#)(.*$)/ + }], + "#owl-types": [{ + token: "support.type.datatype.owl.turtle", + regex: /owl:[a-zA-Z]+/ + }], + "#punctuation-operators": [{ + token: "keyword.operator.punctuation.turtle", + regex: /;|,|\.|\(|\)|\[|\]/ + }], + "#qnames": [{ + token: "entity.name.other.qname.turtle", + regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ + }], + "#rdf-schema-types": [{ + token: "support.type.datatype.rdf.schema.turtle", + regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ + }], + "#relative-urls": [{ + token: "string.quoted.other.relative.url.turtle", + regex: //, + next: "pop" + }, { + defaultToken: "string.quoted.other.relative.url.turtle" + }] + }], "#string-datatype-suffixes": [{ - token: "keyword.operator.datatype.suffix.turtle", - regex: /\^\^/ - }], + token: "keyword.operator.datatype.suffix.turtle", + regex: /\^\^/ + }], "#string-language-suffixes": [{ - token: [ - "keyword.operator.language.suffix.turtle", - "constant.language.suffix.turtle" - ], - regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ - }], + token: [ + "keyword.operator.language.suffix.turtle", + "constant.language.suffix.turtle" + ], + regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ + }], "#strings": [{ - token: "string.quoted.triple.turtle", - regex: /"""/, - push: [{ token: "string.quoted.triple.turtle", regex: /"""/, - next: "pop" + push: [{ + token: "string.quoted.triple.turtle", + regex: /"""/, + next: "pop" + }, { + defaultToken: "string.quoted.triple.turtle" + }] }, { - defaultToken: "string.quoted.triple.turtle" - }] - }, { - token: "string.quoted.double.turtle", - regex: /"/, - push: [{ token: "string.quoted.double.turtle", regex: /"/, - next: "pop" - }, { - token: "invalid.string.newline", - regex: /$/ - }, { - token: "constant.character.escape.turtle", - regex: /\\./ - }, { - defaultToken: "string.quoted.double.turtle" - }] - }], + push: [{ + token: "string.quoted.double.turtle", + regex: /"/, + next: "pop" + }, { + token: "invalid.string.newline", + regex: /$/ + }, { + token: "constant.character.escape.turtle", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.turtle" + }] + }], "#xml-schema-types": [{ - token: "support.type.datatype.xml.schema.turtle", - regex: /xsd?:[a-z][a-zA-Z]+/ - }] + token: "support.type.datatype.xml.schema.turtle", + regex: /xsd?:[a-z][a-zA-Z]+/ + }] }; - this.normalizeRules(); }; - TurtleHighlightRules.metaData = { fileTypes: ["ttl", "nt"], name: "Turtle", scopeName: "source.turtle" }; - - oop.inherits(TurtleHighlightRules, TextHighlightRules); - exports.TurtleHighlightRules = TurtleHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -222,68 +191,74 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/turtle",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/turtle_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +define("ace/mode/turtle",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/turtle_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var TurtleHighlightRules = require("./turtle_highlight_rules").TurtleHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = TurtleHighlightRules; this.foldingRules = new FoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.$id = "ace/mode/turtle"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/turtle"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-twig.js b/vendor/assets/javascripts/ace/mode-twig.js index 91f22190..103ffb53 100644 --- a/vendor/assets/javascripts/ace/mode-twig.js +++ b/vendor/assets/javascripts/ace/mode-twig.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,77 +2225,59 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/twig_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/twig_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/html_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var TwigHighlightRules = function() { +var TwigHighlightRules = function () { HtmlHighlightRules.call(this); - var tags = "autoescape|block|do|embed|extends|filter|flush|for|from|if|import|include|macro|sandbox|set|spaceless|use|verbatim"; tags = tags + "|end" + tags.replace(/\|/g, "|end"); var filters = "abs|batch|capitalize|convert_encoding|date|date_modify|default|e|escape|first|format|join|json_encode|keys|last|length|lower|merge|nl2br|number_format|raw|replace|reverse|slice|sort|split|striptags|title|trim|upper|url_encode"; @@ -2497,168 +2285,158 @@ var TwigHighlightRules = function() { var tests = "constant|divisibleby|sameas|defined|empty|even|iterable|odd"; var constants = "null|none|true|false"; var operators = "b-and|b-xor|b-or|in|is|and|or|not"; - var keywordMapper = this.createKeywordMapper({ "keyword.control.twig": tags, "support.function.twig": [filters, functions, tests].join("|"), - "keyword.operator.twig": operators, + "keyword.operator.twig": operators, "constant.language.twig": constants }, "identifier"); for (var rule in this.$rules) { this.$rules[rule].unshift({ - token : "variable.other.readwrite.local.twig", - regex : "\\{\\{-?", - push : "twig-start" + token: "variable.other.readwrite.local.twig", + regex: "\\{\\{-?", + push: "twig-start" }, { - token : "meta.tag.twig", - regex : "\\{%-?", - push : "twig-start" + token: "meta.tag.twig", + regex: "\\{%-?", + push: "twig-start" }, { - token : "comment.block.twig", - regex : "\\{#-?", - push : "twig-comment" + token: "comment.block.twig", + regex: "\\{#-?", + push: "twig-comment" }); } this.$rules["twig-comment"] = [{ - token : "comment.block.twig", - regex : ".*-?#\\}", - next : "pop" - }]; - + token: "comment.block.twig", + regex: ".*-?#\\}", + next: "pop" + }]; this.$rules["twig-start"] = [{ - token : "variable.other.readwrite.local.twig", - regex : "-?\\}\\}", - next : "pop" - }, { - token : "meta.tag.twig", - regex : "-?%\\}", - next : "pop" - }, { - token : "string", - regex : "'", - next : "twig-qstring" - }, { - token : "string", - regex : '"', - next : "twig-qqstring" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator.assignment", - regex : "=|~" - }, { - token : "keyword.operator.comparison", - regex : "==|!=|<|>|>=|<=|===" - }, { - token : "keyword.operator.arithmetic", - regex : "\\+|-|/|%|//|\\*|\\*\\*" - }, { - token : "keyword.operator.other", - regex : "\\.\\.|\\|" - }, { - token : "punctuation.operator", - regex : /\?|:|,|;|\./ - }, { - token : "paren.lparen", - regex : /[\[\({]/ - }, { - token : "paren.rparen", - regex : /[\])}]/ - }, { - token : "text", - regex : "\\s+" - } ]; - + token: "variable.other.readwrite.local.twig", + regex: "-?\\}\\}", + next: "pop" + }, { + token: "meta.tag.twig", + regex: "-?%\\}", + next: "pop" + }, { + token: "string", + regex: "'", + next: "twig-qstring" + }, { + token: "string", + regex: '"', + next: "twig-qqstring" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator.assignment", + regex: "=|~" + }, { + token: "keyword.operator.comparison", + regex: "==|!=|<|>|>=|<=|===" + }, { + token: "keyword.operator.arithmetic", + regex: "\\+|-|/|%|//|\\*|\\*\\*" + }, { + token: "keyword.operator.other", + regex: "\\.\\.|\\|" + }, { + token: "punctuation.operator", + regex: /\?|:|,|;|\./ + }, { + token: "paren.lparen", + regex: /[\[\({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "text", + regex: "\\s+" + }]; this.$rules["twig-qqstring"] = [{ - token : "constant.language.escape", - regex : /\\[\\"$#ntr]|#{[^"}]*}/ + token: "constant.language.escape", + regex: /\\[\\"$#ntr]|#{[^"}]*}/ }, { - token : "string", - regex : '"', - next : "twig-start" + token: "string", + regex: '"', + next: "twig-start" }, { - defaultToken : "string" + defaultToken: "string" } ]; - this.$rules["twig-qstring"] = [{ - token : "constant.language.escape", - regex : /\\[\\'ntr]}/ + token: "constant.language.escape", + regex: /\\[\\'ntr]}/ }, { - token : "string", - regex : "'", - next : "twig-start" + token: "string", + regex: "'", + next: "twig-start" }, { - defaultToken : "string" + defaultToken: "string" } ]; - this.normalizeRules(); }; - oop.inherits(TwigHighlightRules, TextHighlightRules); - exports.TwigHighlightRules = TwigHighlightRules; + }); -define("ace/mode/twig",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/twig_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { -"use strict"; - +define("ace/mode/twig",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/twig_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var TwigHighlightRules = require("./twig_highlight_rules").TwigHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); this.HighlightRules = TwigHighlightRules; this.$outdent = new MatchingBraceOutdent(); }; oop.inherits(Mode, HtmlMode); - -(function() { - this.blockComment = {start: "{#", end: "#}"}; - - this.getNextLineIndent = function(state, line, tab) { +(function () { + this.blockComment = { start: "{#", end: "#}" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.$id = "ace/mode/twig"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/twig"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-typescript.js b/vendor/assets/javascripts/ace/mode-typescript.js index d29f2890..c6ef4be8 100644 --- a/vendor/assets/javascripts/ace/mode-typescript.js +++ b/vendor/assets/javascripts/ace/mode-typescript.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,118 +851,98 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"], function(require, exports, module) { +define("ace/mode/typescript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/javascript_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 21e323af-f665-4161-96e7-5087d262557e) */ "use strict"; - var oop = require("../lib/oop"); var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; - -var TypeScriptHighlightRules = function(options) { - - var tsRules = [ +var TypeScriptHighlightRules = function (options) { + var tsRules = [ { - token: ["keyword.operator.ts", "text", "variable.parameter.function.ts", "text"], - regex: "\\b(module)(\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*\\{)" - }, - { - token: ["storage.type.variable.ts", "text", "keyword.other.ts", "text"], - regex: "(super)(\\s*\\()([a-zA-Z0-9,_?.$\\s]+\\s*)(\\))" - }, - { - token: ["entity.name.function.ts","paren.lparen", "paren.rparen"], - regex: "([a-zA-Z_?.$][\\w?.$]*)(\\()(\\))" - }, - { - token: ["variable.parameter.function.ts", "text", "variable.parameter.function.ts"], - regex: "([a-zA-Z0-9_?.$][\\w?.$]*)(\\s*:\\s*)([a-zA-Z0-9_?.$][\\w?.$]*)" - }, - { - token: ["keyword.operator.ts"], - regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|class|extends|export|super)\\b)" - }, - { - token: ["storage.type.variable.ts"], - regex: "(?:\\b(this\\.|string\\b|bool\\b|number)\\b)" - }, - { - token: ["keyword.operator.ts", "storage.type.variable.ts", "keyword.operator.ts", "storage.type.variable.ts"], - regex: "(class)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)(extends)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*\\s+)?" + token: ["storage.type", "text", "entity.name.function.ts"], + regex: "(function)(\\s+)([a-zA-Z0-9\$_\u00a1-\uffff][a-zA-Z0-9\d\$_\u00a1-\uffff]*)" }, { token: "keyword", - regex: "(?:super|export|class|extends|import)\\b" + regex: "(?:\\b(constructor|declare|interface|as|AS|public|private|extends|export|super|readonly|module|namespace|abstract|implements)\\b)" + }, + { + token: ["keyword", "storage.type.variable.ts"], + regex: "(class|type)(\\s+[a-zA-Z0-9_?.$][\\w?.$]*)" + }, + { + token: "keyword", + regex: "\\b(?:super|export|import|keyof|infer)\\b" + }, + { + token: ["storage.type.variable.ts"], + regex: "(?:\\b(this\\.|string\\b|bool\\b|boolean\\b|number\\b|true\\b|false\\b|undefined\\b|any\\b|null\\b|(?:unique )?symbol\\b|object\\b|never\\b|enum\\b))" } ]; - - var JSRules = new JavaScriptHighlightRules({jsx: (options && options.jsx) == true}).getRules(); - - JSRules.start = tsRules.concat(JSRules.start); + var JSRules = new JavaScriptHighlightRules({ jsx: (options && options.jsx) == true }).getRules(); + JSRules.no_regex = tsRules.concat(JSRules.no_regex); this.$rules = JSRules; }; - oop.inherits(TypeScriptHighlightRules, JavaScriptHighlightRules); - exports.TypeScriptHighlightRules = TypeScriptHighlightRules; + }); -define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module) { +define("ace/mode/typescript",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/typescript_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var jsMode = require("./javascript").Mode; var TypeScriptHighlightRules = require("./typescript_highlight_rules").TypeScriptHighlightRules; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { +var Mode = function () { this.HighlightRules = TypeScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, jsMode); - -(function() { - this.createWorker = function(session) { +(function () { + this.createWorker = function (session) { return null; }; this.$id = "ace/mode/typescript"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/typescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-vala.js b/vendor/assets/javascripts/ace/mode-vala.js index 26af38cd..58d0fa9a 100644 --- a/vendor/assets/javascripts/ace/mode-vala.js +++ b/vendor/assets/javascripts/ace/mode-vala.js @@ -1,506 +1,405 @@ -define("ace/mode/vala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/vala_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* This file was autogenerated from https://raw.githubusercontent.com/technosophos/Vala-TMBundle/master/Syntaxes/Vala.tmLanguage (uuid: ) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var ValaHighlightRules = function() { - - this.$rules = { start: - [ { token: - [ 'meta.using.vala', - 'keyword.other.using.vala', - 'meta.using.vala', - 'storage.modifier.using.vala', - 'meta.using.vala', - 'punctuation.terminator.vala' ], - regex: '^(\\s*)(using)\\b(?:(\\s*)([^ ;$]+)(\\s*)((?:;)?))?' }, - { include: '#code' } ], - '#all-types': - [ { include: '#primitive-arrays' }, - { include: '#primitive-types' }, - { include: '#object-types' } ], - '#annotations': - [ { token: - [ 'storage.type.annotation.vala', - 'punctuation.definition.annotation-arguments.begin.vala' ], - regex: '(@[^ (]+)(\\()', - push: - [ { token: 'punctuation.definition.annotation-arguments.end.vala', - regex: '\\)', - next: 'pop' }, - { token: - [ 'constant.other.key.vala', - 'text', - 'keyword.operator.assignment.vala' ], - regex: '(\\w*)(\\s*)(=)' }, - { include: '#code' }, - { token: 'punctuation.seperator.property.vala', regex: ',' }, - { defaultToken: 'meta.declaration.annotation.vala' } ] }, - { token: 'storage.type.annotation.vala', regex: '@\\w*' } ], - '#anonymous-classes-and-new': - [ { token: 'keyword.control.new.vala', - regex: '\\bnew\\b', - push_disabled: - [ { token: 'text', - regex: '(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)', - next: 'pop' }, - { token: [ 'storage.type.vala', 'text' ], - regex: '(\\w+)(\\s*)(?=\\[)', - push: - [ { token: 'text', regex: '}|(?=;|\\))', next: 'pop' }, - { token: 'text', - regex: '\\[', - push: - [ { token: 'text', regex: '\\]', next: 'pop' }, - { include: '#code' } ] }, - { token: 'text', - regex: '{', - push: - [ { token: 'text', regex: '(?=})', next: 'pop' }, - { include: '#code' } ] } ] }, - { token: 'text', - regex: '(?=\\w.*\\()', - push: - [ { token: 'text', - regex: '(?<=\\))', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '(?<=\\))', - next: 'pop' }, - { include: '#object-types' }, - { token: 'text', - regex: '\\(', - push: - [ { token: 'text', regex: '\\)', next: 'pop' }, - { include: '#code' } ] } ] }, - { token: 'meta.inner-class.vala', +var ValaHighlightRules = function () { + this.$rules = { start: [{ token: ['meta.using.vala', + 'keyword.other.using.vala', + 'meta.using.vala', + 'storage.modifier.using.vala', + 'meta.using.vala', + 'punctuation.terminator.vala'], + regex: '^(\\s*)(using)\\b(?:(\\s*)([^ ;$]+)(\\s*)((?:;)?))?' }, + { include: '#code' }], + '#all-types': [{ include: '#primitive-arrays' }, + { include: '#primitive-types' }, + { include: '#object-types' }], + '#annotations': [{ token: ['storage.type.annotation.vala', + 'punctuation.definition.annotation-arguments.begin.vala'], + regex: '(@[^ (]+)(\\()', + push: [{ token: 'punctuation.definition.annotation-arguments.end.vala', + regex: '\\)', + next: 'pop' }, + { token: ['constant.other.key.vala', + 'text', + 'keyword.operator.assignment.vala'], + regex: '(\\w*)(\\s*)(=)' }, + { include: '#code' }, + { token: 'punctuation.seperator.property.vala', regex: ',' }, + { defaultToken: 'meta.declaration.annotation.vala' }] }, + { token: 'storage.type.annotation.vala', regex: '@\\w*' }], + '#anonymous-classes-and-new': [{ token: 'keyword.control.new.vala', + regex: '\\bnew\\b', + push_disabled: [{ token: 'text', + regex: '(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=;)', + next: 'pop' }, + { token: ['storage.type.vala', 'text'], + regex: '(\\w+)(\\s*)(?=\\[)', + push: [{ token: 'text', regex: '}|(?=;|\\))', next: 'pop' }, + { token: 'text', + regex: '\\[', + push: [{ token: 'text', regex: '\\]', next: 'pop' }, + { include: '#code' }] }, + { token: 'text', + regex: '{', + push: [{ token: 'text', regex: '(?=})', next: 'pop' }, + { include: '#code' }] }] }, + { token: 'text', + regex: '(?=\\w.*\\()', + push: [{ token: 'text', + regex: '(?<=\\))', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '(?<=\\))', + next: 'pop' }, + { include: '#object-types' }, + { token: 'text', + regex: '\\(', + push: [{ token: 'text', regex: '\\)', next: 'pop' }, + { include: '#code' }] }] }, + { token: 'meta.inner-class.vala', + regex: '{', + push: [{ token: 'meta.inner-class.vala', regex: '}', next: 'pop' }, + { include: '#class-body' }, + { defaultToken: 'meta.inner-class.vala' }] }] }], + '#assertions': [{ token: ['keyword.control.assert.vala', + 'meta.declaration.assertion.vala'], + regex: '\\b(assert|requires|ensures)(\\s)', + push: [{ token: 'meta.declaration.assertion.vala', + regex: '$', + next: 'pop' }, + { token: 'keyword.operator.assert.expression-seperator.vala', + regex: ':' }, + { include: '#code' }, + { defaultToken: 'meta.declaration.assertion.vala' }] }], + '#class': [{ token: 'meta.class.vala', + regex: '(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)', + push: [{ token: 'paren.vala', + regex: '}', + next: 'pop' }, + { include: '#storage-modifiers' }, + { include: '#comments' }, + { token: ['storage.modifier.vala', + 'meta.class.identifier.vala', + 'entity.name.type.class.vala'], + regex: '(class|(?:@)?interface|enum|struct|namespace)(\\s+)([\\w\\.]+)' }, + { token: 'storage.modifier.extends.vala', + regex: ':', + push: [{ token: 'meta.definition.class.inherited.classes.vala', + regex: '(?={|,)', + next: 'pop' }, + { include: '#object-types-inherited' }, + { include: '#comments' }, + { defaultToken: 'meta.definition.class.inherited.classes.vala' }] }, + { token: ['storage.modifier.implements.vala', + 'meta.definition.class.implemented.interfaces.vala'], + regex: '(,)(\\s)', + push: [{ token: 'meta.definition.class.implemented.interfaces.vala', + regex: '(?=\\{)', + next: 'pop' }, + { include: '#object-types-inherited' }, + { include: '#comments' }, + { defaultToken: 'meta.definition.class.implemented.interfaces.vala' }] }, + { token: 'paren.vala', + regex: '{', + push: [{ token: 'paren.vala', regex: '(?=})', next: 'pop' }, + { include: '#class-body' }, + { defaultToken: 'meta.class.body.vala' }] }, + { defaultToken: 'meta.class.vala' }], + comment: 'attempting to put namespace in here.' }], + '#class-body': [{ include: '#comments' }, + { include: '#class' }, + { include: '#enums' }, + { include: '#methods' }, + { include: '#annotations' }, + { include: '#storage-modifiers' }, + { include: '#code' }], + '#code': [{ include: '#comments' }, + { include: '#class' }, + { token: 'text', regex: '{', - push: - [ { token: 'meta.inner-class.vala', regex: '}', next: 'pop' }, - { include: '#class-body' }, - { defaultToken: 'meta.inner-class.vala' } ] } ] } ], - '#assertions': - [ { token: - [ 'keyword.control.assert.vala', - 'meta.declaration.assertion.vala' ], - regex: '\\b(assert|requires|ensures)(\\s)', - push: - [ { token: 'meta.declaration.assertion.vala', - regex: '$', - next: 'pop' }, - { token: 'keyword.operator.assert.expression-seperator.vala', - regex: ':' }, - { include: '#code' }, - { defaultToken: 'meta.declaration.assertion.vala' } ] } ], - '#class': - [ { token: 'meta.class.vala', - regex: '(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum|struct|namespace)\\s+\\w+)', - push: - [ { token: 'paren.vala', - regex: '}', - next: 'pop' }, - { include: '#storage-modifiers' }, - { include: '#comments' }, - { token: - [ 'storage.modifier.vala', - 'meta.class.identifier.vala', - 'entity.name.type.class.vala' ], - regex: '(class|(?:@)?interface|enum|struct|namespace)(\\s+)([\\w\\.]+)' }, - { token: 'storage.modifier.extends.vala', - regex: ':', - push: - [ { token: 'meta.definition.class.inherited.classes.vala', - regex: '(?={|,)', - next: 'pop' }, - { include: '#object-types-inherited' }, - { include: '#comments' }, - { defaultToken: 'meta.definition.class.inherited.classes.vala' } ] }, - { token: - [ 'storage.modifier.implements.vala', - 'meta.definition.class.implemented.interfaces.vala' ], - regex: '(,)(\\s)', - push: - [ { token: 'meta.definition.class.implemented.interfaces.vala', - regex: '(?=\\{)', - next: 'pop' }, - { include: '#object-types-inherited' }, - { include: '#comments' }, - { defaultToken: 'meta.definition.class.implemented.interfaces.vala' } ] }, - { token: 'paren.vala', - regex: '{', - push: - [ { token: 'paren.vala', regex: '(?=})', next: 'pop' }, - { include: '#class-body' }, - { defaultToken: 'meta.class.body.vala' } ] }, - { defaultToken: 'meta.class.vala' } ], - comment: 'attempting to put namespace in here.' } ], - '#class-body': - [ { include: '#comments' }, - { include: '#class' }, - { include: '#enums' }, - { include: '#methods' }, - { include: '#annotations' }, - { include: '#storage-modifiers' }, - { include: '#code' } ], - '#code': - [ { include: '#comments' }, - { include: '#class' }, - { token: 'text', - regex: '{', - push: - [ { token: 'text', regex: '}', next: 'pop' }, - { include: '#code' } ] }, - { include: '#assertions' }, - { include: '#parens' }, - { include: '#constants-and-special-vars' }, - { include: '#anonymous-classes-and-new' }, - { include: '#keywords' }, - { include: '#storage-modifiers' }, - { include: '#strings' }, - { include: '#all-types' } ], - '#comments': - [ { token: 'punctuation.definition.comment.vala', - regex: '/\\*\\*/' }, - { include: 'text.html.javadoc' }, - { include: '#comments-inline' } ], - '#comments-inline': - [ { token: 'punctuation.definition.comment.vala', - regex: '/\\*', - push: - [ { token: 'punctuation.definition.comment.vala', - regex: '\\*/', - next: 'pop' }, - { defaultToken: 'comment.block.vala' } ] }, - { token: - [ 'text', - 'punctuation.definition.comment.vala', - 'comment.line.double-slash.vala' ], - regex: '(\\s*)(//)(.*$)' } ], - '#constants-and-special-vars': - [ { token: 'constant.language.vala', - regex: '\\b(?:true|false|null)\\b' }, - { token: 'variable.language.vala', - regex: '\\b(?:this|base)\\b' }, - { token: 'constant.numeric.vala', - regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b' }, - { token: [ 'keyword.operator.dereference.vala', 'constant.other.vala' ], - regex: '((?:\\.)?)\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b' } ], - '#enums': - [ { token: 'text', - regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', - push: - [ { token: 'text', regex: '(?=;|})', next: 'pop' }, - { token: 'constant.other.enum.vala', - regex: '\\w+', - push: - [ { token: 'meta.enum.vala', regex: '(?=,|;|})', next: 'pop' }, - { include: '#parens' }, - { token: 'text', - regex: '{', - push: - [ { token: 'text', regex: '}', next: 'pop' }, - { include: '#class-body' } ] }, - { defaultToken: 'meta.enum.vala' } ] } ] } ], - '#keywords': - [ { token: 'keyword.control.catch-exception.vala', - regex: '\\b(?:try|catch|finally|throw)\\b' }, - { token: 'keyword.control.vala', regex: '\\?|:|\\?\\?' }, - { token: 'keyword.control.vala', - regex: '\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b' }, - { token: 'keyword.operator.vala', - regex: '\\b(?:typeof|is|as)\\b' }, - { token: 'keyword.operator.comparison.vala', - regex: '==|!=|<=|>=|<>|<|>' }, - { token: 'keyword.operator.assignment.vala', regex: '=' }, - { token: 'keyword.operator.increment-decrement.vala', - regex: '\\-\\-|\\+\\+' }, - { token: 'keyword.operator.arithmetic.vala', - regex: '\\-|\\+|\\*|\\/|%' }, - { token: 'keyword.operator.logical.vala', regex: '!|&&|\\|\\|' }, - { token: 'keyword.operator.dereference.vala', - regex: '\\.(?=\\S)', - originalRegex: '(?<=\\S)\\.(?=\\S)' }, - { token: 'punctuation.terminator.vala', regex: ';' }, - { token: 'keyword.operator.ownership', regex: 'owned|unowned' } ], - '#methods': - [ { token: 'meta.method.vala', - regex: '(?!new)(?=\\w.*\\s+)(?=[^=]+\\()', - push: - [ { token: 'paren.vala', regex: '}|(?=;)', next: 'pop' }, - { include: '#storage-modifiers' }, - { token: [ 'entity.name.function.vala', 'meta.method.identifier.vala' ], - regex: '([\\~\\w\\.]+)(\\s*\\()', - push: - [ { token: 'meta.method.identifier.vala', - regex: '\\)', - next: 'pop' }, - { include: '#parameters' }, - { defaultToken: 'meta.method.identifier.vala' } ] }, - { token: 'meta.method.return-type.vala', - regex: '(?=\\w.*\\s+\\w+\\s*\\()', - push: - [ { token: 'meta.method.return-type.vala', - regex: '(?=\\w+\\s*\\()', - next: 'pop' }, - { include: '#all-types' }, - { defaultToken: 'meta.method.return-type.vala' } ] }, - { include: '#throws' }, - { token: 'paren.vala', - regex: '{', - push: - [ { token: 'paren.vala', regex: '(?=})', next: 'pop' }, - { include: '#code' }, - { defaultToken: 'meta.method.body.vala' } ] }, - { defaultToken: 'meta.method.vala' } ] } ], - '#namespace': - [ { token: 'text', - regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', - push: - [ { token: 'text', regex: '(?=;|})', next: 'pop' }, - { token: 'constant.other.namespace.vala', - regex: '\\w+', - push: - [ { token: 'meta.namespace.vala', regex: '(?=,|;|})', next: 'pop' }, - { include: '#parens' }, - { token: 'text', - regex: '{', - push: - [ { token: 'text', regex: '}', next: 'pop' }, - { include: '#code' } ] }, - { defaultToken: 'meta.namespace.vala' } ] } ], - comment: 'This is not quite right. See the class grammar right now' } ], - '#object-types': - [ { token: 'storage.type.generic.vala', - regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', - push: - [ { token: 'storage.type.generic.vala', - regex: '>|[^\\w\\s,\\?<\\[()\\]]', - TODO: 'FIXME: regexp doesn\'t have js equivalent', - originalRegex: '>|[^\\w\\s,\\?<\\[(?:[,]+)\\]]', - next: 'pop' }, - { include: '#object-types' }, - { token: 'storage.type.generic.vala', - regex: '<', - push: - [ { token: 'storage.type.generic.vala', - regex: '>|[^\\w\\s,\\[\\]<]', - next: 'pop' }, - { defaultToken: 'storage.type.generic.vala' } ], - comment: 'This is just to support <>\'s with no actual type prefix' }, - { defaultToken: 'storage.type.generic.vala' } ] }, - { token: 'storage.type.object.array.vala', - regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)', - push: - [ { token: 'storage.type.object.array.vala', - regex: '(?=[^\\]\\s])', - next: 'pop' }, - { token: 'text', - regex: '\\[', - push: - [ { token: 'text', regex: '\\]', next: 'pop' }, - { include: '#code' } ] }, - { defaultToken: 'storage.type.object.array.vala' } ] }, - { token: - [ 'storage.type.vala', - 'keyword.operator.dereference.vala', - 'storage.type.vala' ], - regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)' } ], - '#object-types-inherited': - [ { token: 'entity.other.inherited-class.vala', - regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', - push: - [ { token: 'entity.other.inherited-class.vala', - regex: '>|[^\\w\\s,<]', - next: 'pop' }, - { include: '#object-types' }, - { token: 'storage.type.generic.vala', - regex: '<', - push: - [ { token: 'storage.type.generic.vala', - regex: '>|[^\\w\\s,<]', - next: 'pop' }, - { defaultToken: 'storage.type.generic.vala' } ], - comment: 'This is just to support <>\'s with no actual type prefix' }, - { defaultToken: 'entity.other.inherited-class.vala' } ] }, - { token: - [ 'entity.other.inherited-class.vala', - 'keyword.operator.dereference.vala', - 'entity.other.inherited-class.vala' ], - regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)' } ], - '#parameters': - [ { token: 'storage.modifier.vala', regex: 'final' }, - { include: '#primitive-arrays' }, - { include: '#primitive-types' }, - { include: '#object-types' }, - { token: 'variable.parameter.vala', regex: '\\w+' } ], - '#parens': - [ { token: 'text', - regex: '\\(', - push: - [ { token: 'text', regex: '\\)', next: 'pop' }, - { include: '#code' } ] } ], - '#primitive-arrays': - [ { token: 'storage.type.primitive.array.vala', - regex: '\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b' } ], - '#primitive-types': - [ { token: 'storage.type.primitive.vala', - regex: '\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b', - comment: 'var is not really a primitive, but acts like one in most cases' } ], - '#storage-modifiers': - [ { token: 'storage.modifier.vala', - regex: '\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b', - comment: 'Not sure about unsafe and readonly' } ], - '#strings': - [ { token: 'punctuation.definition.string.begin.vala', - regex: '@"', - push: - [ { token: 'punctuation.definition.string.end.vala', + push: [{ token: 'text', regex: '}', next: 'pop' }, + { include: '#code' }] }, + { include: '#assertions' }, + { include: '#parens' }, + { include: '#constants-and-special-vars' }, + { include: '#anonymous-classes-and-new' }, + { include: '#keywords' }, + { include: '#storage-modifiers' }, + { include: '#strings' }, + { include: '#all-types' }], + '#comments': [{ token: 'punctuation.definition.comment.vala', + regex: '/\\*\\*/' }, + { include: 'text.html.javadoc' }, + { include: '#comments-inline' }], + '#comments-inline': [{ token: 'punctuation.definition.comment.vala', + regex: '/\\*', + push: [{ token: 'punctuation.definition.comment.vala', + regex: '\\*/', + next: 'pop' }, + { defaultToken: 'comment.block.vala' }] }, + { token: ['text', + 'punctuation.definition.comment.vala', + 'comment.line.double-slash.vala'], + regex: '(\\s*)(//)(.*$)' }], + '#constants-and-special-vars': [{ token: 'constant.language.vala', + regex: '\\b(?:true|false|null)\\b' }, + { token: 'variable.language.vala', + regex: '\\b(?:this|base)\\b' }, + { token: 'constant.numeric.vala', + regex: '\\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\\.?[0-9]*|\\.[0-9]+)(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:[LlFfUuDd]|UL|ul)?\\b' }, + { token: ['keyword.operator.dereference.vala', 'constant.other.vala'], + regex: '((?:\\.)?)\\b([A-Z][A-Z0-9_]+)(?!<|\\.class|\\s*\\w+\\s*=)\\b' }], + '#enums': [{ token: 'text', + regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', + push: [{ token: 'text', regex: '(?=;|})', next: 'pop' }, + { token: 'constant.other.enum.vala', + regex: '\\w+', + push: [{ token: 'meta.enum.vala', regex: '(?=,|;|})', next: 'pop' }, + { include: '#parens' }, + { token: 'text', + regex: '{', + push: [{ token: 'text', regex: '}', next: 'pop' }, + { include: '#class-body' }] }, + { defaultToken: 'meta.enum.vala' }] }] }], + '#keywords': [{ token: 'keyword.control.catch-exception.vala', + regex: '\\b(?:try|catch|finally|throw)\\b' }, + { token: 'keyword.control.vala', regex: '\\?|:|\\?\\?' }, + { token: 'keyword.control.vala', + regex: '\\b(?:return|break|case|continue|default|do|while|for|foreach|switch|if|else|in|yield|get|set|value)\\b' }, + { token: 'keyword.operator.vala', + regex: '\\b(?:typeof|is|as)\\b' }, + { token: 'keyword.operator.comparison.vala', + regex: '==|!=|<=|>=|<>|<|>' }, + { token: 'keyword.operator.assignment.vala', regex: '=' }, + { token: 'keyword.operator.increment-decrement.vala', + regex: '\\-\\-|\\+\\+' }, + { token: 'keyword.operator.arithmetic.vala', + regex: '\\-|\\+|\\*|\\/|%' }, + { token: 'keyword.operator.logical.vala', regex: '!|&&|\\|\\|' }, + { token: 'keyword.operator.dereference.vala', + regex: '\\.(?=\\S)', + originalRegex: '(?<=\\S)\\.(?=\\S)' }, + { token: 'punctuation.terminator.vala', regex: ';' }, + { token: 'keyword.operator.ownership', regex: 'owned|unowned' }], + '#methods': [{ token: 'meta.method.vala', + regex: '(?!new)(?=\\w.*\\s+)(?=[^=]+\\()', + push: [{ token: 'paren.vala', regex: '}|(?=;)', next: 'pop' }, + { include: '#storage-modifiers' }, + { token: ['entity.name.function.vala', 'meta.method.identifier.vala'], + regex: '([\\~\\w\\.]+)(\\s*\\()', + push: [{ token: 'meta.method.identifier.vala', + regex: '\\)', + next: 'pop' }, + { include: '#parameters' }, + { defaultToken: 'meta.method.identifier.vala' }] }, + { token: 'meta.method.return-type.vala', + regex: '(?=\\w.*\\s+\\w+\\s*\\()', + push: [{ token: 'meta.method.return-type.vala', + regex: '(?=\\w+\\s*\\()', + next: 'pop' }, + { include: '#all-types' }, + { defaultToken: 'meta.method.return-type.vala' }] }, + { include: '#throws' }, + { token: 'paren.vala', + regex: '{', + push: [{ token: 'paren.vala', regex: '(?=})', next: 'pop' }, + { include: '#code' }, + { defaultToken: 'meta.method.body.vala' }] }, + { defaultToken: 'meta.method.vala' }] }], + '#namespace': [{ token: 'text', + regex: '^(?=\\s*[A-Z0-9_]+\\s*(?:{|\\(|,))', + push: [{ token: 'text', regex: '(?=;|})', next: 'pop' }, + { token: 'constant.other.namespace.vala', + regex: '\\w+', + push: [{ token: 'meta.namespace.vala', regex: '(?=,|;|})', next: 'pop' }, + { include: '#parens' }, + { token: 'text', + regex: '{', + push: [{ token: 'text', regex: '}', next: 'pop' }, + { include: '#code' }] }, + { defaultToken: 'meta.namespace.vala' }] }], + comment: 'This is not quite right. See the class grammar right now' }], + '#object-types': [{ token: 'storage.type.generic.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', + push: [{ token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,\\?<\\[()\\]]', + TODO: 'FIXME: regexp doesn\'t have js equivalent', + originalRegex: '>|[^\\w\\s,\\?<\\[(?:[,]+)\\]]', + next: 'pop' }, + { include: '#object-types' }, + { token: 'storage.type.generic.vala', + regex: '<', + push: [{ token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,\\[\\]<]', + next: 'pop' }, + { defaultToken: 'storage.type.generic.vala' }], + comment: 'This is just to support <>\'s with no actual type prefix' }, + { defaultToken: 'storage.type.generic.vala' }] }, + { token: 'storage.type.object.array.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*(?=\\[)', + push: [{ token: 'storage.type.object.array.vala', + regex: '(?=[^\\]\\s])', + next: 'pop' }, + { token: 'text', + regex: '\\[', + push: [{ token: 'text', regex: '\\]', next: 'pop' }, + { include: '#code' }] }, + { defaultToken: 'storage.type.object.array.vala' }] }, + { token: ['storage.type.vala', + 'keyword.operator.dereference.vala', + 'storage.type.vala'], + regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*\\b)' }], + '#object-types-inherited': [{ token: 'entity.other.inherited-class.vala', + regex: '\\b(?:[a-z]\\w*\\.)*[A-Z]+\\w*<', + push: [{ token: 'entity.other.inherited-class.vala', + regex: '>|[^\\w\\s,<]', + next: 'pop' }, + { include: '#object-types' }, + { token: 'storage.type.generic.vala', + regex: '<', + push: [{ token: 'storage.type.generic.vala', + regex: '>|[^\\w\\s,<]', + next: 'pop' }, + { defaultToken: 'storage.type.generic.vala' }], + comment: 'This is just to support <>\'s with no actual type prefix' }, + { defaultToken: 'entity.other.inherited-class.vala' }] }, + { token: ['entity.other.inherited-class.vala', + 'keyword.operator.dereference.vala', + 'entity.other.inherited-class.vala'], + regex: '\\b(?:([a-z]\\w*)(\\.))*([A-Z]+\\w*)' }], + '#parameters': [{ token: 'storage.modifier.vala', regex: 'final' }, + { include: '#primitive-arrays' }, + { include: '#primitive-types' }, + { include: '#object-types' }, + { token: 'variable.parameter.vala', regex: '\\w+' }], + '#parens': [{ token: 'text', + regex: '\\(', + push: [{ token: 'text', regex: '\\)', next: 'pop' }, + { include: '#code' }] }], + '#primitive-arrays': [{ token: 'storage.type.primitive.array.vala', + regex: '\\b(?:bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|int8|int16|int32|int64|uint8|uint16|uint32|uint64)(?:\\[\\])*\\b' }], + '#primitive-types': [{ token: 'storage.type.primitive.vala', + regex: '\\b(?:var|bool|byte|sbyte|char|decimal|double|float|int|uint|long|ulong|object|short|ushort|string|void|signal|int8|int16|int32|int64|uint8|uint16|uint32|uint64)\\b', + comment: 'var is not really a primitive, but acts like one in most cases' }], + '#storage-modifiers': [{ token: 'storage.modifier.vala', + regex: '\\b(?:public|private|protected|internal|static|final|sealed|virtual|override|abstract|readonly|volatile|dynamic|async|unsafe|out|ref|weak|owned|unowned|const)\\b', + comment: 'Not sure about unsafe and readonly' }], + '#strings': [{ token: 'punctuation.definition.string.begin.vala', + regex: '@"', + push: [{ token: 'punctuation.definition.string.end.vala', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.vala', + regex: '\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))' }, + { defaultToken: 'string.quoted.interpolated.vala' }] }, + { token: 'punctuation.definition.string.begin.vala', regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.vala', - regex: '\\\\.|%[\\w\\.\\-]+|\\$(?:\\w+|\\([\\w\\s\\+\\-\\*\\/]+\\))' }, - { defaultToken: 'string.quoted.interpolated.vala' } ] }, - { token: 'punctuation.definition.string.begin.vala', - regex: '"', - push: - [ { token: 'punctuation.definition.string.end.vala', - regex: '"', - next: 'pop' }, - { token: 'constant.character.escape.vala', regex: '\\\\.' }, - { token: 'constant.character.escape.vala', - regex: '%[\\w\\.\\-]+' }, - { defaultToken: 'string.quoted.double.vala' } ] }, - { token: 'punctuation.definition.string.begin.vala', - regex: '\'', - push: - [ { token: 'punctuation.definition.string.end.vala', + push: [{ token: 'punctuation.definition.string.end.vala', + regex: '"', + next: 'pop' }, + { token: 'constant.character.escape.vala', regex: '\\\\.' }, + { token: 'constant.character.escape.vala', + regex: '%[\\w\\.\\-]+' }, + { defaultToken: 'string.quoted.double.vala' }] }, + { token: 'punctuation.definition.string.begin.vala', regex: '\'', - next: 'pop' }, - { token: 'constant.character.escape.vala', regex: '\\\\.' }, - { defaultToken: 'string.quoted.single.vala' } ] }, - { token: 'punctuation.definition.string.begin.vala', - regex: '"""', - push: - [ { token: 'punctuation.definition.string.end.vala', + push: [{ token: 'punctuation.definition.string.end.vala', + regex: '\'', + next: 'pop' }, + { token: 'constant.character.escape.vala', regex: '\\\\.' }, + { defaultToken: 'string.quoted.single.vala' }] }, + { token: 'punctuation.definition.string.begin.vala', regex: '"""', - next: 'pop' }, - { token: 'constant.character.escape.vala', - regex: '%[\\w\\.\\-]+' }, - { defaultToken: 'string.quoted.triple.vala' } ] } ], - '#throws': - [ { token: 'storage.modifier.vala', - regex: 'throws', - push: - [ { token: 'meta.throwables.vala', regex: '(?={|;)', next: 'pop' }, - { include: '#object-types' }, - { defaultToken: 'meta.throwables.vala' } ] } ], - '#values': - [ { include: '#strings' }, - { include: '#object-types' }, - { include: '#constants-and-special-vars' } ] }; - + push: [{ token: 'punctuation.definition.string.end.vala', + regex: '"""', + next: 'pop' }, + { token: 'constant.character.escape.vala', + regex: '%[\\w\\.\\-]+' }, + { defaultToken: 'string.quoted.triple.vala' }] }], + '#throws': [{ token: 'storage.modifier.vala', + regex: 'throws', + push: [{ token: 'meta.throwables.vala', regex: '(?={|;)', next: 'pop' }, + { include: '#object-types' }, + { defaultToken: 'meta.throwables.vala' }] }], + '#values': [{ include: '#strings' }, + { include: '#object-types' }, + { include: '#constants-and-special-vars' }] }; this.normalizeRules(); }; - -ValaHighlightRules.metaData = { +ValaHighlightRules.metaData = { comment: 'Based heavily on the Java bundle\'s language syntax. TODO:\n* Closures\n* Delegates\n* Properties: Better support for properties.\n* Annotations\n* Error domains\n* Named arguments\n* Array slicing, negative indexes, multidimensional\n* construct blocks\n* lock blocks?\n* regex literals\n* DocBlock syntax highlighting. (Currently importing javadoc)\n* Folding rule for comments.\n', - fileTypes: [ 'vala' ], - foldingStartMarker: '(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)', - foldingStopMarker: '^\\s*(\\}|// \\}\\}\\}$)', - name: 'Vala', - scopeName: 'source.vala' }; - - + fileTypes: ['vala'], + foldingStartMarker: '(\\{\\s*(//.*)?$|^\\s*// \\{\\{\\{)', + foldingStopMarker: '^\\s*(\\}|// \\}\\}\\}$)', + name: 'Vala', + scopeName: 'source.vala' +}; oop.inherits(ValaHighlightRules, TextHighlightRules); - exports.ValaHighlightRules = ValaHighlightRules; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -513,133 +412,114 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/vala",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/vala_highlight_rules","ace/mode/folding/cstyle","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module) { +define("ace/mode/vala",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vala_highlight_rules","ace/mode/folding/cstyle","ace/mode/matching_brace_outdent"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; var ValaHighlightRules = require("./vala_highlight_rules").ValaHighlightRules; -var FoldMode = require("./folding/cstyle").FoldMode; -var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - -var Mode = function() { +var Mode = function () { this.HighlightRules = ValaHighlightRules; - this.$outdent = new MatchingBraceOutdent(); - this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -651,19 +531,24 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; this.$id = "ace/mode/vala"; + this.snippetFileId = "ace/snippets/vala"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/vala"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-vbscript.js b/vendor/assets/javascripts/ace/mode-vbscript.js index 6dae600f..9f0368af 100644 --- a/vendor/assets/javascripts/ace/mode-vbscript.js +++ b/vendor/assets/javascripts/ace/mode-vbscript.js @@ -1,18 +1,18 @@ -define("ace/mode/vbscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +define("ace/mode/vbscript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode_highlight_rules.tmpl.js (UUID: 7F9C9343-D48E-4E7D-BFE8-F680714DCD3E) */ "use strict"; - var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VBScriptHighlightRules = function() { - +var VBScriptHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ - "keyword.control.asp": "If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return" - + "|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf", - "storage.type.asp": "Dim|Call|Class|Const|Dim|Redim|Set|Let|Get|New|Randomize|Option|Explicit", + "keyword.control.asp": "If|Then|Else|ElseIf|End|While|Wend|For|To|Each|Case|Select|Return" + + "|Continue|Do|Until|Loop|Next|With|Exit|Function|Property|Type|Enum|Sub|IIf|Class", + "storage.type.asp": "Dim|Call|Const|Redim|Set|Let|Get|New|Randomize|Option|Explicit|Preserve|Erase|Execute|ExecuteGlobal", "storage.modifier.asp": "Private|Public|Default", - "keyword.operator.asp": "Mod|And|Not|Or|Xor|as", + "keyword.operator.asp": "Mod|And|Not|Or|Xor|As|Eqv|Imp|Is", "constant.language.asp": "Empty|False|Nothing|Null|True", + "variable.language.vb.asp": "Me", + "support.class.vb.asp": "RegExp", "support.class.asp": "Application|ObjectContext|Request|Response|Server|Session", "support.class.collection.asp": "Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables", "support.constant.asp": "TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute" @@ -30,170 +30,573 @@ var VBScriptHighlightRules = function() { + "|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace" + "|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion" + "|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse" - + "|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year", - "support.type.vb.asp": "vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|" - + "int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday" - + "|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek" - + "|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger" + + "|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year" + + "|AscB|AscW|ChrB|ChrW|InStrB|LeftB|LenB|MidB|RightB|Abs|GetUILanguage", + "support.type.vb.asp": "vbTrue|vbFalse|vbCr|vbCrLf|vbFormFeed|vbLf|vbNewLine|vbNullChar|vbNullString" + + "|vbTab|vbVerticalTab|vbBinaryCompare|vbTextCompare|vbSunday|vbMonday|vbTuesday|vbWednesday" + + "|vbThursday|vbFriday|vbSaturday|vbUseSystemDayOfWeek|vbFirstJan1|vbFirstFourDays|vbFirstFullWeek" + + "|vbGeneralDate|vbLongDate|vbShortDate|vbLongTime|vbShortTime|vbObjectError|vbEmpty|vbNull|vbInteger" + "|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant" - + "|vbDataObject|vbDecimal|vbByte|vbArray" + + "|vbDataObject|vbDecimal|vbByte|vbArray|vbOKOnly|vbOKCancel|vbAbortRetryIgnore|vbYesNoCancel|vbYesNo" + + "|vbRetryCancel|vbCritical|vbQuestion|vbExclamation|vbInformation|vbDefaultButton1|vbDefaultButton2" + + "|vbDefaultButton3|vbDefaultButton4|vbApplicationModal|vbSystemModal|vbOK|vbCancel|vbAbort|vbRetry|vbIgnore|vbYes|vbNo" + + "|vbUseDefault" }, "identifier", true); - this.$rules = { - "start": [ - { - token: [ - "meta.ending-space" - ], - regex: "$" - }, - { - token: [null], - regex: "^(?=\\t)", - next: "state_3" - }, - { - token: [null], - regex: "^(?= )", - next: "state_4" - }, - { - token: [ - "text", - "storage.type.function.asp", - "text", - "entity.name.function.asp", - "text", - "punctuation.definition.parameters.asp", - "variable.parameter.function.asp", - "punctuation.definition.parameters.asp" - ], - regex: "^(\\s*)(Function|Sub)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))" - }, - { - token: "punctuation.definition.comment.asp", - regex: "'|REM(?=\\s|$)", - next: "comment", - caseInsensitive: true - }, - { - token: "storage.type.asp", - regex: "On Error Resume Next|On Error GoTo", - caseInsensitive: true - }, - { - token: "punctuation.definition.string.begin.asp", - regex: '"', - next: "string" - }, - { - token: [ - "punctuation.definition.variable.asp" - ], - regex: "(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*" - }, - { - token: "constant.numeric.asp", - regex: "-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b" - }, - { - regex: "\\w+", - token: keywordMapper - }, - { - token: ["entity.name.function.asp"], - regex: "(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))" - }, - { - token: ["keyword.operator.asp"], - regex: "\\-|\\+|\\*\\/|\\>|\\<|\\=|\\&" - } - ], - "state_3": [ - { - token: [ - "meta.odd-tab.tabs", - "meta.even-tab.tabs" - ], - regex: "(\\t)(\\t)?" - }, - { - token: "meta.leading-space", - regex: "(?=[^\\t])", - next: "start" - }, - { - token: "meta.leading-space", - regex: ".", - next: "state_3" - } - ], - "state_4": [ - { - token: ["meta.odd-tab.spaces", "meta.even-tab.spaces"], - regex: "( )( )?" - }, - { - token: "meta.leading-space", - regex: "(?=[^ ])", - next: "start" - }, - { - defaultToken: "meta.leading-space" - } - ], - "comment": [ - { - token: "comment.line.apostrophe.asp", - regex: "$|(?=(?:%>))", - next: "start" - }, - { - defaultToken: "comment.line.apostrophe.asp" - } - ], - "string": [ - { - token: "constant.character.escape.apostrophe.asp", - regex: '""' - }, - { - token: "string.quoted.double.asp", - regex: '"', - next: "start" - }, - { - defaultToken: "string.quoted.double.asp" - } - ] + "start": [ + { + token: [ + "meta.ending-space" + ], + regex: "$" + }, + { + token: [null], + regex: "^(?=\\t)", + next: "state_3" + }, + { + token: [null], + regex: "^(?= )", + next: "state_4" + }, + { + token: [ + "text", + "storage.type.function.asp", + "text", + "entity.name.function.asp", + "text", + "punctuation.definition.parameters.asp", + "variable.parameter.function.asp", + "punctuation.definition.parameters.asp" + ], + regex: "^(\\s*)(Function|Sub)(\\s+)([a-zA-Z_]\\w*)(\\s*)(\\()([^)]*)(\\))" + }, + { + token: "punctuation.definition.comment.asp", + regex: "'|REM(?=\\s|$)", + next: "comment", + caseInsensitive: true + }, + { + token: "storage.type.asp", + regex: "On\\s+Error\\s+(?:Resume\\s+Next|GoTo)\\b", + caseInsensitive: true + }, + { + token: "punctuation.definition.string.begin.asp", + regex: '"', + next: "string" + }, + { + token: [ + "punctuation.definition.variable.asp" + ], + regex: "(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*" + }, + { + token: "constant.numeric.asp", + regex: "-?\\b(?:(?:0(?:x|X)[0-9a-fA-F]*)|(?:(?:[0-9]+\\.?[0-9]*)|(?:\\.[0-9]+))(?:(?:e|E)(?:\\+|-)?[0-9]+)?)(?:L|l|UL|ul|u|U|F|f)?\\b" + }, + { + regex: "\\w+", + token: keywordMapper + }, + { + token: ["entity.name.function.asp"], + regex: "(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))" + }, + { + token: ["keyword.operator.asp"], + regex: "\\-|\\+|\\*|\\/|\\>|\\<|\\=|\\&|\\\\|\\^" + } + ], + "state_3": [ + { + token: [ + "meta.odd-tab.tabs", + "meta.even-tab.tabs" + ], + regex: "(\\t)(\\t)?" + }, + { + token: "meta.leading-space", + regex: "(?=[^\\t])", + next: "start" + }, + { + token: "meta.leading-space", + regex: ".", + next: "state_3" + } + ], + "state_4": [ + { + token: ["meta.odd-tab.spaces", "meta.even-tab.spaces"], + regex: "( )( )?" + }, + { + token: "meta.leading-space", + regex: "(?=[^ ])", + next: "start" + }, + { + defaultToken: "meta.leading-space" + } + ], + "comment": [ + { + token: "comment.line.apostrophe.asp", + regex: "$", + next: "start" + }, + { + defaultToken: "comment.line.apostrophe.asp" + } + ], + "string": [ + { + token: "constant.character.escape.apostrophe.asp", + regex: '""' + }, + { + token: "string.quoted.double.asp", + regex: '"', + next: "start" + }, + { + defaultToken: "string.quoted.double.asp" + } + ] + }; }; - -}; - oop.inherits(VBScriptHighlightRules, TextHighlightRules); - exports.VBScriptHighlightRules = VBScriptHighlightRules; + }); -define("ace/mode/vbscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vbscript_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/folding/vbscript",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var BaseFoldMode = require("./fold_mode").FoldMode; +var Range = require("../../range").Range; +var TokenIterator = require("../../token_iterator").TokenIterator; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.indentKeywords = { + "class": 1, + "function": 1, + "sub": 1, + "if": 1, + "select": 1, + "do": 1, + "for": 1, + "while": 1, + "with": 1, + "property": 1, + "else": 1, + "elseif": 1, + "end": -1, + "loop": -1, + "next": -1, + "wend": -1 + }; + this.foldingStartMarker = /(?:\s|^)(class|function|sub|if|select|do|for|while|with|property|else|elseif)\b/i; + this.foldingStopMarker = /\b(end|loop|next|wend)\b/i; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var line = session.getLine(row); + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart || isEnd) { + var match = (isEnd) ? this.foldingStopMarker.exec(line) : this.foldingStartMarker.exec(line); + var keyword = match && match[1].toLowerCase(); + if (keyword) { + var type = session.getTokenAt(row, match.index + 2).type; + if (type === "keyword.control.asp" || type === "storage.type.function.asp") + return this.vbsBlock(session, row, match.index + 2); + } + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var isStart = this.foldingStartMarker.test(line); + var isEnd = this.foldingStopMarker.test(line); + if (isStart && !isEnd) { + var match = this.foldingStartMarker.exec(line); + var keyword = match && match[1].toLowerCase(); + if (keyword) { + var type = session.getTokenAt(row, match.index + 2).type; + if (type == "keyword.control.asp" || type == "storage.type.function.asp") { + if (keyword == "if" && !/then\s*('|$)/i.test(line)) + return ""; + return "start"; + } + } + } + return ""; + }; + this.vbsBlock = function (session, row, column, tokenRange) { + var stream = new TokenIterator(session, row, column); + var endOpenings = { + "class": 1, + "function": 1, + "sub": 1, + "if": 1, + "select": 1, + "with": 1, + "property": 1, + "else": 1, + "elseif": 1 + }; + var token = stream.getCurrentToken(); + if (!token || (token.type != "keyword.control.asp" && token.type != "storage.type.function.asp")) + return; + var startTokenValue = token.value.toLowerCase(); + var val = token.value.toLowerCase(); + var stack = [val]; + var dir = this.indentKeywords[val]; + if (!dir) + return; + var firstRange = stream.getCurrentTokenRange(); + switch (val) { + case "property": + case "sub": + case "function": + case "if": + case "select": + case "do": + case "for": + case "class": + case "while": + case "with": + var line = session.getLine(row); + var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); + if (singleLineCondition) + return; + var checkToken = new RegExp("(?:^|\\s)" + val, "i"); + var endTest = /^\s*End\s(If|Sub|Select|Function|Class|With|Property)\s*/i.test(line); + if (!checkToken.test(line) && !endTest) { + return; + } + if (endTest) { + var tokenRange = stream.getCurrentTokenRange(); + stream.step = stream.stepBackward; + stream.step(); + stream.step(); + token = stream.getCurrentToken(); + if (token) { + val = token.value.toLowerCase(); + if (val == "end") { + firstRange = stream.getCurrentTokenRange(); + firstRange = new Range(firstRange.start.row, firstRange.start.column, tokenRange.start.row, tokenRange.end.column); + } + } + dir = -1; + } + break; + case "end": + var tokenPos = stream.getCurrentTokenPosition(); + firstRange = stream.getCurrentTokenRange(); + stream.step = stream.stepForward; + stream.step(); + stream.step(); + token = stream.getCurrentToken(); + if (token) { + val = token.value.toLowerCase(); + if (val in endOpenings) { + startTokenValue = val; + var nextTokenPos = stream.getCurrentTokenPosition(); + var endColumn = nextTokenPos.column + val.length; + firstRange = new Range(tokenPos.row, tokenPos.column, nextTokenPos.row, endColumn); + } + } + stream.step = stream.stepBackward; + stream.step(); + stream.step(); + break; + } + var startColumn = dir === -1 ? session.getLine(row - 1).length : session.getLine(row).length; + var startRow = row; + var ranges = []; + ranges.push(firstRange); + stream.step = dir === -1 ? stream.stepBackward : stream.stepForward; + while (token = stream.step()) { + var outputRange = null; + var ignore = false; + if (token.type != "keyword.control.asp" && token.type != "storage.type.function.asp") + continue; + val = token.value.toLowerCase(); + var level = dir * this.indentKeywords[val]; + switch (val) { + case "property": + case "sub": + case "function": + case "if": + case "select": + case "do": + case "for": + case "class": + case "while": + case "with": + var line = session.getLine(stream.getCurrentTokenRow()); + var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); + if (singleLineCondition) { + level = 0; + ignore = true; + } + var checkToken = new RegExp("^\\s* end\\s+" + val, "i"); + if (checkToken.test(line)) { + level = 0; + ignore = true; + } + break; + case "elseif": + case "else": + level = 0; + if (startTokenValue != "elseif") { + ignore = true; + } + break; + } + if (level > 0) { + stack.unshift(val); + } + else if (level <= 0 && ignore === false) { + stack.shift(); + if (!stack.length) { + switch (val) { + case "end": + var tokenPos = stream.getCurrentTokenPosition(); + outputRange = stream.getCurrentTokenRange(); + stream.step(); + stream.step(); + token = stream.getCurrentToken(); + if (token) { + val = token.value.toLowerCase(); + if (val in endOpenings) { + if ((startTokenValue == "else" || startTokenValue == "elseif")) { + if (val !== "if") { + ranges.shift(); + } + } + else { + if (val != startTokenValue) + ranges.shift(); + } + var nextTokenPos = stream.getCurrentTokenPosition(); + var endColumn = nextTokenPos.column + val.length; + outputRange = new Range(tokenPos.row, tokenPos.column, nextTokenPos.row, endColumn); + } + else { + ranges.shift(); + } + } + else { + ranges.shift(); + } + stream.step = stream.stepBackward; + stream.step(); + stream.step(); + token = stream.getCurrentToken(); + val = token.value.toLowerCase(); + break; + case "select": + case "sub": + case "if": + case "function": + case "class": + case "with": + case "property": + if (val != startTokenValue) + ranges.shift(); + break; + case "do": + if (startTokenValue != "loop") + ranges.shift(); + break; + case "loop": + if (startTokenValue != "do") + ranges.shift(); + break; + case "for": + if (startTokenValue != "next") + ranges.shift(); + break; + case "next": + if (startTokenValue != "for") + ranges.shift(); + break; + case "while": + if (startTokenValue != "wend") + ranges.shift(); + break; + case "wend": + if (startTokenValue != "while") + ranges.shift(); + break; + } + break; + } + if (level === 0) { + stack.unshift(val); + } + } + } + if (!token) + return null; + if (tokenRange) { + if (!outputRange) { + ranges.push(stream.getCurrentTokenRange()); + } + else { + ranges.push(outputRange); + } + return ranges; + } + var row = stream.getCurrentTokenRow(); + if (dir === -1) { + var endColumn = session.getLine(row).length; + return new Range(row, endColumn, startRow - 1, startColumn); + } + else + return new Range(startRow, startColumn, row - 1, session.getLine(row - 1).length); + }; +}).call(FoldMode.prototype); +}); + +define("ace/mode/vbscript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vbscript_highlight_rules","ace/mode/folding/vbscript","ace/range"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var VBScriptHighlightRules = require("./vbscript_highlight_rules").VBScriptHighlightRules; - -var Mode = function() { +var FoldMode = require("./folding/vbscript").FoldMode; +var Range = require("../range").Range; +var Mode = function () { this.HighlightRules = VBScriptHighlightRules; + this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; + this.indentKeywords = this.foldingRules.indentKeywords; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = ["'", "REM"]; - + var outdentKeywords = [ + "else", + "elseif", + "end", + "loop", + "next", + "wend" + ]; + function getNetIndentLevel(tokens, line, indentKeywords) { + var level = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + if (token.type == "keyword.control.asp" || token.type == "storage.type.function.asp") { + var val = token.value.toLowerCase(); + if (val in indentKeywords) { + switch (val) { + case "property": + case "sub": + case "function": + case "select": + case "do": + case "for": + case "class": + case "while": + case "with": + case "if": + var checkToken = new RegExp("^\\s* end\\s+" + val, "i"); + var singleLineCondition = /^\s*If\s+.*\s+Then(?!')\s+(?!')\S/i.test(line); + if (!singleLineCondition && !checkToken.test(line)) + level += indentKeywords[val]; + break; + default: + level += indentKeywords[val]; + break; + } + } + } + } + if (level < 0) { + return -1; + } + else if (level > 0) { + return 1; + } + else { + return 0; + } + } + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var level = 0; + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + if (state == "start") { + level = getNetIndentLevel(tokens, line, this.indentKeywords); + } + if (level > 0) { + return indent + tab; + } + else if (level < 0 && indent.substr(indent.length - tab.length) == tab) { + if (!this.checkOutdent(state, line, "\n")) { + return indent.substr(0, indent.length - tab.length); + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + if (input != "\n" && input != "\r" && input != "\r\n") + return false; + var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens; + if (!tokens || !tokens.length) + return false; + var val = tokens[0].value.toLowerCase(); + return ((tokens[0].type == "keyword.control.asp" || tokens[0].type == "storage.type.function.asp") && outdentKeywords.indexOf(val) != -1); + }; + this.getMatching = function (session, row, column, tokenRange) { + if (row == undefined) { + var pos = session.selection.lead; + column = pos.column; + row = pos.row; + } + if (tokenRange == undefined) + tokenRange = true; + var startToken = session.getTokenAt(row, column); + if (startToken) { + var val = startToken.value.toLowerCase(); + if (val in this.indentKeywords) + return this.foldingRules.vbsBlock(session, row, column, tokenRange); + } + }; + this.autoOutdent = function (state, session, row) { + var line = session.getLine(row); + var column = line.match(/^\s*/)[0].length; + if (!column || !row) + return; + var startRange = this.getMatching(session, row, column + 1, false); + if (!startRange || startRange.start.row == row) + return; + var indent = this.$getIndent(session.getLine(startRange.start.row)); + if (indent.length != column) { + session.replace(new Range(row, 0, row, column), indent); + session.outdentRows(new Range(row + 1, 0, row + 1, 0)); + } + }; this.$id = "ace/mode/vbscript"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/vbscript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-velocity.js b/vendor/assets/javascripts/ace/mode-velocity.js index d1469335..e8e8db84 100644 --- a/vendor/assets/javascripts/ace/mode-velocity.js +++ b/vendor/assets/javascripts/ace/mode-velocity.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,57 +851,45 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; -var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; -var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; - var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; -var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; - -var CssHighlightRules = function() { - +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { var keywordMapper = this.createKeywordMapper({ "support.function": supportFunction, "support.constant": supportConstant, @@ -813,242 +897,232 @@ var CssHighlightRules = function() { "support.constant.color": supportConstantColor, "support.constant.fonts": supportConstantFonts }, "text", true); - this.$rules = { - "start" : [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "ruleset" - }, { - token: "paren.rparen", - regex: "\\}" - }, { - token: "string", - regex: "@", - next: "media" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "keyword", - regex: "%" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" - }, { - token: "string", - regex: ":[a-z0-9-_]+" - }, { - token : "constant.numeric", - regex : numRe - }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true - }], - + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], "media": [{ - include : ["strings", "url", "comments"] - }, { - token: "paren.lparen", - regex: "\\{", - next: "start" - }, { - token: "paren.rparen", - regex: "\\}", - next: "start" - }, { - token: "string", - regex: ";", - next: "start" - }, { - token: "keyword", - regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" - + "|page|font|keyframes|viewport|counter-style|font-feature-values" - + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" - }], - - "comments" : [{ - token: "comment", // multi line comment - regex: "\\/\\*", - push: [{ - token : "comment", - regex : "\\*\\/", - next : "pop" + include: ["strings", "url", "comments"] }, { - defaultToken : "comment" - }] - }], - - "ruleset" : [{ - regex : "-(webkit|ms|moz|o)-", - token : "text" - }, { - token : "paren.rparen", - regex : "\\}", - next : "start" - }, { - include : ["strings", "url", "comments"] - }, { - token : ["constant.numeric", "keyword"], - regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" - }, { - token : "constant.numeric", - regex : numRe - }, { - token : "constant.numeric", // hex6 color - regex : "#[a-f0-9]{6}" - }, { - token : "constant.numeric", // hex3 color - regex : "#[a-f0-9]{3}" - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-element.css"], - regex : pseudoElements - }, { - token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], - regex : pseudoClasses - }, { - include: "url" - }, { - token : keywordMapper, - regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" - }, { - caseInsensitive: true - }], - + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], url: [{ - token : "support.function", - regex : "(?:url(:?-prefix)?|domain|regexp)\\(", - push: [{ - token : "support.function", - regex : "\\)", - next : "pop" - }, { - defaultToken: "string" - }] - }], - + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], strings: [{ - token : "string.start", - regex : "'", - push : [{ - token : "string.end", - regex : "'|$", - next: "pop" + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }, { - token : "string.start", - regex : '"', - push : [{ - token : "string.end", - regex : '"|$', - next: "pop" - }, { - include : "escapes" - }, { - token : "constant.language.escape", - regex : /\\$/, - consumeLineEnd: true - }, { - defaultToken: "string" - }] - }], + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], escapes: [{ - token : "constant.language.escape", - regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ - }] - + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] }; - this.normalizeRules(); }; - oop.inherits(CssHighlightRules, TextHighlightRules); - exports.CssHighlightRules = CssHighlightRules; }); -define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; var propertyMap = { - "background": {"#$0": 1}, - "background-color": {"#$0": 1, "transparent": 1, "fixed": 1}, - "background-image": {"url('/$0')": 1}, - "background-repeat": {"repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1}, - "background-position": {"bottom":2, "center":2, "left":2, "right":2, "top":2, "inherit":2}, - "background-attachment": {"scroll": 1, "fixed": 1}, - "background-size": {"cover": 1, "contain": 1}, - "background-clip": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "background-origin": {"border-box": 1, "padding-box": 1, "content-box": 1}, - "border": {"solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1}, - "border-color": {"#$0": 1}, - "border-style": {"solid":2, "dashed":2, "dotted":2, "double":2, "groove":2, "hidden":2, "inherit":2, "inset":2, "none":2, "outset":2, "ridged":2}, - "border-collapse": {"collapse": 1, "separate": 1}, - "bottom": {"px": 1, "em": 1, "%": 1}, - "clear": {"left": 1, "right": 1, "both": 1, "none": 1}, - "color": {"#$0": 1, "rgb(#$00,0,0)": 1}, - "cursor": {"default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1}, - "display": {"none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1}, - "empty-cells": {"show": 1, "hide": 1}, - "float": {"left": 1, "right": 1, "none": 1}, - "font-family": {"Arial":2,"Comic Sans MS":2,"Consolas":2,"Courier New":2,"Courier":2,"Georgia":2,"Monospace":2,"Sans-Serif":2, "Segoe UI":2,"Tahoma":2,"Times New Roman":2,"Trebuchet MS":2,"Verdana": 1}, - "font-size": {"px": 1, "em": 1, "%": 1}, - "font-weight": {"bold": 1, "normal": 1}, - "font-style": {"italic": 1, "normal": 1}, - "font-variant": {"normal": 1, "small-caps": 1}, - "height": {"px": 1, "em": 1, "%": 1}, - "left": {"px": 1, "em": 1, "%": 1}, - "letter-spacing": {"normal": 1}, - "line-height": {"normal": 1}, - "list-style-type": {"none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1}, - "margin": {"px": 1, "em": 1, "%": 1}, - "margin-right": {"px": 1, "em": 1, "%": 1}, - "margin-left": {"px": 1, "em": 1, "%": 1}, - "margin-top": {"px": 1, "em": 1, "%": 1}, - "margin-bottom": {"px": 1, "em": 1, "%": 1}, - "max-height": {"px": 1, "em": 1, "%": 1}, - "max-width": {"px": 1, "em": 1, "%": 1}, - "min-height": {"px": 1, "em": 1, "%": 1}, - "min-width": {"px": 1, "em": 1, "%": 1}, - "overflow": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-x": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "overflow-y": {"hidden": 1, "visible": 1, "auto": 1, "scroll": 1}, - "padding": {"px": 1, "em": 1, "%": 1}, - "padding-top": {"px": 1, "em": 1, "%": 1}, - "padding-right": {"px": 1, "em": 1, "%": 1}, - "padding-bottom": {"px": 1, "em": 1, "%": 1}, - "padding-left": {"px": 1, "em": 1, "%": 1}, - "page-break-after": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "page-break-before": {"auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1}, - "position": {"absolute": 1, "relative": 1, "fixed": 1, "static": 1}, - "right": {"px": 1, "em": 1, "%": 1}, - "table-layout": {"fixed": 1, "auto": 1}, - "text-decoration": {"none": 1, "underline": 1, "line-through": 1, "blink": 1}, - "text-align": {"left": 1, "right": 1, "center": 1, "justify": 1}, - "text-transform": {"capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1}, - "top": {"px": 1, "em": 1, "%": 1}, - "vertical-align": {"top": 1, "bottom": 1}, - "visibility": {"hidden": 1, "visible": 1}, - "white-space": {"nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1}, - "width": {"px": 1, "em": 1, "%": 1}, - "word-spacing": {"normal": 1}, - "filter": {"alpha(opacity=$0100)": 1}, - - "text-shadow": {"$02px 2px 2px #777": 1}, - "text-overflow": {"ellipsis-word": 1, "clip": 1, "ellipsis": 1}, + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, "-moz-border-radius": 1, "-moz-border-radius-topright": 1, "-moz-border-radius-bottomright": 1, @@ -1061,113 +1135,93 @@ var propertyMap = { "-webkit-border-bottom-left-radius": 1, "-moz-box-shadow": 1, "-webkit-box-shadow": 1, - "transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-moz-transform": {"rotate($00deg)": 1, "skew($00deg)": 1}, - "-webkit-transform": {"rotate($00deg)": 1, "skew($00deg)": 1 } + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } }; - -var CssCompletions = function() { - +var CssCompletions = function () { }; - -(function() { - +(function () { this.completionsDefined = false; - - this.defineCompletions = function() { + this.defineCompletions = function () { if (document) { var style = document.createElement('c').style; - for (var i in style) { if (typeof style[i] !== 'string') continue; - - var name = i.replace(/[A-Z]/g, function(x) { + var name = i.replace(/[A-Z]/g, function (x) { return '-' + x.toLowerCase(); }); - if (!propertyMap.hasOwnProperty(name)) propertyMap[name] = 1; } } - this.completionsDefined = true; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { if (!this.completionsDefined) { this.defineCompletions(); } - - var token = session.getTokenAt(pos.row, pos.column); - - if (!token) - return []; - if (state==='ruleset'){ + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } if (/:[^;]+$/.test(line)) { /([\w\-]+):[^:]*$/.test(line); - return this.getPropertyValueCompletions(state, session, pos, prefix); - } else { - return this.getPropertyCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); } } - return []; }; - - this.getPropertyCompletions = function(state, session, pos, prefix) { + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; var properties = Object.keys(propertyMap); - return properties.map(function(property){ + return properties.map(function (property) { return { caption: property, - snippet: property + ': $0;', + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), meta: "property", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getPropertyValueCompletions = function(state, session, pos, prefix) { + this.getPropertyValueCompletions = function (state, session, pos, prefix) { var line = session.getLine(pos.row).substr(0, pos.column); var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; - if (!property) return []; var values = []; if (property in propertyMap && typeof propertyMap[property] === "object") { values = Object.keys(propertyMap[property]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "property value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(CssCompletions.prototype); - exports.CssCompletions = CssCompletions; + }); -define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var CstyleBehaviour = require("./cstyle").CstyleBehaviour; var TokenIterator = require("../../token_iterator").TokenIterator; - var CssBehaviour = function () { - this.inherit(CstyleBehaviour); - this.add("colon", "insertion", function (state, action, editor, session, text) { - if (text === ':') { + if (text === ':' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); @@ -1179,20 +1233,19 @@ var CssBehaviour = function () { var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ':') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] }; } - if (!line.substring(cursor.column).match(/^\s*;/)) { + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { return { - text: ':;', - selection: [1, 1] + text: ':;', + selection: [1, 1] }; } } } }); - this.add("colon", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && selected === ':') { @@ -1206,36 +1259,44 @@ var CssBehaviour = function () { var line = session.doc.getLine(range.start.row); var rightChar = line.substring(range.end.column, range.end.column + 1); if (rightChar === ';') { - range.end.column ++; + range.end.column++; return range; } } } }); - this.add("semicolon", "insertion", function (state, action, editor, session, text) { - if (text === ';') { + if (text === ';' && editor.selection.isEmpty()) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); if (rightChar === ';') { return { - text: '', - selection: [1, 1] + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] }; } } }); - }; oop.inherits(CssBehaviour, CstyleBehaviour); - exports.CssBehaviour = CssBehaviour; + }); -define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; @@ -1244,8 +1305,7 @@ var WorkerClient = require("../worker/worker_client").WorkerClient; var CssCompletions = require("./css_completions").CssCompletions; var CssBehaviour = require("./behaviour/css").CssBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = CssHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CssBehaviour(); @@ -1253,360 +1313,311 @@ var Mode = function() { this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.foldingRules = "cStyle"; - this.blockComment = {start: "/*", end: "*/"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); var tokens = this.getTokenizer().getLineTokens(line, state).tokens; - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - var match = line.match(/^.*\{\s*$/); if (match) { indent += tab; } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(e) { + worker.on("annotate", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; }).call(Mode.prototype); - exports.Mode = Mode; }); -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; - var tagMap = lang.createMap({ - a : 'anchor', - button : 'form', - form : 'form', - img : 'image', - input : 'form', - label : 'form', - option : 'form', - script : 'script', - select : 'form', - textarea : 'form', - style : 'style', - table : 'table', - tbody : 'table', - td : 'table', - tfoot : 'table', - th : 'table', - tr : 'table' + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' }); - -var HtmlHighlightRules = function() { +var HtmlHighlightRules = function () { XmlHighlightRules.call(this); - this.addRules({ attributes: [{ - include : "tag_whitespace" - }, { - token : "entity.other.attribute-name.xml", - regex : "[-_a-zA-Z0-9:.]+" - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=", - push : [{ include: "tag_whitespace" }, { - token : "string.unquoted.attribute-value.html", - regex : "[^<>='\"`\\s]+", - next : "pop" + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" }, { - token : "empty", - regex : "", - next : "pop" - }] - }, { - include : "attribute_value" - }], + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], tag: [{ - token : function(start, tag) { - var group = tagMap[tag]; - return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", - "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; - }, - regex : "(", next : "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start" } ] }); - this.embedTagRules(CssHighlightRules, "css-", "style"); - this.embedTagRules(new JavaScriptHighlightRules({jsx: false}).getRules(), "js-", "script"); - + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); if (this.constructor === HtmlHighlightRules) this.normalizeRules(); }; - oop.inherits(HtmlHighlightRules, XmlHighlightRules); - exports.HtmlHighlightRules = HtmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -1617,26 +1628,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -1649,8 +1655,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -1661,7 +1666,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -1672,14 +1676,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -1687,63 +1695,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -1919,174 +1883,37 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var MixedFoldMode = require("./mixed").FoldMode; var XmlFoldMode = require("./xml").FoldMode; var CStyleFoldMode = require("./cstyle").FoldMode; - -var FoldMode = exports.FoldMode = function(voidElements, optionalTags) { +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { "js-": new CStyleFoldMode(), "css-": new CStyleFoldMode() }); }; - oop.inherits(FoldMode, MixedFoldMode); }); -define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; var TokenIterator = require("../token_iterator").TokenIterator; - var commonAttributes = [ "accesskey", "class", @@ -2110,7 +1937,6 @@ var commonAttributes = [ "title", "translate" ]; - var eventAttributes = [ "onabort", "onblur", @@ -2168,161 +1994,151 @@ var eventAttributes = [ "onvolumechange", "onwaiting" ]; - var globalAttributes = commonAttributes.concat(eventAttributes); - var attributeMap = { - "html": {"manifest": 1}, - "head": {}, - "title": {}, - "base": {"href": 1, "target": 1}, - "link": {"href": 1, "hreflang": 1, "rel": {"stylesheet": 1, "icon": 1}, "media": {"all": 1, "screen": 1, "print": 1}, "type": {"text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1}, "sizes": 1}, - "meta": {"http-equiv": {"content-type": 1}, "name": {"description": 1, "keywords": 1}, "content": {"text/html; charset=UTF-8": 1}, "charset": 1}, - "style": {"type": 1, "media": {"all": 1, "screen": 1, "print": 1}, "scoped": 1}, - "script": {"charset": 1, "type": {"text/javascript": 1}, "src": 1, "defer": 1, "async": 1}, - "noscript": {"href": 1}, - "body": {"onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1}, - "section": {}, - "nav": {}, - "article": {"pubdate": 1}, + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, "h1": {}, "h2": {}, "h3": {}, "h4": {}, "h5": {}, "h6": {}, + "head": {}, "header": {}, - "footer": {}, - "address": {}, - "main": {}, - "p": {}, "hr": {}, - "pre": {}, - "blockquote": {"cite": 1}, - "ol": {"start": 1, "reversed": 1}, - "ul": {}, - "li": {"value": 1}, - "dl": {}, - "dt": {}, - "dd": {}, - "figure": {}, - "figcaption": {}, - "div": {}, - "a": {"href": 1, "target": {"_blank": 1, "top": 1}, "ping": 1, "rel": {"nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1}, "media": 1, "hreflang": 1, "type": 1}, - "em": {}, - "strong": {}, - "small": {}, - "s": {}, - "cite": {}, - "q": {"cite": 1}, - "dfn": {}, - "abbr": {}, - "data": {}, - "time": {"datetime": 1}, - "code": {}, - "var": {}, - "samp": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, "sub": {}, "sup": {}, - "i": {}, - "b": {}, - "u": {}, - "mark": {}, - "ruby": {}, - "rt": {}, - "rp": {}, - "bdi": {}, - "bdo": {}, - "span": {}, - "br": {}, - "wbr": {}, - "ins": {"cite": 1, "datetime": 1}, - "del": {"cite": 1, "datetime": 1}, - "img": {"alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1}, - "iframe": {"name": 1, "src": 1, "height": 1, "width": 1, "sandbox": {"allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1}, "seamless": {"seamless": 1}}, - "embed": {"src": 1, "height": 1, "width": 1, "type": 1}, - "object": {"param": 1, "data": 1, "type": 1, "height" : 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1}, - "param": {"name": 1, "value": 1}, - "video": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "width": 1, "height": 1, "poster": 1, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1}}, - "audio": {"src": 1, "autobuffer": 1, "autoplay": {"autoplay": 1}, "loop": {"loop": 1}, "controls": {"controls": 1}, "muted": {"muted": 1}, "preload": {"auto": 1, "metadata": 1, "none": 1 }}, - "source": {"src": 1, "type": 1, "media": 1}, - "track": {"kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1}, - "canvas": {"width": 1, "height": 1}, - "map": {"name": 1}, - "area": {"shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1}, "svg": {}, - "math": {}, - "table": {"summary": 1}, - "caption": {}, - "colgroup": {"span": 1}, - "col": {"span": 1}, + "table": { "summary": 1 }, "tbody": {}, - "thead": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, "tr": {}, - "td": {"headers": 1, "rowspan": 1, "colspan": 1}, - "th": {"headers": 1, "rowspan": 1, "colspan": 1, "scope": 1}, - "form": {"accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": {"multipart/form-data": 1, "application/x-www-form-urlencoded": 1}, "method": {"get": 1, "post": 1}, "name": 1, "novalidate": 1, "target": {"_blank": 1, "top": 1}}, - "fieldset": {"disabled": 1, "form": 1, "name": 1}, - "legend": {}, - "label": {"form": 1, "for": 1}, - "input": { - "type": {"text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1}, - "accept": 1, "alt": 1, "autocomplete": {"on": 1, "off": 1}, "autofocus": {"autofocus": 1}, "checked": {"checked": 1}, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": {"application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1}, "formmethod": {"get": 1, "post": 1}, "formnovalidate": {"formnovalidate": 1}, "formtarget": {"_blank": 1, "_self": 1, "_parent": 1, "_top": 1}, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": {"multiple": 1}, "name": 1, "pattern": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1}, - "button": {"autofocus": 1, "disabled": {"disabled": 1}, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": {"button": 1, "submit": 1}}, - "select": {"autofocus": 1, "disabled": 1, "form": 1, "multiple": {"multiple": 1}, "name": 1, "size": 1, "readonly":{"readonly": 1}}, - "datalist": {}, - "optgroup": {"disabled": 1, "label": 1}, - "option": {"disabled": 1, "selected": 1, "label": 1, "value": 1}, - "textarea": {"autofocus": {"autofocus": 1}, "disabled": {"disabled": 1}, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": {"readonly": 1}, "required": {"required": 1}, "rows": 1, "cols": 1, "wrap": {"on": 1, "off": 1, "hard": 1, "soft": 1}}, - "keygen": {"autofocus": 1, "challenge": {"challenge": 1}, "disabled": {"disabled": 1}, "form": 1, "keytype": {"rsa": 1, "dsa": 1, "ec": 1}, "name": 1}, - "output": {"for": 1, "form": 1, "name": 1}, - "progress": {"value": 1, "max": 1}, - "meter": {"value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1}, - "details": {"open": 1}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, "summary": {}, - "command": {"type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1}, - "menu": {"type": 1, "label": 1}, - "dialog": {"open": 1} + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} }; - var elements = Object.keys(attributeMap); - function is(token, type) { return token.type.lastIndexOf(type + ".xml") > -1; } - function findTagName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "tag-name")){ + while (token && !is(token, "tag-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - function findAttributeName(session, pos) { var iterator = new TokenIterator(session, pos.row, pos.column); var token = iterator.getCurrentToken(); - while (token && !is(token, "attribute-name")){ + while (token && !is(token, "attribute-name")) { token = iterator.stepBackward(); } if (token) return token.value; } - -var HtmlCompletions = function() { - +var HtmlCompletions = function () { }; - -(function() { - - this.getCompletions = function(state, session, pos, prefix) { +(function () { + this.getCompletions = function (state, session, pos, prefix) { var token = session.getTokenAt(pos.row, pos.column); - if (!token) return []; if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) @@ -2334,21 +2150,18 @@ var HtmlCompletions = function() { var line = session.getLine(pos.row).substr(0, pos.column); if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); - return []; }; - - this.getTagCompletions = function(state, session, pos, prefix) { - return elements.map(function(element){ + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { return { value: element, meta: "tag", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeCompletions = function(state, session, pos, prefix) { + this.getAttributeCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); if (!tagName) return []; @@ -2356,57 +2169,50 @@ var HtmlCompletions = function() { if (tagName in attributeMap) { attributes = attributes.concat(Object.keys(attributeMap[tagName])); } - return attributes.map(function(attribute){ + return attributes.map(function (attribute) { return { caption: attribute, snippet: attribute + '="$0"', meta: "attribute", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getAttributeValueCompletions = function(state, session, pos, prefix) { + this.getAttributeValueCompletions = function (state, session, pos, prefix) { var tagName = findTagName(session, pos); var attributeName = findAttributeName(session, pos); - if (!tagName) return []; var values = []; if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { values = Object.keys(attributeMap[tagName][attributeName]); } - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "attribute value", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - - this.getHTMLEntityCompletions = function(state, session, pos, prefix) { + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; - - return values.map(function(value){ + return values.map(function (value) { return { caption: value, snippet: value, meta: "html entity", - score: Number.MAX_VALUE + score: 1000000 }; }); }; - }).call(HtmlCompletions.prototype); - exports.HtmlCompletions = HtmlCompletions; + }); -define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -2419,190 +2225,154 @@ var HtmlCompletions = require("./html_completions").HtmlCompletions; var WorkerClient = require("../worker/worker_client").WorkerClient; var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; - -var Mode = function(options) { +var Mode = function (options) { this.fragmentContext = options && options.fragmentContext; this.HighlightRules = HtmlHighlightRules; this.$behaviour = new XmlBehaviour(); this.$completer = new HtmlCompletions(); - this.createModeDelegates({ "js-": JavaScriptMode, "css-": CssMode }); - this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); }; oop.inherits(Mode, TextMode); - -(function() { - - this.blockComment = {start: ""}; - +(function () { + this.blockComment = { start: "" }; this.voidElements = lang.arrayToMap(voidElements); - - this.getNextLineIndent = function(state, line, tab) { + this.getNextLineIndent = function (state, line, tab) { return this.$getIndent(line); }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return false; }; - - this.getCompletions = function(state, session, pos, prefix) { + this.getCompletions = function (state, session, pos, prefix) { return this.$completer.getCompletions(state, session, pos, prefix); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { if (this.constructor != Mode) return; var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); worker.attachToDocument(session.getDocument()); - if (this.fragmentContext) - worker.call("setOptions", [{context: this.fragmentContext}]); - - worker.on("error", function(e) { + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/velocity_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/velocity_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; - -var VelocityHighlightRules = function() { +var VelocityHighlightRules = function () { HtmlHighlightRules.call(this); - - var builtinConstants = lang.arrayToMap( - ('true|false|null').split('|') - ); - - var builtinFunctions = lang.arrayToMap( - ("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool").split('|') - ); - - var builtinVariables = lang.arrayToMap( - ('$contentRoot|$foreach').split('|') - ); - - var keywords = lang.arrayToMap( - ("#set|#macro|#include|#parse|" + + var builtinConstants = lang.arrayToMap(('true|false|null').split('|')); + var builtinFunctions = lang.arrayToMap(("_DateTool|_DisplayTool|_EscapeTool|_FieldTool|_MathTool|_NumberTool|_SerializerTool|_SortTool|_StringTool|_XPathTool").split('|')); + var builtinVariables = lang.arrayToMap(('$contentRoot|$foreach').split('|')); + var keywords = lang.arrayToMap(("#set|#macro|#include|#parse|" + "#if|#elseif|#else|#foreach|" + - "#break|#end|#stop" - ).split('|') - ); - - this.$rules.start.push( - { - token : "comment", - regex : "##.*$" - },{ - token : "comment.block", // multi line comment - regex : "#\\*", - next : "vm_comment" - }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" - }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" - }, { - token : function(value) { - if (keywords.hasOwnProperty(value)) - return "keyword"; - else if (builtinConstants.hasOwnProperty(value)) - return "constant.language"; - else if (builtinVariables.hasOwnProperty(value)) - return "variable.language"; - else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) - return "support.function"; - else if (value == "debugger") - return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)) - return "variable"; - return "identifier"; - }, - regex : "[a-zA-Z$#][a-zA-Z0-9_]*\\b" - }, { - token : "keyword.operator", - regex : "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" - }, { - token : "lparen", - regex : "[[({]" - }, { - token : "rparen", - regex : "[\\])}]" - }, { - token : "text", - regex : "\\s+" - } - ); - + "#break|#end|#stop").split('|')); + this.$rules.start.push({ + token: "comment", + regex: "##.*$" + }, { + token: "comment.block", // multi line comment + regex: "#\\*", + next: "vm_comment" + }, { + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + }, { + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + }, { + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + }, { + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "constant.language.boolean", + regex: "(?:true|false)\\b" + }, { + token: function (value) { + if (keywords.hasOwnProperty(value)) + return "keyword"; + else if (builtinConstants.hasOwnProperty(value)) + return "constant.language"; + else if (builtinVariables.hasOwnProperty(value)) + return "variable.language"; + else if (builtinFunctions.hasOwnProperty(value) || builtinFunctions.hasOwnProperty(value.substring(1))) + return "support.function"; + else if (value == "debugger") + return "invalid.deprecated"; + else if (value.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*)$/)) + return "variable"; + return "identifier"; + }, + regex: "[a-zA-Z$#][a-zA-Z0-9_]*\\b" + }, { + token: "keyword.operator", + regex: "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" + }, { + token: "lparen", + regex: "[[({]" + }, { + token: "rparen", + regex: "[\\])}]" + }, { + token: "text", + regex: "\\s+" + }); this.$rules["vm_comment"] = [ { - token : "comment", // closing comment - regex : "\\*#|-->", - next : "start" + token: "comment", // closing comment + regex: "\\*#|-->", + next: "start" }, { defaultToken: "comment" } ]; - this.$rules["vm_start"] = [ { token: "variable", regex: "}", next: "pop" }, { - token : "string.regexp", - regex : "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" + token: "string.regexp", + regex: "[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/]\\w*\\s*(?=[).,;]|$)" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "constant.numeric", // hex - regex : "0[xX][0-9a-fA-F]+\\b" + token: "constant.numeric", // hex + regex: "0[xX][0-9a-fA-F]+\\b" }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : function(value) { + token: function (value) { if (keywords.hasOwnProperty(value)) return "keyword"; else if (builtinConstants.hasOwnProperty(value)) @@ -2613,27 +2383,25 @@ var VelocityHighlightRules = function() { return "support.function"; else if (value == "debugger") return "invalid.deprecated"; - else - if(value.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)) - return "variable"; - return "identifier"; + else if (value.match(/^(\$[a-zA-Z_$][a-zA-Z0-9_]*)$/)) + return "variable"; + return "identifier"; }, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" + token: "keyword.operator", + regex: "!|&|\\*|\\-|\\+|=|!=|<=|>=|<|>|&&|\\|\\|" }, { - token : "lparen", - regex : "[[({]" + token: "lparen", + regex: "[[({]" }, { - token : "rparen", - regex : "[\\])}]" + token: "rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ]; - for (var i in this.$rules) { this.$rules[i].unshift({ token: "variable", @@ -2641,71 +2409,56 @@ var VelocityHighlightRules = function() { push: "vm_start" }); } - this.normalizeRules(); }; - oop.inherits(VelocityHighlightRules, TextHighlightRules); - exports.VelocityHighlightRules = VelocityHighlightRules; + }); -define("ace/mode/folding/velocity",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/velocity",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { var range = this.indentationBlock(session, row); if (range) return range; - var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "##") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "##") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -2714,49 +2467,54 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "##" && prev[indent] == "##") { + } + else if (prevIndent == indent && line[indent] == "##" && prev[indent] == "##") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/velocity",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/velocity_highlight_rules","ace/mode/folding/velocity"], function(require, exports, module) { +define("ace/mode/velocity",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/velocity_highlight_rules","ace/mode/folding/velocity"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ "use strict"; - var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var VelocityHighlightRules = require("./velocity_highlight_rules").VelocityHighlightRules; var FoldMode = require("./folding/velocity").FoldMode; - -var Mode = function() { +var Mode = function () { HtmlMode.call(this); this.HighlightRules = VelocityHighlightRules; this.foldingRules = new FoldMode(); }; oop.inherits(Mode, HtmlMode); - -(function() { +(function () { this.lineCommentStart = "##"; - this.blockComment = {start: "#*", end: "*#"}; + this.blockComment = { start: "#*", end: "*#" }; this.$id = "ace/mode/velocity"; + this.snippetFileId = "ace/snippets/velocity"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/velocity"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-verilog.js b/vendor/assets/javascripts/ace/mode-verilog.js index 1d9d73d3..cf0f6738 100644 --- a/vendor/assets/javascripts/ace/mode-verilog.js +++ b/vendor/assets/javascripts/ace/mode-verilog.js @@ -1,104 +1,98 @@ -define("ace/mode/verilog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/verilog_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VerilogHighlightRules = function() { -var keywords = "always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|" + - "deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|" + - "endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|" + - "highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|" + - "macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|" + - "posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|" + - "reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|" + - "strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|" + - "unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xor" + - "begin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|" + - "endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|" + - "macromodule|module|primitive|repeat|specify|table|task|while"; - - var builtinConstants = ( - "true|false|null" - ); - - var builtinFunctions = ( - "count|min|max|avg|sum|rank|now|coalesce|main" - ); - +var VerilogHighlightRules = function () { + var keywords = "always|and|assign|automatic|begin|buf|bufif0|bufif1|case|casex|casez|cell|cmos|config|" + + "deassign|default|defparam|design|disable|edge|else|end|endcase|endconfig|endfunction|endgenerate|endmodule|" + + "endprimitive|endspecify|endtable|endtask|event|for|force|forever|fork|function|generate|genvar|highz0|" + + "highz1|if|ifnone|incdir|include|initial|inout|input|instance|integer|join|large|liblist|library|localparam|" + + "macromodule|medium|module|nand|negedge|nmos|nor|noshowcancelled|not|notif0|notif1|or|output|parameter|pmos|" + + "posedge|primitive|pull0|pull1|pulldown|pullup|pulsestyle_onevent|pulsestyle_ondetect|rcmos|real|realtime|" + + "reg|release|repeat|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|showcancelled|signed|small|specify|specparam|" + + "strong0|strong1|supply0|supply1|table|task|time|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|" + + "unsigned|use|vectored|wait|wand|weak0|weak1|while|wire|wor|xnor|xor" + + "begin|bufif0|bufif1|case|casex|casez|config|else|end|endcase|endconfig|endfunction|" + + "endgenerate|endmodule|endprimitive|endspecify|endtable|endtask|for|forever|function|generate|if|ifnone|" + + "macromodule|module|primitive|repeat|specify|table|task|while"; + var builtinConstants = ("true|false|null"); + var builtinFunctions = ("count|min|max|avg|sum|rank|now|coalesce|main"); var keywordMapper = this.createKeywordMapper({ "support.function": builtinFunctions, "keyword": keywords, "constant.language": builtinConstants }, "identifier", true); - this.$rules = { - "start" : [ { - token : "comment", - regex : "//.*$" - }, { - token : "comment.start", - regex : "/\\*", - next : [ - { token : "comment.end", regex : "\\*/", next: "start" }, - { defaultToken : "comment" } - ] - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" - }, { - token : "paren.lparen", - regex : "[\\(]" - }, { - token : "paren.rparen", - regex : "[\\)]" - }, { - token : "text", - regex : "\\s+" - } ] + "start": [{ + token: "comment", + regex: "//.*$" + }, { + token: "comment.start", + regex: "/\\*", + next: [ + { token: "comment.end", regex: "\\*/", next: "start" }, + { defaultToken: "comment" } + ] + }, { + token: "string.start", + regex: '"', + next: [ + { token: "constant.language.escape", regex: /\\(?:[ntvfa\\"]|[0-7]{1,3}|\x[a-fA-F\d]{1,2}|)/, consumeLineEnd: true }, + { token: "string.end", regex: '"|$', next: "start" }, + { defaultToken: "string" } + ] + }, { + token: "string", + regex: "'^[']'" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|=" + }, { + token: "paren.lparen", + regex: "[\\(]" + }, { + token: "paren.rparen", + regex: "[\\)]" + }, { + token: "text", + regex: "\\s+" + }] }; this.normalizeRules(); }; - oop.inherits(VerilogHighlightRules, TextHighlightRules); - exports.VerilogHighlightRules = VerilogHighlightRules; + }); -define("ace/mode/verilog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/verilog_highlight_rules","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/verilog",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/verilog_highlight_rules","ace/range"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var VerilogHighlightRules = require("./verilog_highlight_rules").VerilogHighlightRules; var Range = require("../range").Range; - -var Mode = function() { +var Mode = function () { this.HighlightRules = VerilogHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"' }; this.$id = "ace/mode/verilog"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/verilog"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-vhdl.js b/vendor/assets/javascripts/ace/mode-vhdl.js index e8d892e8..f4ac324d 100644 --- a/vendor/assets/javascripts/ace/mode-vhdl.js +++ b/vendor/assets/javascripts/ace/mode-vhdl.js @@ -1,37 +1,25 @@ -define("ace/mode/vhdl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/vhdl_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var VHDLHighlightRules = function() { - - - - var keywords = "access|after|ailas|all|architecture|assert|attribute|"+ - "begin|block|buffer|bus|case|component|configuration|"+ - "disconnect|downto|else|elsif|end|entity|file|for|function|"+ - "generate|generic|guarded|if|impure|in|inertial|inout|is|"+ - "label|linkage|literal|loop|mapnew|next|of|on|open|"+ - "others|out|port|process|pure|range|record|reject|"+ - "report|return|select|shared|subtype|then|to|transport|"+ - "type|unaffected|united|until|wait|when|while|with"; - - var storageType = "bit|bit_vector|boolean|character|integer|line|natural|"+ - "positive|real|register|severity|signal|signed|"+ - "std_logic|std_logic_vector|string||text|time|unsigned|"+ - "variable"; - +var VHDLHighlightRules = function () { + var keywords = "access|after|alias|all|architecture|assert|attribute|" + + "begin|block|body|buffer|bus|case|component|configuration|" + + "context|disconnect|downto|else|elsif|end|entity|exit|" + + "file|for|force|function|generate|generic|group|guarded|" + + "if|impure|in|inertial|inout|is|label|library|linkage|" + + "literal|loop|map|new|next|of|on|or|open|others|out|" + + "package|parameter|port|postponed|procedure|process|" + + "protected|pure|range|record|register|reject|release|" + + "report|return|select|severity|shared|signal|subtype|then|" + + "to|transport|type|unaffected|units|until|use|variable|" + + "wait|when|while|with"; + var storageType = "bit|bit_vector|boolean|character|integer|line|natural|" + + "positive|real|register|signed|std_logic|" + + "std_logic_vector|string||text|time|unsigned"; var storageModifiers = "array|constant"; - - var keywordOperators = "abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|sra"+ - "srl|xnor|xor"; - - var builtinConstants = ( - "true|false|null" - ); - - + var keywordOperators = "abs|and|mod|nand|nor|not|rem|rol|ror|sla|sll|sra" + + "srl|xnor|xor"; + var builtinConstants = ("true|false|null"); var keywordMapper = this.createKeywordMapper({ "keyword.operator": keywordOperators, "keyword": keywords, @@ -39,72 +27,68 @@ var VHDLHighlightRules = function() { "storage.modifier": storageModifiers, "storage.type": storageType }, "identifier", true); - this.$rules = { - "start" : [ { - token : "comment", - regex : "--.*$" - }, { - token : "string", // " string - regex : '".*?"' - }, { - token : "string", // ' string - regex : "'.*?'" - }, { - token : "constant.numeric", // float - regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" - }, { - token : "keyword", // pre-compiler directives - regex : "\\s*(?:library|package|use)\\b" - }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, { - token : "keyword.operator", - regex : "&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>" - }, { - token : "punctuation.operator", - regex : "\\'|\\:|\\,|\\;|\\." - },{ - token : "paren.lparen", - regex : "[[(]" - }, { - token : "paren.rparen", - regex : "[\\])]" - }, { - token : "text", - regex : "\\s+" - } ] - - + "start": [{ + token: "comment", + regex: "--.*$" + }, { + token: "string", // " string + regex: '".*?"' + }, { + token: "string", // ' string + regex: "'.*?'" + }, { + token: "constant.numeric", // float + regex: "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" + }, { + token: "keyword", // pre-compiler directives + regex: "\\s*(?:library|package|use)\\b" + }, { + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, { + token: "keyword.operator", + regex: "&|\\*|\\+|\\-|\\/|<|=|>|\\||=>|\\*\\*|:=|\\/=|>=|<=|<>" + }, { + token: "punctuation.operator", + regex: "\\'|\\:|\\,|\\;|\\." + }, { + token: "paren.lparen", + regex: "[[(]" + }, { + token: "paren.rparen", + regex: "[\\])]" + }, { + token: "text", + regex: "\\s+" + }] }; }; - oop.inherits(VHDLHighlightRules, TextHighlightRules); - exports.VHDLHighlightRules = VHDLHighlightRules; + }); -define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var VHDLHighlightRules = require("./vhdl_highlight_rules").VHDLHighlightRules; - -var Mode = function() { +var Mode = function () { this.HighlightRules = VHDLHighlightRules; this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "--"; - this.$id = "ace/mode/vhdl"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/vhdl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-visualforce.js b/vendor/assets/javascripts/ace/mode-visualforce.js new file mode 100644 index 00000000..bc873297 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-visualforce.js @@ -0,0 +1,2394 @@ +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var JsDocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +JsDocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +JsDocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; + +}); + +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; +var JavaScriptHighlightRules = function (options) { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "__parent__|__count__|escape|unescape|with|__proto__|" + + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", + "constant.language.boolean": "true|false" + }, "identifier"); + var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; + var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex + "u[0-9a-fA-F]{4}|" + // unicode + "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode + "[0-2][0-7]{0,2}|" + // oct + "3[0-7][0-7]?|" + // oct + "[4-7][0-7]?|" + //oct + ".)"; + this.$rules = { + "no_regex": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("no_regex"), + { + token: "string", + regex: "'(?=.)", + next: "qstring" + }, { + token: "string", + regex: '"(?=.)', + next: "qqstring" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: [ + "storage.type", "punctuation.operator", "support.function", + "punctuation.operator", "entity.name.function", "text", "keyword.operator" + ], + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "keyword.operator", "text", "storage.type", + "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "entity.name.function", "text", "punctuation.operator", + "text", "storage.type", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: [ + "text", "text", "storage.type", "text", "paren.lparen" + ], + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", + next: "function_arguments" + }, { + token: "keyword", + regex: "from(?=\\s*('|\"))" + }, { + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" + }, { + token: "support.constant", + regex: /that\b/ + }, { + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ + }, { + token: keywordMapper, + regex: identifierRe + }, { + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" + }, { + token: "storage.type", + regex: /=>/, + next: "start" + }, { + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" + }, { + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" + }, { + token: "paren.lparen", + regex: /[\[({]/, + next: "start" + }, { + token: "paren.rparen", + regex: /[\])}]/ + }, { + token: "comment", + regex: /^#!.*$/ + } + ], + property: [{ + token: "text", + regex: "\\s+" + }, { + token: [ + "storage.type", "punctuation.operator", "entity.name.function", "text", + "keyword.operator", "text", + "storage.type", "text", "entity.name.function", "text", "paren.lparen" + ], + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", + next: "function_arguments" + }, { + token: "punctuation.operator", + regex: /[.](?![.])/ + }, { + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + }, { + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + }, { + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + }, { + token: "identifier", + regex: identifierRe + }, { + regex: "", + token: "empty", + next: "no_regex" + } + ], + "start": [ + DocCommentHighlightRules.getStartRule("doc-start"), + comments("start"), + { + token: "string.regexp", + regex: "\\/", + next: "regex" + }, { + token: "text", + regex: "\\s+|^$", + next: "start" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "regex": [ + { + token: "regexp.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "string.regexp", + regex: "/[sxngimy]*", + next: "no_regex" + }, { + token: "invalid", + regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ + }, { + token: "constant.language.escape", + regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ + }, { + token: "constant.language.delimiter", + regex: /\|/ + }, { + token: "constant.language.escape", + regex: /\[\^?/, + next: "regex_character_class" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp" + } + ], + "regex_character_class": [ + { + token: "regexp.charclass.keyword.operator", + regex: "\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)" + }, { + token: "constant.language.escape", + regex: "]", + next: "regex" + }, { + token: "constant.language.escape", + regex: "-" + }, { + token: "empty", + regex: "$", + next: "no_regex" + }, { + defaultToken: "string.regexp.charachterclass" + } + ], + "default_parameter": [ + { + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + }, { + token: "punctuation.operator", + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "function_arguments": [ + comments("function_arguments"), + { + token: "variable.parameter", + regex: identifierRe + }, { + token: "punctuation.operator", + regex: "," + }, { + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" + }, { + defaultToken: "string" + } + ], + "qstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: "'|$", + next: "no_regex" + }, { + defaultToken: "string" + } + ] + }; + if (!options || !options.noES6) { + this.$rules.no_regex.unshift({ + regex: "[{}]", onMatch: function (val, state, stack) { + this.next = val == "{" ? this.nextState : ""; + if (val == "{" && stack.length) { + stack.unshift("start", state); + } + else if (val == "}" && stack.length) { + stack.shift(); + this.next = stack.shift(); + if (this.next.indexOf("string") != -1 || this.next.indexOf("jsx") != -1) + return "paren.quasi.end"; + } + return val == "{" ? "paren.lparen" : "paren.rparen"; + }, + nextState: "start" + }, { + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" + }); + if (!options || options.jsx != false) + JSX.call(this); + } + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); + this.normalizeRules(); +}; +oop.inherits(JavaScriptHighlightRules, TextHighlightRules); +function JSX() { + var tagRegex = identifierRe.replace("\\d", "\\d\\-"); + var jsxTag = { + onMatch: function (val, state, stack) { + var offset = val.charAt(1) == "/" ? 2 : 1; + if (offset == 1) { + if (state != this.nextState) + stack.unshift(this.next, this.nextState, 0); + else + stack.unshift(this.next); + stack[2]++; + } + else if (offset == 2) { + if (state == this.nextState) { + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.shift(); + stack.shift(); + } + } + } + return [{ + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; + }, + regex: "", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } + } + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" + }, + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag + ]; + this.$rules.reference = [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; +} +function comments(next) { + return [ + { + token: "comment", // multi line comment + regex: /\/\*/, + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "comment", + regex: "\\/\\/", + next: [ + DocCommentHighlightRules.getTagRule(), + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + } + ]; +} +exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + +}); + +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; +var Range = require("../range").Range; +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) + return false; + return /^\s*\}/.test(input); + }; + this.autoOutdent = function (doc, row) { + var line = doc.getLine(row); + var match = line.match(/^(\s*\})/); + if (!match) + return 0; + var column = match[1].length; + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; + var indent = this.$getIndent(doc.getLine(openBracePos.row)); + doc.replace(new Range(row, 0, row, column - 1), indent); + }; + this.$getIndent = function (line) { + return line.match(/^\s*/)[0]; + }; +}).call(MatchingBraceOutdent.prototype); +exports.MatchingBraceOutdent = MatchingBraceOutdent; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = JavaScriptHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CstyleBehaviour(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokenizedLine = this.getTokenizer().getLineTokens(line, state); + var tokens = tokenizedLine.tokens; + var endState = tokenizedLine.state; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + if (state == "start" || state == "no_regex") { + var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); + if (match) { + indent += tab; + } + } + else if (state == "doc-start") { + if (endState == "start" || endState == "no_regex") { + return ""; + } + var match = line.match(/^\s*(\/?)\*/); + if (match) { + if (match[1]) { + indent += " "; + } + indent += "* "; + } + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; +var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; +var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; +var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; +var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; +var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; +var CssHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "support.function": supportFunction, + "support.constant": supportConstant, + "support.type": supportType, + "support.constant.color": supportConstantColor, + "support.constant.fonts": supportConstantFonts + }, "text", true); + this.$rules = { + "start": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" + }, { + token: "string", + regex: "@(?!viewport)", + next: "media" + }, { + token: "keyword", + regex: "#[a-z0-9-_]+" + }, { + token: "keyword", + regex: "%" + }, { + token: "variable", + regex: "\\.[a-z0-9-_]+" + }, { + token: "string", + regex: ":[a-z0-9-_]+" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant", + regex: "[a-z0-9-_]+" + }, { + caseInsensitive: true + }], + "media": [{ + include: ["strings", "url", "comments"] + }, { + token: "paren.lparen", + regex: "\\{", + next: "start" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + token: "string", + regex: ";", + next: "start" + }, { + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" + }], + "comments": [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token: "comment", + regex: "\\*\\/", + next: "pop" + }, { + defaultToken: "comment" + }] + }], + "ruleset": [{ + regex: "-(webkit|ms|moz|o)-", + token: "text" + }, { + token: "punctuation.operator", + regex: "[:;]" + }, { + token: "paren.rparen", + regex: "\\}", + next: "start" + }, { + include: ["strings", "url", "comments"] + }, { + token: ["constant.numeric", "keyword"], + regex: "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)" + }, { + token: "constant.numeric", + regex: numRe + }, { + token: "constant.numeric", // hex6 color + regex: "#[a-f0-9]{6}" + }, { + token: "constant.numeric", // hex3 color + regex: "#[a-f0-9]{3}" + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-element.css"], + regex: pseudoElements + }, { + token: ["punctuation", "entity.other.attribute-name.pseudo-class.css"], + regex: pseudoClasses + }, { + include: "url" + }, { + token: keywordMapper, + regex: "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" + }, { + caseInsensitive: true + }], + url: [{ + token: "support.function", + regex: "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token: "support.function", + regex: "\\)", + next: "pop" + }, { + defaultToken: "string" + }] + }], + strings: [{ + token: "string.start", + regex: "'", + push: [{ + token: "string.end", + regex: "'|$", + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token: "string.start", + regex: '"', + push: [{ + token: "string.end", + regex: '"|$', + next: "pop" + }, { + include: "escapes" + }, { + token: "constant.language.escape", + regex: /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token: "constant.language.escape", + regex: /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ + }] + }; + this.normalizeRules(); +}; +oop.inherits(CssHighlightRules, TextHighlightRules); +exports.CssHighlightRules = CssHighlightRules; + +}); + +define("ace/mode/css_completions",["require","exports","module"], function(require, exports, module){"use strict"; +var propertyMap = { + "background": { "#$0": 1 }, + "background-color": { "#$0": 1, "transparent": 1, "fixed": 1 }, + "background-image": { "url('/$0')": 1 }, + "background-repeat": { "repeat": 1, "repeat-x": 1, "repeat-y": 1, "no-repeat": 1, "inherit": 1 }, + "background-position": { "bottom": 2, "center": 2, "left": 2, "right": 2, "top": 2, "inherit": 2 }, + "background-attachment": { "scroll": 1, "fixed": 1 }, + "background-size": { "cover": 1, "contain": 1 }, + "background-clip": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "background-origin": { "border-box": 1, "padding-box": 1, "content-box": 1 }, + "border": { "solid $0": 1, "dashed $0": 1, "dotted $0": 1, "#$0": 1 }, + "border-color": { "#$0": 1 }, + "border-style": { "solid": 2, "dashed": 2, "dotted": 2, "double": 2, "groove": 2, "hidden": 2, "inherit": 2, "inset": 2, "none": 2, "outset": 2, "ridged": 2 }, + "border-collapse": { "collapse": 1, "separate": 1 }, + "bottom": { "px": 1, "em": 1, "%": 1 }, + "clear": { "left": 1, "right": 1, "both": 1, "none": 1 }, + "color": { "#$0": 1, "rgb(#$00,0,0)": 1 }, + "cursor": { "default": 1, "pointer": 1, "move": 1, "text": 1, "wait": 1, "help": 1, "progress": 1, "n-resize": 1, "ne-resize": 1, "e-resize": 1, "se-resize": 1, "s-resize": 1, "sw-resize": 1, "w-resize": 1, "nw-resize": 1 }, + "display": { "none": 1, "block": 1, "inline": 1, "inline-block": 1, "table-cell": 1 }, + "empty-cells": { "show": 1, "hide": 1 }, + "float": { "left": 1, "right": 1, "none": 1 }, + "font-family": { "Arial": 2, "Comic Sans MS": 2, "Consolas": 2, "Courier New": 2, "Courier": 2, "Georgia": 2, "Monospace": 2, "Sans-Serif": 2, "Segoe UI": 2, "Tahoma": 2, "Times New Roman": 2, "Trebuchet MS": 2, "Verdana": 1 }, + "font-size": { "px": 1, "em": 1, "%": 1 }, + "font-weight": { "bold": 1, "normal": 1 }, + "font-style": { "italic": 1, "normal": 1 }, + "font-variant": { "normal": 1, "small-caps": 1 }, + "height": { "px": 1, "em": 1, "%": 1 }, + "left": { "px": 1, "em": 1, "%": 1 }, + "letter-spacing": { "normal": 1 }, + "line-height": { "normal": 1 }, + "list-style-type": { "none": 1, "disc": 1, "circle": 1, "square": 1, "decimal": 1, "decimal-leading-zero": 1, "lower-roman": 1, "upper-roman": 1, "lower-greek": 1, "lower-latin": 1, "upper-latin": 1, "georgian": 1, "lower-alpha": 1, "upper-alpha": 1 }, + "margin": { "px": 1, "em": 1, "%": 1 }, + "margin-right": { "px": 1, "em": 1, "%": 1 }, + "margin-left": { "px": 1, "em": 1, "%": 1 }, + "margin-top": { "px": 1, "em": 1, "%": 1 }, + "margin-bottom": { "px": 1, "em": 1, "%": 1 }, + "max-height": { "px": 1, "em": 1, "%": 1 }, + "max-width": { "px": 1, "em": 1, "%": 1 }, + "min-height": { "px": 1, "em": 1, "%": 1 }, + "min-width": { "px": 1, "em": 1, "%": 1 }, + "overflow": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-x": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "overflow-y": { "hidden": 1, "visible": 1, "auto": 1, "scroll": 1 }, + "padding": { "px": 1, "em": 1, "%": 1 }, + "padding-top": { "px": 1, "em": 1, "%": 1 }, + "padding-right": { "px": 1, "em": 1, "%": 1 }, + "padding-bottom": { "px": 1, "em": 1, "%": 1 }, + "padding-left": { "px": 1, "em": 1, "%": 1 }, + "page-break-after": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "page-break-before": { "auto": 1, "always": 1, "avoid": 1, "left": 1, "right": 1 }, + "position": { "absolute": 1, "relative": 1, "fixed": 1, "static": 1 }, + "right": { "px": 1, "em": 1, "%": 1 }, + "table-layout": { "fixed": 1, "auto": 1 }, + "text-decoration": { "none": 1, "underline": 1, "line-through": 1, "blink": 1 }, + "text-align": { "left": 1, "right": 1, "center": 1, "justify": 1 }, + "text-transform": { "capitalize": 1, "uppercase": 1, "lowercase": 1, "none": 1 }, + "top": { "px": 1, "em": 1, "%": 1 }, + "vertical-align": { "top": 1, "bottom": 1 }, + "visibility": { "hidden": 1, "visible": 1 }, + "white-space": { "nowrap": 1, "normal": 1, "pre": 1, "pre-line": 1, "pre-wrap": 1 }, + "width": { "px": 1, "em": 1, "%": 1 }, + "word-spacing": { "normal": 1 }, + "filter": { "alpha(opacity=$0100)": 1 }, + "text-shadow": { "$02px 2px 2px #777": 1 }, + "text-overflow": { "ellipsis-word": 1, "clip": 1, "ellipsis": 1 }, + "-moz-border-radius": 1, + "-moz-border-radius-topright": 1, + "-moz-border-radius-bottomright": 1, + "-moz-border-radius-topleft": 1, + "-moz-border-radius-bottomleft": 1, + "-webkit-border-radius": 1, + "-webkit-border-top-right-radius": 1, + "-webkit-border-top-left-radius": 1, + "-webkit-border-bottom-right-radius": 1, + "-webkit-border-bottom-left-radius": 1, + "-moz-box-shadow": 1, + "-webkit-box-shadow": 1, + "transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-moz-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 }, + "-webkit-transform": { "rotate($00deg)": 1, "skew($00deg)": 1 } +}; +var CssCompletions = function () { +}; +(function () { + this.completionsDefined = false; + this.defineCompletions = function () { + if (document) { + var style = document.createElement('c').style; + for (var i in style) { + if (typeof style[i] !== 'string') + continue; + var name = i.replace(/[A-Z]/g, function (x) { + return '-' + x.toLowerCase(); + }); + if (!propertyMap.hasOwnProperty(name)) + propertyMap[name] = 1; + } + } + this.completionsDefined = true; + }; + this.getCompletions = function (state, session, pos, prefix) { + if (!this.completionsDefined) { + this.defineCompletions(); + } + if (state === 'ruleset' || session.$mode.$id == "ace/mode/scss") { + var line = session.getLine(pos.row).substr(0, pos.column); + var inParens = /\([^)]*$/.test(line); + if (inParens) { + line = line.substr(line.lastIndexOf('(') + 1); + } + if (/:[^;]+$/.test(line)) { + /([\w\-]+):[^:]*$/.test(line); + return this.getPropertyValueCompletions(state, session, pos, prefix); + } + else { + return this.getPropertyCompletions(state, session, pos, prefix, inParens); + } + } + return []; + }; + this.getPropertyCompletions = function (state, session, pos, prefix, skipSemicolon) { + skipSemicolon = skipSemicolon || false; + var properties = Object.keys(propertyMap); + return properties.map(function (property) { + return { + caption: property, + snippet: property + ': $0' + (skipSemicolon ? '' : ';'), + meta: "property", + score: 1000000 + }; + }); + }; + this.getPropertyValueCompletions = function (state, session, pos, prefix) { + var line = session.getLine(pos.row).substr(0, pos.column); + var property = (/([\w\-]+):[^:]*$/.exec(line) || {})[1]; + if (!property) + return []; + var values = []; + if (property in propertyMap && typeof propertyMap[property] === "object") { + values = Object.keys(propertyMap[property]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "property value", + score: 1000000 + }; + }); + }; +}).call(CssCompletions.prototype); +exports.CssCompletions = CssCompletions; + +}); + +define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var CstyleBehaviour = require("./cstyle").CstyleBehaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var CssBehaviour = function () { + this.inherit(CstyleBehaviour); + this.add("colon", "insertion", function (state, action, editor, session, text) { + if (text === ':' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ':') { + return { + text: '', + selection: [1, 1] + }; + } + if (/^(\s+[^;]|\s*$)/.test(line.substring(cursor.column))) { + return { + text: ':;', + selection: [1, 1] + }; + } + } + } + }); + this.add("colon", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && selected === ':') { + var cursor = editor.getCursorPosition(); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.value.match(/\s+/)) { + token = iterator.stepBackward(); + } + if (token && token.type === 'support.type') { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.end.column, range.end.column + 1); + if (rightChar === ';') { + range.end.column++; + return range; + } + } + } + }); + this.add("semicolon", "insertion", function (state, action, editor, session, text) { + if (text === ';' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + if (rightChar === ';') { + return { + text: '', + selection: [1, 1] + }; + } + } + }); + this.add("!important", "insertion", function (state, action, editor, session, text) { + if (text === '!' && editor.selection.isEmpty()) { + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + if (/^\s*(;|}|$)/.test(line.substring(cursor.column))) { + return { + text: '!important', + selection: [10, 10] + }; + } + } + }); +}; +oop.inherits(CssBehaviour, CstyleBehaviour); +exports.CssBehaviour = CssBehaviour; + +}); + +define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var CssCompletions = require("./css_completions").CssCompletions; +var CssBehaviour = require("./behaviour/css").CssBehaviour; +var CStyleFoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = CssHighlightRules; + this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = new CssBehaviour(); + this.$completer = new CssCompletions(); + this.foldingRules = new CStyleFoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.foldingRules = "cStyle"; + this.blockComment = { start: "/*", end: "*/" }; + this.getNextLineIndent = function (state, line, tab) { + var indent = this.$getIndent(line); + var tokens = this.getTokenizer().getLineTokens(line, state).tokens; + if (tokens.length && tokens[tokens.length - 1].type == "comment") { + return indent; + } + var match = line.match(/^.*\{\s*$/); + if (match) { + indent += tab; + } + return indent; + }; + this.checkOutdent = function (state, line, input) { + return this.$outdent.checkOutdent(line, input); + }; + this.autoOutdent = function (state, doc, row) { + this.$outdent.autoOutdent(doc, row); + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/css_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/css"; + this.snippetFileId = "ace/snippets/css"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var XmlHighlightRules = function (normalize) { + var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; + this.$rules = { + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, + { + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" + }, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, + { + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true + }, + { include: "tag" }, + { token: "text.end-tag-open.xml", regex: "", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } + ], + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } + ], + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } + ], + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } + ], + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } + ], + string: [{ + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], + attributes: [{ + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], + attribute_value: [{ + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] + }; + if (this.constructor === XmlHighlightRules) + this.normalizeRules(); +}; +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { + this.$rules.tag.unshift({ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", + next: [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } + ] + }); + this.$rules[tag + "-end"] = [ + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { + stack.splice(0); + return this.token; + } } + ]; + this.embedRules(HighlightRules, prefix, [{ + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); + }; +}).call(TextHighlightRules.prototype); +oop.inherits(XmlHighlightRules, TextHighlightRules); +exports.XmlHighlightRules = XmlHighlightRules; + +}); + +define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var CssHighlightRules = require("./css_highlight_rules").CssHighlightRules; +var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; +var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; +var tagMap = lang.createMap({ + a: 'anchor', + button: 'form', + form: 'form', + img: 'image', + input: 'form', + label: 'form', + option: 'form', + script: 'script', + select: 'form', + textarea: 'form', + style: 'style', + table: 'table', + tbody: 'table', + td: 'table', + tfoot: 'table', + th: 'table', + tr: 'table' +}); +var HtmlHighlightRules = function () { + XmlHighlightRules.call(this); + this.addRules({ + attributes: [{ + include: "tag_whitespace" + }, { + token: "entity.other.attribute-name.xml", + regex: "[-_a-zA-Z0-9:.]+" + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=", + push: [{ + include: "tag_whitespace" + }, { + token: "string.unquoted.attribute-value.html", + regex: "[^<>='\"`\\s]+", + next: "pop" + }, { + token: "empty", + regex: "", + next: "pop" + }] + }, { + include: "attribute_value" + }], + tag: [{ + token: function (start, tag) { + var group = tagMap[tag]; + return ["meta.tag.punctuation." + (start == "<" ? "" : "end-") + "tag-open.xml", + "meta.tag" + (group ? "." + group : "") + ".tag-name.xml"]; + }, + regex: "(", next: "start" } + ] + }); + this.embedTagRules(CssHighlightRules, "css-", "style"); + this.embedTagRules(new JavaScriptHighlightRules({ jsx: false }).getRules(), "js-", "script"); + if (this.constructor === HtmlHighlightRules) + this.normalizeRules(); +}; +oop.inherits(HtmlHighlightRules, XmlHighlightRules); +exports.HtmlHighlightRules = HtmlHighlightRules; + +}); + +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Behaviour = require("../behaviour").Behaviour; +var TokenIterator = require("../../token_iterator").TokenIterator; +var lang = require("../../lib/lang"); +function is(token, type) { + return token && token.type.lastIndexOf(type + ".xml") > -1; +} +var XmlBehaviour = function () { + this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { + if (text == '"' || text == "'") { + var quote = text; + var selected = session.doc.getTextRange(editor.getSelectionRange()); + if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + return { + text: quote + selected + quote, + selection: false + }; + } + var cursor = editor.getCursorPosition(); + var line = session.doc.getLine(cursor.row); + var rightChar = line.substring(cursor.column, cursor.column + 1); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { + return { + text: "", + selection: [1, 1] + }; + } + if (!token) + token = iterator.stepBackward(); + if (!token) + return; + while (is(token, "tag-whitespace") || is(token, "whitespace")) { + token = iterator.stepBackward(); + } + var rightSpace = !rightChar || rightChar.match(/\s/); + if (is(token, "attribute-equals") && (rightSpace || rightChar == '>') || (is(token, "decl-attribute-equals") && (rightSpace || rightChar == '?'))) { + return { + text: quote + quote, + selection: [1, 1] + }; + } + } + }); + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { + var selected = session.doc.getTextRange(range); + if (!range.isMultiLine() && (selected == '"' || selected == "'")) { + var line = session.doc.getLine(range.start.row); + var rightChar = line.substring(range.start.column + 1, range.start.column + 2); + if (rightChar == selected) { + range.end.column++; + return range; + } + } + }); + this.add("autoclosing", "insertion", function (state, action, editor, session, text) { + if (text == '>') { + var position = editor.getSelectionRange().start; + var iterator = new TokenIterator(session, position.row, position.column); + var token = iterator.getCurrentToken() || iterator.stepBackward(); + if (!token || !(is(token, "tag-name") || is(token, "tag-whitespace") || is(token, "attribute-name") || is(token, "attribute-equals") || is(token, "attribute-value"))) + return; + if (is(token, "reference.attribute-value")) + return; + if (is(token, "attribute-value")) { + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) + return; + iterator.stepBackward(); + } + } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; + while (!is(token, "tag-name")) { + token = iterator.stepBackward(); + if (token.value == "<") { + token = iterator.stepForward(); + break; + } + } + var tokenRow = iterator.getCurrentTokenRow(); + var tokenColumn = iterator.getCurrentTokenColumn(); + if (is(iterator.stepBackward(), "end-tag-open")) + return; + var element = token.value; + if (tokenRow == position.row) + element = element.substring(0, position.column - tokenColumn); + if (this.voidElements.hasOwnProperty(element.toLowerCase())) + return; + return { + text: ">" + "", + selection: [1, 1] + }; + } + }); + this.add("autoindent", "insertion", function (state, action, editor, session, text) { + if (text == "\n") { + var cursor = editor.getCursorPosition(); + var line = session.getLine(cursor.row); + var iterator = new TokenIterator(session, cursor.row, cursor.column); + var token = iterator.getCurrentToken(); + if (token && token.type.indexOf("tag-close") !== -1) { + if (token.value == "/>") + return; + while (token && token.type.indexOf("tag-name") === -1) { + token = iterator.stepBackward(); + } + if (!token) { + return; + } + var tag = token.value; + var row = iterator.getCurrentTokenRow(); + token = iterator.stepBackward(); + if (!token || token.type.indexOf("end-tag") !== -1) { + return; + } + if (this.voidElements && !this.voidElements[tag]) { + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); + var line = session.getLine(row); + var nextIndent = this.$getIndent(line); + var indent = nextIndent + session.getTabString(); + if (nextToken && nextToken.value === " -1; +} +(function () { + this.getFoldWidget = function (session, foldStyle, row) { + var tag = this._getFirstTagInLine(session, row); + if (!tag) + return this.getCommentFoldWidget(session, row); + if (tag.closing || (!tag.tagName && tag.selfClosing)) + return foldStyle === "markbeginend" ? "end" : ""; + if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) + return ""; + if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) + return ""; + return "start"; + }; + this.getCommentFoldWidget = function (session, row) { + if (/comment/.test(session.getState(row)) && /'; + break; + } + } + return tag; + } + else if (is(token, "tag-close")) { + tag.selfClosing = token.value == '/>'; + return tag; + } + tag.start.column += token.value.length; + } + return null; + }; + this._findEndTagInLine = function (session, row, tagName, startColumn) { + var tokens = session.getTokens(row); + var column = 0; + for (var i = 0; i < tokens.length; i++) { + var token = tokens[i]; + column += token.value.length; + if (column < startColumn) + continue; + if (is(token, "end-tag-open")) { + token = tokens[i + 1]; + if (token && token.value == tagName) + return true; + } + } + return false; + }; + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); + } + else { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var MixedFoldMode = require("./mixed").FoldMode; +var XmlFoldMode = require("./xml").FoldMode; +var CStyleFoldMode = require("./cstyle").FoldMode; +var FoldMode = exports.FoldMode = function (voidElements, optionalTags) { + MixedFoldMode.call(this, new XmlFoldMode(voidElements, optionalTags), { + "js-": new CStyleFoldMode(), + "css-": new CStyleFoldMode() + }); +}; +oop.inherits(FoldMode, MixedFoldMode); + +}); + +define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"], function(require, exports, module){"use strict"; +var TokenIterator = require("../token_iterator").TokenIterator; +var commonAttributes = [ + "accesskey", + "class", + "contenteditable", + "contextmenu", + "dir", + "draggable", + "dropzone", + "hidden", + "id", + "inert", + "itemid", + "itemprop", + "itemref", + "itemscope", + "itemtype", + "lang", + "spellcheck", + "style", + "tabindex", + "title", + "translate" +]; +var eventAttributes = [ + "onabort", + "onblur", + "oncancel", + "oncanplay", + "oncanplaythrough", + "onchange", + "onclick", + "onclose", + "oncontextmenu", + "oncuechange", + "ondblclick", + "ondrag", + "ondragend", + "ondragenter", + "ondragleave", + "ondragover", + "ondragstart", + "ondrop", + "ondurationchange", + "onemptied", + "onended", + "onerror", + "onfocus", + "oninput", + "oninvalid", + "onkeydown", + "onkeypress", + "onkeyup", + "onload", + "onloadeddata", + "onloadedmetadata", + "onloadstart", + "onmousedown", + "onmousemove", + "onmouseout", + "onmouseover", + "onmouseup", + "onmousewheel", + "onpause", + "onplay", + "onplaying", + "onprogress", + "onratechange", + "onreset", + "onscroll", + "onseeked", + "onseeking", + "onselect", + "onshow", + "onstalled", + "onsubmit", + "onsuspend", + "ontimeupdate", + "onvolumechange", + "onwaiting" +]; +var globalAttributes = commonAttributes.concat(eventAttributes); +var attributeMap = { + "a": { "href": 1, "target": { "_blank": 1, "top": 1 }, "ping": 1, "rel": { "nofollow": 1, "alternate": 1, "author": 1, "bookmark": 1, "help": 1, "license": 1, "next": 1, "noreferrer": 1, "prefetch": 1, "prev": 1, "search": 1, "tag": 1 }, "media": 1, "hreflang": 1, "type": 1 }, + "abbr": {}, + "address": {}, + "area": { "shape": 1, "coords": 1, "href": 1, "hreflang": 1, "alt": 1, "target": 1, "media": 1, "rel": 1, "ping": 1, "type": 1 }, + "article": { "pubdate": 1 }, + "aside": {}, + "audio": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "b": {}, + "base": { "href": 1, "target": 1 }, + "bdi": {}, + "bdo": {}, + "blockquote": { "cite": 1 }, + "body": { "onafterprint": 1, "onbeforeprint": 1, "onbeforeunload": 1, "onhashchange": 1, "onmessage": 1, "onoffline": 1, "onpopstate": 1, "onredo": 1, "onresize": 1, "onstorage": 1, "onundo": 1, "onunload": 1 }, + "br": {}, + "button": { "autofocus": 1, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": 1, "formmethod": 1, "formnovalidate": 1, "formtarget": 1, "name": 1, "value": 1, "type": { "button": 1, "submit": 1 } }, + "canvas": { "width": 1, "height": 1 }, + "caption": {}, + "cite": {}, + "code": {}, + "col": { "span": 1 }, + "colgroup": { "span": 1 }, + "command": { "type": 1, "label": 1, "icon": 1, "disabled": 1, "checked": 1, "radiogroup": 1, "command": 1 }, + "data": {}, + "datalist": {}, + "dd": {}, + "del": { "cite": 1, "datetime": 1 }, + "details": { "open": 1 }, + "dfn": {}, + "dialog": { "open": 1 }, + "div": {}, + "dl": {}, + "dt": {}, + "em": {}, + "embed": { "src": 1, "height": 1, "width": 1, "type": 1 }, + "fieldset": { "disabled": 1, "form": 1, "name": 1 }, + "figcaption": {}, + "figure": {}, + "footer": {}, + "form": { "accept-charset": 1, "action": 1, "autocomplete": 1, "enctype": { "multipart/form-data": 1, "application/x-www-form-urlencoded": 1 }, "method": { "get": 1, "post": 1 }, "name": 1, "novalidate": 1, "target": { "_blank": 1, "top": 1 } }, + "h1": {}, + "h2": {}, + "h3": {}, + "h4": {}, + "h5": {}, + "h6": {}, + "head": {}, + "header": {}, + "hr": {}, + "html": { "manifest": 1 }, + "i": {}, + "iframe": { "name": 1, "src": 1, "height": 1, "width": 1, "sandbox": { "allow-same-origin": 1, "allow-top-navigation": 1, "allow-forms": 1, "allow-scripts": 1 }, "seamless": { "seamless": 1 } }, + "img": { "alt": 1, "src": 1, "height": 1, "width": 1, "usemap": 1, "ismap": 1 }, + "input": { + "type": { "text": 1, "password": 1, "hidden": 1, "checkbox": 1, "submit": 1, "radio": 1, "file": 1, "button": 1, "reset": 1, "image": 31, "color": 1, "date": 1, "datetime": 1, "datetime-local": 1, "email": 1, "month": 1, "number": 1, "range": 1, "search": 1, "tel": 1, "time": 1, "url": 1, "week": 1 }, + "accept": 1, "alt": 1, "autocomplete": { "on": 1, "off": 1 }, "autofocus": { "autofocus": 1 }, "checked": { "checked": 1 }, "disabled": { "disabled": 1 }, "form": 1, "formaction": 1, "formenctype": { "application/x-www-form-urlencoded": 1, "multipart/form-data": 1, "text/plain": 1 }, "formmethod": { "get": 1, "post": 1 }, "formnovalidate": { "formnovalidate": 1 }, "formtarget": { "_blank": 1, "_self": 1, "_parent": 1, "_top": 1 }, "height": 1, "list": 1, "max": 1, "maxlength": 1, "min": 1, "multiple": { "multiple": 1 }, "name": 1, "pattern": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "size": 1, "src": 1, "step": 1, "width": 1, "files": 1, "value": 1 + }, + "ins": { "cite": 1, "datetime": 1 }, + "kbd": {}, + "keygen": { "autofocus": 1, "challenge": { "challenge": 1 }, "disabled": { "disabled": 1 }, "form": 1, "keytype": { "rsa": 1, "dsa": 1, "ec": 1 }, "name": 1 }, + "label": { "form": 1, "for": 1 }, + "legend": {}, + "li": { "value": 1 }, + "link": { "href": 1, "hreflang": 1, "rel": { "stylesheet": 1, "icon": 1 }, "media": { "all": 1, "screen": 1, "print": 1 }, "type": { "text/css": 1, "image/png": 1, "image/jpeg": 1, "image/gif": 1 }, "sizes": 1 }, + "main": {}, + "map": { "name": 1 }, + "mark": {}, + "math": {}, + "menu": { "type": 1, "label": 1 }, + "meta": { "http-equiv": { "content-type": 1 }, "name": { "description": 1, "keywords": 1 }, "content": { "text/html; charset=UTF-8": 1 }, "charset": 1 }, + "meter": { "value": 1, "min": 1, "max": 1, "low": 1, "high": 1, "optimum": 1 }, + "nav": {}, + "noscript": { "href": 1 }, + "object": { "param": 1, "data": 1, "type": 1, "height": 1, "width": 1, "usemap": 1, "name": 1, "form": 1, "classid": 1 }, + "ol": { "start": 1, "reversed": 1 }, + "optgroup": { "disabled": 1, "label": 1 }, + "option": { "disabled": 1, "selected": 1, "label": 1, "value": 1 }, + "output": { "for": 1, "form": 1, "name": 1 }, + "p": {}, + "param": { "name": 1, "value": 1 }, + "pre": {}, + "progress": { "value": 1, "max": 1 }, + "q": { "cite": 1 }, + "rp": {}, + "rt": {}, + "ruby": {}, + "s": {}, + "samp": {}, + "script": { "charset": 1, "type": { "text/javascript": 1 }, "src": 1, "defer": 1, "async": 1 }, + "select": { "autofocus": 1, "disabled": 1, "form": 1, "multiple": { "multiple": 1 }, "name": 1, "size": 1, "readonly": { "readonly": 1 } }, + "small": {}, + "source": { "src": 1, "type": 1, "media": 1 }, + "span": {}, + "strong": {}, + "style": { "type": 1, "media": { "all": 1, "screen": 1, "print": 1 }, "scoped": 1 }, + "sub": {}, + "sup": {}, + "svg": {}, + "table": { "summary": 1 }, + "tbody": {}, + "td": { "headers": 1, "rowspan": 1, "colspan": 1 }, + "textarea": { "autofocus": { "autofocus": 1 }, "disabled": { "disabled": 1 }, "form": 1, "maxlength": 1, "name": 1, "placeholder": 1, "readonly": { "readonly": 1 }, "required": { "required": 1 }, "rows": 1, "cols": 1, "wrap": { "on": 1, "off": 1, "hard": 1, "soft": 1 } }, + "tfoot": {}, + "th": { "headers": 1, "rowspan": 1, "colspan": 1, "scope": 1 }, + "thead": {}, + "time": { "datetime": 1 }, + "title": {}, + "tr": {}, + "track": { "kind": 1, "src": 1, "srclang": 1, "label": 1, "default": 1 }, + "section": {}, + "summary": {}, + "u": {}, + "ul": {}, + "var": {}, + "video": { "src": 1, "autobuffer": 1, "autoplay": { "autoplay": 1 }, "loop": { "loop": 1 }, "controls": { "controls": 1 }, "width": 1, "height": 1, "poster": 1, "muted": { "muted": 1 }, "preload": { "auto": 1, "metadata": 1, "none": 1 } }, + "wbr": {} +}; +var elements = Object.keys(attributeMap); +function is(token, type) { + return token.type.lastIndexOf(type + ".xml") > -1; +} +function findTagName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "tag-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +function findAttributeName(session, pos) { + var iterator = new TokenIterator(session, pos.row, pos.column); + var token = iterator.getCurrentToken(); + while (token && !is(token, "attribute-name")) { + token = iterator.stepBackward(); + } + if (token) + return token.value; +} +var HtmlCompletions = function () { +}; +(function () { + this.getCompletions = function (state, session, pos, prefix) { + var token = session.getTokenAt(pos.row, pos.column); + if (!token) + return []; + if (is(token, "tag-name") || is(token, "tag-open") || is(token, "end-tag-open")) + return this.getTagCompletions(state, session, pos, prefix); + if (is(token, "tag-whitespace") || is(token, "attribute-name")) + return this.getAttributeCompletions(state, session, pos, prefix); + if (is(token, "attribute-value")) + return this.getAttributeValueCompletions(state, session, pos, prefix); + var line = session.getLine(pos.row).substr(0, pos.column); + if (/&[a-z]*$/i.test(line)) + return this.getHTMLEntityCompletions(state, session, pos, prefix); + return []; + }; + this.getTagCompletions = function (state, session, pos, prefix) { + return elements.map(function (element) { + return { + value: element, + meta: "tag", + score: 1000000 + }; + }); + }; + this.getAttributeCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + if (!tagName) + return []; + var attributes = globalAttributes; + if (tagName in attributeMap) { + attributes = attributes.concat(Object.keys(attributeMap[tagName])); + } + return attributes.map(function (attribute) { + return { + caption: attribute, + snippet: attribute + '="$0"', + meta: "attribute", + score: 1000000 + }; + }); + }; + this.getAttributeValueCompletions = function (state, session, pos, prefix) { + var tagName = findTagName(session, pos); + var attributeName = findAttributeName(session, pos); + if (!tagName) + return []; + var values = []; + if (tagName in attributeMap && attributeName in attributeMap[tagName] && typeof attributeMap[tagName][attributeName] === "object") { + values = Object.keys(attributeMap[tagName][attributeName]); + } + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "attribute value", + score: 1000000 + }; + }); + }; + this.getHTMLEntityCompletions = function (state, session, pos, prefix) { + var values = ['Aacute;', 'aacute;', 'Acirc;', 'acirc;', 'acute;', 'AElig;', 'aelig;', 'Agrave;', 'agrave;', 'alefsym;', 'Alpha;', 'alpha;', 'amp;', 'and;', 'ang;', 'Aring;', 'aring;', 'asymp;', 'Atilde;', 'atilde;', 'Auml;', 'auml;', 'bdquo;', 'Beta;', 'beta;', 'brvbar;', 'bull;', 'cap;', 'Ccedil;', 'ccedil;', 'cedil;', 'cent;', 'Chi;', 'chi;', 'circ;', 'clubs;', 'cong;', 'copy;', 'crarr;', 'cup;', 'curren;', 'Dagger;', 'dagger;', 'dArr;', 'darr;', 'deg;', 'Delta;', 'delta;', 'diams;', 'divide;', 'Eacute;', 'eacute;', 'Ecirc;', 'ecirc;', 'Egrave;', 'egrave;', 'empty;', 'emsp;', 'ensp;', 'Epsilon;', 'epsilon;', 'equiv;', 'Eta;', 'eta;', 'ETH;', 'eth;', 'Euml;', 'euml;', 'euro;', 'exist;', 'fnof;', 'forall;', 'frac12;', 'frac14;', 'frac34;', 'frasl;', 'Gamma;', 'gamma;', 'ge;', 'gt;', 'hArr;', 'harr;', 'hearts;', 'hellip;', 'Iacute;', 'iacute;', 'Icirc;', 'icirc;', 'iexcl;', 'Igrave;', 'igrave;', 'image;', 'infin;', 'int;', 'Iota;', 'iota;', 'iquest;', 'isin;', 'Iuml;', 'iuml;', 'Kappa;', 'kappa;', 'Lambda;', 'lambda;', 'lang;', 'laquo;', 'lArr;', 'larr;', 'lceil;', 'ldquo;', 'le;', 'lfloor;', 'lowast;', 'loz;', 'lrm;', 'lsaquo;', 'lsquo;', 'lt;', 'macr;', 'mdash;', 'micro;', 'middot;', 'minus;', 'Mu;', 'mu;', 'nabla;', 'nbsp;', 'ndash;', 'ne;', 'ni;', 'not;', 'notin;', 'nsub;', 'Ntilde;', 'ntilde;', 'Nu;', 'nu;', 'Oacute;', 'oacute;', 'Ocirc;', 'ocirc;', 'OElig;', 'oelig;', 'Ograve;', 'ograve;', 'oline;', 'Omega;', 'omega;', 'Omicron;', 'omicron;', 'oplus;', 'or;', 'ordf;', 'ordm;', 'Oslash;', 'oslash;', 'Otilde;', 'otilde;', 'otimes;', 'Ouml;', 'ouml;', 'para;', 'part;', 'permil;', 'perp;', 'Phi;', 'phi;', 'Pi;', 'pi;', 'piv;', 'plusmn;', 'pound;', 'Prime;', 'prime;', 'prod;', 'prop;', 'Psi;', 'psi;', 'quot;', 'radic;', 'rang;', 'raquo;', 'rArr;', 'rarr;', 'rceil;', 'rdquo;', 'real;', 'reg;', 'rfloor;', 'Rho;', 'rho;', 'rlm;', 'rsaquo;', 'rsquo;', 'sbquo;', 'Scaron;', 'scaron;', 'sdot;', 'sect;', 'shy;', 'Sigma;', 'sigma;', 'sigmaf;', 'sim;', 'spades;', 'sub;', 'sube;', 'sum;', 'sup;', 'sup1;', 'sup2;', 'sup3;', 'supe;', 'szlig;', 'Tau;', 'tau;', 'there4;', 'Theta;', 'theta;', 'thetasym;', 'thinsp;', 'THORN;', 'thorn;', 'tilde;', 'times;', 'trade;', 'Uacute;', 'uacute;', 'uArr;', 'uarr;', 'Ucirc;', 'ucirc;', 'Ugrave;', 'ugrave;', 'uml;', 'upsih;', 'Upsilon;', 'upsilon;', 'Uuml;', 'uuml;', 'weierp;', 'Xi;', 'xi;', 'Yacute;', 'yacute;', 'yen;', 'Yuml;', 'yuml;', 'Zeta;', 'zeta;', 'zwj;', 'zwnj;']; + return values.map(function (value) { + return { + caption: value, + snippet: value, + meta: "html entity", + score: 1000000 + }; + }); + }; +}).call(HtmlCompletions.prototype); +exports.HtmlCompletions = HtmlCompletions; + +}); + +define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var lang = require("../lib/lang"); +var TextMode = require("./text").Mode; +var JavaScriptMode = require("./javascript").Mode; +var CssMode = require("./css").Mode; +var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +var HtmlCompletions = require("./html_completions").HtmlCompletions; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var voidElements = ["area", "base", "br", "col", "embed", "hr", "img", "input", "keygen", "link", "meta", "menuitem", "param", "source", "track", "wbr"]; +var optionalEndTags = ["li", "dt", "dd", "p", "rt", "rp", "optgroup", "option", "colgroup", "td", "th"]; +var Mode = function (options) { + this.fragmentContext = options && options.fragmentContext; + this.HighlightRules = HtmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.$completer = new HtmlCompletions(); + this.createModeDelegates({ + "js-": JavaScriptMode, + "css-": CssMode + }); + this.foldingRules = new HtmlFoldMode(this.voidElements, lang.arrayToMap(optionalEndTags)); +}; +oop.inherits(Mode, TextMode); +(function () { + this.blockComment = { start: "" }; + this.voidElements = lang.arrayToMap(voidElements); + this.getNextLineIndent = function (state, line, tab) { + return this.$getIndent(line); + }; + this.checkOutdent = function (state, line, input) { + return false; + }; + this.getCompletions = function (state, session, pos, prefix) { + return this.$completer.getCompletions(state, session, pos, prefix); + }; + this.createWorker = function (session) { + if (this.constructor != Mode) + return; + var worker = new WorkerClient(["ace"], "ace/mode/html_worker", "Worker"); + worker.attachToDocument(session.getDocument()); + if (this.fragmentContext) + worker.call("setOptions", [{ context: this.fragmentContext }]); + worker.on("error", function (e) { + session.setAnnotations(e.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; + this.$id = "ace/mode/html"; + this.snippetFileId = "ace/snippets/html"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); + +define("ace/mode/visualforce_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/html_highlight_rules"], function(require, exports, module){/* global define */ +"use strict"; +var oop = require("../lib/oop"); +var HtmlHighlightRules = require("../mode/html_highlight_rules").HtmlHighlightRules; +function string(options) { + return { + token: options.token + ".start", + regex: options.start, + push: [{ + token: "constant.language.escape", + regex: options.escape + }, { + token: options.token + ".end", + regex: options.start, + next: "pop" + }, { + defaultToken: options.token + }] + }; +} +var VisualforceHighlightRules = function () { + var keywordMapper = this.createKeywordMapper({ + "variable.language": "$Action|$Api|$Component|$ComponentLabel|$CurrentPage|$FieldSet|$Label|$Label|" + + "$ObjectType|$Organization|$Page|$Permission|$Profile|$Resource|$SControl|" + + "$Setup|$Site|$System.OriginDateTime|$User|$UserRole|" + + "Site|UITheme|UIThemeDisplayed", + "keyword": "", + "storage.type": "", + "constant.language": "true|false|null|TRUE|FALSE|NULL", + "support.function": "DATE|DATEVALUE|DATETIMEVALUE|DAY|MONTH|NOW|TODAY|YEAR|BLANKVALUE|ISBLANK|" + + "NULLVALUE|PRIORVALUE|AND|CASE|IF|ISCHANGED|ISNEW|ISNUMBER|NOT|OR|ABS|" + + "CEILING|EXP|FLOOR|LN|LOG|MAX|MIN|MOD|ROUND|SQRT|BEGINS|BR|CASESAFEID|" + + "CONTAINS|FIND|GETSESSIONID|HTMLENCODE|ISPICKVAL|JSENCODE|JSINHTMLENCODE|" + + "LEFT|LEN|LOWER|LPAD|MID|RIGHT|RPAD|SUBSTITUTE|TEXT|TRIM|UPPER|URLENCODE|VALUE|" + + "GETRECORDIDS|INCLUDE|LINKTO|REGEX|REQUIRESCRIPT|URLFOR|VLOOKUP|HTMLENCODE|JSENCODE|" + + "JSINHTMLENCODE|URLENCODE" + }, "identifier"); + HtmlHighlightRules.call(this); + var hbs = { + token: "keyword.start", + regex: "{!", + push: "Visualforce" + }; + for (var key in this.$rules) { + this.$rules[key].unshift(hbs); + } + this.$rules.Visualforce = [ + string({ + start: '"', + escape: /\\[btnfr"'\\]/, + token: "string", + multiline: true + }), + string({ + start: "'", + escape: /\\[btnfr"'\\]/, + token: "string", + multiline: true + }), + { + token: "comment.start", + regex: "\\/\\*", + push: [ + { token: "comment.end", regex: "\\*\\/|(?=})", next: "pop" }, + { defaultToken: "comment", caseInsensitive: true } + ] + }, { + token: "keyword.end", + regex: "}", + next: "pop" + }, { + token: keywordMapper, + regex: /[a-zA-Z$_\u00a1-\uffff][a-zA-Z\d$_\u00a1-\uffff]*\b/ + }, { + token: "keyword.operator", + regex: /==|<>|!=|<=|>=|&&|\|\||[+\-*/^()=<>&]/ + }, { + token: "punctuation.operator", + regex: /[?:,;.]/ + }, { + token: "paren.lparen", + regex: /[\[({]/ + }, { + token: "paren.rparen", + regex: /[\])}]/ + } + ]; + this.normalizeRules(); +}; +oop.inherits(VisualforceHighlightRules, HtmlHighlightRules); +exports.VisualforceHighlightRules = VisualforceHighlightRules; + +}); + +define("ace/mode/visualforce",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/visualforce_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html"], function(require, exports, module){/* caption: Visualforce; extensions: component,page,vfp */ +"use strict"; +var oop = require("../lib/oop"); +var HtmlMode = require("./html").Mode; +var VisualforceHighlightRules = require("./visualforce_highlight_rules").VisualforceHighlightRules; +var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; +var HtmlFoldMode = require("./folding/html").FoldMode; +function VisualforceMode() { + HtmlMode.call(this); + this.HighlightRules = VisualforceHighlightRules; + this.foldingRules = new HtmlFoldMode(); + this.$behaviour = new XmlBehaviour(); +} +oop.inherits(VisualforceMode, HtmlMode); +VisualforceMode.prototype.emmetConfig = { + profile: "xhtml" +}; +exports.Mode = VisualforceMode; + +}); (function() { + window.require(["ace/mode/visualforce"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-wollok.js b/vendor/assets/javascripts/ace/mode-wollok.js index fa005fca..8fd1d652 100644 --- a/vendor/assets/javascripts/ace/mode-wollok.js +++ b/vendor/assets/javascripts/ace/mode-wollok.js @@ -1,90 +1,154 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var DocCommentHighlightRules = function() { +var JsDocCommentHighlightRules = function () { this.$rules = { - "start" : [ { - token : "comment.doc.tag", - regex : "@[\\w\\d_]+" // TODO: fix email addresses - }, - DocCommentHighlightRules.getTagRule(), - { - defaultToken : "comment.doc", - caseInsensitive: true - }] + "start": [ + { + token: ["comment.doc.tag", "comment.doc.text", "lparen.doc"], + regex: "(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: ["rparen.doc", "text.doc", "variable.parameter.doc", "lparen.doc", "variable.parameter.doc", "rparen.doc"], + regex: /(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.]+)(\])))/, + next: "pop" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "lparen.doc"], + regex: "(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|" + + "implements|external|exception|throws|enum|define|extends))(\\s*)({)", + push: [ + { + token: "lparen.doc", + regex: "{", + push: [ + { + include: "doc-syntax" + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + } + ] + }, { + token: "rparen.doc", + regex: "}|(?=$)", + next: "pop" + }, { + include: "doc-syntax" + }, { + defaultToken: "text.doc" + } + ] + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|" + + "requires|param|implements|function|extends|typedef|mixes|constructor|var|" + + "memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|" + + "throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#\.:\/~\"\\-]*)?" + }, { + token: ["comment.doc.tag", "text.doc", "variable.parameter.doc"], + regex: "(@method)(\\s+)(\\w[\\w\.\\(\\)]*)" + }, { + token: "comment.doc.tag", + regex: "@access\\s+(?:private|public|protected)" + }, { + token: "comment.doc.tag", + regex: "@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)" + }, { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, + JsDocCommentHighlightRules.getTagRule(), + { + defaultToken: "comment.doc", + caseInsensitive: true + } + ], + "doc-syntax": [{ + token: "operator.doc", + regex: /[|:]/ + }, { + token: "paren.doc", + regex: /[\[\]]/ + }] }; + this.normalizeRules(); }; - -oop.inherits(DocCommentHighlightRules, TextHighlightRules); - -DocCommentHighlightRules.getTagRule = function(start) { +oop.inherits(JsDocCommentHighlightRules, TextHighlightRules); +JsDocCommentHighlightRules.getTagRule = function (start) { return { - token : "comment.doc.tag.storage.type", - regex : "\\b(?:TODO|FIXME|XXX|HACK)\\b" + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" }; }; - -DocCommentHighlightRules.getStartRule = function(start) { +JsDocCommentHighlightRules.getStartRule = function (start) { return { - token : "comment.doc", // doc comment - regex : "\\/\\*(?=\\*)", - next : start + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start }; }; - -DocCommentHighlightRules.getEndRule = function (start) { +JsDocCommentHighlightRules.getEndRule = function (start) { return { - token : "comment.doc", // closing comment - regex : "\\*\\/", - next : start + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start }; }; - - -exports.DocCommentHighlightRules = DocCommentHighlightRules; +exports.JsDocCommentHighlightRules = JsDocCommentHighlightRules; }); -define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); -var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; +var DocCommentHighlightRules = require("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var identifierRe = "[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*"; - -var JavaScriptHighlightRules = function(options) { +var JavaScriptHighlightRules = function (options) { var keywordMapper = this.createKeywordMapper({ - "variable.language": - "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|" + // Constructors - "Namespace|QName|XML|XMLList|" + // E4X - "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + - "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + - "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors - "SyntaxError|TypeError|URIError|" + + "variable.language": "Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|" + // Constructors + "Namespace|QName|XML|XMLList|" + // E4X + "ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|" + + "Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|" + + "Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|" + // Errors + "SyntaxError|TypeError|URIError|" + "decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|" + // Non-constructor functions - "isNaN|parseFloat|parseInt|" + - "JSON|Math|" + // Other - "this|arguments|prototype|window|document" , // Pseudo - "keyword": - "const|yield|import|get|set|async|await|" + + "isNaN|parseFloat|parseInt|" + + "JSON|Math|" + // Other + "this|arguments|prototype|window|document", // Pseudo + "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + - "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", - "storage.type": - "const|let|var|function", - "constant.language": - "null|Infinity|NaN|undefined", - "support.function": - "alert", + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor", + "storage.type": "const|let|var|function", + "constant.language": "null|Infinity|NaN|undefined", + "support.function": "alert", "constant.language.boolean": "true|false" }, "identifier"); var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; - var escapedRe = "\\\\(?:x[0-9a-fA-F]{2}|" + // hex "u[0-9a-fA-F]{4}|" + // unicode "u{[0-9a-fA-F]{1,6}}|" + // es6 unicode @@ -92,142 +156,142 @@ var JavaScriptHighlightRules = function(options) { "3[0-7][0-7]?|" + // oct "[4-7][0-7]?|" + //oct ".)"; - this.$rules = { - "no_regex" : [ + "no_regex": [ DocCommentHighlightRules.getStartRule("doc-start"), comments("no_regex"), { - token : "string", - regex : "'(?=.)", - next : "qstring" + token: "string", + regex: "'(?=.)", + next: "qstring" }, { - token : "string", - regex : '"(?=.)', - next : "qqstring" + token: "string", + regex: '"(?=.)', + next: "qqstring" }, { - token : "constant.numeric", // hexadecimal, octal and binary - regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // decimal integers and floats - regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { - token : [ + token: [ "storage.type", "punctuation.operator", "support.function", - "punctuation.operator", "entity.name.function", "text","keyword.operator" + "punctuation.operator", "entity.name.function", "text", "keyword.operator" ], - regex : "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe +")(\\s*)(=)", + regex: "(" + identifierRe + ")(\\.)(prototype)(\\.)(" + identifierRe + ")(\\s*)(=)", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(\\s+)(\\w+)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(function)(\\s+)(" + identifierRe + ")(\\s*)(\\()", + regex: "(function\\*?)(\\s+)(" + identifierRe + ")(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "entity.name.function", "text", "punctuation.operator", "text", "storage.type", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\s*)(:)(\\s*)(function)(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\s*)(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : [ + token: [ "text", "text", "storage.type", "text", "paren.lparen" ], - regex : "(:)(\\s*)(function)(\\s*)(\\()", + regex: "(:)(\\s*)(function\\*?)(\\s*)(\\()", next: "function_arguments" }, { - token : "keyword", - regex : "from(?=\\s*('|\"))" + token: "keyword", + regex: "from(?=\\s*('|\"))" }, { - token : "keyword", - regex : "(?:" + kwBeforeRe + ")\\b", - next : "start" + token: "keyword", + regex: "(?:" + kwBeforeRe + ")\\b", + next: "start" }, { - token : ["support.constant"], - regex : /that\b/ + token: "support.constant", + regex: /that\b/ }, { - token : ["storage.type", "punctuation.operator", "support.function.firebug"], - regex : /(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/ + token: ["storage.type", "punctuation.operator", "support.function.firebug"], + regex: /(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/ }, { - token : keywordMapper, - regex : identifierRe + token: keywordMapper, + regex: identifierRe }, { - token : "punctuation.operator", - regex : /[.](?![.])/, - next : "property" + token: "punctuation.operator", + regex: /[.](?![.])/, + next: "property" }, { - token : "storage.type", - regex : /=>/ + token: "storage.type", + regex: /=>/, + next: "start" }, { - token : "keyword.operator", - regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, - next : "start" + token: "keyword.operator", + regex: /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, + next: "start" }, { - token : "punctuation.operator", - regex : /[?:,;.]/, - next : "start" + token: "punctuation.operator", + regex: /[?:,;.]/, + next: "start" }, { - token : "paren.lparen", - regex : /[\[({]/, - next : "start" + token: "paren.lparen", + regex: /[\[({]/, + next: "start" }, { - token : "paren.rparen", - regex : /[\])}]/ + token: "paren.rparen", + regex: /[\])}]/ }, { token: "comment", regex: /^#!.*$/ } ], property: [{ - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" }, { - token : [ + token: [ "storage.type", "punctuation.operator", "entity.name.function", "text", "keyword.operator", "text", "storage.type", "text", "entity.name.function", "text", "paren.lparen" ], - regex : "(" + identifierRe + ")(\\.)(" + identifierRe +")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()", + regex: "(" + identifierRe + ")(\\.)(" + identifierRe + ")(\\s*)(=)(\\s*)(function\\*?)(?:(\\s+)(\\w+))?(\\s*)(\\()", next: "function_arguments" }, { - token : "punctuation.operator", - regex : /[.](?![.])/ + token: "punctuation.operator", + regex: /[.](?![.])/ }, { - token : "support.function", - regex : /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ + token: "support.function", + regex: /(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/ }, { - token : "support.function.dom", - regex : /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ + token: "support.function.dom", + regex: /(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/ }, { - token : "support.constant", - regex : /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ + token: "support.constant", + regex: /(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/ }, { - token : "identifier", - regex : identifierRe + token: "identifier", + regex: identifierRe }, { regex: "", token: "empty", @@ -242,9 +306,9 @@ var JavaScriptHighlightRules = function(options) { regex: "\\/", next: "regex" }, { - token : "text", - regex : "\\s+|^$", - next : "start" + token: "text", + regex: "\\s+|^$", + next: "start" }, { token: "empty", regex: "", @@ -260,13 +324,13 @@ var JavaScriptHighlightRules = function(options) { regex: "/[sxngimy]*", next: "no_regex" }, { - token : "invalid", + token: "invalid", regex: /\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/ }, { - token : "constant.language.escape", + token: "constant.language.escape", regex: /\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/ }, { - token : "constant.language.delimiter", + token: "constant.language.delimiter", regex: /\|/ }, { token: "constant.language.escape", @@ -299,13 +363,47 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.regexp.charachterclass" } ], - "function_arguments": [ + "default_parameter": [ { - token: "variable.parameter", - regex: identifierRe + token: "string", + regex: "'(?=.)", + push: [ + { + token: "string", + regex: "'|$", + next: "pop" + }, { + include: "qstring" + } + ] + }, { + token: "string", + regex: '"(?=.)', + push: [ + { + token: "string", + regex: '"|$', + next: "pop" + }, { + include: "qqstring" + } + ] + }, { + token: "constant.language", + regex: "null|Infinity|NaN|undefined" + }, { + token: "constant.numeric", // hexadecimal, octal and binary + regex: /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ + }, { + token: "constant.numeric", // decimal integers and floats + regex: /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token: "punctuation.operator", - regex: "[, ]+" + regex: ",", + next: "function_arguments" + }, { + token: "text", + regex: "\\s+" }, { token: "punctuation.operator", regex: "$" @@ -315,44 +413,62 @@ var JavaScriptHighlightRules = function(options) { next: "no_regex" } ], - "qqstring" : [ + "function_arguments": [ + comments("function_arguments"), { - token : "constant.language.escape", - regex : escapedRe + token: "variable.parameter", + regex: identifierRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "punctuation.operator", + regex: "," }, { - token : "string", - regex : '"|$', - next : "no_regex" + token: "text", + regex: "\\s+" + }, { + token: "punctuation.operator", + regex: "$" + }, { + token: "empty", + regex: "", + next: "no_regex" + } + ], + "qqstring": [ + { + token: "constant.language.escape", + regex: escapedRe + }, { + token: "string", + regex: "\\\\$", + consumeLineEnd: true + }, { + token: "string", + regex: '"|$', + next: "no_regex" }, { defaultToken: "string" } ], - "qstring" : [ + "qstring": [ { - token : "constant.language.escape", - regex : escapedRe + token: "constant.language.escape", + regex: escapedRe }, { - token : "string", - regex : "\\\\$", - consumeLineEnd : true + token: "string", + regex: "\\\\$", + consumeLineEnd: true }, { - token : "string", - regex : "'|$", - next : "no_regex" + token: "string", + regex: "'|$", + next: "no_regex" }, { defaultToken: "string" } ] }; - - if (!options || !options.noES6) { this.$rules.no_regex.unshift({ - regex: "[{}]", onMatch: function(val, state, stack) { + regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); @@ -367,40 +483,60 @@ var JavaScriptHighlightRules = function(options) { }, nextState: "start" }, { - token : "string.quasi.start", - regex : /`/, - push : [{ - token : "constant.language.escape", - regex : escapedRe - }, { - token : "paren.quasi.start", - regex : /\${/, - push : "start" - }, { - token : "string.quasi.end", - regex : /`/, - next : "pop" - }, { - defaultToken: "string.quasi" - }] + token: "string.quasi.start", + regex: /`/, + push: [{ + token: "constant.language.escape", + regex: escapedRe + }, { + token: "paren.quasi.start", + regex: /\${/, + push: "start" + }, { + token: "string.quasi.end", + regex: /`/, + next: "pop" + }, { + defaultToken: "string.quasi" + }] + }, { + token: ["variable.parameter", "text"], + regex: "(" + identifierRe + ")(\\s*)(?=\\=>)" + }, { + token: "paren.lparen", + regex: "(\\()(?=.+\\s*=>)", + next: "function_arguments" + }, { + token: "variable.language", + regex: "(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b" + }); + this.$rules["function_arguments"].unshift({ + token: "keyword.operator", + regex: "=", + next: "default_parameter" + }, { + token: "keyword.operator", + regex: "\\.{3}" + }); + this.$rules["property"].unshift({ + token: "support.function", + regex: "(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|" + + "finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()" + }, { + token: "constant.language", + regex: "(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b" }); - if (!options || options.jsx != false) JSX.call(this); } - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("no_regex")]); this.normalizeRules(); }; - oop.inherits(JavaScriptHighlightRules, TextHighlightRules); - function JSX() { var tagRegex = identifierRe.replace("\\d", "\\d\\-"); var jsxTag = { - onMatch : function(val, state, stack) { + onMatch: function (val, state, stack) { var offset = val.charAt(1) == "/" ? 2 : 1; if (offset == 1) { if (state != this.nextState) @@ -408,7 +544,8 @@ function JSX() { else stack.unshift(this.next); stack[2]++; - } else if (offset == 2) { + } + else if (offset == 2) { if (state == this.nextState) { stack[1]--; if (!stack[1] || stack[1] < 0) { @@ -418,14 +555,14 @@ function JSX() { } } return [{ - type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", - value: val.slice(0, offset) - }, { - type: "meta.tag.tag-name.xml", - value: val.substr(offset) - }]; + type: "meta.tag.punctuation." + (offset == 1 ? "" : "end-") + "tag-open.xml", + value: val.slice(0, offset) + }, { + type: "meta.tag.tag-name.xml", + value: val.substr(offset) + }]; }, - regex : "", - onMatch : function(value, currentState, stack) { - if (currentState == stack[0]) - stack.shift(); - if (value.length == 2) { - if (stack[0] == this.nextState) - stack[1]--; - if (!stack[1] || stack[1] < 0) { - stack.splice(0, 2); + token: "meta.tag.punctuation.tag-close.xml", + regex: "/?>", + onMatch: function (value, currentState, stack) { + if (currentState == stack[0]) + stack.shift(); + if (value.length == 2) { + if (stack[0] == this.nextState) + stack[1]--; + if (!stack[1] || stack[1] < 0) { + stack.splice(0, 2); + } } - } - this.next = stack[0] || "start"; - return [{type: this.token, value: value}]; + this.next = stack[0] || "start"; + return [{ type: this.token, value: value }]; + }, + nextState: "jsx" }, - nextState: "jsx" - }, - jsxJsRule, - comments("jsxAttributes"), - { - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - token : "text.tag-whitespace.xml", - regex : "\\s+" - }, { - token : "string.attribute-value.xml", - regex : "'", - stateName : "jsx_attr_q", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - stateName : "jsx_attr_qq", - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, - jsxTag + jsxJsRule, + comments("jsxAttributes"), + { + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + token: "text.tag-whitespace.xml", + regex: "\\s+" + }, { + token: "string.attribute-value.xml", + regex: "'", + stateName: "jsx_attr_q", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + stateName: "jsx_attr_qq", + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, + jsxTag ]; this.$rules.reference = [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }]; + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }]; } - function comments(next) { return [ { - token : "comment", // multi line comment - regex : /\/\*/, + token: "comment", // multi line comment + regex: /\/\*/, next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "\\*\\/", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "\\*\\/", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] }, { - token : "comment", - regex : "\\/\\/", + token: "comment", + regex: "\\/\\/", next: [ DocCommentHighlightRules.getTagRule(), - {token : "comment", regex : "$|^", next : next || "pop"}, - {defaultToken : "comment", caseInsensitive: true} + { token: "comment", regex: "$|^", next: next || "pop" }, + { defaultToken: "comment", caseInsensitive: true } ] } ]; } exports.JavaScriptHighlightRules = JavaScriptHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -656,54 +758,52 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); -define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { -"use strict"; - +define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; @@ -711,39 +811,35 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; - -var Mode = function() { +var Mode = function () { this.HighlightRules = JavaScriptHighlightRules; - this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new CStyleFoldMode(); }; oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.lineCommentStart = "//"; - this.blockComment = {start: "/*", end: "*/"}; - this.$quotes = {'"': '"', "'": "'", "`": "`"}; - - this.getNextLineIndent = function(state, line, tab) { + this.blockComment = { start: "/*", end: "*/" }; + this.$quotes = { '"': '"', "'": "'", "`": "`" }; + this.$pairQuotesAfter = { + "`": /\w/ + }; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - var tokenizedLine = this.getTokenizer().getLineTokens(line, state); var tokens = tokenizedLine.tokens; var endState = tokenizedLine.state; - - if (tokens.length && tokens[tokens.length-1].type == "comment") { + if (tokens.length && tokens[tokens.length - 1].type == "comment") { return indent; } - if (state == "start" || state == "no_regex") { var match = line.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/); if (match) { indent += tab; } - } else if (state == "doc-start") { + } + else if (state == "doc-start") { if (endState == "start" || endState == "no_regex") { return ""; } @@ -755,150 +851,172 @@ oop.inherits(Mode, TextMode); indent += "* "; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - this.createWorker = function(session) { + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/javascript_worker", "JavaScriptWorker"); worker.attachToDocument(session.getDocument()); - - worker.on("annotate", function(results) { + worker.on("annotate", function (results) { session.setAnnotations(results.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/javascript"; + this.snippetFileId = "ace/snippets/javascript"; }).call(Mode.prototype); - exports.Mode = Mode; + }); -define("ace/mode/wollok_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; +define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var DocCommentHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.doc.tag", + regex: "@\\w+(?=\\s|$)" + }, DocCommentHighlightRules.getTagRule(), { + defaultToken: "comment.doc", + caseInsensitive: true + } + ] + }; +}; +oop.inherits(DocCommentHighlightRules, TextHighlightRules); +DocCommentHighlightRules.getTagRule = function (start) { + return { + token: "comment.doc.tag.storage.type", + regex: "\\b(?:TODO|FIXME|XXX|HACK)\\b" + }; +}; +DocCommentHighlightRules.getStartRule = function (start) { + return { + token: "comment.doc", // doc comment + regex: "\\/\\*(?=\\*)", + next: start + }; +}; +DocCommentHighlightRules.getEndRule = function (start) { + return { + token: "comment.doc", // closing comment + regex: "\\*\\/", + next: start + }; +}; +exports.DocCommentHighlightRules = DocCommentHighlightRules; +}); + +define("ace/mode/wollok_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var DocCommentHighlightRules = require("./doc_comment_highlight_rules").DocCommentHighlightRules; var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var WollokHighlightRules = function() { - var keywords = ( - "test|describe|package|inherits|false|import|else|or|class|and|not|native|override|program|self|try|const|var|catch|object|super|throw|if|null|return|true|new|constructor|method|mixin" - ); - +var WollokHighlightRules = function () { + var keywords = ("test|describe|package|inherits|false|import|else|or|class|and|not|native|override|program|self|try|const|var|catch|object|super|throw|if|null|return|true|new|constructor|method|mixin"); var buildinConstants = ("null|assert|console"); - - var langClasses = ( - "Object|Pair|String|Boolean|Number|Integer|Double|Collection|Set|List|Exception|Range" + - "|StackTraceElement" - ); - + var langClasses = ("Object|Pair|String|Boolean|Number|Integer|Double|Collection|Set|List|Exception|Range" + + "|StackTraceElement"); var keywordMapper = this.createKeywordMapper({ "variable.language": "self", "keyword": keywords, "constant.language": buildinConstants, "support.function": langClasses }, "identifier"); - this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "\\/\\/.*$" + token: "comment", + regex: "\\/\\/.*$" }, DocCommentHighlightRules.getStartRule("doc-start"), { - token : "comment", // multi line comment - regex : "\\/\\*", - next : "comment" + token: "comment", // multi line comment + regex: "\\/\\*", + next: "comment" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single line + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ + token: "constant.numeric", // hex + regex: /0(?:[xX][0-9a-fA-F][0-9a-fA-F_]*|[bB][01][01_]*)[LlSsDdFfYy]?\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ + token: "constant.numeric", // float + regex: /[+-]?\d[\d_]*(?:(?:\.[\d_]*)?(?:[eE][+-]?[\d_]+)?)?[LlSsDdFfYy]?\b/ }, { - token : "constant.language.boolean", - regex : "(?:true|false)\\b" + token: "constant.language.boolean", + regex: "(?:true|false)\\b" }, { - token : keywordMapper, - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + token: keywordMapper, + regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { - token : "keyword.operator", - regex : "===|&&|\\*=|\\.\\.|\\*\\*|#|!|%|\\*|\\?:|\\+|\\/|,|\\+=|\\-|\\.\\.<|!==|:|\\/=|\\?\\.|\\+\\+|>|=|<|>=|=>|==|\\]|\\[|\\-=|\\->|\\||\\-\\-|<>|!=|%=|\\|" + token: "keyword.operator", + regex: "===|&&|\\*=|\\.\\.|\\*\\*|#|!|%|\\*|\\?:|\\+|\\/|,|\\+=|\\-|\\.\\.<|!==|:|\\/=|\\?\\.|\\+\\+|>|=|<|>=|=>|==|\\]|\\[|\\-=|\\->|\\||\\-\\-|<>|!=|%=|\\|" }, { - token : "lparen", - regex : "[[({]" + token: "lparen", + regex: "[[({]" }, { - token : "rparen", - regex : "[\\])}]" + token: "rparen", + regex: "[\\])}]" }, { - token : "text", - regex : "\\s+" + token: "text", + regex: "\\s+" } ], - "comment" : [ + "comment": [ { - token : "comment", // closing comment - regex : ".*?\\*\\/", - next : "start" + token: "comment", // closing comment + regex: ".*?\\*\\/", + next: "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + token: "comment", // comment spanning whole line + regex: ".+" } ] }; - - this.embedRules(DocCommentHighlightRules, "doc-", - [ DocCommentHighlightRules.getEndRule("start") ]); + this.embedRules(DocCommentHighlightRules, "doc-", [DocCommentHighlightRules.getEndRule("start")]); }; - oop.inherits(WollokHighlightRules, TextHighlightRules); - exports.WollokHighlightRules = WollokHighlightRules; + }); -define("ace/mode/wollok",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/wollok_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/wollok",["require","exports","module","ace/lib/oop","ace/mode/javascript","ace/mode/wollok_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var JavaScriptMode = require("./javascript").Mode; var WollokHighlightRules = require("./wollok_highlight_rules").WollokHighlightRules; - -var Mode = function() { +var Mode = function () { JavaScriptMode.call(this); this.HighlightRules = WollokHighlightRules; }; oop.inherits(Mode, JavaScriptMode); - -(function() { - - this.createWorker = function(session) { +(function () { + this.createWorker = function (session) { return null; }; - this.$id = "ace/mode/wollok"; + this.snippetFileId = "ace/snippets/wollok"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/wollok"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-xml.js b/vendor/assets/javascripts/ace/mode-xml.js index ba975681..ad162792 100644 --- a/vendor/assets/javascripts/ace/mode-xml.js +++ b/vendor/assets/javascripts/ace/mode-xml.js @@ -1,220 +1,192 @@ -define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var XmlHighlightRules = function(normalize) { +var XmlHighlightRules = function (normalize) { var tagRegex = "[_:a-zA-Z\xc0-\uffff][-_:.a-zA-Z0-9\xc0-\uffff]*"; - this.$rules = { - start : [ - {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, + start: [ + { token: "string.cdata.xml", regex: "<\\!\\[CDATA\\[", next: "cdata" }, { - token : ["punctuation.instruction.xml", "keyword.instruction.xml"], - regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" + token: ["punctuation.instruction.xml", "keyword.instruction.xml"], + regex: "(<\\?)(" + tagRegex + ")", next: "processing_instruction" }, - {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, + { token: "comment.start.xml", regex: "<\\!--", next: "comment" }, { - token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], - regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true + token: ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], + regex: "(<\\!)(DOCTYPE)(?=[\\s])", next: "doctype", caseInsensitive: true }, - {include : "tag"}, - {token : "text.end-tag-open.xml", regex: "", - next : "start" - }], - - doctype : [ - {include : "whitespace"}, - {include : "string"}, - {token : "xml-pe.doctype.xml", regex : ">", next : "start"}, - {token : "xml-pe.xml", regex : "[-_a-zA-Z0-9:]+"}, - {token : "punctuation.int-subset", regex : "\\[", push : "int_subset"} + processing_instruction: [{ + token: "entity.other.attribute-name.decl-attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.decl-attribute-equals.xml", + regex: "=" + }, { + include: "whitespace" + }, { + include: "string" + }, { + token: "punctuation.xml-decl.xml", + regex: "\\?>", + next: "start" + }], + doctype: [ + { include: "whitespace" }, + { include: "string" }, + { token: "xml-pe.doctype.xml", regex: ">", next: "start" }, + { token: "xml-pe.xml", regex: "[-_a-zA-Z0-9:]+" }, + { token: "punctuation.int-subset", regex: "\\[", push: "int_subset" } ], - - int_subset : [{ - token : "text.xml", - regex : "\\s+" - }, { - token: "punctuation.int-subset.xml", - regex: "]", - next: "pop" - }, { - token : ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], - regex : "(<\\!)(" + tagRegex + ")", - push : [{ - token : "text", - regex : "\\s+" - }, - { - token : "punctuation.markup-decl.xml", - regex : ">", - next : "pop" - }, - {include : "string"}] - }], - - cdata : [ - {token : "string.cdata.xml", regex : "\\]\\]>", next : "start"}, - {token : "text.xml", regex : "\\s+"}, - {token : "text.xml", regex : "(?:[^\\]]|\\](?!\\]>))+"} + int_subset: [{ + token: "text.xml", + regex: "\\s+" + }, { + token: "punctuation.int-subset.xml", + regex: "]", + next: "pop" + }, { + token: ["punctuation.markup-decl.xml", "keyword.markup-decl.xml"], + regex: "(<\\!)(" + tagRegex + ")", + push: [{ + token: "text", + regex: "\\s+" + }, + { + token: "punctuation.markup-decl.xml", + regex: ">", + next: "pop" + }, + { include: "string" }] + }], + cdata: [ + { token: "string.cdata.xml", regex: "\\]\\]>", next: "start" }, + { token: "text.xml", regex: "\\s+" }, + { token: "text.xml", regex: "(?:[^\\]]|\\](?!\\]>))+" } ], - - comment : [ - {token : "comment.end.xml", regex : "-->", next : "start"}, - {defaultToken : "comment.xml"} + comment: [ + { token: "comment.end.xml", regex: "-->", next: "start" }, + { defaultToken: "comment.xml" } ], - - reference : [{ - token : "constant.language.escape.reference.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - attr_reference : [{ - token : "constant.language.escape.reference.attribute-value.xml", - regex : "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" - }], - - tag : [{ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], - regex : "(?:(<)|(", next : "start"} - ] - }], - - tag_whitespace : [ - {token : "text.tag-whitespace.xml", regex : "\\s+"} + reference: [{ + token: "constant.language.escape.reference.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + attr_reference: [{ + token: "constant.language.escape.reference.attribute-value.xml", + regex: "(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)" + }], + tag: [{ + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag.punctuation.end-tag-open.xml", "meta.tag.tag-name.xml"], + regex: "(?:(<)|(", next: "start" } + ] + }], + tag_whitespace: [ + { token: "text.tag-whitespace.xml", regex: "\\s+" } ], - whitespace : [ - {token : "text.whitespace.xml", regex : "\\s+"} + whitespace: [ + { token: "text.whitespace.xml", regex: "\\s+" } ], string: [{ - token : "string.xml", - regex : "'", - push : [ - {token : "string.xml", regex: "'", next: "pop"}, - {defaultToken : "string.xml"} - ] - }, { - token : "string.xml", - regex : '"', - push : [ - {token : "string.xml", regex: '"', next: "pop"}, - {defaultToken : "string.xml"} - ] - }], - + token: "string.xml", + regex: "'", + push: [ + { token: "string.xml", regex: "'", next: "pop" }, + { defaultToken: "string.xml" } + ] + }, { + token: "string.xml", + regex: '"', + push: [ + { token: "string.xml", regex: '"', next: "pop" }, + { defaultToken: "string.xml" } + ] + }], attributes: [{ - token : "entity.other.attribute-name.xml", - regex : tagRegex - }, { - token : "keyword.operator.attribute-equals.xml", - regex : "=" - }, { - include: "tag_whitespace" - }, { - include: "attribute_value" - }], - + token: "entity.other.attribute-name.xml", + regex: tagRegex + }, { + token: "keyword.operator.attribute-equals.xml", + regex: "=" + }, { + include: "tag_whitespace" + }, { + include: "attribute_value" + }], attribute_value: [{ - token : "string.attribute-value.xml", - regex : "'", - push : [ - {token : "string.attribute-value.xml", regex: "'", next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }, { - token : "string.attribute-value.xml", - regex : '"', - push : [ - {token : "string.attribute-value.xml", regex: '"', next: "pop"}, - {include : "attr_reference"}, - {defaultToken : "string.attribute-value.xml"} - ] - }] + token: "string.attribute-value.xml", + regex: "'", + push: [ + { token: "string.attribute-value.xml", regex: "'", next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }, { + token: "string.attribute-value.xml", + regex: '"', + push: [ + { token: "string.attribute-value.xml", regex: '"', next: "pop" }, + { include: "attr_reference" }, + { defaultToken: "string.attribute-value.xml" } + ] + }] }; - if (this.constructor === XmlHighlightRules) this.normalizeRules(); }; - - -(function() { - - this.embedTagRules = function(HighlightRules, prefix, tag){ +(function () { + this.embedTagRules = function (HighlightRules, prefix, tag) { this.$rules.tag.unshift({ - token : ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(<)(" + tag + "(?=\\s|>|$))", + token: ["meta.tag.punctuation.tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(<)(" + tag + "(?=\\s|>|$))", next: [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next : prefix + "start"} + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: prefix + "start" } ] }); - this.$rules[tag + "-end"] = [ - {include : "attributes"}, - {token : "meta.tag.punctuation.tag-close.xml", regex : "/?>", next: "start", - onMatch : function(value, currentState, stack) { + { include: "attributes" }, + { token: "meta.tag.punctuation.tag-close.xml", regex: "/?>", next: "start", + onMatch: function (value, currentState, stack) { stack.splice(0); return this.token; - }} + } } ]; - this.embedRules(HighlightRules, prefix, [{ - token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], - regex : "(|$))", - next: tag + "-end" - }, { - token: "string.cdata.xml", - regex : "<\\!\\[CDATA\\[" - }, { - token: "string.cdata.xml", - regex : "\\]\\]>" - }]); + token: ["meta.tag.punctuation.end-tag-open.xml", "meta.tag." + tag + ".tag-name.xml"], + regex: "(|$))", + next: tag + "-end" + }, { + token: "string.cdata.xml", + regex: "<\\!\\[CDATA\\[" + }, { + token: "string.cdata.xml", + regex: "\\]\\]>" + }]); }; - }).call(TextHighlightRules.prototype); - oop.inherits(XmlHighlightRules, TextHighlightRules); - exports.XmlHighlightRules = XmlHighlightRules; + }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -225,26 +197,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -257,8 +224,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -269,7 +235,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -280,14 +245,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -295,63 +264,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === " -1; } - -(function() { - - this.getFoldWidget = function(session, foldStyle, row) { +(function () { + this.getFoldWidget = function (session, foldStyle, row) { var tag = this._getFirstTagInLine(session, row); - if (!tag) return this.getCommentFoldWidget(session, row); - if (tag.closing || (!tag.tagName && tag.selfClosing)) - return foldStyle == "markbeginend" ? "end" : ""; - + return foldStyle === "markbeginend" ? "end" : ""; if (!tag.tagName || tag.selfClosing || this.voidElements.hasOwnProperty(tag.tagName.toLowerCase())) return ""; - if (this._findEndTagInLine(session, row, tag.tagName, tag.end.column)) return ""; - return "start"; }; - - this.getCommentFoldWidget = function(session, row) { + this.getCommentFoldWidget = function (session, row) { if (/comment/.test(session.getState(row)) && /'; return tag; } tag.start.column += token.value.length; } - return null; }; - - this._findEndTagInLine = function(session, row, tagName, startColumn) { + this._findEndTagInLine = function (session, row, tagName, startColumn) { var tokens = session.getTokens(row); var column = 0; for (var i = 0; i < tokens.length; i++) { @@ -473,153 +413,21 @@ function is(token, type) { } return false; }; - this._readTagForward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - iterator.stepForward(); - return tag; - } - } while(token = iterator.stepForward()); - - return null; - }; - - this._readTagBackward = function(iterator) { - var token = iterator.getCurrentToken(); - if (!token) - return null; - - var tag = new Tag(); - do { - if (is(token, "tag-open")) { - tag.closing = is(token, "end-tag-open"); - tag.start.row = iterator.getCurrentTokenRow(); - tag.start.column = iterator.getCurrentTokenColumn(); - iterator.stepBackward(); - return tag; - } else if (is(token, "tag-name")) { - tag.tagName = token.value; - } else if (is(token, "tag-close")) { - tag.selfClosing = token.value == "/>"; - tag.end.row = iterator.getCurrentTokenRow(); - tag.end.column = iterator.getCurrentTokenColumn() + token.value.length; - } - } while(token = iterator.stepBackward()); - - return null; - }; - - this._pop = function(stack, tag) { - while (stack.length) { - - var top = stack[stack.length-1]; - if (!tag || top.tagName == tag.tagName) { - return stack.pop(); - } - else if (this.optionalEndTags.hasOwnProperty(top.tagName)) { - stack.pop(); - continue; - } else { - return null; - } + this.getFoldWidgetRange = function (session, foldStyle, row) { + var tags = session.getMatchingTags({ row: row, column: 0 }); + if (tags) { + return new Range(tags.openTag.end.row, tags.openTag.end.column, tags.closeTag.start.row, tags.closeTag.start.column); } - }; - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var firstTag = this._getFirstTagInLine(session, row); - - if (!firstTag) { + else { return this.getCommentFoldWidget(session, row) && session.getCommentFoldRange(row, session.getLine(row).length); } - - var isBackward = firstTag.closing || firstTag.selfClosing; - var stack = []; - var tag; - - if (!isBackward) { - var iterator = new TokenIterator(session, row, firstTag.start.column); - var start = { - row: row, - column: firstTag.start.column + firstTag.tagName.length + 2 - }; - if (firstTag.start.row == firstTag.end.row) - start.column = firstTag.end.column; - while (tag = this._readTagForward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) - return Range.fromPoints(start, tag.start); - } - else { - stack.push(tag); - } - } - } - else { - var iterator = new TokenIterator(session, row, firstTag.end.column); - var end = { - row: row, - column: firstTag.start.column - }; - - while (tag = this._readTagBackward(iterator)) { - if (tag.selfClosing) { - if (!stack.length) { - tag.start.column += tag.tagName.length + 2; - tag.end.column -= 2; - return Range.fromPoints(tag.start, tag.end); - } else - continue; - } - - if (!tag.closing) { - this._pop(stack, tag); - if (stack.length == 0) { - tag.start.column += tag.tagName.length + 2; - if (tag.start.row == tag.end.row && tag.start.column < tag.end.column) - tag.start.column = tag.end.column; - return Range.fromPoints(tag.start, end); - } - } - else { - stack.push(tag); - } - } - } - }; - }).call(FoldMode.prototype); }); -define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module) { -"use strict"; - +define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var lang = require("../lib/lang"); var TextMode = require("./text").Mode; @@ -627,38 +435,35 @@ var XmlHighlightRules = require("./xml_highlight_rules").XmlHighlightRules; var XmlBehaviour = require("./behaviour/xml").XmlBehaviour; var XmlFoldMode = require("./folding/xml").FoldMode; var WorkerClient = require("../worker/worker_client").WorkerClient; - -var Mode = function() { - this.HighlightRules = XmlHighlightRules; - this.$behaviour = new XmlBehaviour(); - this.foldingRules = new XmlFoldMode(); +var Mode = function () { + this.HighlightRules = XmlHighlightRules; + this.$behaviour = new XmlBehaviour(); + this.foldingRules = new XmlFoldMode(); }; - oop.inherits(Mode, TextMode); - -(function() { - +(function () { this.voidElements = lang.arrayToMap([]); - - this.blockComment = {start: ""}; - - this.createWorker = function(session) { + this.blockComment = { start: "" }; + this.createWorker = function (session) { var worker = new WorkerClient(["ace"], "ace/mode/xml_worker", "Worker"); worker.attachToDocument(session.getDocument()); - - worker.on("error", function(e) { + worker.on("error", function (e) { session.setAnnotations(e.data); }); - - worker.on("terminate", function() { + worker.on("terminate", function () { session.clearAnnotations(); }); - return worker; }; - this.$id = "ace/mode/xml"; }).call(Mode.prototype); - exports.Mode = Mode; -}); + +}); (function() { + window.require(["ace/mode/xml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-xquery.js b/vendor/assets/javascripts/ace/mode-xquery.js index ff1c352c..b48eb073 100644 --- a/vendor/assets/javascripts/ace/mode-xquery.js +++ b/vendor/assets/javascripts/ace/mode-xquery.js @@ -2084,20 +2084,15 @@ exports.XQueryLexer = function(){ return new Lexer(XQueryTokenizer, Rules); }; }); -define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module) { -"use strict"; - +define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Behaviour = require("../behaviour").Behaviour; var TokenIterator = require("../../token_iterator").TokenIterator; var lang = require("../../lib/lang"); - function is(token, type) { - return token.type.lastIndexOf(type + ".xml") > -1; + return token && token.type.lastIndexOf(type + ".xml") > -1; } - var XmlBehaviour = function () { - this.add("string_dquotes", "insertion", function (state, action, editor, session, text) { if (text == '"' || text == "'") { var quote = text; @@ -2108,26 +2103,21 @@ var XmlBehaviour = function () { selection: false }; } - var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); var rightChar = line.substring(cursor.column, cursor.column + 1); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (rightChar == quote && (is(token, "attribute-value") || is(token, "string"))) { return { text: "", selection: [1, 1] }; } - if (!token) token = iterator.stepBackward(); - if (!token) return; - while (is(token, "tag-whitespace") || is(token, "whitespace")) { token = iterator.stepBackward(); } @@ -2140,8 +2130,7 @@ var XmlBehaviour = function () { } } }); - - this.add("string_dquotes", "deletion", function(state, action, editor, session, range) { + this.add("string_dquotes", "deletion", function (state, action, editor, session, range) { var selected = session.doc.getTextRange(range); if (!range.isMultiLine() && (selected == '"' || selected == "'")) { var line = session.doc.getLine(range.start.row); @@ -2152,7 +2141,6 @@ var XmlBehaviour = function () { } } }); - this.add("autoclosing", "insertion", function (state, action, editor, session, text) { if (text == '>') { var position = editor.getSelectionRange().start; @@ -2163,14 +2151,18 @@ var XmlBehaviour = function () { if (is(token, "reference.attribute-value")) return; if (is(token, "attribute-value")) { - var firstChar = token.value.charAt(0); - if (firstChar == '"' || firstChar == "'") { - var lastChar = token.value.charAt(token.value.length - 1); - var tokenEnd = iterator.getCurrentTokenColumn() + token.value.length; - if (tokenEnd > position.column || tokenEnd == position.column && firstChar != lastChar) + var tokenEndColumn = iterator.getCurrentTokenColumn() + token.value.length; + if (position.column < tokenEndColumn) + return; + if (position.column == tokenEndColumn) { + var nextToken = iterator.stepForward(); + if (nextToken && is(nextToken, "attribute-value")) return; + iterator.stepBackward(); } } + if (/^\s*>/.test(session.getLine(position.row).slice(position.column))) + return; while (!is(token, "tag-name")) { token = iterator.stepBackward(); if (token.value == "<") { @@ -2178,63 +2170,54 @@ var XmlBehaviour = function () { break; } } - var tokenRow = iterator.getCurrentTokenRow(); var tokenColumn = iterator.getCurrentTokenColumn(); if (is(iterator.stepBackward(), "end-tag-open")) return; - var element = token.value; if (tokenRow == position.row) element = element.substring(0, position.column - tokenColumn); - if (this.voidElements.hasOwnProperty(element.toLowerCase())) - return; - + return; return { - text: ">" + "", - selection: [1, 1] + text: ">" + "", + selection: [1, 1] }; } }); - this.add("autoindent", "insertion", function (state, action, editor, session, text) { if (text == "\n") { var cursor = editor.getCursorPosition(); var line = session.getLine(cursor.row); var iterator = new TokenIterator(session, cursor.row, cursor.column); var token = iterator.getCurrentToken(); - if (token && token.type.indexOf("tag-close") !== -1) { if (token.value == "/>") return; while (token && token.type.indexOf("tag-name") === -1) { token = iterator.stepBackward(); } - if (!token) { return; } - var tag = token.value; var row = iterator.getCurrentTokenRow(); token = iterator.stepBackward(); if (!token || token.type.indexOf("end-tag") !== -1) { return; } - if (this.voidElements && !this.voidElements[tag]) { - var nextToken = session.getTokenAt(cursor.row, cursor.column+1); + var nextToken = session.getTokenAt(cursor.row, cursor.column + 1); var line = session.getLine(row); var nextIndent = this.$getIndent(line); var indent = nextIndent + session.getTabString(); - if (nextToken && nextToken.value === "') { var position = editor.getCursorPosition(); var iterator = new TokenIterator(session, position.row, position.column); var token = iterator.getCurrentToken(); var atCursor = false; var state = JSON.parse(state).pop(); - if ((token && token.value === '>') || state !== "StartTag") return; - if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))){ + if ((token && token.value === '>') || state !== "StartTag") + return; + if (!token || !hasType(token, 'meta.tag') && !(hasType(token, 'text') && token.value.match('/'))) { do { token = iterator.stepBackward(); } while (token && (hasType(token, 'string') || hasType(token, 'keyword.operator') || hasType(token, 'entity.attribute-name') || hasType(token, 'text'))); - } else { + } + else { atCursor = true; } var previous = iterator.stepBackward(); @@ -2298,106 +2275,80 @@ function hasType(token, type) { return; } var tag = token.value.substring(1); - if (atCursor){ + if (atCursor) { var tag = tag.substring(0, position.column - token.start); } - return { - text: '>' + '', - selection: [1, 1] + text: '>' + '', + selection: [1, 1] }; } }); +}; +oop.inherits(XQueryBehaviour, Behaviour); +exports.XQueryBehaviour = XQueryBehaviour; - }; - oop.inherits(XQueryBehaviour, Behaviour); - - exports.XQueryBehaviour = XQueryBehaviour; }); -define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var Range = require("../../range").Range; var BaseFoldMode = require("./fold_mode").FoldMode; - -var FoldMode = exports.FoldMode = function(commentRegex) { +var FoldMode = exports.FoldMode = function (commentRegex) { if (commentRegex) { - this.foldingStartMarker = new RegExp( - this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) - ); - this.foldingStopMarker = new RegExp( - this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) - ); + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); } }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - +(function () { this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; - this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; this._getFoldWidgetBase = this.getFoldWidget; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); - if (this.singleLineBlockCommentRe.test(line)) { if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) return ""; } - var fw = this._getFoldWidgetBase(session, foldStyle, row); - if (!fw && this.startRegionRe.test(line)) return "start"; // lineCommentRegionStart - return fw; }; - - this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { var line = session.getLine(row); - if (this.startRegionRe.test(line)) return this.getCommentRegionBlock(session, line, row); - var match = line.match(this.foldingStartMarker); if (match) { var i = match.index; - if (match[1]) return this.openingBracketBlock(session, match[1], row, i); - var range = session.getCommentFoldRange(row, i + match[0].length, 1); - if (range && !range.isMultiLine()) { if (forceMultiline) { range = this.getSectionRange(session, row); - } else if (foldStyle != "all") + } + else if (foldStyle != "all") range = null; } - return range; } - if (foldStyle === "markbegin") return; - var match = line.match(this.foldingStopMarker); if (match) { var i = match.index + match[0].length; - if (match[1]) return this.closingBracketBlock(session, match[1], row, i); - return session.getCommentFoldRange(row, i, -1); } }; - - this.getSectionRange = function(session, row) { + this.getSectionRange = function (session, row) { var line = session.getLine(row); var startIndent = line.search(/\S/); var startRow = row; @@ -2410,47 +2361,47 @@ oop.inherits(FoldMode, BaseFoldMode); var indent = line.search(/\S/); if (indent === -1) continue; - if (startIndent > indent) + if (startIndent > indent) break; var subRange = this.getFoldWidgetRange(session, "all", row); - if (subRange) { if (subRange.start.row <= startRow) { break; - } else if (subRange.isMultiLine()) { + } + else if (subRange.isMultiLine()) { row = subRange.end.row; - } else if (startIndent == indent) { + } + else if (startIndent == indent) { break; } } endRow = row; } - return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); }; - this.getCommentRegionBlock = function(session, line, row) { + this.getCommentRegionBlock = function (session, line, row) { var startColumn = line.search(/\s*$/); var maxRow = session.getLength(); var startRow = row; - var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; var depth = 1; while (++row < maxRow) { line = session.getLine(row); var m = re.exec(line); - if (!m) continue; - if (m[1]) depth--; - else depth++; - - if (!depth) break; + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; } - var endRow = row; if (endRow > startRow) { return new Range(startRow, startColumn, endRow, line.length); } }; - }).call(FoldMode.prototype); }); @@ -2625,7 +2576,15 @@ oop.inherits(Mode, TextMode); }; this.$id = "ace/mode/xquery"; + this.snippetFileId = "ace/snippets/xquery"; }).call(Mode.prototype); exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/xquery"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-yaml.js b/vendor/assets/javascripts/ace/mode-yaml.js index 2240e2cd..7e49484e 100644 --- a/vendor/assets/javascripts/ace/mode-yaml.js +++ b/vendor/assets/javascripts/ace/mode-yaml.js @@ -1,21 +1,18 @@ -define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { -"use strict"; - +define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; - -var YamlHighlightRules = function() { +var YamlHighlightRules = function () { this.$rules = { - "start" : [ + "start": [ { - token : "comment", - regex : "#.*$" + token: "comment", + regex: "#.*$" }, { - token : "list.markup", - regex : /^(?:-{3}|\.{3})\s*(?=#|$)/ - }, { - token : "list.markup", - regex : /^\s*[\-?](?:$|\s)/ + token: "list.markup", + regex: /^(?:-{3}|\.{3})\s*(?=#|$)/ + }, { + token: "list.markup", + regex: /^\s*[\-?](?:$|\s)/ }, { token: "constant", regex: "!![\\w//]+" @@ -24,72 +21,102 @@ var YamlHighlightRules = function() { regex: "[&\\*][a-zA-Z0-9-_]+" }, { token: ["meta.tag", "keyword"], - regex: /^(\s*\w.*?)(:(?=\s|$))/ - },{ + regex: /^(\s*\w[^\s:]*?)(:(?=\s|$))/ + }, { token: ["meta.tag", "keyword"], - regex: /(\w+?)(\s*:(?=\s|$))/ + regex: /(\w[^\s:]*?)(\s*:(?=\s|$))/ }, { - token : "keyword.operator", - regex : "<<\\w*:\\w*" + token: "keyword.operator", + regex: "<<\\w*:\\w*" }, { - token : "keyword.operator", - regex : "-\\s*(?=[{])" + token: "keyword.operator", + regex: "-\\s*(?=[{])" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + token: "string", // single line + regex: '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { - token : "string", // multi line string start - regex : /[|>][-+\d\s]*$/, - onMatch: function(val, state, stack, line) { - var indent = /^\s*/.exec(line)[0]; - if (stack.length < 1) { - stack.push(this.next); - } else { - stack[0] = "mlString"; - } - - if (stack.length < 2) { - stack.push(indent.length); + token: "string", // multi line string start + regex: /[|>][-+\d]*(?:$|\s+(?:$|#))/, + onMatch: function (val, state, stack, line) { + line = line.replace(/ #.*/, ""); + var indent = /^ *((:\s*)?-(\s*[^|>])?)?/.exec(line)[0] + .replace(/\S\s*$/, "").length; + var indentationIndicator = parseInt(/\d+[\s+-]*$/.exec(line)); + if (indentationIndicator) { + indent += indentationIndicator - 1; + this.next = "mlString"; } else { - stack[1] = indent.length; + this.next = "mlStringPre"; + } + if (!stack.length) { + stack.push(this.next); + stack.push(indent); + } + else { + stack[0] = this.next; + stack[1] = indent; } return this.token; }, - next : "mlString" + next: "mlString" }, { - token : "string", // single quoted string - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + token: "string", // single quoted string + regex: "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "constant.numeric", // float - regex : /(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)/ + token: "constant.numeric", // float + regex: /(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)$/ }, { - token : "constant.numeric", // other number - regex : /[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/ + token: "constant.numeric", // other number + regex: /[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/ }, { - token : "constant.language.boolean", - regex : "\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" + token: "constant.language.boolean", + regex: "\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" }, { - token : "paren.lparen", - regex : "[[({]" + token: "paren.lparen", + regex: "[[({]" }, { - token : "paren.rparen", - regex : "[\\])}]" + token: "paren.rparen", + regex: "[\\])}]" }, { - token : "text", - regex : /[^\s,:\[\]\{\}]+/ + token: "text", + regex: /[^\s,:\[\]\{\}]+/ } ], - "mlString" : [ + "mlStringPre": [ { - token : "indent", - regex : /^\s*$/ + token: "indent", + regex: /^ *$/ }, { - token : "indent", - regex : /^\s*/, - onMatch: function(val, state, stack) { + token: "indent", + regex: /^ */, + onMatch: function (val, state, stack) { + var curIndent = stack[1]; + if (curIndent >= val.length) { + this.next = "start"; + stack.shift(); + stack.shift(); + } + else { + stack[1] = val.length - 1; + this.next = stack[0] = "mlString"; + } + return this.token; + }, + next: "mlString" + }, { + defaultToken: "string" + } + ], + "mlString": [ + { + token: "indent", + regex: /^ *$/ + }, { + token: "indent", + regex: /^ */, + onMatch: function (val, state, stack) { var curIndent = stack[1]; - if (curIndent >= val.length) { this.next = "start"; stack.splice(0); @@ -99,117 +126,97 @@ var YamlHighlightRules = function() { } return this.token; }, - next : "mlString" + next: "mlString" }, { - token : "string", - regex : '.+' + token: "string", + regex: '.+' } - ]}; + ] + }; this.normalizeRules(); - }; - oop.inherits(YamlHighlightRules, TextHighlightRules); - exports.YamlHighlightRules = YamlHighlightRules; + }); -define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(require, exports, module){"use strict"; var Range = require("../range").Range; - -var MatchingBraceOutdent = function() {}; - -(function() { - - this.checkOutdent = function(line, input) { - if (! /^\s+$/.test(line)) +var MatchingBraceOutdent = function () { }; +(function () { + this.checkOutdent = function (line, input) { + if (!/^\s+$/.test(line)) return false; - return /^\s*\}/.test(input); }; - - this.autoOutdent = function(doc, row) { + this.autoOutdent = function (doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/); - - if (!match) return 0; - + if (!match) + return 0; var column = match[1].length; - var openBracePos = doc.findMatchingBracket({row: row, column: column}); - - if (!openBracePos || openBracePos.row == row) return 0; - + var openBracePos = doc.findMatchingBracket({ row: row, column: column }); + if (!openBracePos || openBracePos.row == row) + return 0; var indent = this.$getIndent(doc.getLine(openBracePos.row)); - doc.replace(new Range(row, 0, row, column-1), indent); + doc.replace(new Range(row, 0, row, column - 1), indent); }; - - this.$getIndent = function(line) { + this.$getIndent = function (line) { return line.match(/^\s*/)[0]; }; - }).call(MatchingBraceOutdent.prototype); - exports.MatchingBraceOutdent = MatchingBraceOutdent; + }); -define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) { -"use strict"; - +define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module){"use strict"; var oop = require("../../lib/oop"); var BaseFoldMode = require("./fold_mode").FoldMode; var Range = require("../../range").Range; - -var FoldMode = exports.FoldMode = function() {}; +var FoldMode = exports.FoldMode = function () { }; oop.inherits(FoldMode, BaseFoldMode); - -(function() { - - this.getFoldWidgetRange = function(session, foldStyle, row) { - var range = this.indentationBlock(session, row); - if (range) - return range; - +(function () { + this.commentBlock = function (session, row) { var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return; - var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row; - while (++row < maxRow) { line = session.getLine(row); var level = line.search(re); - if (level == -1) continue; - if (line[level] != "#") break; - endRow = row; } - if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; - this.getFoldWidget = function(session, foldStyle, row) { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var range = this.indentationBlock(session, row); + if (range) + return range; + range = this.commentBlock(session, row); + if (range) + return range; + }; + this.getFoldWidget = function (session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/); - if (indent == -1) { - session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { @@ -218,75 +225,171 @@ oop.inherits(FoldMode, BaseFoldMode); session.foldWidgets[row + 1] = ""; return "start"; } - } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } } - - if (prevIndent!= -1 && prevIndent < indent) + if (prevIndent != -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = ""; - if (indent < nextIndent) return "start"; else return ""; }; - }).call(FoldMode.prototype); }); -define("ace/mode/yaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/yaml_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee"], function(require, exports, module) { -"use strict"; +define("ace/mode/folding/yaml",["require","exports","module","ace/lib/oop","ace/mode/folding/coffee","ace/range"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var CoffeeFoldMode = require("./coffee").FoldMode; +var Range = require("../../range").Range; +var FoldMode = exports.FoldMode = function () { }; +oop.inherits(FoldMode, CoffeeFoldMode); +(function () { + this.getFoldWidgetRange = function (session, foldStyle, row) { + var re = /\S/; + var line = session.getLine(row); + var startLevel = line.search(re); + var isCommentFold = line[startLevel] === "#"; + var isDashFold = line[startLevel] === "-"; + if (startLevel == -1) + return; + var startColumn = line.length; + var maxRow = session.getLength(); + var startRow = row; + var endRow = row; + if (isCommentFold) { + var range = this.commentBlock(session, row); + if (range) + return range; + } + else if (isDashFold) { + var range = this.indentationBlock(session, row); + if (range) + return range; + } + else { + while (++row < maxRow) { + var line = session.getLine(row); + var level = line.search(re); + if (level == -1) + continue; + if (level <= startLevel && line[startLevel] !== '-') { + var token = session.getTokenAt(row, 0); + if (!token || token.type !== "string") + break; + } + endRow = row; + } + } + if (endRow > startRow) { + var endColumn = session.getLine(endRow).length; + return new Range(startRow, startColumn, endRow, endColumn); + } + }; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + var indent = line.search(/\S/); + var next = session.getLine(row + 1); + var prev = session.getLine(row - 1); + var prevIndent = prev.search(/\S/); + var nextIndent = next.search(/\S/); + var lineStartsWithDash = line[indent] === '-'; + if (indent == -1) { + session.foldWidgets[row - 1] = prevIndent != -1 && prevIndent < nextIndent ? "start" : ""; + return ""; + } + if (prevIndent == -1) { + if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { + session.foldWidgets[row - 1] = ""; + session.foldWidgets[row + 1] = ""; + return "start"; + } + } + else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { + if (session.getLine(row - 2).search(/\S/) == -1) { + session.foldWidgets[row - 1] = "start"; + session.foldWidgets[row + 1] = ""; + return ""; + } + } + if (prevIndent != -1 && prevIndent < indent) { + session.foldWidgets[row - 1] = "start"; + } + else if (prevIndent != -1 && (prevIndent == indent && lineStartsWithDash)) { + session.foldWidgets[row - 1] = "start"; + } + else { + session.foldWidgets[row - 1] = ""; + } + if (indent < nextIndent) + return "start"; + else + return ""; + }; +}).call(FoldMode.prototype); +}); + +define("ace/mode/yaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/yaml_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/yaml","ace/worker/worker_client"], function(require, exports, module){"use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var YamlHighlightRules = require("./yaml_highlight_rules").YamlHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var FoldMode = require("./folding/coffee").FoldMode; - -var Mode = function() { +var FoldMode = require("./folding/yaml").FoldMode; +var WorkerClient = require("../worker/worker_client").WorkerClient; +var Mode = function () { this.HighlightRules = YamlHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); - -(function() { - - this.lineCommentStart = ["#", "//"]; - - this.getNextLineIndent = function(state, line, tab) { +(function () { + this.lineCommentStart = ["#"]; + this.getNextLineIndent = function (state, line, tab) { var indent = this.$getIndent(line); - if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } } - return indent; }; - - this.checkOutdent = function(state, line, input) { + this.checkOutdent = function (state, line, input) { return this.$outdent.checkOutdent(line, input); }; - - this.autoOutdent = function(state, doc, row) { + this.autoOutdent = function (state, doc, row) { this.$outdent.autoOutdent(doc, row); }; - - + this.createWorker = function (session) { + var worker = new WorkerClient(["ace"], "ace/mode/yaml_worker", "YamlWorker"); + worker.attachToDocument(session.getDocument()); + worker.on("annotate", function (results) { + session.setAnnotations(results.data); + }); + worker.on("terminate", function () { + session.clearAnnotations(); + }); + return worker; + }; this.$id = "ace/mode/yaml"; }).call(Mode.prototype); - exports.Mode = Mode; -}); +}); (function() { + window.require(["ace/mode/yaml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-zeek.js b/vendor/assets/javascripts/ace/mode-zeek.js new file mode 100644 index 00000000..f41868f8 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-zeek.js @@ -0,0 +1,502 @@ +define("ace/mode/zeek_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var ZeekHighlightRules = function () { + this.$rules = { + "start": [ + { + token: "comment.line", + regex: "#.*$" + }, + { + token: "string.double", + regex: /"/, + next: "string-state" + }, + { + token: "string.regexp", + regex: "(/)(?=.*/)", + next: "pattern-state" + }, + { + token: ["keyword.other", "meta.preprocessor"], + regex: /(@(?:load-plugin|load-sigs|load|unload))(.*$)/ + }, + { + token: "keyword.other", + regex: /@(?:DEBUG|DIR|FILENAME|deprecated|if|ifdef|ifndef|else|endif)/ + }, + { + token: [ + "keyword.other", + "meta.preprocessor", + "keyword.operator", + "meta.preprocessor" + ], + regex: /(@prefixes)(\s*)(\+?=)(.*$)/ + }, + { + token: "storage.modifier.attribute", + regex: /\&\b(?:redef|priority|log|optional|default|add_func|delete_func|expire_func|read_expire|write_expire|create_expire|synchronized|persistent|rotate_interval|rotate_size|encrypt|raw_output|mergeable|error_handler|type_column|deprecated)\b/ + }, + { + token: "constant.language", + regex: /\b(?:T|F)\b/ + }, + { + token: "constant.numeric.port", + regex: /\b\d{1,5}\/(?:udp|tcp|icmp|unknown)\b/ + }, + { + token: "constant.numeric.addr", + regex: /\b(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\b/, + comment: "IPv4 address" + }, + { + token: "constant.numeric.addr", + regex: /\[(?:[0-9a-fA-F]{0,4}:){2,7}(?:[0-9a-fA-F]{0,4})?(?:(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2})\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[0-9]{1,2}))?\]/, + comment: "IPv6 address" + }, + { + token: "constant.numeric.float.decimal.interval", + regex: /(?:(?:\d*\.\d*(?:[eE][+-]?\d+)?|\d*[eE][+-]?\d+|\d*\.\d*)|\d+)\s*(?:day|hr|min|msec|usec|sec)s?/ + }, + { + token: "constant.numeric.float.decimal", + regex: /\d*\.\d*(?:[eE][+-]?\d+)?|\d*[eE][+-]?\d+|\d*\.\d*/ + }, + { + token: "constant.numeric.hostname", + regex: /\b[A-Za-z0-9][A-Za-z0-9\-]*(?:\.[A-Za-z0-9][A-Za-z0-9\-]*)+\b/ + }, + { + token: "constant.numeric.integer.hexadecimal", + regex: /\b0x[0-9a-fA-F]+\b/ + }, + { + token: "constant.numeric.integer.decimal", + regex: /\b\d+\b/ + }, + { + token: "keyword.operator", + regex: /==|!=|<=|<|>=|>/ + }, + { + token: "keyword.operator", + regex: /(&&)|(\|\|)|(!)/ + }, + { + token: "keyword.operator", + regex: /=|\+=|-=/ + }, + { + token: "keyword.operator", + regex: /\+\+|\+|--|-|\*|\/|%/ + }, + { + token: "keyword.operator", + regex: /&|\||\^|~/ + }, + { + token: "keyword.operator", + regex: /\b(?:in|as|is)\b/ + }, + { + token: "punctuation.terminator", + regex: /;/ + }, + { + token: "punctuation.accessor", + regex: /\??\$/ + }, + { + token: "punctuation.accessor", + regex: /::/ + }, + { + token: "keyword.operator", + regex: /\?/ + }, + { + token: "punctuation.separator", + regex: /:/ + }, + { + token: "punctuation.separator", + regex: /,/ + }, + { + token: [ + "keyword.other", + "meta.namespace", + "entity.name.namespace" + ], + regex: /(module)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)/ + }, + { + token: "keyword.other", + regex: /\bexport\b/ + }, + { + token: "keyword.control.conditional", + regex: /\b(?:if|else)\b/ + }, + { + token: "keyword.control", + regex: /\b(?:for|while)\b/ + }, + { + token: "keyword.control", + regex: /\b(?:return|break|next|continue|fallthrough)\b/ + }, + { + token: "keyword.control", + regex: /\b(?:switch|default|case)\b/ + }, + { + token: "keyword.other", + regex: /\b(?:add|delete)\b/ + }, + { + token: "keyword.other", + regex: /\bprint\b/ + }, + { + token: "keyword.control", + regex: /\b(?:when|timeout|schedule)\b/ + }, + { + token: [ + "keyword.other", + "meta.struct.record", + "entity.name.struct.record", + "meta.struct.record", + "punctuation.separator", + "meta.struct.record", + "storage.type.struct.record" + ], + regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)(\s*\b)(record)\b/ + }, + { + token: [ + "keyword.other", + "meta.enum", + "entity.name.enum", + "meta.enum", + "punctuation.separator", + "meta.enum", + "storage.type.enum" + ], + regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)(\s*\b)(enum)\b/ + }, + { + token: [ + "keyword.other", + "meta.type", + "entity.name.type", + "meta.type", + "punctuation.separator" + ], + regex: /\b(type)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(\s*)(:)/ + }, + { + token: [ + "keyword.other", + "meta.struct.record", + "storage.type.struct.record", + "meta.struct.record", + "entity.name.struct.record" + ], + regex: /\b(redef)(\s+)(record)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/ + }, + { + token: [ + "keyword.other", + "meta.enum", + "storage.type.enum", + "meta.enum", + "entity.name.enum" + ], + regex: /\b(redef)(\s+)(enum)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/ + }, + { + token: [ + "storage.type", + "text", + "entity.name.function.event" + ], + regex: /\b(event)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/ + }, + { + token: [ + "storage.type", + "text", + "entity.name.function.hook" + ], + regex: /\b(hook)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/ + }, + { + token: [ + "storage.type", + "text", + "entity.name.function" + ], + regex: /\b(function)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)(?=s*\()/ + }, + { + token: "keyword.other", + regex: /\bredef\b/ + }, + { + token: "storage.type", + regex: /\bany\b/ + }, + { + token: "storage.type", + regex: /\b(?:enum|record|set|table|vector)\b/ + }, + { + token: [ + "storage.type", + "text", + "keyword.operator", + "text", + "storage.type" + ], + regex: /\b(opaque)(\s+)(of)(\s+)([A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*)\b/ + }, + { + token: "keyword.operator", + regex: /\bof\b/ + }, + { + token: "storage.type", + regex: /\b(?:addr|bool|count|double|file|int|interval|pattern|port|string|subnet|time)\b/ + }, + { + token: "storage.type", + regex: /\b(?:function|hook|event)\b/ + }, + { + token: "storage.modifier", + regex: /\b(?:global|local|const|option)\b/ + }, + { + token: "entity.name.function.call", + regex: /\b[A-Za-z_][A-Za-z_0-9]*(?:::[A-Za-z_][A-Za-z_0-9]*)*(?=s*\()/ + }, + { + token: "punctuation.section.block.begin", + regex: /\{/ + }, + { + token: "punctuation.section.block.end", + regex: /\}/ + }, + { + token: "punctuation.section.brackets.begin", + regex: /\[/ + }, + { + token: "punctuation.section.brackets.end", + regex: /\]/ + }, + { + token: "punctuation.section.parens.begin", + regex: /\(/ + }, + { + token: "punctuation.section.parens.end", + regex: /\)/ + } + ], // state: start + "string-state": [ + { + token: "constant.character.escape", + regex: /\\./ + }, + { + token: "string.double", + regex: /"/, + next: "start" + }, + { + token: "constant.other.placeholder", + regex: /%-?[0-9]*(\.[0-9]+)?[DTdxsefg]/ + }, + { + token: "string.double", + regex: "." + } + ], // state: string-state + "pattern-state": [ + { + token: "constant.character.escape", + regex: /\\./ + }, + { + token: "string.regexp", + regex: "/", + next: "start" + }, + { + token: "string.regexp", + regex: "." + } + ] // state: pattern-state + }; + this.normalizeRules(); +}; +ZeekHighlightRules.metaData = { + fileTypes: ["bro", "zeek"], + name: "Zeek", + scopeName: "source.zeek" +}; +oop.inherits(ZeekHighlightRules, TextHighlightRules); +exports.ZeekHighlightRules = ZeekHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/zeek",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/zeek_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){/* + THIS FILE WAS AUTOGENERATED BY mode.tmpl.js +*/ +"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ZeekHighlightRules = require("./zeek_highlight_rules").ZeekHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = ZeekHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "#"; + this.$id = "ace/mode/zeek"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/zeek"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/mode-zig.js b/vendor/assets/javascripts/ace/mode-zig.js new file mode 100644 index 00000000..0aec1b87 --- /dev/null +++ b/vendor/assets/javascripts/ace/mode-zig.js @@ -0,0 +1,585 @@ +define("ace/mode/zig_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; +var ZigHighlightRules = function () { + this.$rules = { + start: [{ + include: "#dummy_main" + }], + "#block": [{ + token: [ + "storage.type.zig", + "text", + "punctuation.section.braces.begin.zig" + ], + regex: /((?:[a-zA-Z_][\w.]*|@\".+\")?)(\s*)(\{)/, + push: [{ + token: "punctuation.section.braces.end.zig", + regex: /\}/, + next: "pop" + }, { + include: "#dummy_main" + }] + }], + "#character_escapes": [{ + token: "constant.character.escape.newline.zig", + regex: /\\n/ + }, { + token: "constant.character.escape.carrigereturn.zig", + regex: /\\r/ + }, { + token: "constant.character.escape.tabulator.zig", + regex: /\\t/ + }, { + token: "constant.character.escape.backslash.zig", + regex: /\\\\/ + }, { + token: "constant.character.escape.single-quote.zig", + regex: /\\'/ + }, { + token: "constant.character.escape.double-quote.zig", + regex: /\\\"/ + }, { + token: "constant.character.escape.hexidecimal.zig", + regex: /\\x[a-fA-F\d]{2}/ + }, { + token: "constant.character.escape.hexidecimal.zig", + regex: /\\u\{[a-fA-F\d]{1,6}\}/ + }], + "#comments": [{ + token: "comment.line.documentation.zig", + regex: /\/\/[!\/](?=[^\/])/, + push: [{ + token: "comment.line.documentation.zig", + regex: /$/, + next: "pop" + }, { + include: "#commentContents" + }, { + defaultToken: "comment.line.documentation.zig" + }] + }, { + token: "comment.line.double-slash.zig", + regex: /\/\//, + push: [{ + token: "comment.line.double-slash.zig", + regex: /$/, + next: "pop" + }, { + include: "#commentContents" + }, { + defaultToken: "comment.line.double-slash.zig" + }] + }], + "#commentContents": [{ + token: "keyword.todo.zig", + regex: /\b(?:TODO|FIXME|XXX|NOTE)\b:?/ + }], + "#constants": [{ + token: "constant.language.zig", + regex: /\b(?:null|undefined|true|false)\b/ + }, { + token: "constant.numeric.integer.zig", + regex: /\b(?!\.)-?[\d_]+(?!\.)\b/ + }, { + token: "constant.numeric.integer.hexadecimal.zig", + regex: /\b(?!\.)0x[a-fA-F\d_]+(?!\.)\b/ + }, { + token: "constant.numeric.integer.octal.zig", + regex: /\b(?!\.)0o[0-7_]+(?!\.)\b/ + }, { + token: "constant.numeric.integer.binary.zig", + regex: /\b(?!\.)0b[01_]+(?!\.)\b/ + }, { + token: "constant.numeric.float.zig", + regex: /(?!\.)-?\b[\d_]+(?:\.[\d_]+)?(?:[eE][+-]?[\d_]+)?(?!\.)\b/ + }, { + token: "constant.numeric.float.hexadecimal.zig", + regex: /(?!\.)-?\b0x[a-fA-F\d_]+(?:\.[a-fA-F\d_]+)?[pP]?(?:[+-]?[\d_]+)?(?!\.)\b/ + }], + "#container_decl": [{ + token: "entity.name.union.zig", + regex: /\b(?!\d)(?:[a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*union\s*[(\{])/ + }, { + token: "entity.name.struct.zig", + regex: /\b(?!\d)(?:[a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*struct\s*[(\{])/ + }, { + token: "entity.name.enum.zig", + regex: /\b(?!\d)(?:[a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*(?:extern|packed)?\b\s*enum\s*[(\{])/ + }, { + token: "entity.name.error.zig", + regex: /\b(?!\d)(?:[a-zA-Z_]\w*|@\".+\")?(?=\s*=\s*error\s*[(\{])/ + }, { + token: [ + "storage.type.error.zig", + "punctuation.accessor.zig", + "entity.name.error.zig" + ], + regex: /\b(error)(\.)([a-zA-Z_]\w*|@\".+\")/ + }], + "#dummy_main": [{ + include: "#label" + }, { + include: "#function_type" + }, { + include: "#function_def" + }, { + include: "#punctuation" + }, { + include: "#storage_modifier" + }, { + include: "#container_decl" + }, { + include: "#constants" + }, { + include: "#comments" + }, { + include: "#strings" + }, { + include: "#storage" + }, { + include: "#keywords" + }, { + include: "#operators" + }, { + include: "#support" + }, { + include: "#field_decl" + }, { + include: "#block" + }, { + include: "#function_call" + }, { + include: "#enum_literal" + }, { + include: "#variables" + }], + "#enum_literal": [{ + token: "constant.language.enum", + regex: /(?!\w|\)|\?|\}|\]|\*|\.)\.(?:[a-zA-Z_]\w*\b|@\"[^\"]*\")(?!\(|\s*=[^=>])/ + }], + "#field_decl": [{ + token: [ + "variable.other.member.zig", + "text", + "punctuation.separator.zig", + "text" + ], + regex: /([a-zA-Z_]\w*|@\".+\")(\s*)(:)(\s*)/, + push: [{ + token: [ + "storage.type.zig", + "text", + "punctuation.separator.zig", + "keyword.operator.assignment.zig" + ], + regex: /((?:[a-zA-Z_][\w.]*|@\".+\")?)(\s*)(?:(,)|(=)|$)/, + next: "pop" + }, { + include: "#dummy_main" + }] + }], + "#function_call": [{ + token: "variable.function.zig", + regex: /\b(?!fn)(?:[a-zA-Z_]\w*|@\".+\")(?=\s*\()/ + }], + "#keywords": [{ + token: "keyword.control.zig", + regex: /\b(?:while|for|break|return|continue|asm|defer|errdefer|unreachable)\b/ + }, { + token: "keyword.control.async.zig", + regex: /\b(?:async|await|suspend|nosuspend|resume)\b/ + }, { + token: "keyword.control.conditional.zig", + regex: /\b(?:if|else|switch|try|catch|orelse)\b/ + }, { + token: "keyword.control.import.zig", + regex: /\b(?!\w)(?:@import|@cImport|@cInclude)\b/ + }, { + token: "keyword.other.usingnamespace.zig", + regex: /\busingnamespace\b/ + }], + "#label": [{ + token: [ + "keyword.control.zig", + "text", + "entity.name.label.zig", + "entity.name.label.zig" + ], + regex: /\b(break|continue)(\s*:\s*)([a-zA-Z_]\w*|@\".+\")\b|\b(?!\d)([a-zA-Z_]\w*|@\".+\")\b(?=\s*:\s*(?:\{|while\b))/ + }], + "#operators": [{ + token: "keyword.operator.zig", + regex: /\b!\b/ + }, { + token: "keyword.operator.logical.zig", + regex: /==|(?:!|>|<)=?/ + }, { + token: "keyword.operator.word.zig", + regex: /\b(?:and|or)\b/ + }, { + token: "keyword.operator.assignment.zig", + regex: /(?:(?:\+|-|\*)\%?|\/|%|<<|>>|&|\|(?=[^\|])|\^)?=/ + }, { + token: "keyword.operator.arithmetic.zig", + regex: /(?:\+|-|\*)\%?|\/(?!\/)|%/ + }, { + token: "keyword.operator.bitwise.zig", + regex: /<<|>>|&(?=[a-zA-Z_]|@\")|\|(?=[^\|])|\^|~/ + }, { + token: "keyword.operator.other.zig", + regex: /\+\+|\*\*|->|\.\?|\.\*|&(?=[a-zA-Z_]|@\")|\?|\|\||\.{2,3}/ + }], + "#param_list": [{ + token: [ + "variable.parameter.zig", + "text", + "punctuation.separator.zig", + "text" + ], + regex: /([a-zA-Z_]\w*|@\".+\")(\s*)(:)(\s*)/, + push: [{ + token: [ + "storage.type.zig", + "text", + "punctuation.separator.zig", + "punctuation.section.parens.end.zig" + ], + regex: /((?:[a-zA-Z_][\w.]*|@\".+\")?)(\s*)(?:(,)|(\)))/, + next: "pop" + }, { + include: "#dummy_main" + }, { + token: "storage.type.zig", + regex: /[a-zA-Z_][\w.]*|@\".+\"/ + }] + }], + "#punctuation": [{ + token: "punctuation.separator.zig", + regex: /,/ + }, { + token: "punctuation.terminator.zig", + regex: /;/ + }, { + token: "punctuation.section.parens.begin.zig", + regex: /\(/ + }, { + token: "punctuation.section.parens.end.zig", + regex: /\)/ + }], + "#storage": [{ + token: "storage.type.zig", + regex: /\b(?:bool|void|noreturn|type|anyerror|anytype)\b/ + }, { + token: "storage.type.integer.zig", + regex: /\b(?!\.)(?:[iu]\d+|[iu]size|comptime_int)\b/ + }, { + token: "storage.type.float.zig", + regex: /\b(?:f16|f32|f64|f128|comptime_float)\b/ + }, { + token: "storage.type.c_compat.zig", + regex: /\b(?:c_short|c_ushort|c_int|c_uint|c_long|c_ulong|c_longlong|c_ulonglong|c_longdouble|c_void)\b/ + }, { + token: [ + "storage.type.zig", + "text", + "keyword.operator.zig", + "text", + "storage.type.zig" + ], + regex: /\b(anyframe)\b(\s*)((?:->)?)(\s*)(?:([a-zA-Z_][\w.]*|@\".+\")\b(?!\s*\())?/ + }, { + token: "storage.type.function.zig", + regex: /\bfn\b/ + }, { + token: "storage.type.test.zig", + regex: /\btest\b/ + }, { + token: "storage.type.struct.zig", + regex: /\bstruct\b/ + }, { + token: "storage.type.enum.zig", + regex: /\benum\b/ + }, { + token: "storage.type.union.zig", + regex: /\bunion\b/ + }, { + token: "storage.type.error.zig", + regex: /\berror\b/ + }], + "#storage_modifier": [{ + token: "storage.modifier.zig", + regex: /\b(?:const|var|extern|packed|export|pub|noalias|inline|noinline|comptime|volatile|align|linksection|threadlocal|allowzero)\b/ + }], + "#strings": [{ + token: "string.quoted.single.zig", + regex: /\'/, + push: [{ + token: "string.quoted.single.zig", + regex: /\'/, + next: "pop" + }, { + include: "#character_escapes" + }, { + token: "invalid.illegal.character.zig", + regex: /\\[^\'][^\']*?/ + }, { + defaultToken: "string.quoted.single.zig" + }] + }, { + token: "string.quoted.double.zig", + regex: /c?\"/, + push: [{ + token: "string.quoted.double.zig", + regex: /\"/, + next: "pop" + }, { + include: "#character_escapes" + }, { + token: "invalid.illegal.character.zig", + regex: /\\[^\'][^\']*?/ + }, { + defaultToken: "string.quoted.double.zig" + }] + }, { + token: "string.quoted.other.zig", + regex: /c?\\\\/, + push: [{ + token: "string.quoted.other.zig", + regex: /$/, + next: "pop" + }, { + defaultToken: "string.quoted.other.zig" + }] + }], + "#function_type": [{ + token: [ + "storage.type.function.zig", + "text", + "punctuation.section.parens.begin.zig" + ], + regex: /\b(fn)(\s*)(\()/, + push: [{ + token: [ + "text", + "storage.type.zig", + "text", + "keyword.operator.zig", + "text", + "storage.type.zig" + ], + regex: /(\s*)(?:([a-zA-Z_]\w*|@\".+\"))?(\s*)((?:!)?)(\s*)([a-zA-Z_]\w*|@\".+\")/, + next: "pop" + }, { + include: "#label" + }, { + include: "#param_list" + }, { + token: "storage.type.zig", + regex: /[a-zA-Z_]\w*|@\".+\"/ + }, { + include: "#dummy_main" + }, { + defaultToken: "meta.function.parameters.zig" + }] + }], + "#function_def": [{ + token: [ + "text", + "entity.name.function", + "punctuation.section.parens.begin.zig" + ], + regex: /(?=fn\s+)(\s+)([a-zA-Z_]\w*|@\".+\")(\()/, + push: [{ + token: [ + "text", + "storage.type.zig", + "keyword.operator.zig", + "text", + "storage.type.zig" + ], + regex: /(\s*)((?:[a-zA-Z_][\w.]*|@\".+\")?)((?:!)?)(\s*)(?:([a-zA-Z_][\w.]*|@\".+\")?)/, + next: "pop" + }, { + include: "#label" + }, { + include: "#param_list" + }, { + token: "storage.type.zig", + regex: /[a-zA-Z_][\w.]*|@\".+\"/ + }, { + include: "#dummy_main" + }] + }], + "#support": [{ + token: "support.function.zig", + regex: /\b@(?!\w|\"|[0-9])[a-zA-Z_]\w*\b/ + }], + "#variables": [{ + token: "variable.constant.zig", + regex: /\b[_A-Z][_A-Z0-9]+\b/ + }, { + token: "entity.name.type.zig", + regex: /\b[_a-zA-Z][_a-zA-Z0-9]*_t\b/ + }, { + token: "entity.name.type.zig", + regex: /\b[A-Z][a-zA-Z0-9]*\b/ + }, { + token: "variable.zig", + regex: /\b[_a-zA-Z][_a-zA-Z0-9]*\b/ + }] + }; + this.normalizeRules(); +}; +ZigHighlightRules.metaData = { + fileTypes: ["zig"], + keyEquivalent: "^~Z", + name: "Zig", + scopeName: "source.zig" +}; +oop.inherits(ZigHighlightRules, TextHighlightRules); +exports.ZigHighlightRules = ZigHighlightRules; + +}); + +define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module){"use strict"; +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; +var FoldMode = exports.FoldMode = function (commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start)); + this.foldingStopMarker = new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end)); + } +}; +oop.inherits(FoldMode, BaseFoldMode); +(function () { + this.foldingStartMarker = /([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe = /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function (session, foldStyle, row) { + var line = session.getLine(row); + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + var fw = this._getFoldWidgetBase(session, foldStyle, row); + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + return fw; + }; + this.getFoldWidgetRange = function (session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } + else if (foldStyle != "all") + range = null; + } + return range; + } + if (foldStyle === "markbegin") + return; + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + return session.getCommentFoldRange(row, i, -1); + } + }; + this.getSectionRange = function (session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } + else if (subRange.isMultiLine()) { + row = subRange.end.row; + } + else if (startIndent == indent) { + break; + } + } + endRow = row; + } + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function (session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) + continue; + if (m[1]) + depth--; + else + depth++; + if (!depth) + break; + } + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; +}).call(FoldMode.prototype); + +}); + +define("ace/mode/zig",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/zig_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module){"use strict"; +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var ZigHighlightRules = require("./zig_highlight_rules").ZigHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; +var Mode = function () { + this.HighlightRules = ZigHighlightRules; + this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; +}; +oop.inherits(Mode, TextMode); +(function () { + this.lineCommentStart = "//"; + this.$id = "ace/mode/zig"; +}).call(Mode.prototype); +exports.Mode = Mode; + +}); (function() { + window.require(["ace/mode/zig"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/abap.js b/vendor/assets/javascripts/ace/snippets/abap.js index cc404459..8a6b11f7 100644 --- a/vendor/assets/javascripts/ace/snippets/abap.js +++ b/vendor/assets/javascripts/ace/snippets/abap.js @@ -1,7 +1,9 @@ -define("ace/snippets/abap",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "abap"; - -}); +; (function() { + window.require(["ace/snippets/abap"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/abc.js b/vendor/assets/javascripts/ace/snippets/abc.js index 1df7d31b..9dc8514a 100644 --- a/vendor/assets/javascripts/ace/snippets/abc.js +++ b/vendor/assets/javascripts/ace/snippets/abc.js @@ -1,38 +1,16 @@ -define("ace/snippets/abc",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "\n\ -snippet zupfnoter.print\n\ - %%%%hn.print {\"startpos\": ${1:pos_y}, \"t\":\"${2:title}\", \"v\":[${3:voices}], \"s\":[[${4:syncvoices}1,2]], \"f\":[${5:flowlines}], \"sf\":[${6:subflowlines}], \"j\":[${7:jumplines}]}\n\ -\n\ -snippet zupfnoter.note\n\ - %%%%hn.note {\"pos\": [${1:pos_x},${2:pos_y}], \"text\": \"${3:text}\", \"style\": \"${4:style}\"}\n\ -\n\ -snippet zupfnoter.annotation\n\ - %%%%hn.annotation {\"id\": \"${1:id}\", \"pos\": [${2:pos}], \"text\": \"${3:text}\"}\n\ -\n\ -snippet zupfnoter.lyrics\n\ - %%%%hn.lyrics {\"pos\": [${1:x_pos},${2:y_pos}]}\n\ -\n\ -snippet zupfnoter.legend\n\ - %%%%hn.legend {\"pos\": [${1:x_pos},${2:y_pos}]}\n\ -\n\ -\n\ -\n\ -snippet zupfnoter.target\n\ - \"^:${1:target}\"\n\ -\n\ -snippet zupfnoter.goto\n\ - \"^@${1:target}@${2:distance}\"\n\ -\n\ -snippet zupfnoter.annotationref\n\ - \"^#${1:target}\"\n\ -\n\ -snippet zupfnoter.annotation\n\ - \"^!${1:text}@${2:x_offset},${3:y_offset}\"\n\ -\n\ -\n\ -"; -exports.scope = "abc"; +define("ace/snippets/abc.snippets",["require","exports","module"], function(require, exports, module){module.exports = "\nsnippet zupfnoter.print\n\t%%%%hn.print {\"startpos\": ${1:pos_y}, \"t\":\"${2:title}\", \"v\":[${3:voices}], \"s\":[[${4:syncvoices}1,2]], \"f\":[${5:flowlines}], \"sf\":[${6:subflowlines}], \"j\":[${7:jumplines}]}\n\nsnippet zupfnoter.note\n\t%%%%hn.note {\"pos\": [${1:pos_x},${2:pos_y}], \"text\": \"${3:text}\", \"style\": \"${4:style}\"}\n\nsnippet zupfnoter.annotation\n\t%%%%hn.annotation {\"id\": \"${1:id}\", \"pos\": [${2:pos}], \"text\": \"${3:text}\"}\n\nsnippet zupfnoter.lyrics\n\t%%%%hn.lyrics {\"pos\": [${1:x_pos},${2:y_pos}]}\n\nsnippet zupfnoter.legend\n\t%%%%hn.legend {\"pos\": [${1:x_pos},${2:y_pos}]}\n\n\n\nsnippet zupfnoter.target\n\t\"^:${1:target}\"\n\nsnippet zupfnoter.goto\n\t\"^@${1:target}@${2:distance}\"\n\nsnippet zupfnoter.annotationref\n\t\"^#${1:target}\"\n\nsnippet zupfnoter.annotation\n\t\"^!${1:text}@${2:x_offset},${3:y_offset}\"\n\n\n"; }); + +define("ace/snippets/abc",["require","exports","module","ace/snippets/abc.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./abc.snippets"); +exports.scope = "abc"; + +}); (function() { + window.require(["ace/snippets/abc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/actionscript.js b/vendor/assets/javascripts/ace/snippets/actionscript.js index 46551443..6b91063f 100644 --- a/vendor/assets/javascripts/ace/snippets/actionscript.js +++ b/vendor/assets/javascripts/ace/snippets/actionscript.js @@ -1,164 +1,16 @@ -define("ace/snippets/actionscript",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet main\n\ - package {\n\ - import flash.display.*;\n\ - import flash.Events.*;\n\ - \n\ - public class Main extends Sprite {\n\ - public function Main ( ) {\n\ - trace(\"start\");\n\ - stage.scaleMode = StageScaleMode.NO_SCALE;\n\ - stage.addEventListener(Event.RESIZE, resizeListener);\n\ - }\n\ - \n\ - private function resizeListener (e:Event):void {\n\ - trace(\"The application window changed size!\");\n\ - trace(\"New width: \" + stage.stageWidth);\n\ - trace(\"New height: \" + stage.stageHeight);\n\ - }\n\ - \n\ - }\n\ - \n\ - }\n\ -snippet class\n\ - ${1:public|internal} class ${2:name} ${3:extends } {\n\ - public function $2 ( ) {\n\ - (\"start\");\n\ - }\n\ - }\n\ -snippet all\n\ - package name {\n\ -\n\ - ${1:public|internal|final} class ${2:name} ${3:extends } {\n\ - private|public| static const FOO = \"abc\";\n\ - private|public| static var BAR = \"abc\";\n\ -\n\ - // class initializer - no JIT !! one time setup\n\ - if Cababilities.os == \"Linux|MacOS\" {\n\ - FOO = \"other\";\n\ - }\n\ -\n\ - // constructor:\n\ - public function $2 ( ){\n\ - super2();\n\ - trace(\"start\");\n\ - }\n\ - public function name (a, b...){\n\ - super.name(..);\n\ - lable:break\n\ - }\n\ - }\n\ - }\n\ -\n\ - function A(){\n\ - // A can only be accessed within this file\n\ - }\n\ -snippet switch\n\ - switch(${1}){\n\ - case ${2}:\n\ - ${3}\n\ - break;\n\ - default:\n\ - }\n\ -snippet case\n\ - case ${1}:\n\ - ${2}\n\ - break;\n\ -snippet package\n\ - package ${1:package}{\n\ - ${2}\n\ - }\n\ -snippet wh\n\ - while ${1:cond}{\n\ - ${2}\n\ - }\n\ -snippet do\n\ - do {\n\ - ${2}\n\ - } while (${1:cond})\n\ -snippet while\n\ - while ${1:cond}{\n\ - ${2}\n\ - }\n\ -snippet for enumerate names\n\ - for (${1:var} in ${2:object}){\n\ - ${3}\n\ - }\n\ -snippet for enumerate values\n\ - for each (${1:var} in ${2:object}){\n\ - ${3}\n\ - }\n\ -snippet get_set\n\ - function get ${1:name} {\n\ - return ${2}\n\ - }\n\ - function set $1 (newValue) {\n\ - ${3}\n\ - }\n\ -snippet interface\n\ - interface name {\n\ - function method(${1}):${2:returntype};\n\ - }\n\ -snippet try\n\ - try {\n\ - ${1}\n\ - } catch (error:ErrorType) {\n\ - ${2}\n\ - } finally {\n\ - ${3}\n\ - }\n\ -# For Loop (same as c.snippet)\n\ -snippet for for (..) {..}\n\ - for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n\ - ${4:/* code */}\n\ - }\n\ -# Custom For Loop\n\ -snippet forr\n\ - for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {\n\ - ${5:/* code */}\n\ - }\n\ -# If Condition\n\ -snippet if\n\ - if (${1:/* condition */}) {\n\ - ${2:/* code */}\n\ - }\n\ -snippet el\n\ - else {\n\ - ${1}\n\ - }\n\ -# Ternary conditional\n\ -snippet t\n\ - ${1:/* condition */} ? ${2:a} : ${3:b}\n\ -snippet fun\n\ - function ${1:function_name}(${2})${3}\n\ - {\n\ - ${4:/* code */}\n\ - }\n\ -# FlxSprite (usefull when using the flixel library)\n\ -snippet FlxSprite\n\ - package\n\ - {\n\ - import org.flixel.*\n\ -\n\ - public class ${1:ClassName} extends ${2:FlxSprite}\n\ - {\n\ - public function $1(${3: X:Number, Y:Number}):void\n\ - {\n\ - super(X,Y);\n\ - ${4: //code...}\n\ - }\n\ -\n\ - override public function update():void\n\ - {\n\ - super.update();\n\ - ${5: //code...}\n\ - }\n\ - }\n\ - }\n\ -\n\ -"; -exports.scope = "actionscript"; +define("ace/snippets/actionscript.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet main\n\tpackage {\n\t\timport flash.display.*;\n\t\timport flash.Events.*;\n\t\n\t\tpublic class Main extends Sprite {\n\t\t\tpublic function Main (\t) {\n\t\t\t\ttrace(\"start\");\n\t\t\t\tstage.scaleMode = StageScaleMode.NO_SCALE;\n\t\t\t\tstage.addEventListener(Event.RESIZE, resizeListener);\n\t\t\t}\n\t\n\t\t\tprivate function resizeListener (e:Event):void {\n\t\t\t\ttrace(\"The application window changed size!\");\n\t\t\t\ttrace(\"New width: \" + stage.stageWidth);\n\t\t\t\ttrace(\"New height: \" + stage.stageHeight);\n\t\t\t}\n\t\n\t\t}\n\t\n\t}\nsnippet class\n\t${1:public|internal} class ${2:name} ${3:extends } {\n\t\tpublic function $2 (\t) {\n\t\t\t(\"start\");\n\t\t}\n\t}\nsnippet all\n\tpackage name {\n\n\t\t${1:public|internal|final} class ${2:name} ${3:extends } {\n\t\t\tprivate|public| static const FOO = \"abc\";\n\t\t\tprivate|public| static var BAR = \"abc\";\n\n\t\t\t// class initializer - no JIT !! one time setup\n\t\t\tif Cababilities.os == \"Linux|MacOS\" {\n\t\t\t\tFOO = \"other\";\n\t\t\t}\n\n\t\t\t// constructor:\n\t\t\tpublic function $2 (\t){\n\t\t\t\tsuper2();\n\t\t\t\ttrace(\"start\");\n\t\t\t}\n\t\t\tpublic function name (a, b...){\n\t\t\t\tsuper.name(..);\n\t\t\t\tlable:break\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction A(){\n\t\t// A can only be accessed within this file\n\t}\nsnippet switch\n\tswitch(${1}){\n\t\tcase ${2}:\n\t\t\t${3}\n\t\tbreak;\n\t\tdefault:\n\t}\nsnippet case\n\t\tcase ${1}:\n\t\t\t${2}\n\t\tbreak;\nsnippet package\n\tpackage ${1:package}{\n\t\t${2}\n\t}\nsnippet wh\n\twhile ${1:cond}{\n\t\t${2}\n\t}\nsnippet do\n\tdo {\n\t\t${2}\n\t} while (${1:cond})\nsnippet while\n\twhile ${1:cond}{\n\t\t${2}\n\t}\nsnippet for enumerate names\n\tfor (${1:var} in ${2:object}){\n\t\t${3}\n\t}\nsnippet for enumerate values\n\tfor each (${1:var} in ${2:object}){\n\t\t${3}\n\t}\nsnippet get_set\n\tfunction get ${1:name} {\n\t\treturn ${2}\n\t}\n\tfunction set $1 (newValue) {\n\t\t${3}\n\t}\nsnippet interface\n\tinterface name {\n\t\tfunction method(${1}):${2:returntype};\n\t}\nsnippet try\n\ttry {\n\t\t${1}\n\t} catch (error:ErrorType) {\n\t\t${2}\n\t} finally {\n\t\t${3}\n\t}\n# For Loop (same as c.snippet)\nsnippet for for (..) {..}\n\tfor (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n\t\t${4:/* code */}\n\t}\n# Custom For Loop\nsnippet forr\n\tfor (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {\n\t\t${5:/* code */}\n\t}\n# If Condition\nsnippet if\n\tif (${1:/* condition */}) {\n\t\t${2:/* code */}\n\t}\nsnippet el\n\telse {\n\t\t${1}\n\t}\n# Ternary conditional\nsnippet t\n\t${1:/* condition */} ? ${2:a} : ${3:b}\nsnippet fun\n\tfunction ${1:function_name}(${2})${3}\n\t{\n\t\t${4:/* code */}\n\t}\n# FlxSprite (usefull when using the flixel library)\nsnippet FlxSprite\n\tpackage\n\t{\n\t\timport org.flixel.*\n\n\t\tpublic class ${1:ClassName} extends ${2:FlxSprite}\n\t\t{\n\t\t\tpublic function $1(${3: X:Number, Y:Number}):void\n\t\t\t{\n\t\t\t\tsuper(X,Y);\n\t\t\t\t${4: //code...}\n\t\t\t}\n\n\t\t\toverride public function update():void\n\t\t\t{\n\t\t\t\tsuper.update();\n\t\t\t\t${5: //code...}\n\t\t\t}\n\t\t}\n\t}\n\n"; }); + +define("ace/snippets/actionscript",["require","exports","module","ace/snippets/actionscript.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./actionscript.snippets"); +exports.scope = "actionscript"; + +}); (function() { + window.require(["ace/snippets/actionscript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/ada.js b/vendor/assets/javascripts/ace/snippets/ada.js index 2e53d2d1..8eb30a10 100644 --- a/vendor/assets/javascripts/ace/snippets/ada.js +++ b/vendor/assets/javascripts/ace/snippets/ada.js @@ -1,7 +1,9 @@ -define("ace/snippets/ada",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "ada"; - -}); +; (function() { + window.require(["ace/snippets/ada"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/alda.js b/vendor/assets/javascripts/ace/snippets/alda.js new file mode 100644 index 00000000..a7827995 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/alda.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/alda"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/apache_conf.js b/vendor/assets/javascripts/ace/snippets/apache_conf.js index 21055de0..21986504 100644 --- a/vendor/assets/javascripts/ace/snippets/apache_conf.js +++ b/vendor/assets/javascripts/ace/snippets/apache_conf.js @@ -1,7 +1,9 @@ -define("ace/snippets/apache_conf",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "apache_conf"; - -}); +; (function() { + window.require(["ace/snippets/apache_conf"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/apex.js b/vendor/assets/javascripts/ace/snippets/apex.js new file mode 100644 index 00000000..2dbcd0fc --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/apex.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/apex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/applescript.js b/vendor/assets/javascripts/ace/snippets/applescript.js index 7f8710d4..ea322dbd 100644 --- a/vendor/assets/javascripts/ace/snippets/applescript.js +++ b/vendor/assets/javascripts/ace/snippets/applescript.js @@ -1,7 +1,9 @@ -define("ace/snippets/applescript",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "applescript"; - -}); +; (function() { + window.require(["ace/snippets/applescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/aql.js b/vendor/assets/javascripts/ace/snippets/aql.js new file mode 100644 index 00000000..5568f6a1 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/aql.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/aql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/asciidoc.js b/vendor/assets/javascripts/ace/snippets/asciidoc.js index 4f82a045..e5b47cfa 100644 --- a/vendor/assets/javascripts/ace/snippets/asciidoc.js +++ b/vendor/assets/javascripts/ace/snippets/asciidoc.js @@ -1,7 +1,9 @@ -define("ace/snippets/asciidoc",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "asciidoc"; - -}); +; (function() { + window.require(["ace/snippets/asciidoc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/asl.js b/vendor/assets/javascripts/ace/snippets/asl.js new file mode 100644 index 00000000..0166b955 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/asl.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/asl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/assembly_x86.js b/vendor/assets/javascripts/ace/snippets/assembly_x86.js index 87694e0b..ffbf5971 100644 --- a/vendor/assets/javascripts/ace/snippets/assembly_x86.js +++ b/vendor/assets/javascripts/ace/snippets/assembly_x86.js @@ -1,7 +1,9 @@ -define("ace/snippets/assembly_x86",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "assembly_x86"; - -}); +; (function() { + window.require(["ace/snippets/assembly_x86"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/astro.js b/vendor/assets/javascripts/ace/snippets/astro.js new file mode 100644 index 00000000..f9471053 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/astro.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/astro"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/autohotkey.js b/vendor/assets/javascripts/ace/snippets/autohotkey.js index 834f3e28..e0674d4e 100644 --- a/vendor/assets/javascripts/ace/snippets/autohotkey.js +++ b/vendor/assets/javascripts/ace/snippets/autohotkey.js @@ -1,7 +1,9 @@ -define("ace/snippets/autohotkey",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "autohotkey"; - -}); +; (function() { + window.require(["ace/snippets/autohotkey"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/batchfile.js b/vendor/assets/javascripts/ace/snippets/batchfile.js index 9be8afeb..0404a41e 100644 --- a/vendor/assets/javascripts/ace/snippets/batchfile.js +++ b/vendor/assets/javascripts/ace/snippets/batchfile.js @@ -1,7 +1,9 @@ -define("ace/snippets/batchfile",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "batchfile"; - -}); +; (function() { + window.require(["ace/snippets/batchfile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/bibtex.js b/vendor/assets/javascripts/ace/snippets/bibtex.js new file mode 100644 index 00000000..0a87bc82 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/bibtex.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/bibtex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/bro.js b/vendor/assets/javascripts/ace/snippets/bro.js deleted file mode 100644 index 4a3ad467..00000000 --- a/vendor/assets/javascripts/ace/snippets/bro.js +++ /dev/null @@ -1,7 +0,0 @@ -define("ace/snippets/bro",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText =undefined; -exports.scope = ""; - -}); diff --git a/vendor/assets/javascripts/ace/snippets/c9search.js b/vendor/assets/javascripts/ace/snippets/c9search.js index 0cc56756..d83a158f 100644 --- a/vendor/assets/javascripts/ace/snippets/c9search.js +++ b/vendor/assets/javascripts/ace/snippets/c9search.js @@ -1,7 +1,9 @@ -define("ace/snippets/c9search",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "c9search"; - -}); +; (function() { + window.require(["ace/snippets/c9search"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/c_cpp.js b/vendor/assets/javascripts/ace/snippets/c_cpp.js index 3ad618df..b7803a84 100644 --- a/vendor/assets/javascripts/ace/snippets/c_cpp.js +++ b/vendor/assets/javascripts/ace/snippets/c_cpp.js @@ -1,138 +1,16 @@ -define("ace/snippets/c_cpp",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "## STL Collections\n\ -# std::array\n\ -snippet array\n\ - std::array<${1:T}, ${2:N}> ${3};${4}\n\ -# std::vector\n\ -snippet vector\n\ - std::vector<${1:T}> ${2};${3}\n\ -# std::deque\n\ -snippet deque\n\ - std::deque<${1:T}> ${2};${3}\n\ -# std::forward_list\n\ -snippet flist\n\ - std::forward_list<${1:T}> ${2};${3}\n\ -# std::list\n\ -snippet list\n\ - std::list<${1:T}> ${2};${3}\n\ -# std::set\n\ -snippet set\n\ - std::set<${1:T}> ${2};${3}\n\ -# std::map\n\ -snippet map\n\ - std::map<${1:Key}, ${2:T}> ${3};${4}\n\ -# std::multiset\n\ -snippet mset\n\ - std::multiset<${1:T}> ${2};${3}\n\ -# std::multimap\n\ -snippet mmap\n\ - std::multimap<${1:Key}, ${2:T}> ${3};${4}\n\ -# std::unordered_set\n\ -snippet uset\n\ - std::unordered_set<${1:T}> ${2};${3}\n\ -# std::unordered_map\n\ -snippet umap\n\ - std::unordered_map<${1:Key}, ${2:T}> ${3};${4}\n\ -# std::unordered_multiset\n\ -snippet umset\n\ - std::unordered_multiset<${1:T}> ${2};${3}\n\ -# std::unordered_multimap\n\ -snippet ummap\n\ - std::unordered_multimap<${1:Key}, ${2:T}> ${3};${4}\n\ -# std::stack\n\ -snippet stack\n\ - std::stack<${1:T}> ${2};${3}\n\ -# std::queue\n\ -snippet queue\n\ - std::queue<${1:T}> ${2};${3}\n\ -# std::priority_queue\n\ -snippet pqueue\n\ - std::priority_queue<${1:T}> ${2};${3}\n\ -##\n\ -## Access Modifiers\n\ -# private\n\ -snippet pri\n\ - private\n\ -# protected\n\ -snippet pro\n\ - protected\n\ -# public\n\ -snippet pub\n\ - public\n\ -# friend\n\ -snippet fr\n\ - friend\n\ -# mutable\n\ -snippet mu\n\ - mutable\n\ -## \n\ -## Class\n\ -# class\n\ -snippet cl\n\ - class ${1:`Filename('$1', 'name')`} \n\ - {\n\ - public:\n\ - $1(${2});\n\ - ~$1();\n\ -\n\ - private:\n\ - ${3:/* data */}\n\ - };\n\ -# member function implementation\n\ -snippet mfun\n\ - ${4:void} ${1:`Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) {\n\ - ${5:/* code */}\n\ - }\n\ -# namespace\n\ -snippet ns\n\ - namespace ${1:`Filename('', 'my')`} {\n\ - ${2}\n\ - } /* namespace $1 */\n\ -##\n\ -## Input/Output\n\ -# std::cout\n\ -snippet cout\n\ - std::cout << ${1} << std::endl;${2}\n\ -# std::cin\n\ -snippet cin\n\ - std::cin >> ${1};${2}\n\ -##\n\ -## Iteration\n\ -# for i \n\ -snippet fori\n\ - for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n\ - ${4:/* code */}\n\ - }${5}\n\ -\n\ -# foreach\n\ -snippet fore\n\ - for (${1:auto} ${2:i} : ${3:container}) {\n\ - ${4:/* code */}\n\ - }${5}\n\ -# iterator\n\ -snippet iter\n\ - for (${1:std::vector}<${2:type}>::${3:const_iterator} ${4:i} = ${5:container}.begin(); $4 != $5.end(); ++$4) {\n\ - ${6}\n\ - }${7}\n\ -\n\ -# auto iterator\n\ -snippet itera\n\ - for (auto ${1:i} = $1.begin(); $1 != $1.end(); ++$1) {\n\ - ${2:std::cout << *$1 << std::endl;}\n\ - }${3}\n\ -##\n\ -## Lambdas\n\ -# lamda (one line)\n\ -snippet ld\n\ - [${1}](${2}){${3:/* code */}}${4}\n\ -# lambda (multi-line)\n\ -snippet lld\n\ - [${1}](${2}){\n\ - ${3:/* code */}\n\ - }${4}\n\ -"; -exports.scope = "c_cpp"; +define("ace/snippets/c_cpp.snippets",["require","exports","module"], function(require, exports, module){module.exports = "## STL Collections\n# std::array\nsnippet array\n\tstd::array<${1:T}, ${2:N}> ${3};${4}\n# std::vector\nsnippet vector\n\tstd::vector<${1:T}> ${2};${3}\n# std::deque\nsnippet deque\n\tstd::deque<${1:T}> ${2};${3}\n# std::forward_list\nsnippet flist\n\tstd::forward_list<${1:T}> ${2};${3}\n# std::list\nsnippet list\n\tstd::list<${1:T}> ${2};${3}\n# std::set\nsnippet set\n\tstd::set<${1:T}> ${2};${3}\n# std::map\nsnippet map\n\tstd::map<${1:Key}, ${2:T}> ${3};${4}\n# std::multiset\nsnippet mset\n\tstd::multiset<${1:T}> ${2};${3}\n# std::multimap\nsnippet mmap\n\tstd::multimap<${1:Key}, ${2:T}> ${3};${4}\n# std::unordered_set\nsnippet uset\n\tstd::unordered_set<${1:T}> ${2};${3}\n# std::unordered_map\nsnippet umap\n\tstd::unordered_map<${1:Key}, ${2:T}> ${3};${4}\n# std::unordered_multiset\nsnippet umset\n\tstd::unordered_multiset<${1:T}> ${2};${3}\n# std::unordered_multimap\nsnippet ummap\n\tstd::unordered_multimap<${1:Key}, ${2:T}> ${3};${4}\n# std::stack\nsnippet stack\n\tstd::stack<${1:T}> ${2};${3}\n# std::queue\nsnippet queue\n\tstd::queue<${1:T}> ${2};${3}\n# std::priority_queue\nsnippet pqueue\n\tstd::priority_queue<${1:T}> ${2};${3}\n##\n## Access Modifiers\n# private\nsnippet pri\n\tprivate\n# protected\nsnippet pro\n\tprotected\n# public\nsnippet pub\n\tpublic\n# friend\nsnippet fr\n\tfriend\n# mutable\nsnippet mu\n\tmutable\n## \n## Class\n# class\nsnippet cl\n\tclass ${1:`Filename('$1', 'name')`} \n\t{\n\tpublic:\n\t\t$1(${2});\n\t\t~$1();\n\n\tprivate:\n\t\t${3:/* data */}\n\t};\n# member function implementation\nsnippet mfun\n\t${4:void} ${1:`Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) {\n\t\t${5:/* code */}\n\t}\n# namespace\nsnippet ns\n\tnamespace ${1:`Filename('', 'my')`} {\n\t\t${2}\n\t} /* namespace $1 */\n##\n## Input/Output\n# std::cout\nsnippet cout\n\tstd::cout << ${1} << std::endl;${2}\n# std::cin\nsnippet cin\n\tstd::cin >> ${1};${2}\n##\n## Iteration\n# for i \nsnippet fori\n\tfor (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) {\n\t\t${4:/* code */}\n\t}${5}\n\n# foreach\nsnippet fore\n\tfor (${1:auto} ${2:i} : ${3:container}) {\n\t\t${4:/* code */}\n\t}${5}\n# iterator\nsnippet iter\n\tfor (${1:std::vector}<${2:type}>::${3:const_iterator} ${4:i} = ${5:container}.begin(); $4 != $5.end(); ++$4) {\n\t\t${6}\n\t}${7}\n\n# auto iterator\nsnippet itera\n\tfor (auto ${1:i} = $1.begin(); $1 != $1.end(); ++$1) {\n\t\t${2:std::cout << *$1 << std::endl;}\n\t}${3}\n##\n## Lambdas\n# lamda (one line)\nsnippet ld\n\t[${1}](${2}){${3:/* code */}}${4}\n# lambda (multi-line)\nsnippet lld\n\t[${1}](${2}){\n\t\t${3:/* code */}\n\t}${4}\n"; }); + +define("ace/snippets/c_cpp",["require","exports","module","ace/snippets/c_cpp.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./c_cpp.snippets"); +exports.scope = "c_cpp"; + +}); (function() { + window.require(["ace/snippets/c_cpp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/cirru.js b/vendor/assets/javascripts/ace/snippets/cirru.js index 13ade9c9..8bd664ed 100644 --- a/vendor/assets/javascripts/ace/snippets/cirru.js +++ b/vendor/assets/javascripts/ace/snippets/cirru.js @@ -1,7 +1,9 @@ -define("ace/snippets/cirru",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "cirru"; - -}); +; (function() { + window.require(["ace/snippets/cirru"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/clojure.js b/vendor/assets/javascripts/ace/snippets/clojure.js index 278a4770..012d7c32 100644 --- a/vendor/assets/javascripts/ace/snippets/clojure.js +++ b/vendor/assets/javascripts/ace/snippets/clojure.js @@ -1,97 +1,16 @@ -define("ace/snippets/clojure",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet comm\n\ - (comment\n\ - ${1}\n\ - )\n\ -snippet condp\n\ - (condp ${1:pred} ${2:expr}\n\ - ${3})\n\ -snippet def\n\ - (def ${1})\n\ -snippet defm\n\ - (defmethod ${1:multifn} \"${2:doc-string}\" ${3:dispatch-val} [${4:args}]\n\ - ${5})\n\ -snippet defmm\n\ - (defmulti ${1:name} \"${2:doc-string}\" ${3:dispatch-fn})\n\ -snippet defma\n\ - (defmacro ${1:name} \"${2:doc-string}\" ${3:dispatch-fn})\n\ -snippet defn\n\ - (defn ${1:name} \"${2:doc-string}\" [${3:arg-list}]\n\ - ${4})\n\ -snippet defp\n\ - (defprotocol ${1:name}\n\ - ${2})\n\ -snippet defr\n\ - (defrecord ${1:name} [${2:fields}]\n\ - ${3:protocol}\n\ - ${4})\n\ -snippet deft\n\ - (deftest ${1:name}\n\ - (is (= ${2:assertion})))\n\ - ${3})\n\ -snippet is\n\ - (is (= ${1} ${2}))\n\ -snippet defty\n\ - (deftype ${1:Name} [${2:fields}]\n\ - ${3:Protocol}\n\ - ${4})\n\ -snippet doseq\n\ - (doseq [${1:elem} ${2:coll}]\n\ - ${3})\n\ -snippet fn\n\ - (fn [${1:arg-list}] ${2})\n\ -snippet if\n\ - (if ${1:test-expr}\n\ - ${2:then-expr}\n\ - ${3:else-expr})\n\ -snippet if-let \n\ - (if-let [${1:result} ${2:test-expr}]\n\ - (${3:then-expr} $1)\n\ - (${4:else-expr}))\n\ -snippet imp\n\ - (:import [${1:package}])\n\ - & {:keys [${1:keys}] :or {${2:defaults}}}\n\ -snippet let\n\ - (let [${1:name} ${2:expr}]\n\ - ${3})\n\ -snippet letfn\n\ - (letfn [(${1:name) [${2:args}]\n\ - ${3})])\n\ -snippet map\n\ - (map ${1:func} ${2:coll})\n\ -snippet mapl\n\ - (map #(${1:lambda}) ${2:coll})\n\ -snippet met\n\ - (${1:name} [${2:this} ${3:args}]\n\ - ${4})\n\ -snippet ns\n\ - (ns ${1:name}\n\ - ${2})\n\ -snippet dotimes\n\ - (dotimes [_ 10]\n\ - (time\n\ - (dotimes [_ ${1:times}]\n\ - ${2})))\n\ -snippet pmethod\n\ - (${1:name} [${2:this} ${3:args}])\n\ -snippet refer\n\ - (:refer-clojure :exclude [${1}])\n\ -snippet require\n\ - (:require [${1:namespace} :as [${2}]])\n\ -snippet use\n\ - (:use [${1:namespace} :only [${2}]])\n\ -snippet print\n\ - (println ${1})\n\ -snippet reduce\n\ - (reduce ${1:(fn [p n] ${3})} ${2})\n\ -snippet when\n\ - (when ${1:test} ${2:body})\n\ -snippet when-let\n\ - (when-let [${1:result} ${2:test}]\n\ - ${3:body})\n\ -"; -exports.scope = "clojure"; +define("ace/snippets/clojure.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet comm\n\t(comment\n\t ${1}\n\t )\nsnippet condp\n\t(condp ${1:pred} ${2:expr}\n\t ${3})\nsnippet def\n\t(def ${1})\nsnippet defm\n\t(defmethod ${1:multifn} \"${2:doc-string}\" ${3:dispatch-val} [${4:args}]\n\t ${5})\nsnippet defmm\n\t(defmulti ${1:name} \"${2:doc-string}\" ${3:dispatch-fn})\nsnippet defma\n\t(defmacro ${1:name} \"${2:doc-string}\" ${3:dispatch-fn})\nsnippet defn\n\t(defn ${1:name} \"${2:doc-string}\" [${3:arg-list}]\n\t ${4})\nsnippet defp\n\t(defprotocol ${1:name}\n\t ${2})\nsnippet defr\n\t(defrecord ${1:name} [${2:fields}]\n\t ${3:protocol}\n\t ${4})\nsnippet deft\n\t(deftest ${1:name}\n\t (is (= ${2:assertion})))\n\t ${3})\nsnippet is\n\t(is (= ${1} ${2}))\nsnippet defty\n\t(deftype ${1:Name} [${2:fields}]\n\t ${3:Protocol}\n\t ${4})\nsnippet doseq\n\t(doseq [${1:elem} ${2:coll}]\n\t ${3})\nsnippet fn\n\t(fn [${1:arg-list}] ${2})\nsnippet if\n\t(if ${1:test-expr}\n\t ${2:then-expr}\n\t ${3:else-expr})\nsnippet if-let \n\t(if-let [${1:result} ${2:test-expr}]\n\t\t(${3:then-expr} $1)\n\t\t(${4:else-expr}))\nsnippet imp\n\t(:import [${1:package}])\n\t& {:keys [${1:keys}] :or {${2:defaults}}}\nsnippet let\n\t(let [${1:name} ${2:expr}]\n\t\t${3})\nsnippet letfn\n\t(letfn [(${1:name) [${2:args}]\n\t ${3})])\nsnippet map\n\t(map ${1:func} ${2:coll})\nsnippet mapl\n\t(map #(${1:lambda}) ${2:coll})\nsnippet met\n\t(${1:name} [${2:this} ${3:args}]\n\t ${4})\nsnippet ns\n\t(ns ${1:name}\n\t ${2})\nsnippet dotimes\n\t(dotimes [_ 10]\n\t (time\n\t (dotimes [_ ${1:times}]\n\t ${2})))\nsnippet pmethod\n\t(${1:name} [${2:this} ${3:args}])\nsnippet refer\n\t(:refer-clojure :exclude [${1}])\nsnippet require\n\t(:require [${1:namespace} :as [${2}]])\nsnippet use\n\t(:use [${1:namespace} :only [${2}]])\nsnippet print\n\t(println ${1})\nsnippet reduce\n\t(reduce ${1:(fn [p n] ${3})} ${2})\nsnippet when\n\t(when ${1:test} ${2:body})\nsnippet when-let\n\t(when-let [${1:result} ${2:test}]\n\t\t${3:body})\n"; }); + +define("ace/snippets/clojure",["require","exports","module","ace/snippets/clojure.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./clojure.snippets"); +exports.scope = "clojure"; + +}); (function() { + window.require(["ace/snippets/clojure"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/cobol.js b/vendor/assets/javascripts/ace/snippets/cobol.js index 632bffe5..1fece5b6 100644 --- a/vendor/assets/javascripts/ace/snippets/cobol.js +++ b/vendor/assets/javascripts/ace/snippets/cobol.js @@ -1,7 +1,9 @@ -define("ace/snippets/cobol",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "cobol"; - -}); +; (function() { + window.require(["ace/snippets/cobol"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/coffee.js b/vendor/assets/javascripts/ace/snippets/coffee.js index e6b8a924..24509314 100644 --- a/vendor/assets/javascripts/ace/snippets/coffee.js +++ b/vendor/assets/javascripts/ace/snippets/coffee.js @@ -1,102 +1,16 @@ -define("ace/snippets/coffee",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Closure loop\n\ -snippet forindo\n\ - for ${1:name} in ${2:array}\n\ - do ($1) ->\n\ - ${3:// body}\n\ -# Array comprehension\n\ -snippet fora\n\ - for ${1:name} in ${2:array}\n\ - ${3:// body...}\n\ -# Object comprehension\n\ -snippet foro\n\ - for ${1:key}, ${2:value} of ${3:object}\n\ - ${4:// body...}\n\ -# Range comprehension (inclusive)\n\ -snippet forr\n\ - for ${1:name} in [${2:start}..${3:finish}]\n\ - ${4:// body...}\n\ -snippet forrb\n\ - for ${1:name} in [${2:start}..${3:finish}] by ${4:step}\n\ - ${5:// body...}\n\ -# Range comprehension (exclusive)\n\ -snippet forrex\n\ - for ${1:name} in [${2:start}...${3:finish}]\n\ - ${4:// body...}\n\ -snippet forrexb\n\ - for ${1:name} in [${2:start}...${3:finish}] by ${4:step}\n\ - ${5:// body...}\n\ -# Function\n\ -snippet fun\n\ - (${1:args}) ->\n\ - ${2:// body...}\n\ -# Function (bound)\n\ -snippet bfun\n\ - (${1:args}) =>\n\ - ${2:// body...}\n\ -# Class\n\ -snippet cla class ..\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - ${2}\n\ -snippet cla class .. constructor: ..\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - constructor: (${2:args}) ->\n\ - ${3}\n\ -\n\ - ${4}\n\ -snippet cla class .. extends ..\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n\ - ${3}\n\ -snippet cla class .. extends .. constructor: ..\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n\ - constructor: (${3:args}) ->\n\ - ${4}\n\ -\n\ - ${5}\n\ -# If\n\ -snippet if\n\ - if ${1:condition}\n\ - ${2:// body...}\n\ -# If __ Else\n\ -snippet ife\n\ - if ${1:condition}\n\ - ${2:// body...}\n\ - else\n\ - ${3:// body...}\n\ -# Else if\n\ -snippet elif\n\ - else if ${1:condition}\n\ - ${2:// body...}\n\ -# Ternary If\n\ -snippet ifte\n\ - if ${1:condition} then ${2:value} else ${3:other}\n\ -# Unless\n\ -snippet unl\n\ - ${1:action} unless ${2:condition}\n\ -# Switch\n\ -snippet swi\n\ - switch ${1:object}\n\ - when ${2:value}\n\ - ${3:// body...}\n\ -\n\ -# Log\n\ -snippet log\n\ - console.log ${1}\n\ -# Try __ Catch\n\ -snippet try\n\ - try\n\ - ${1}\n\ - catch ${2:error}\n\ - ${3}\n\ -# Require\n\ -snippet req\n\ - ${2:$1} = require '${1:sys}'${3}\n\ -# Export\n\ -snippet exp\n\ - ${1:root} = exports ? this\n\ -"; -exports.scope = "coffee"; +define("ace/snippets/coffee.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Closure loop\nsnippet forindo\n\tfor ${1:name} in ${2:array}\n\t\tdo ($1) ->\n\t\t\t${3:// body}\n# Array comprehension\nsnippet fora\n\tfor ${1:name} in ${2:array}\n\t\t${3:// body...}\n# Object comprehension\nsnippet foro\n\tfor ${1:key}, ${2:value} of ${3:object}\n\t\t${4:// body...}\n# Range comprehension (inclusive)\nsnippet forr\n\tfor ${1:name} in [${2:start}..${3:finish}]\n\t\t${4:// body...}\nsnippet forrb\n\tfor ${1:name} in [${2:start}..${3:finish}] by ${4:step}\n\t\t${5:// body...}\n# Range comprehension (exclusive)\nsnippet forrex\n\tfor ${1:name} in [${2:start}...${3:finish}]\n\t\t${4:// body...}\nsnippet forrexb\n\tfor ${1:name} in [${2:start}...${3:finish}] by ${4:step}\n\t\t${5:// body...}\n# Function\nsnippet fun\n\t(${1:args}) ->\n\t\t${2:// body...}\n# Function (bound)\nsnippet bfun\n\t(${1:args}) =>\n\t\t${2:// body...}\n# Class\nsnippet cla class ..\n\tclass ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\t\t${2}\nsnippet cla class .. constructor: ..\n\tclass ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\t\tconstructor: (${2:args}) ->\n\t\t\t${3}\n\n\t\t${4}\nsnippet cla class .. extends ..\n\tclass ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n\t\t${3}\nsnippet cla class .. extends .. constructor: ..\n\tclass ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} extends ${2:ParentClass}\n\t\tconstructor: (${3:args}) ->\n\t\t\t${4}\n\n\t\t${5}\n# If\nsnippet if\n\tif ${1:condition}\n\t\t${2:// body...}\n# If __ Else\nsnippet ife\n\tif ${1:condition}\n\t\t${2:// body...}\n\telse\n\t\t${3:// body...}\n# Else if\nsnippet elif\n\telse if ${1:condition}\n\t\t${2:// body...}\n# Ternary If\nsnippet ifte\n\tif ${1:condition} then ${2:value} else ${3:other}\n# Unless\nsnippet unl\n\t${1:action} unless ${2:condition}\n# Switch\nsnippet swi\n\tswitch ${1:object}\n\t\twhen ${2:value}\n\t\t\t${3:// body...}\n\n# Log\nsnippet log\n\tconsole.log ${1}\n# Try __ Catch\nsnippet try\n\ttry\n\t\t${1}\n\tcatch ${2:error}\n\t\t${3}\n# Require\nsnippet req\n\t${2:$1} = require '${1:sys}'${3}\n# Export\nsnippet exp\n\t${1:root} = exports ? this\n"; }); + +define("ace/snippets/coffee",["require","exports","module","ace/snippets/coffee.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./coffee.snippets"); +exports.scope = "coffee"; + +}); (function() { + window.require(["ace/snippets/coffee"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/coldfusion.js b/vendor/assets/javascripts/ace/snippets/coldfusion.js index cba55cd8..0f1ff4d2 100644 --- a/vendor/assets/javascripts/ace/snippets/coldfusion.js +++ b/vendor/assets/javascripts/ace/snippets/coldfusion.js @@ -1,7 +1,9 @@ -define("ace/snippets/coldfusion",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "coldfusion"; - -}); +; (function() { + window.require(["ace/snippets/coldfusion"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/crystal.js b/vendor/assets/javascripts/ace/snippets/crystal.js new file mode 100644 index 00000000..39614eb1 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/crystal.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/crystal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/csharp.js b/vendor/assets/javascripts/ace/snippets/csharp.js index 07d12a48..22c8f86c 100644 --- a/vendor/assets/javascripts/ace/snippets/csharp.js +++ b/vendor/assets/javascripts/ace/snippets/csharp.js @@ -1,7 +1,9 @@ -define("ace/snippets/csharp",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "csharp"; - -}); +; (function() { + window.require(["ace/snippets/csharp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/csound_document.js b/vendor/assets/javascripts/ace/snippets/csound_document.js index 173b6416..6cb365ab 100644 --- a/vendor/assets/javascripts/ace/snippets/csound_document.js +++ b/vendor/assets/javascripts/ace/snippets/csound_document.js @@ -1,17 +1,16 @@ -define("ace/snippets/csound_document",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# \n\ -snippet synth\n\ - \n\ - \n\ - ${1}\n\ - \n\ - \n\ - e\n\ - \n\ - \n\ -"; -exports.scope = "csound_document"; +define("ace/snippets/csound_document.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# \nsnippet synth\n\t\n\t\n\t${1}\n\t\n\t\n\te\n\t\n\t\n"; }); + +define("ace/snippets/csound_document",["require","exports","module","ace/snippets/csound_document.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./csound_document.snippets"); +exports.scope = "csound_document"; + +}); (function() { + window.require(["ace/snippets/csound_document"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/csound_orchestra.js b/vendor/assets/javascripts/ace/snippets/csound_orchestra.js index a8569f60..04d65b34 100644 --- a/vendor/assets/javascripts/ace/snippets/csound_orchestra.js +++ b/vendor/assets/javascripts/ace/snippets/csound_orchestra.js @@ -1,54 +1,16 @@ -define("ace/snippets/csound_orchestra",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# else\n\ -snippet else\n\ - else\n\ - ${1:/* statements */}\n\ -# elseif\n\ -snippet elseif\n\ - elseif ${1:/* condition */} then\n\ - ${2:/* statements */}\n\ -# if\n\ -snippet if\n\ - if ${1:/* condition */} then\n\ - ${2:/* statements */}\n\ - endif\n\ -# instrument block\n\ -snippet instr\n\ - instr ${1:name}\n\ - ${2:/* statements */}\n\ - endin\n\ -# i-time while loop\n\ -snippet iwhile\n\ - i${1:Index} = ${2:0}\n\ - while i${1:Index} < ${3:/* count */} do\n\ - ${4:/* statements */}\n\ - i${1:Index} += 1\n\ - od\n\ -# k-rate while loop\n\ -snippet kwhile\n\ - k${1:Index} = ${2:0}\n\ - while k${1:Index} < ${3:/* count */} do\n\ - ${4:/* statements */}\n\ - k${1:Index} += 1\n\ - od\n\ -# opcode\n\ -snippet opcode\n\ - opcode ${1:name}, ${2:/* output types */ 0}, ${3:/* input types */ 0}\n\ - ${4:/* statements */}\n\ - endop\n\ -# until loop\n\ -snippet until\n\ - until ${1:/* condition */} do\n\ - ${2:/* statements */}\n\ - od\n\ -# while loop\n\ -snippet while\n\ - while ${1:/* condition */} do\n\ - ${2:/* statements */}\n\ - od\n\ -"; -exports.scope = "csound_orchestra"; +define("ace/snippets/csound_orchestra.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# else\nsnippet else\n\telse\n\t\t${1:/* statements */}\n# elseif\nsnippet elseif\n\telseif ${1:/* condition */} then\n\t\t${2:/* statements */}\n# if\nsnippet if\n\tif ${1:/* condition */} then\n\t\t${2:/* statements */}\n\tendif\n# instrument block\nsnippet instr\n\tinstr ${1:name}\n\t\t${2:/* statements */}\n\tendin\n# i-time while loop\nsnippet iwhile\n\ti${1:Index} = ${2:0}\n\twhile i${1:Index} < ${3:/* count */} do\n\t\t${4:/* statements */}\n\t\ti${1:Index} += 1\n\tod\n# k-rate while loop\nsnippet kwhile\n\tk${1:Index} = ${2:0}\n\twhile k${1:Index} < ${3:/* count */} do\n\t\t${4:/* statements */}\n\t\tk${1:Index} += 1\n\tod\n# opcode\nsnippet opcode\n\topcode ${1:name}, ${2:/* output types */ 0}, ${3:/* input types */ 0}\n\t\t${4:/* statements */}\n\tendop\n# until loop\nsnippet until\n\tuntil ${1:/* condition */} do\n\t\t${2:/* statements */}\n\tod\n# while loop\nsnippet while\n\twhile ${1:/* condition */} do\n\t\t${2:/* statements */}\n\tod\n"; }); + +define("ace/snippets/csound_orchestra",["require","exports","module","ace/snippets/csound_orchestra.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./csound_orchestra.snippets"); +exports.scope = "csound_orchestra"; + +}); (function() { + window.require(["ace/snippets/csound_orchestra"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/csound_score.js b/vendor/assets/javascripts/ace/snippets/csound_score.js index a370af85..3d7ae0e6 100644 --- a/vendor/assets/javascripts/ace/snippets/csound_score.js +++ b/vendor/assets/javascripts/ace/snippets/csound_score.js @@ -1,7 +1,9 @@ -define("ace/snippets/csound_score",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "csound_score"; - -}); +; (function() { + window.require(["ace/snippets/csound_score"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/csp.js b/vendor/assets/javascripts/ace/snippets/csp.js new file mode 100644 index 00000000..68581491 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/csp.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/csp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/css.js b/vendor/assets/javascripts/ace/snippets/css.js index 195ce47b..6cb8fe03 100644 --- a/vendor/assets/javascripts/ace/snippets/css.js +++ b/vendor/assets/javascripts/ace/snippets/css.js @@ -1,974 +1,16 @@ -define("ace/snippets/css",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet .\n\ - ${1} {\n\ - ${2}\n\ - }\n\ -snippet !\n\ - !important\n\ -snippet bdi:m+\n\ - -moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\n\ -snippet bdi:m\n\ - -moz-border-image: ${1};\n\ -snippet bdrz:m\n\ - -moz-border-radius: ${1};\n\ -snippet bxsh:m+\n\ - -moz-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\n\ -snippet bxsh:m\n\ - -moz-box-shadow: ${1};\n\ -snippet bdi:w+\n\ - -webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\n\ -snippet bdi:w\n\ - -webkit-border-image: ${1};\n\ -snippet bdrz:w\n\ - -webkit-border-radius: ${1};\n\ -snippet bxsh:w+\n\ - -webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\n\ -snippet bxsh:w\n\ - -webkit-box-shadow: ${1};\n\ -snippet @f\n\ - @font-face {\n\ - font-family: ${1};\n\ - src: url(${2});\n\ - }\n\ -snippet @i\n\ - @import url(${1});\n\ -snippet @m\n\ - @media ${1:print} {\n\ - ${2}\n\ - }\n\ -snippet bg+\n\ - background: #${1:FFF} url(${2}) ${3:0} ${4:0} ${5:no-repeat};\n\ -snippet bga\n\ - background-attachment: ${1};\n\ -snippet bga:f\n\ - background-attachment: fixed;\n\ -snippet bga:s\n\ - background-attachment: scroll;\n\ -snippet bgbk\n\ - background-break: ${1};\n\ -snippet bgbk:bb\n\ - background-break: bounding-box;\n\ -snippet bgbk:c\n\ - background-break: continuous;\n\ -snippet bgbk:eb\n\ - background-break: each-box;\n\ -snippet bgcp\n\ - background-clip: ${1};\n\ -snippet bgcp:bb\n\ - background-clip: border-box;\n\ -snippet bgcp:cb\n\ - background-clip: content-box;\n\ -snippet bgcp:nc\n\ - background-clip: no-clip;\n\ -snippet bgcp:pb\n\ - background-clip: padding-box;\n\ -snippet bgc\n\ - background-color: #${1:FFF};\n\ -snippet bgc:t\n\ - background-color: transparent;\n\ -snippet bgi\n\ - background-image: url(${1});\n\ -snippet bgi:n\n\ - background-image: none;\n\ -snippet bgo\n\ - background-origin: ${1};\n\ -snippet bgo:bb\n\ - background-origin: border-box;\n\ -snippet bgo:cb\n\ - background-origin: content-box;\n\ -snippet bgo:pb\n\ - background-origin: padding-box;\n\ -snippet bgpx\n\ - background-position-x: ${1};\n\ -snippet bgpy\n\ - background-position-y: ${1};\n\ -snippet bgp\n\ - background-position: ${1:0} ${2:0};\n\ -snippet bgr\n\ - background-repeat: ${1};\n\ -snippet bgr:n\n\ - background-repeat: no-repeat;\n\ -snippet bgr:x\n\ - background-repeat: repeat-x;\n\ -snippet bgr:y\n\ - background-repeat: repeat-y;\n\ -snippet bgr:r\n\ - background-repeat: repeat;\n\ -snippet bgz\n\ - background-size: ${1};\n\ -snippet bgz:a\n\ - background-size: auto;\n\ -snippet bgz:ct\n\ - background-size: contain;\n\ -snippet bgz:cv\n\ - background-size: cover;\n\ -snippet bg\n\ - background: ${1};\n\ -snippet bg:ie\n\ - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${2:crop}');\n\ -snippet bg:n\n\ - background: none;\n\ -snippet bd+\n\ - border: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdb+\n\ - border-bottom: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdbc\n\ - border-bottom-color: #${1:000};\n\ -snippet bdbi\n\ - border-bottom-image: url(${1});\n\ -snippet bdbi:n\n\ - border-bottom-image: none;\n\ -snippet bdbli\n\ - border-bottom-left-image: url(${1});\n\ -snippet bdbli:c\n\ - border-bottom-left-image: continue;\n\ -snippet bdbli:n\n\ - border-bottom-left-image: none;\n\ -snippet bdblrz\n\ - border-bottom-left-radius: ${1};\n\ -snippet bdbri\n\ - border-bottom-right-image: url(${1});\n\ -snippet bdbri:c\n\ - border-bottom-right-image: continue;\n\ -snippet bdbri:n\n\ - border-bottom-right-image: none;\n\ -snippet bdbrrz\n\ - border-bottom-right-radius: ${1};\n\ -snippet bdbs\n\ - border-bottom-style: ${1};\n\ -snippet bdbs:n\n\ - border-bottom-style: none;\n\ -snippet bdbw\n\ - border-bottom-width: ${1};\n\ -snippet bdb\n\ - border-bottom: ${1};\n\ -snippet bdb:n\n\ - border-bottom: none;\n\ -snippet bdbk\n\ - border-break: ${1};\n\ -snippet bdbk:c\n\ - border-break: close;\n\ -snippet bdcl\n\ - border-collapse: ${1};\n\ -snippet bdcl:c\n\ - border-collapse: collapse;\n\ -snippet bdcl:s\n\ - border-collapse: separate;\n\ -snippet bdc\n\ - border-color: #${1:000};\n\ -snippet bdci\n\ - border-corner-image: url(${1});\n\ -snippet bdci:c\n\ - border-corner-image: continue;\n\ -snippet bdci:n\n\ - border-corner-image: none;\n\ -snippet bdf\n\ - border-fit: ${1};\n\ -snippet bdf:c\n\ - border-fit: clip;\n\ -snippet bdf:of\n\ - border-fit: overwrite;\n\ -snippet bdf:ow\n\ - border-fit: overwrite;\n\ -snippet bdf:r\n\ - border-fit: repeat;\n\ -snippet bdf:sc\n\ - border-fit: scale;\n\ -snippet bdf:sp\n\ - border-fit: space;\n\ -snippet bdf:st\n\ - border-fit: stretch;\n\ -snippet bdi\n\ - border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\n\ -snippet bdi:n\n\ - border-image: none;\n\ -snippet bdl+\n\ - border-left: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdlc\n\ - border-left-color: #${1:000};\n\ -snippet bdli\n\ - border-left-image: url(${1});\n\ -snippet bdli:n\n\ - border-left-image: none;\n\ -snippet bdls\n\ - border-left-style: ${1};\n\ -snippet bdls:n\n\ - border-left-style: none;\n\ -snippet bdlw\n\ - border-left-width: ${1};\n\ -snippet bdl\n\ - border-left: ${1};\n\ -snippet bdl:n\n\ - border-left: none;\n\ -snippet bdlt\n\ - border-length: ${1};\n\ -snippet bdlt:a\n\ - border-length: auto;\n\ -snippet bdrz\n\ - border-radius: ${1};\n\ -snippet bdr+\n\ - border-right: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdrc\n\ - border-right-color: #${1:000};\n\ -snippet bdri\n\ - border-right-image: url(${1});\n\ -snippet bdri:n\n\ - border-right-image: none;\n\ -snippet bdrs\n\ - border-right-style: ${1};\n\ -snippet bdrs:n\n\ - border-right-style: none;\n\ -snippet bdrw\n\ - border-right-width: ${1};\n\ -snippet bdr\n\ - border-right: ${1};\n\ -snippet bdr:n\n\ - border-right: none;\n\ -snippet bdsp\n\ - border-spacing: ${1};\n\ -snippet bds\n\ - border-style: ${1};\n\ -snippet bds:ds\n\ - border-style: dashed;\n\ -snippet bds:dtds\n\ - border-style: dot-dash;\n\ -snippet bds:dtdtds\n\ - border-style: dot-dot-dash;\n\ -snippet bds:dt\n\ - border-style: dotted;\n\ -snippet bds:db\n\ - border-style: double;\n\ -snippet bds:g\n\ - border-style: groove;\n\ -snippet bds:h\n\ - border-style: hidden;\n\ -snippet bds:i\n\ - border-style: inset;\n\ -snippet bds:n\n\ - border-style: none;\n\ -snippet bds:o\n\ - border-style: outset;\n\ -snippet bds:r\n\ - border-style: ridge;\n\ -snippet bds:s\n\ - border-style: solid;\n\ -snippet bds:w\n\ - border-style: wave;\n\ -snippet bdt+\n\ - border-top: ${1:1px} ${2:solid} #${3:000};\n\ -snippet bdtc\n\ - border-top-color: #${1:000};\n\ -snippet bdti\n\ - border-top-image: url(${1});\n\ -snippet bdti:n\n\ - border-top-image: none;\n\ -snippet bdtli\n\ - border-top-left-image: url(${1});\n\ -snippet bdtli:c\n\ - border-corner-image: continue;\n\ -snippet bdtli:n\n\ - border-corner-image: none;\n\ -snippet bdtlrz\n\ - border-top-left-radius: ${1};\n\ -snippet bdtri\n\ - border-top-right-image: url(${1});\n\ -snippet bdtri:c\n\ - border-top-right-image: continue;\n\ -snippet bdtri:n\n\ - border-top-right-image: none;\n\ -snippet bdtrrz\n\ - border-top-right-radius: ${1};\n\ -snippet bdts\n\ - border-top-style: ${1};\n\ -snippet bdts:n\n\ - border-top-style: none;\n\ -snippet bdtw\n\ - border-top-width: ${1};\n\ -snippet bdt\n\ - border-top: ${1};\n\ -snippet bdt:n\n\ - border-top: none;\n\ -snippet bdw\n\ - border-width: ${1};\n\ -snippet bd\n\ - border: ${1};\n\ -snippet bd:n\n\ - border: none;\n\ -snippet b\n\ - bottom: ${1};\n\ -snippet b:a\n\ - bottom: auto;\n\ -snippet bxsh+\n\ - box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\n\ -snippet bxsh\n\ - box-shadow: ${1};\n\ -snippet bxsh:n\n\ - box-shadow: none;\n\ -snippet bxz\n\ - box-sizing: ${1};\n\ -snippet bxz:bb\n\ - box-sizing: border-box;\n\ -snippet bxz:cb\n\ - box-sizing: content-box;\n\ -snippet cps\n\ - caption-side: ${1};\n\ -snippet cps:b\n\ - caption-side: bottom;\n\ -snippet cps:t\n\ - caption-side: top;\n\ -snippet cl\n\ - clear: ${1};\n\ -snippet cl:b\n\ - clear: both;\n\ -snippet cl:l\n\ - clear: left;\n\ -snippet cl:n\n\ - clear: none;\n\ -snippet cl:r\n\ - clear: right;\n\ -snippet cp\n\ - clip: ${1};\n\ -snippet cp:a\n\ - clip: auto;\n\ -snippet cp:r\n\ - clip: rect(${1:0} ${2:0} ${3:0} ${4:0});\n\ -snippet c\n\ - color: #${1:000};\n\ -snippet ct\n\ - content: ${1};\n\ -snippet ct:a\n\ - content: attr(${1});\n\ -snippet ct:cq\n\ - content: close-quote;\n\ -snippet ct:c\n\ - content: counter(${1});\n\ -snippet ct:cs\n\ - content: counters(${1});\n\ -snippet ct:ncq\n\ - content: no-close-quote;\n\ -snippet ct:noq\n\ - content: no-open-quote;\n\ -snippet ct:n\n\ - content: normal;\n\ -snippet ct:oq\n\ - content: open-quote;\n\ -snippet coi\n\ - counter-increment: ${1};\n\ -snippet cor\n\ - counter-reset: ${1};\n\ -snippet cur\n\ - cursor: ${1};\n\ -snippet cur:a\n\ - cursor: auto;\n\ -snippet cur:c\n\ - cursor: crosshair;\n\ -snippet cur:d\n\ - cursor: default;\n\ -snippet cur:ha\n\ - cursor: hand;\n\ -snippet cur:he\n\ - cursor: help;\n\ -snippet cur:m\n\ - cursor: move;\n\ -snippet cur:p\n\ - cursor: pointer;\n\ -snippet cur:t\n\ - cursor: text;\n\ -snippet d\n\ - display: ${1};\n\ -snippet d:mib\n\ - display: -moz-inline-box;\n\ -snippet d:mis\n\ - display: -moz-inline-stack;\n\ -snippet d:b\n\ - display: block;\n\ -snippet d:cp\n\ - display: compact;\n\ -snippet d:ib\n\ - display: inline-block;\n\ -snippet d:itb\n\ - display: inline-table;\n\ -snippet d:i\n\ - display: inline;\n\ -snippet d:li\n\ - display: list-item;\n\ -snippet d:n\n\ - display: none;\n\ -snippet d:ri\n\ - display: run-in;\n\ -snippet d:tbcp\n\ - display: table-caption;\n\ -snippet d:tbc\n\ - display: table-cell;\n\ -snippet d:tbclg\n\ - display: table-column-group;\n\ -snippet d:tbcl\n\ - display: table-column;\n\ -snippet d:tbfg\n\ - display: table-footer-group;\n\ -snippet d:tbhg\n\ - display: table-header-group;\n\ -snippet d:tbrg\n\ - display: table-row-group;\n\ -snippet d:tbr\n\ - display: table-row;\n\ -snippet d:tb\n\ - display: table;\n\ -snippet ec\n\ - empty-cells: ${1};\n\ -snippet ec:h\n\ - empty-cells: hide;\n\ -snippet ec:s\n\ - empty-cells: show;\n\ -snippet exp\n\ - expression()\n\ -snippet fl\n\ - float: ${1};\n\ -snippet fl:l\n\ - float: left;\n\ -snippet fl:n\n\ - float: none;\n\ -snippet fl:r\n\ - float: right;\n\ -snippet f+\n\ - font: ${1:1em} ${2:Arial},${3:sans-serif};\n\ -snippet fef\n\ - font-effect: ${1};\n\ -snippet fef:eb\n\ - font-effect: emboss;\n\ -snippet fef:eg\n\ - font-effect: engrave;\n\ -snippet fef:n\n\ - font-effect: none;\n\ -snippet fef:o\n\ - font-effect: outline;\n\ -snippet femp\n\ - font-emphasize-position: ${1};\n\ -snippet femp:a\n\ - font-emphasize-position: after;\n\ -snippet femp:b\n\ - font-emphasize-position: before;\n\ -snippet fems\n\ - font-emphasize-style: ${1};\n\ -snippet fems:ac\n\ - font-emphasize-style: accent;\n\ -snippet fems:c\n\ - font-emphasize-style: circle;\n\ -snippet fems:ds\n\ - font-emphasize-style: disc;\n\ -snippet fems:dt\n\ - font-emphasize-style: dot;\n\ -snippet fems:n\n\ - font-emphasize-style: none;\n\ -snippet fem\n\ - font-emphasize: ${1};\n\ -snippet ff\n\ - font-family: ${1};\n\ -snippet ff:c\n\ - font-family: ${1:'Monotype Corsiva','Comic Sans MS'},cursive;\n\ -snippet ff:f\n\ - font-family: ${1:Capitals,Impact},fantasy;\n\ -snippet ff:m\n\ - font-family: ${1:Monaco,'Courier New'},monospace;\n\ -snippet ff:ss\n\ - font-family: ${1:Helvetica,Arial},sans-serif;\n\ -snippet ff:s\n\ - font-family: ${1:Georgia,'Times New Roman'},serif;\n\ -snippet fza\n\ - font-size-adjust: ${1};\n\ -snippet fza:n\n\ - font-size-adjust: none;\n\ -snippet fz\n\ - font-size: ${1};\n\ -snippet fsm\n\ - font-smooth: ${1};\n\ -snippet fsm:aw\n\ - font-smooth: always;\n\ -snippet fsm:a\n\ - font-smooth: auto;\n\ -snippet fsm:n\n\ - font-smooth: never;\n\ -snippet fst\n\ - font-stretch: ${1};\n\ -snippet fst:c\n\ - font-stretch: condensed;\n\ -snippet fst:e\n\ - font-stretch: expanded;\n\ -snippet fst:ec\n\ - font-stretch: extra-condensed;\n\ -snippet fst:ee\n\ - font-stretch: extra-expanded;\n\ -snippet fst:n\n\ - font-stretch: normal;\n\ -snippet fst:sc\n\ - font-stretch: semi-condensed;\n\ -snippet fst:se\n\ - font-stretch: semi-expanded;\n\ -snippet fst:uc\n\ - font-stretch: ultra-condensed;\n\ -snippet fst:ue\n\ - font-stretch: ultra-expanded;\n\ -snippet fs\n\ - font-style: ${1};\n\ -snippet fs:i\n\ - font-style: italic;\n\ -snippet fs:n\n\ - font-style: normal;\n\ -snippet fs:o\n\ - font-style: oblique;\n\ -snippet fv\n\ - font-variant: ${1};\n\ -snippet fv:n\n\ - font-variant: normal;\n\ -snippet fv:sc\n\ - font-variant: small-caps;\n\ -snippet fw\n\ - font-weight: ${1};\n\ -snippet fw:b\n\ - font-weight: bold;\n\ -snippet fw:br\n\ - font-weight: bolder;\n\ -snippet fw:lr\n\ - font-weight: lighter;\n\ -snippet fw:n\n\ - font-weight: normal;\n\ -snippet f\n\ - font: ${1};\n\ -snippet h\n\ - height: ${1};\n\ -snippet h:a\n\ - height: auto;\n\ -snippet l\n\ - left: ${1};\n\ -snippet l:a\n\ - left: auto;\n\ -snippet lts\n\ - letter-spacing: ${1};\n\ -snippet lh\n\ - line-height: ${1};\n\ -snippet lisi\n\ - list-style-image: url(${1});\n\ -snippet lisi:n\n\ - list-style-image: none;\n\ -snippet lisp\n\ - list-style-position: ${1};\n\ -snippet lisp:i\n\ - list-style-position: inside;\n\ -snippet lisp:o\n\ - list-style-position: outside;\n\ -snippet list\n\ - list-style-type: ${1};\n\ -snippet list:c\n\ - list-style-type: circle;\n\ -snippet list:dclz\n\ - list-style-type: decimal-leading-zero;\n\ -snippet list:dc\n\ - list-style-type: decimal;\n\ -snippet list:d\n\ - list-style-type: disc;\n\ -snippet list:lr\n\ - list-style-type: lower-roman;\n\ -snippet list:n\n\ - list-style-type: none;\n\ -snippet list:s\n\ - list-style-type: square;\n\ -snippet list:ur\n\ - list-style-type: upper-roman;\n\ -snippet lis\n\ - list-style: ${1};\n\ -snippet lis:n\n\ - list-style: none;\n\ -snippet mb\n\ - margin-bottom: ${1};\n\ -snippet mb:a\n\ - margin-bottom: auto;\n\ -snippet ml\n\ - margin-left: ${1};\n\ -snippet ml:a\n\ - margin-left: auto;\n\ -snippet mr\n\ - margin-right: ${1};\n\ -snippet mr:a\n\ - margin-right: auto;\n\ -snippet mt\n\ - margin-top: ${1};\n\ -snippet mt:a\n\ - margin-top: auto;\n\ -snippet m\n\ - margin: ${1};\n\ -snippet m:4\n\ - margin: ${1:0} ${2:0} ${3:0} ${4:0};\n\ -snippet m:3\n\ - margin: ${1:0} ${2:0} ${3:0};\n\ -snippet m:2\n\ - margin: ${1:0} ${2:0};\n\ -snippet m:0\n\ - margin: 0;\n\ -snippet m:a\n\ - margin: auto;\n\ -snippet mah\n\ - max-height: ${1};\n\ -snippet mah:n\n\ - max-height: none;\n\ -snippet maw\n\ - max-width: ${1};\n\ -snippet maw:n\n\ - max-width: none;\n\ -snippet mih\n\ - min-height: ${1};\n\ -snippet miw\n\ - min-width: ${1};\n\ -snippet op\n\ - opacity: ${1};\n\ -snippet op:ie\n\ - filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});\n\ -snippet op:ms\n\ - -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';\n\ -snippet orp\n\ - orphans: ${1};\n\ -snippet o+\n\ - outline: ${1:1px} ${2:solid} #${3:000};\n\ -snippet oc\n\ - outline-color: ${1:#000};\n\ -snippet oc:i\n\ - outline-color: invert;\n\ -snippet oo\n\ - outline-offset: ${1};\n\ -snippet os\n\ - outline-style: ${1};\n\ -snippet ow\n\ - outline-width: ${1};\n\ -snippet o\n\ - outline: ${1};\n\ -snippet o:n\n\ - outline: none;\n\ -snippet ovs\n\ - overflow-style: ${1};\n\ -snippet ovs:a\n\ - overflow-style: auto;\n\ -snippet ovs:mq\n\ - overflow-style: marquee;\n\ -snippet ovs:mv\n\ - overflow-style: move;\n\ -snippet ovs:p\n\ - overflow-style: panner;\n\ -snippet ovs:s\n\ - overflow-style: scrollbar;\n\ -snippet ovx\n\ - overflow-x: ${1};\n\ -snippet ovx:a\n\ - overflow-x: auto;\n\ -snippet ovx:h\n\ - overflow-x: hidden;\n\ -snippet ovx:s\n\ - overflow-x: scroll;\n\ -snippet ovx:v\n\ - overflow-x: visible;\n\ -snippet ovy\n\ - overflow-y: ${1};\n\ -snippet ovy:a\n\ - overflow-y: auto;\n\ -snippet ovy:h\n\ - overflow-y: hidden;\n\ -snippet ovy:s\n\ - overflow-y: scroll;\n\ -snippet ovy:v\n\ - overflow-y: visible;\n\ -snippet ov\n\ - overflow: ${1};\n\ -snippet ov:a\n\ - overflow: auto;\n\ -snippet ov:h\n\ - overflow: hidden;\n\ -snippet ov:s\n\ - overflow: scroll;\n\ -snippet ov:v\n\ - overflow: visible;\n\ -snippet pb\n\ - padding-bottom: ${1};\n\ -snippet pl\n\ - padding-left: ${1};\n\ -snippet pr\n\ - padding-right: ${1};\n\ -snippet pt\n\ - padding-top: ${1};\n\ -snippet p\n\ - padding: ${1};\n\ -snippet p:4\n\ - padding: ${1:0} ${2:0} ${3:0} ${4:0};\n\ -snippet p:3\n\ - padding: ${1:0} ${2:0} ${3:0};\n\ -snippet p:2\n\ - padding: ${1:0} ${2:0};\n\ -snippet p:0\n\ - padding: 0;\n\ -snippet pgba\n\ - page-break-after: ${1};\n\ -snippet pgba:aw\n\ - page-break-after: always;\n\ -snippet pgba:a\n\ - page-break-after: auto;\n\ -snippet pgba:l\n\ - page-break-after: left;\n\ -snippet pgba:r\n\ - page-break-after: right;\n\ -snippet pgbb\n\ - page-break-before: ${1};\n\ -snippet pgbb:aw\n\ - page-break-before: always;\n\ -snippet pgbb:a\n\ - page-break-before: auto;\n\ -snippet pgbb:l\n\ - page-break-before: left;\n\ -snippet pgbb:r\n\ - page-break-before: right;\n\ -snippet pgbi\n\ - page-break-inside: ${1};\n\ -snippet pgbi:a\n\ - page-break-inside: auto;\n\ -snippet pgbi:av\n\ - page-break-inside: avoid;\n\ -snippet pos\n\ - position: ${1};\n\ -snippet pos:a\n\ - position: absolute;\n\ -snippet pos:f\n\ - position: fixed;\n\ -snippet pos:r\n\ - position: relative;\n\ -snippet pos:s\n\ - position: static;\n\ -snippet q\n\ - quotes: ${1};\n\ -snippet q:en\n\ - quotes: '\\201C' '\\201D' '\\2018' '\\2019';\n\ -snippet q:n\n\ - quotes: none;\n\ -snippet q:ru\n\ - quotes: '\\00AB' '\\00BB' '\\201E' '\\201C';\n\ -snippet rz\n\ - resize: ${1};\n\ -snippet rz:b\n\ - resize: both;\n\ -snippet rz:h\n\ - resize: horizontal;\n\ -snippet rz:n\n\ - resize: none;\n\ -snippet rz:v\n\ - resize: vertical;\n\ -snippet r\n\ - right: ${1};\n\ -snippet r:a\n\ - right: auto;\n\ -snippet tbl\n\ - table-layout: ${1};\n\ -snippet tbl:a\n\ - table-layout: auto;\n\ -snippet tbl:f\n\ - table-layout: fixed;\n\ -snippet tal\n\ - text-align-last: ${1};\n\ -snippet tal:a\n\ - text-align-last: auto;\n\ -snippet tal:c\n\ - text-align-last: center;\n\ -snippet tal:l\n\ - text-align-last: left;\n\ -snippet tal:r\n\ - text-align-last: right;\n\ -snippet ta\n\ - text-align: ${1};\n\ -snippet ta:c\n\ - text-align: center;\n\ -snippet ta:l\n\ - text-align: left;\n\ -snippet ta:r\n\ - text-align: right;\n\ -snippet td\n\ - text-decoration: ${1};\n\ -snippet td:l\n\ - text-decoration: line-through;\n\ -snippet td:n\n\ - text-decoration: none;\n\ -snippet td:o\n\ - text-decoration: overline;\n\ -snippet td:u\n\ - text-decoration: underline;\n\ -snippet te\n\ - text-emphasis: ${1};\n\ -snippet te:ac\n\ - text-emphasis: accent;\n\ -snippet te:a\n\ - text-emphasis: after;\n\ -snippet te:b\n\ - text-emphasis: before;\n\ -snippet te:c\n\ - text-emphasis: circle;\n\ -snippet te:ds\n\ - text-emphasis: disc;\n\ -snippet te:dt\n\ - text-emphasis: dot;\n\ -snippet te:n\n\ - text-emphasis: none;\n\ -snippet th\n\ - text-height: ${1};\n\ -snippet th:a\n\ - text-height: auto;\n\ -snippet th:f\n\ - text-height: font-size;\n\ -snippet th:m\n\ - text-height: max-size;\n\ -snippet th:t\n\ - text-height: text-size;\n\ -snippet ti\n\ - text-indent: ${1};\n\ -snippet ti:-\n\ - text-indent: -9999px;\n\ -snippet tj\n\ - text-justify: ${1};\n\ -snippet tj:a\n\ - text-justify: auto;\n\ -snippet tj:d\n\ - text-justify: distribute;\n\ -snippet tj:ic\n\ - text-justify: inter-cluster;\n\ -snippet tj:ii\n\ - text-justify: inter-ideograph;\n\ -snippet tj:iw\n\ - text-justify: inter-word;\n\ -snippet tj:k\n\ - text-justify: kashida;\n\ -snippet tj:t\n\ - text-justify: tibetan;\n\ -snippet to+\n\ - text-outline: ${1:0} ${2:0} #${3:000};\n\ -snippet to\n\ - text-outline: ${1};\n\ -snippet to:n\n\ - text-outline: none;\n\ -snippet tr\n\ - text-replace: ${1};\n\ -snippet tr:n\n\ - text-replace: none;\n\ -snippet tsh+\n\ - text-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\n\ -snippet tsh\n\ - text-shadow: ${1};\n\ -snippet tsh:n\n\ - text-shadow: none;\n\ -snippet tt\n\ - text-transform: ${1};\n\ -snippet tt:c\n\ - text-transform: capitalize;\n\ -snippet tt:l\n\ - text-transform: lowercase;\n\ -snippet tt:n\n\ - text-transform: none;\n\ -snippet tt:u\n\ - text-transform: uppercase;\n\ -snippet tw\n\ - text-wrap: ${1};\n\ -snippet tw:no\n\ - text-wrap: none;\n\ -snippet tw:n\n\ - text-wrap: normal;\n\ -snippet tw:s\n\ - text-wrap: suppress;\n\ -snippet tw:u\n\ - text-wrap: unrestricted;\n\ -snippet t\n\ - top: ${1};\n\ -snippet t:a\n\ - top: auto;\n\ -snippet va\n\ - vertical-align: ${1};\n\ -snippet va:bl\n\ - vertical-align: baseline;\n\ -snippet va:b\n\ - vertical-align: bottom;\n\ -snippet va:m\n\ - vertical-align: middle;\n\ -snippet va:sub\n\ - vertical-align: sub;\n\ -snippet va:sup\n\ - vertical-align: super;\n\ -snippet va:tb\n\ - vertical-align: text-bottom;\n\ -snippet va:tt\n\ - vertical-align: text-top;\n\ -snippet va:t\n\ - vertical-align: top;\n\ -snippet v\n\ - visibility: ${1};\n\ -snippet v:c\n\ - visibility: collapse;\n\ -snippet v:h\n\ - visibility: hidden;\n\ -snippet v:v\n\ - visibility: visible;\n\ -snippet whsc\n\ - white-space-collapse: ${1};\n\ -snippet whsc:ba\n\ - white-space-collapse: break-all;\n\ -snippet whsc:bs\n\ - white-space-collapse: break-strict;\n\ -snippet whsc:k\n\ - white-space-collapse: keep-all;\n\ -snippet whsc:l\n\ - white-space-collapse: loose;\n\ -snippet whsc:n\n\ - white-space-collapse: normal;\n\ -snippet whs\n\ - white-space: ${1};\n\ -snippet whs:n\n\ - white-space: normal;\n\ -snippet whs:nw\n\ - white-space: nowrap;\n\ -snippet whs:pl\n\ - white-space: pre-line;\n\ -snippet whs:pw\n\ - white-space: pre-wrap;\n\ -snippet whs:p\n\ - white-space: pre;\n\ -snippet wid\n\ - widows: ${1};\n\ -snippet w\n\ - width: ${1};\n\ -snippet w:a\n\ - width: auto;\n\ -snippet wob\n\ - word-break: ${1};\n\ -snippet wob:ba\n\ - word-break: break-all;\n\ -snippet wob:bs\n\ - word-break: break-strict;\n\ -snippet wob:k\n\ - word-break: keep-all;\n\ -snippet wob:l\n\ - word-break: loose;\n\ -snippet wob:n\n\ - word-break: normal;\n\ -snippet wos\n\ - word-spacing: ${1};\n\ -snippet wow\n\ - word-wrap: ${1};\n\ -snippet wow:no\n\ - word-wrap: none;\n\ -snippet wow:n\n\ - word-wrap: normal;\n\ -snippet wow:s\n\ - word-wrap: suppress;\n\ -snippet wow:u\n\ - word-wrap: unrestricted;\n\ -snippet z\n\ - z-index: ${1};\n\ -snippet z:a\n\ - z-index: auto;\n\ -snippet zoo\n\ - zoom: 1;\n\ -"; -exports.scope = "css"; +define("ace/snippets/css.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet .\n\t${1} {\n\t\t${2}\n\t}\nsnippet !\n\t !important\nsnippet bdi:m+\n\t-moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:m\n\t-moz-border-image: ${1};\nsnippet bdrz:m\n\t-moz-border-radius: ${1};\nsnippet bxsh:m+\n\t-moz-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:m\n\t-moz-box-shadow: ${1};\nsnippet bdi:w+\n\t-webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:w\n\t-webkit-border-image: ${1};\nsnippet bdrz:w\n\t-webkit-border-radius: ${1};\nsnippet bxsh:w+\n\t-webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:w\n\t-webkit-box-shadow: ${1};\nsnippet @f\n\t@font-face {\n\t\tfont-family: ${1};\n\t\tsrc: url(${2});\n\t}\nsnippet @i\n\t@import url(${1});\nsnippet @m\n\t@media ${1:print} {\n\t\t${2}\n\t}\nsnippet bg+\n\tbackground: #${1:FFF} url(${2}) ${3:0} ${4:0} ${5:no-repeat};\nsnippet bga\n\tbackground-attachment: ${1};\nsnippet bga:f\n\tbackground-attachment: fixed;\nsnippet bga:s\n\tbackground-attachment: scroll;\nsnippet bgbk\n\tbackground-break: ${1};\nsnippet bgbk:bb\n\tbackground-break: bounding-box;\nsnippet bgbk:c\n\tbackground-break: continuous;\nsnippet bgbk:eb\n\tbackground-break: each-box;\nsnippet bgcp\n\tbackground-clip: ${1};\nsnippet bgcp:bb\n\tbackground-clip: border-box;\nsnippet bgcp:cb\n\tbackground-clip: content-box;\nsnippet bgcp:nc\n\tbackground-clip: no-clip;\nsnippet bgcp:pb\n\tbackground-clip: padding-box;\nsnippet bgc\n\tbackground-color: #${1:FFF};\nsnippet bgc:t\n\tbackground-color: transparent;\nsnippet bgi\n\tbackground-image: url(${1});\nsnippet bgi:n\n\tbackground-image: none;\nsnippet bgo\n\tbackground-origin: ${1};\nsnippet bgo:bb\n\tbackground-origin: border-box;\nsnippet bgo:cb\n\tbackground-origin: content-box;\nsnippet bgo:pb\n\tbackground-origin: padding-box;\nsnippet bgpx\n\tbackground-position-x: ${1};\nsnippet bgpy\n\tbackground-position-y: ${1};\nsnippet bgp\n\tbackground-position: ${1:0} ${2:0};\nsnippet bgr\n\tbackground-repeat: ${1};\nsnippet bgr:n\n\tbackground-repeat: no-repeat;\nsnippet bgr:x\n\tbackground-repeat: repeat-x;\nsnippet bgr:y\n\tbackground-repeat: repeat-y;\nsnippet bgr:r\n\tbackground-repeat: repeat;\nsnippet bgz\n\tbackground-size: ${1};\nsnippet bgz:a\n\tbackground-size: auto;\nsnippet bgz:ct\n\tbackground-size: contain;\nsnippet bgz:cv\n\tbackground-size: cover;\nsnippet bg\n\tbackground: ${1};\nsnippet bg:ie\n\tfilter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${2:crop}');\nsnippet bg:n\n\tbackground: none;\nsnippet bd+\n\tborder: ${1:1px} ${2:solid} #${3:000};\nsnippet bdb+\n\tborder-bottom: ${1:1px} ${2:solid} #${3:000};\nsnippet bdbc\n\tborder-bottom-color: #${1:000};\nsnippet bdbi\n\tborder-bottom-image: url(${1});\nsnippet bdbi:n\n\tborder-bottom-image: none;\nsnippet bdbli\n\tborder-bottom-left-image: url(${1});\nsnippet bdbli:c\n\tborder-bottom-left-image: continue;\nsnippet bdbli:n\n\tborder-bottom-left-image: none;\nsnippet bdblrz\n\tborder-bottom-left-radius: ${1};\nsnippet bdbri\n\tborder-bottom-right-image: url(${1});\nsnippet bdbri:c\n\tborder-bottom-right-image: continue;\nsnippet bdbri:n\n\tborder-bottom-right-image: none;\nsnippet bdbrrz\n\tborder-bottom-right-radius: ${1};\nsnippet bdbs\n\tborder-bottom-style: ${1};\nsnippet bdbs:n\n\tborder-bottom-style: none;\nsnippet bdbw\n\tborder-bottom-width: ${1};\nsnippet bdb\n\tborder-bottom: ${1};\nsnippet bdb:n\n\tborder-bottom: none;\nsnippet bdbk\n\tborder-break: ${1};\nsnippet bdbk:c\n\tborder-break: close;\nsnippet bdcl\n\tborder-collapse: ${1};\nsnippet bdcl:c\n\tborder-collapse: collapse;\nsnippet bdcl:s\n\tborder-collapse: separate;\nsnippet bdc\n\tborder-color: #${1:000};\nsnippet bdci\n\tborder-corner-image: url(${1});\nsnippet bdci:c\n\tborder-corner-image: continue;\nsnippet bdci:n\n\tborder-corner-image: none;\nsnippet bdf\n\tborder-fit: ${1};\nsnippet bdf:c\n\tborder-fit: clip;\nsnippet bdf:of\n\tborder-fit: overwrite;\nsnippet bdf:ow\n\tborder-fit: overwrite;\nsnippet bdf:r\n\tborder-fit: repeat;\nsnippet bdf:sc\n\tborder-fit: scale;\nsnippet bdf:sp\n\tborder-fit: space;\nsnippet bdf:st\n\tborder-fit: stretch;\nsnippet bdi\n\tborder-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:n\n\tborder-image: none;\nsnippet bdl+\n\tborder-left: ${1:1px} ${2:solid} #${3:000};\nsnippet bdlc\n\tborder-left-color: #${1:000};\nsnippet bdli\n\tborder-left-image: url(${1});\nsnippet bdli:n\n\tborder-left-image: none;\nsnippet bdls\n\tborder-left-style: ${1};\nsnippet bdls:n\n\tborder-left-style: none;\nsnippet bdlw\n\tborder-left-width: ${1};\nsnippet bdl\n\tborder-left: ${1};\nsnippet bdl:n\n\tborder-left: none;\nsnippet bdlt\n\tborder-length: ${1};\nsnippet bdlt:a\n\tborder-length: auto;\nsnippet bdrz\n\tborder-radius: ${1};\nsnippet bdr+\n\tborder-right: ${1:1px} ${2:solid} #${3:000};\nsnippet bdrc\n\tborder-right-color: #${1:000};\nsnippet bdri\n\tborder-right-image: url(${1});\nsnippet bdri:n\n\tborder-right-image: none;\nsnippet bdrs\n\tborder-right-style: ${1};\nsnippet bdrs:n\n\tborder-right-style: none;\nsnippet bdrw\n\tborder-right-width: ${1};\nsnippet bdr\n\tborder-right: ${1};\nsnippet bdr:n\n\tborder-right: none;\nsnippet bdsp\n\tborder-spacing: ${1};\nsnippet bds\n\tborder-style: ${1};\nsnippet bds:ds\n\tborder-style: dashed;\nsnippet bds:dtds\n\tborder-style: dot-dash;\nsnippet bds:dtdtds\n\tborder-style: dot-dot-dash;\nsnippet bds:dt\n\tborder-style: dotted;\nsnippet bds:db\n\tborder-style: double;\nsnippet bds:g\n\tborder-style: groove;\nsnippet bds:h\n\tborder-style: hidden;\nsnippet bds:i\n\tborder-style: inset;\nsnippet bds:n\n\tborder-style: none;\nsnippet bds:o\n\tborder-style: outset;\nsnippet bds:r\n\tborder-style: ridge;\nsnippet bds:s\n\tborder-style: solid;\nsnippet bds:w\n\tborder-style: wave;\nsnippet bdt+\n\tborder-top: ${1:1px} ${2:solid} #${3:000};\nsnippet bdtc\n\tborder-top-color: #${1:000};\nsnippet bdti\n\tborder-top-image: url(${1});\nsnippet bdti:n\n\tborder-top-image: none;\nsnippet bdtli\n\tborder-top-left-image: url(${1});\nsnippet bdtli:c\n\tborder-corner-image: continue;\nsnippet bdtli:n\n\tborder-corner-image: none;\nsnippet bdtlrz\n\tborder-top-left-radius: ${1};\nsnippet bdtri\n\tborder-top-right-image: url(${1});\nsnippet bdtri:c\n\tborder-top-right-image: continue;\nsnippet bdtri:n\n\tborder-top-right-image: none;\nsnippet bdtrrz\n\tborder-top-right-radius: ${1};\nsnippet bdts\n\tborder-top-style: ${1};\nsnippet bdts:n\n\tborder-top-style: none;\nsnippet bdtw\n\tborder-top-width: ${1};\nsnippet bdt\n\tborder-top: ${1};\nsnippet bdt:n\n\tborder-top: none;\nsnippet bdw\n\tborder-width: ${1};\nsnippet bd\n\tborder: ${1};\nsnippet bd:n\n\tborder: none;\nsnippet b\n\tbottom: ${1};\nsnippet b:a\n\tbottom: auto;\nsnippet bxsh+\n\tbox-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh\n\tbox-shadow: ${1};\nsnippet bxsh:n\n\tbox-shadow: none;\nsnippet bxz\n\tbox-sizing: ${1};\nsnippet bxz:bb\n\tbox-sizing: border-box;\nsnippet bxz:cb\n\tbox-sizing: content-box;\nsnippet cps\n\tcaption-side: ${1};\nsnippet cps:b\n\tcaption-side: bottom;\nsnippet cps:t\n\tcaption-side: top;\nsnippet cl\n\tclear: ${1};\nsnippet cl:b\n\tclear: both;\nsnippet cl:l\n\tclear: left;\nsnippet cl:n\n\tclear: none;\nsnippet cl:r\n\tclear: right;\nsnippet cp\n\tclip: ${1};\nsnippet cp:a\n\tclip: auto;\nsnippet cp:r\n\tclip: rect(${1:0} ${2:0} ${3:0} ${4:0});\nsnippet c\n\tcolor: #${1:000};\nsnippet ct\n\tcontent: ${1};\nsnippet ct:a\n\tcontent: attr(${1});\nsnippet ct:cq\n\tcontent: close-quote;\nsnippet ct:c\n\tcontent: counter(${1});\nsnippet ct:cs\n\tcontent: counters(${1});\nsnippet ct:ncq\n\tcontent: no-close-quote;\nsnippet ct:noq\n\tcontent: no-open-quote;\nsnippet ct:n\n\tcontent: normal;\nsnippet ct:oq\n\tcontent: open-quote;\nsnippet coi\n\tcounter-increment: ${1};\nsnippet cor\n\tcounter-reset: ${1};\nsnippet cur\n\tcursor: ${1};\nsnippet cur:a\n\tcursor: auto;\nsnippet cur:c\n\tcursor: crosshair;\nsnippet cur:d\n\tcursor: default;\nsnippet cur:ha\n\tcursor: hand;\nsnippet cur:he\n\tcursor: help;\nsnippet cur:m\n\tcursor: move;\nsnippet cur:p\n\tcursor: pointer;\nsnippet cur:t\n\tcursor: text;\nsnippet d\n\tdisplay: ${1};\nsnippet d:mib\n\tdisplay: -moz-inline-box;\nsnippet d:mis\n\tdisplay: -moz-inline-stack;\nsnippet d:b\n\tdisplay: block;\nsnippet d:cp\n\tdisplay: compact;\nsnippet d:ib\n\tdisplay: inline-block;\nsnippet d:itb\n\tdisplay: inline-table;\nsnippet d:i\n\tdisplay: inline;\nsnippet d:li\n\tdisplay: list-item;\nsnippet d:n\n\tdisplay: none;\nsnippet d:ri\n\tdisplay: run-in;\nsnippet d:tbcp\n\tdisplay: table-caption;\nsnippet d:tbc\n\tdisplay: table-cell;\nsnippet d:tbclg\n\tdisplay: table-column-group;\nsnippet d:tbcl\n\tdisplay: table-column;\nsnippet d:tbfg\n\tdisplay: table-footer-group;\nsnippet d:tbhg\n\tdisplay: table-header-group;\nsnippet d:tbrg\n\tdisplay: table-row-group;\nsnippet d:tbr\n\tdisplay: table-row;\nsnippet d:tb\n\tdisplay: table;\nsnippet ec\n\tempty-cells: ${1};\nsnippet ec:h\n\tempty-cells: hide;\nsnippet ec:s\n\tempty-cells: show;\nsnippet exp\n\texpression()\nsnippet fl\n\tfloat: ${1};\nsnippet fl:l\n\tfloat: left;\nsnippet fl:n\n\tfloat: none;\nsnippet fl:r\n\tfloat: right;\nsnippet f+\n\tfont: ${1:1em} ${2:Arial},${3:sans-serif};\nsnippet fef\n\tfont-effect: ${1};\nsnippet fef:eb\n\tfont-effect: emboss;\nsnippet fef:eg\n\tfont-effect: engrave;\nsnippet fef:n\n\tfont-effect: none;\nsnippet fef:o\n\tfont-effect: outline;\nsnippet femp\n\tfont-emphasize-position: ${1};\nsnippet femp:a\n\tfont-emphasize-position: after;\nsnippet femp:b\n\tfont-emphasize-position: before;\nsnippet fems\n\tfont-emphasize-style: ${1};\nsnippet fems:ac\n\tfont-emphasize-style: accent;\nsnippet fems:c\n\tfont-emphasize-style: circle;\nsnippet fems:ds\n\tfont-emphasize-style: disc;\nsnippet fems:dt\n\tfont-emphasize-style: dot;\nsnippet fems:n\n\tfont-emphasize-style: none;\nsnippet fem\n\tfont-emphasize: ${1};\nsnippet ff\n\tfont-family: ${1};\nsnippet ff:c\n\tfont-family: ${1:'Monotype Corsiva','Comic Sans MS'},cursive;\nsnippet ff:f\n\tfont-family: ${1:Capitals,Impact},fantasy;\nsnippet ff:m\n\tfont-family: ${1:Monaco,'Courier New'},monospace;\nsnippet ff:ss\n\tfont-family: ${1:Helvetica,Arial},sans-serif;\nsnippet ff:s\n\tfont-family: ${1:Georgia,'Times New Roman'},serif;\nsnippet fza\n\tfont-size-adjust: ${1};\nsnippet fza:n\n\tfont-size-adjust: none;\nsnippet fz\n\tfont-size: ${1};\nsnippet fsm\n\tfont-smooth: ${1};\nsnippet fsm:aw\n\tfont-smooth: always;\nsnippet fsm:a\n\tfont-smooth: auto;\nsnippet fsm:n\n\tfont-smooth: never;\nsnippet fst\n\tfont-stretch: ${1};\nsnippet fst:c\n\tfont-stretch: condensed;\nsnippet fst:e\n\tfont-stretch: expanded;\nsnippet fst:ec\n\tfont-stretch: extra-condensed;\nsnippet fst:ee\n\tfont-stretch: extra-expanded;\nsnippet fst:n\n\tfont-stretch: normal;\nsnippet fst:sc\n\tfont-stretch: semi-condensed;\nsnippet fst:se\n\tfont-stretch: semi-expanded;\nsnippet fst:uc\n\tfont-stretch: ultra-condensed;\nsnippet fst:ue\n\tfont-stretch: ultra-expanded;\nsnippet fs\n\tfont-style: ${1};\nsnippet fs:i\n\tfont-style: italic;\nsnippet fs:n\n\tfont-style: normal;\nsnippet fs:o\n\tfont-style: oblique;\nsnippet fv\n\tfont-variant: ${1};\nsnippet fv:n\n\tfont-variant: normal;\nsnippet fv:sc\n\tfont-variant: small-caps;\nsnippet fw\n\tfont-weight: ${1};\nsnippet fw:b\n\tfont-weight: bold;\nsnippet fw:br\n\tfont-weight: bolder;\nsnippet fw:lr\n\tfont-weight: lighter;\nsnippet fw:n\n\tfont-weight: normal;\nsnippet f\n\tfont: ${1};\nsnippet h\n\theight: ${1};\nsnippet h:a\n\theight: auto;\nsnippet l\n\tleft: ${1};\nsnippet l:a\n\tleft: auto;\nsnippet lts\n\tletter-spacing: ${1};\nsnippet lh\n\tline-height: ${1};\nsnippet lisi\n\tlist-style-image: url(${1});\nsnippet lisi:n\n\tlist-style-image: none;\nsnippet lisp\n\tlist-style-position: ${1};\nsnippet lisp:i\n\tlist-style-position: inside;\nsnippet lisp:o\n\tlist-style-position: outside;\nsnippet list\n\tlist-style-type: ${1};\nsnippet list:c\n\tlist-style-type: circle;\nsnippet list:dclz\n\tlist-style-type: decimal-leading-zero;\nsnippet list:dc\n\tlist-style-type: decimal;\nsnippet list:d\n\tlist-style-type: disc;\nsnippet list:lr\n\tlist-style-type: lower-roman;\nsnippet list:n\n\tlist-style-type: none;\nsnippet list:s\n\tlist-style-type: square;\nsnippet list:ur\n\tlist-style-type: upper-roman;\nsnippet lis\n\tlist-style: ${1};\nsnippet lis:n\n\tlist-style: none;\nsnippet mb\n\tmargin-bottom: ${1};\nsnippet mb:a\n\tmargin-bottom: auto;\nsnippet ml\n\tmargin-left: ${1};\nsnippet ml:a\n\tmargin-left: auto;\nsnippet mr\n\tmargin-right: ${1};\nsnippet mr:a\n\tmargin-right: auto;\nsnippet mt\n\tmargin-top: ${1};\nsnippet mt:a\n\tmargin-top: auto;\nsnippet m\n\tmargin: ${1};\nsnippet m:4\n\tmargin: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet m:3\n\tmargin: ${1:0} ${2:0} ${3:0};\nsnippet m:2\n\tmargin: ${1:0} ${2:0};\nsnippet m:0\n\tmargin: 0;\nsnippet m:a\n\tmargin: auto;\nsnippet mah\n\tmax-height: ${1};\nsnippet mah:n\n\tmax-height: none;\nsnippet maw\n\tmax-width: ${1};\nsnippet maw:n\n\tmax-width: none;\nsnippet mih\n\tmin-height: ${1};\nsnippet miw\n\tmin-width: ${1};\nsnippet op\n\topacity: ${1};\nsnippet op:ie\n\tfilter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});\nsnippet op:ms\n\t-ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';\nsnippet orp\n\torphans: ${1};\nsnippet o+\n\toutline: ${1:1px} ${2:solid} #${3:000};\nsnippet oc\n\toutline-color: ${1:#000};\nsnippet oc:i\n\toutline-color: invert;\nsnippet oo\n\toutline-offset: ${1};\nsnippet os\n\toutline-style: ${1};\nsnippet ow\n\toutline-width: ${1};\nsnippet o\n\toutline: ${1};\nsnippet o:n\n\toutline: none;\nsnippet ovs\n\toverflow-style: ${1};\nsnippet ovs:a\n\toverflow-style: auto;\nsnippet ovs:mq\n\toverflow-style: marquee;\nsnippet ovs:mv\n\toverflow-style: move;\nsnippet ovs:p\n\toverflow-style: panner;\nsnippet ovs:s\n\toverflow-style: scrollbar;\nsnippet ovx\n\toverflow-x: ${1};\nsnippet ovx:a\n\toverflow-x: auto;\nsnippet ovx:h\n\toverflow-x: hidden;\nsnippet ovx:s\n\toverflow-x: scroll;\nsnippet ovx:v\n\toverflow-x: visible;\nsnippet ovy\n\toverflow-y: ${1};\nsnippet ovy:a\n\toverflow-y: auto;\nsnippet ovy:h\n\toverflow-y: hidden;\nsnippet ovy:s\n\toverflow-y: scroll;\nsnippet ovy:v\n\toverflow-y: visible;\nsnippet ov\n\toverflow: ${1};\nsnippet ov:a\n\toverflow: auto;\nsnippet ov:h\n\toverflow: hidden;\nsnippet ov:s\n\toverflow: scroll;\nsnippet ov:v\n\toverflow: visible;\nsnippet pb\n\tpadding-bottom: ${1};\nsnippet pl\n\tpadding-left: ${1};\nsnippet pr\n\tpadding-right: ${1};\nsnippet pt\n\tpadding-top: ${1};\nsnippet p\n\tpadding: ${1};\nsnippet p:4\n\tpadding: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet p:3\n\tpadding: ${1:0} ${2:0} ${3:0};\nsnippet p:2\n\tpadding: ${1:0} ${2:0};\nsnippet p:0\n\tpadding: 0;\nsnippet pgba\n\tpage-break-after: ${1};\nsnippet pgba:aw\n\tpage-break-after: always;\nsnippet pgba:a\n\tpage-break-after: auto;\nsnippet pgba:l\n\tpage-break-after: left;\nsnippet pgba:r\n\tpage-break-after: right;\nsnippet pgbb\n\tpage-break-before: ${1};\nsnippet pgbb:aw\n\tpage-break-before: always;\nsnippet pgbb:a\n\tpage-break-before: auto;\nsnippet pgbb:l\n\tpage-break-before: left;\nsnippet pgbb:r\n\tpage-break-before: right;\nsnippet pgbi\n\tpage-break-inside: ${1};\nsnippet pgbi:a\n\tpage-break-inside: auto;\nsnippet pgbi:av\n\tpage-break-inside: avoid;\nsnippet pos\n\tposition: ${1};\nsnippet pos:a\n\tposition: absolute;\nsnippet pos:f\n\tposition: fixed;\nsnippet pos:r\n\tposition: relative;\nsnippet pos:s\n\tposition: static;\nsnippet q\n\tquotes: ${1};\nsnippet q:en\n\tquotes: '\\201C' '\\201D' '\\2018' '\\2019';\nsnippet q:n\n\tquotes: none;\nsnippet q:ru\n\tquotes: '\\00AB' '\\00BB' '\\201E' '\\201C';\nsnippet rz\n\tresize: ${1};\nsnippet rz:b\n\tresize: both;\nsnippet rz:h\n\tresize: horizontal;\nsnippet rz:n\n\tresize: none;\nsnippet rz:v\n\tresize: vertical;\nsnippet r\n\tright: ${1};\nsnippet r:a\n\tright: auto;\nsnippet tbl\n\ttable-layout: ${1};\nsnippet tbl:a\n\ttable-layout: auto;\nsnippet tbl:f\n\ttable-layout: fixed;\nsnippet tal\n\ttext-align-last: ${1};\nsnippet tal:a\n\ttext-align-last: auto;\nsnippet tal:c\n\ttext-align-last: center;\nsnippet tal:l\n\ttext-align-last: left;\nsnippet tal:r\n\ttext-align-last: right;\nsnippet ta\n\ttext-align: ${1};\nsnippet ta:c\n\ttext-align: center;\nsnippet ta:l\n\ttext-align: left;\nsnippet ta:r\n\ttext-align: right;\nsnippet td\n\ttext-decoration: ${1};\nsnippet td:l\n\ttext-decoration: line-through;\nsnippet td:n\n\ttext-decoration: none;\nsnippet td:o\n\ttext-decoration: overline;\nsnippet td:u\n\ttext-decoration: underline;\nsnippet te\n\ttext-emphasis: ${1};\nsnippet te:ac\n\ttext-emphasis: accent;\nsnippet te:a\n\ttext-emphasis: after;\nsnippet te:b\n\ttext-emphasis: before;\nsnippet te:c\n\ttext-emphasis: circle;\nsnippet te:ds\n\ttext-emphasis: disc;\nsnippet te:dt\n\ttext-emphasis: dot;\nsnippet te:n\n\ttext-emphasis: none;\nsnippet th\n\ttext-height: ${1};\nsnippet th:a\n\ttext-height: auto;\nsnippet th:f\n\ttext-height: font-size;\nsnippet th:m\n\ttext-height: max-size;\nsnippet th:t\n\ttext-height: text-size;\nsnippet ti\n\ttext-indent: ${1};\nsnippet ti:-\n\ttext-indent: -9999px;\nsnippet tj\n\ttext-justify: ${1};\nsnippet tj:a\n\ttext-justify: auto;\nsnippet tj:d\n\ttext-justify: distribute;\nsnippet tj:ic\n\ttext-justify: inter-cluster;\nsnippet tj:ii\n\ttext-justify: inter-ideograph;\nsnippet tj:iw\n\ttext-justify: inter-word;\nsnippet tj:k\n\ttext-justify: kashida;\nsnippet tj:t\n\ttext-justify: tibetan;\nsnippet to+\n\ttext-outline: ${1:0} ${2:0} #${3:000};\nsnippet to\n\ttext-outline: ${1};\nsnippet to:n\n\ttext-outline: none;\nsnippet tr\n\ttext-replace: ${1};\nsnippet tr:n\n\ttext-replace: none;\nsnippet tsh+\n\ttext-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet tsh\n\ttext-shadow: ${1};\nsnippet tsh:n\n\ttext-shadow: none;\nsnippet tt\n\ttext-transform: ${1};\nsnippet tt:c\n\ttext-transform: capitalize;\nsnippet tt:l\n\ttext-transform: lowercase;\nsnippet tt:n\n\ttext-transform: none;\nsnippet tt:u\n\ttext-transform: uppercase;\nsnippet tw\n\ttext-wrap: ${1};\nsnippet tw:no\n\ttext-wrap: none;\nsnippet tw:n\n\ttext-wrap: normal;\nsnippet tw:s\n\ttext-wrap: suppress;\nsnippet tw:u\n\ttext-wrap: unrestricted;\nsnippet t\n\ttop: ${1};\nsnippet t:a\n\ttop: auto;\nsnippet va\n\tvertical-align: ${1};\nsnippet va:bl\n\tvertical-align: baseline;\nsnippet va:b\n\tvertical-align: bottom;\nsnippet va:m\n\tvertical-align: middle;\nsnippet va:sub\n\tvertical-align: sub;\nsnippet va:sup\n\tvertical-align: super;\nsnippet va:tb\n\tvertical-align: text-bottom;\nsnippet va:tt\n\tvertical-align: text-top;\nsnippet va:t\n\tvertical-align: top;\nsnippet v\n\tvisibility: ${1};\nsnippet v:c\n\tvisibility: collapse;\nsnippet v:h\n\tvisibility: hidden;\nsnippet v:v\n\tvisibility: visible;\nsnippet whsc\n\twhite-space-collapse: ${1};\nsnippet whsc:ba\n\twhite-space-collapse: break-all;\nsnippet whsc:bs\n\twhite-space-collapse: break-strict;\nsnippet whsc:k\n\twhite-space-collapse: keep-all;\nsnippet whsc:l\n\twhite-space-collapse: loose;\nsnippet whsc:n\n\twhite-space-collapse: normal;\nsnippet whs\n\twhite-space: ${1};\nsnippet whs:n\n\twhite-space: normal;\nsnippet whs:nw\n\twhite-space: nowrap;\nsnippet whs:pl\n\twhite-space: pre-line;\nsnippet whs:pw\n\twhite-space: pre-wrap;\nsnippet whs:p\n\twhite-space: pre;\nsnippet wid\n\twidows: ${1};\nsnippet w\n\twidth: ${1};\nsnippet w:a\n\twidth: auto;\nsnippet wob\n\tword-break: ${1};\nsnippet wob:ba\n\tword-break: break-all;\nsnippet wob:bs\n\tword-break: break-strict;\nsnippet wob:k\n\tword-break: keep-all;\nsnippet wob:l\n\tword-break: loose;\nsnippet wob:n\n\tword-break: normal;\nsnippet wos\n\tword-spacing: ${1};\nsnippet wow\n\tword-wrap: ${1};\nsnippet wow:no\n\tword-wrap: none;\nsnippet wow:n\n\tword-wrap: normal;\nsnippet wow:s\n\tword-wrap: suppress;\nsnippet wow:u\n\tword-wrap: unrestricted;\nsnippet z\n\tz-index: ${1};\nsnippet z:a\n\tz-index: auto;\nsnippet zoo\n\tzoom: 1;\n"; }); + +define("ace/snippets/css",["require","exports","module","ace/snippets/css.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./css.snippets"); +exports.scope = "css"; + +}); (function() { + window.require(["ace/snippets/css"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/curly.js b/vendor/assets/javascripts/ace/snippets/curly.js index 2bf82d9d..d0c5487d 100644 --- a/vendor/assets/javascripts/ace/snippets/curly.js +++ b/vendor/assets/javascripts/ace/snippets/curly.js @@ -1,7 +1,9 @@ -define("ace/snippets/curly",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "curly"; - -}); +; (function() { + window.require(["ace/snippets/curly"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/cuttlefish.js b/vendor/assets/javascripts/ace/snippets/cuttlefish.js new file mode 100644 index 00000000..b581a955 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/cuttlefish.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/cuttlefish"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/d.js b/vendor/assets/javascripts/ace/snippets/d.js index bf78cfdd..18257d4f 100644 --- a/vendor/assets/javascripts/ace/snippets/d.js +++ b/vendor/assets/javascripts/ace/snippets/d.js @@ -1,7 +1,9 @@ -define("ace/snippets/d",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "d"; - -}); +; (function() { + window.require(["ace/snippets/d"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/dart.js b/vendor/assets/javascripts/ace/snippets/dart.js index 9c12f917..f7744dec 100644 --- a/vendor/assets/javascripts/ace/snippets/dart.js +++ b/vendor/assets/javascripts/ace/snippets/dart.js @@ -1,90 +1,16 @@ -define("ace/snippets/dart",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet lib\n\ - library ${1};\n\ - ${2}\n\ -snippet im\n\ - import '${1}';\n\ - ${2}\n\ -snippet pa\n\ - part '${1}';\n\ - ${2}\n\ -snippet pao\n\ - part of ${1};\n\ - ${2}\n\ -snippet main\n\ - void main() {\n\ - ${1:/* code */}\n\ - }\n\ -snippet st\n\ - static ${1}\n\ -snippet fi\n\ - final ${1}\n\ -snippet re\n\ - return ${1}\n\ -snippet br\n\ - break;\n\ -snippet th\n\ - throw ${1}\n\ -snippet cl\n\ - class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ -snippet imp\n\ - implements ${1}\n\ -snippet ext\n\ - extends ${1}\n\ -snippet if\n\ - if (${1:true}) {\n\ - ${2}\n\ - }\n\ -snippet ife\n\ - if (${1:true}) {\n\ - ${2}\n\ - } else {\n\ - ${3}\n\ - }\n\ -snippet el\n\ - else\n\ -snippet sw\n\ - switch (${1}) {\n\ - ${2}\n\ - }\n\ -snippet cs\n\ - case ${1}:\n\ - ${2}\n\ -snippet de\n\ - default:\n\ - ${1}\n\ -snippet for\n\ - for (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {\n\ - ${4:$1[$2]}\n\ - }\n\ -snippet fore\n\ - for (final ${2:item} in ${1:itemList}) {\n\ - ${3:/* code */}\n\ - }\n\ -snippet wh\n\ - while (${1:/* condition */}) {\n\ - ${2:/* code */}\n\ - }\n\ -snippet dowh\n\ - do {\n\ - ${2:/* code */}\n\ - } while (${1:/* condition */});\n\ -snippet as\n\ - assert(${1:/* condition */});\n\ -snippet try\n\ - try {\n\ - ${2}\n\ - } catch (${1:Exception e}) {\n\ - }\n\ -snippet tryf\n\ - try {\n\ - ${2}\n\ - } catch (${1:Exception e}) {\n\ - } finally {\n\ - }\n\ -"; -exports.scope = "dart"; +define("ace/snippets/dart.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet lib\n\tlibrary ${1};\n\t${2}\nsnippet im\n\timport '${1}';\n\t${2}\nsnippet pa\n\tpart '${1}';\n\t${2}\nsnippet pao\n\tpart of ${1};\n\t${2}\nsnippet main\n\tvoid main() {\n\t ${1:/* code */}\n\t}\nsnippet st\n\tstatic ${1}\nsnippet fi\n\tfinal ${1}\nsnippet re\n\treturn ${1}\nsnippet br\n\tbreak;\nsnippet th\n\tthrow ${1}\nsnippet cl\n\tclass ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet imp\n\timplements ${1}\nsnippet ext\n\textends ${1}\nsnippet if\n\tif (${1:true}) {\n\t ${2}\n\t}\nsnippet ife\n\tif (${1:true}) {\n\t ${2}\n\t} else {\n\t ${3}\n\t}\nsnippet el\n\telse\nsnippet sw\n\tswitch (${1}) {\n\t ${2}\n\t}\nsnippet cs\n\tcase ${1}:\n\t ${2}\nsnippet de\n\tdefault:\n\t ${1}\nsnippet for\n\tfor (var ${2:i} = 0, len = ${1:things}.length; $2 < len; ${3:++}$2) {\n\t ${4:$1[$2]}\n\t}\nsnippet fore\n\tfor (final ${2:item} in ${1:itemList}) {\n\t ${3:/* code */}\n\t}\nsnippet wh\n\twhile (${1:/* condition */}) {\n\t ${2:/* code */}\n\t}\nsnippet dowh\n\tdo {\n\t ${2:/* code */}\n\t} while (${1:/* condition */});\nsnippet as\n\tassert(${1:/* condition */});\nsnippet try\n\ttry {\n\t ${2}\n\t} catch (${1:Exception e}) {\n\t}\nsnippet tryf\n\ttry {\n\t ${2}\n\t} catch (${1:Exception e}) {\n\t} finally {\n\t}\n"; }); + +define("ace/snippets/dart",["require","exports","module","ace/snippets/dart.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./dart.snippets"); +exports.scope = "dart"; + +}); (function() { + window.require(["ace/snippets/dart"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/diff.js b/vendor/assets/javascripts/ace/snippets/diff.js index ffabc8f2..ac91152f 100644 --- a/vendor/assets/javascripts/ace/snippets/diff.js +++ b/vendor/assets/javascripts/ace/snippets/diff.js @@ -1,18 +1,16 @@ -define("ace/snippets/diff",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\n\ -snippet header DEP-3 style header\n\ - Description: ${1}\n\ - Origin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n\ - Bug: ${4:url in upstream bugtracker}\n\ - Forwarded: ${5:no|not-needed|url}\n\ - Author: ${6:`g:snips_author`}\n\ - Reviewed-by: ${7:name and email}\n\ - Last-Update: ${8:`strftime(\"%Y-%m-%d\")`}\n\ - Applied-Upstream: ${9:upstream version|url|commit}\n\ -\n\ -"; -exports.scope = "diff"; +define("ace/snippets/diff.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# DEP-3 (http://dep.debian.net/deps/dep3/) style patch header\nsnippet header DEP-3 style header\n\tDescription: ${1}\n\tOrigin: ${2:vendor|upstream|other}, ${3:url of the original patch}\n\tBug: ${4:url in upstream bugtracker}\n\tForwarded: ${5:no|not-needed|url}\n\tAuthor: ${6:`g:snips_author`}\n\tReviewed-by: ${7:name and email}\n\tLast-Update: ${8:`strftime(\"%Y-%m-%d\")`}\n\tApplied-Upstream: ${9:upstream version|url|commit}\n\n"; }); + +define("ace/snippets/diff",["require","exports","module","ace/snippets/diff.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./diff.snippets"); +exports.scope = "diff"; + +}); (function() { + window.require(["ace/snippets/diff"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/django.js b/vendor/assets/javascripts/ace/snippets/django.js index f82e0a7f..68efd44f 100644 --- a/vendor/assets/javascripts/ace/snippets/django.js +++ b/vendor/assets/javascripts/ace/snippets/django.js @@ -1,115 +1,16 @@ -define("ace/snippets/django",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Model Fields\n\ -\n\ -# Note: Optional arguments are using defaults that match what Django will use\n\ -# as a default, e.g. with max_length fields. Doing this as a form of self\n\ -# documentation and to make it easy to know whether you should override the\n\ -# default or not.\n\ -\n\ -# Note: Optional arguments that are booleans will use the opposite since you\n\ -# can either not specify them, or override them, e.g. auto_now_add=False.\n\ -\n\ -snippet auto\n\ - ${1:FIELDNAME} = models.AutoField(${2})\n\ -snippet bool\n\ - ${1:FIELDNAME} = models.BooleanField(${2:default=True})\n\ -snippet char\n\ - ${1:FIELDNAME} = models.CharField(max_length=${2}${3:, blank=True})\n\ -snippet comma\n\ - ${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=${2}${3:, blank=True})\n\ -snippet date\n\ - ${1:FIELDNAME} = models.DateField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\n\ -snippet datetime\n\ - ${1:FIELDNAME} = models.DateTimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\n\ -snippet decimal\n\ - ${1:FIELDNAME} = models.DecimalField(max_digits=${2}, decimal_places=${3})\n\ -snippet email\n\ - ${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True})\n\ -snippet file\n\ - ${1:FIELDNAME} = models.FileField(upload_to=${2:path/for/upload}${3:, max_length=100})\n\ -snippet filepath\n\ - ${1:FIELDNAME} = models.FilePathField(path=${2:\"/abs/path/to/dir\"}${3:, max_length=100}${4:, match=\"*.ext\"}${5:, recursive=True}${6:, blank=True, })\n\ -snippet float\n\ - ${1:FIELDNAME} = models.FloatField(${2})\n\ -snippet image\n\ - ${1:FIELDNAME} = models.ImageField(upload_to=${2:path/for/upload}${3:, height_field=height, width_field=width}${4:, max_length=100})\n\ -snippet int\n\ - ${1:FIELDNAME} = models.IntegerField(${2})\n\ -snippet ip\n\ - ${1:FIELDNAME} = models.IPAddressField(${2})\n\ -snippet nullbool\n\ - ${1:FIELDNAME} = models.NullBooleanField(${2})\n\ -snippet posint\n\ - ${1:FIELDNAME} = models.PositiveIntegerField(${2})\n\ -snippet possmallint\n\ - ${1:FIELDNAME} = models.PositiveSmallIntegerField(${2})\n\ -snippet slug\n\ - ${1:FIELDNAME} = models.SlugField(max_length=${2:50}${3:, blank=True})\n\ -snippet smallint\n\ - ${1:FIELDNAME} = models.SmallIntegerField(${2})\n\ -snippet text\n\ - ${1:FIELDNAME} = models.TextField(${2:blank=True})\n\ -snippet time\n\ - ${1:FIELDNAME} = models.TimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\n\ -snippet url\n\ - ${1:FIELDNAME} = models.URLField(${2:verify_exists=False}${3:, max_length=200}${4:, blank=True})\n\ -snippet xml\n\ - ${1:FIELDNAME} = models.XMLField(schema_path=${2:None}${3:, blank=True})\n\ -# Relational Fields\n\ -snippet fk\n\ - ${1:FIELDNAME} = models.ForeignKey(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, to_field=''})\n\ -snippet m2m\n\ - ${1:FIELDNAME} = models.ManyToManyField(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, symmetrical=False}${6:, through=''}${7:, db_table=''})\n\ -snippet o2o\n\ - ${1:FIELDNAME} = models.OneToOneField(${2:OtherModel}${3:, parent_link=True}${4:, related_name=''}${5:, limit_choices_to=}${6:, to_field=''})\n\ -\n\ -# Code Skeletons\n\ -\n\ -snippet form\n\ - class ${1:FormName}(forms.Form):\n\ - \"\"\"${2:docstring}\"\"\"\n\ - ${3}\n\ -\n\ -snippet model\n\ - class ${1:ModelName}(models.Model):\n\ - \"\"\"${2:docstring}\"\"\"\n\ - ${3}\n\ - \n\ - class Meta:\n\ - ${4}\n\ - \n\ - def __unicode__(self):\n\ - ${5}\n\ - \n\ - def save(self, force_insert=False, force_update=False):\n\ - ${6}\n\ - \n\ - @models.permalink\n\ - def get_absolute_url(self):\n\ - return ('${7:view_or_url_name}' ${8})\n\ -\n\ -snippet modeladmin\n\ - class ${1:ModelName}Admin(admin.ModelAdmin):\n\ - ${2}\n\ - \n\ - admin.site.register($1, $1Admin)\n\ - \n\ -snippet tabularinline\n\ - class ${1:ModelName}Inline(admin.TabularInline):\n\ - model = $1\n\ -\n\ -snippet stackedinline\n\ - class ${1:ModelName}Inline(admin.StackedInline):\n\ - model = $1\n\ -\n\ -snippet r2r\n\ - return render_to_response('${1:template.html}', {\n\ - ${2}\n\ - }${3:, context_instance=RequestContext(request)}\n\ - )\n\ -"; -exports.scope = "django"; +define("ace/snippets/django.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Model Fields\n\n# Note: Optional arguments are using defaults that match what Django will use\n# as a default, e.g. with max_length fields. Doing this as a form of self\n# documentation and to make it easy to know whether you should override the\n# default or not.\n\n# Note: Optional arguments that are booleans will use the opposite since you\n# can either not specify them, or override them, e.g. auto_now_add=False.\n\nsnippet auto\n\t${1:FIELDNAME} = models.AutoField(${2})\nsnippet bool\n\t${1:FIELDNAME} = models.BooleanField(${2:default=True})\nsnippet char\n\t${1:FIELDNAME} = models.CharField(max_length=${2}${3:, blank=True})\nsnippet comma\n\t${1:FIELDNAME} = models.CommaSeparatedIntegerField(max_length=${2}${3:, blank=True})\nsnippet date\n\t${1:FIELDNAME} = models.DateField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet datetime\n\t${1:FIELDNAME} = models.DateTimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet decimal\n\t${1:FIELDNAME} = models.DecimalField(max_digits=${2}, decimal_places=${3})\nsnippet email\n\t${1:FIELDNAME} = models.EmailField(max_length=${2:75}${3:, blank=True})\nsnippet file\n\t${1:FIELDNAME} = models.FileField(upload_to=${2:path/for/upload}${3:, max_length=100})\nsnippet filepath\n\t${1:FIELDNAME} = models.FilePathField(path=${2:\"/abs/path/to/dir\"}${3:, max_length=100}${4:, match=\"*.ext\"}${5:, recursive=True}${6:, blank=True, })\nsnippet float\n\t${1:FIELDNAME} = models.FloatField(${2})\nsnippet image\n\t${1:FIELDNAME} = models.ImageField(upload_to=${2:path/for/upload}${3:, height_field=height, width_field=width}${4:, max_length=100})\nsnippet int\n\t${1:FIELDNAME} = models.IntegerField(${2})\nsnippet ip\n\t${1:FIELDNAME} = models.IPAddressField(${2})\nsnippet nullbool\n\t${1:FIELDNAME} = models.NullBooleanField(${2})\nsnippet posint\n\t${1:FIELDNAME} = models.PositiveIntegerField(${2})\nsnippet possmallint\n\t${1:FIELDNAME} = models.PositiveSmallIntegerField(${2})\nsnippet slug\n\t${1:FIELDNAME} = models.SlugField(max_length=${2:50}${3:, blank=True})\nsnippet smallint\n\t${1:FIELDNAME} = models.SmallIntegerField(${2})\nsnippet text\n\t${1:FIELDNAME} = models.TextField(${2:blank=True})\nsnippet time\n\t${1:FIELDNAME} = models.TimeField(${2:auto_now_add=True, auto_now=True}${3:, blank=True, null=True})\nsnippet url\n\t${1:FIELDNAME} = models.URLField(${2:verify_exists=False}${3:, max_length=200}${4:, blank=True})\nsnippet xml\n\t${1:FIELDNAME} = models.XMLField(schema_path=${2:None}${3:, blank=True})\n# Relational Fields\nsnippet fk\n\t${1:FIELDNAME} = models.ForeignKey(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, to_field=''})\nsnippet m2m\n\t${1:FIELDNAME} = models.ManyToManyField(${2:OtherModel}${3:, related_name=''}${4:, limit_choices_to=}${5:, symmetrical=False}${6:, through=''}${7:, db_table=''})\nsnippet o2o\n\t${1:FIELDNAME} = models.OneToOneField(${2:OtherModel}${3:, parent_link=True}${4:, related_name=''}${5:, limit_choices_to=}${6:, to_field=''})\n\n# Code Skeletons\n\nsnippet form\n\tclass ${1:FormName}(forms.Form):\n\t\t\"\"\"${2:docstring}\"\"\"\n\t\t${3}\n\nsnippet model\n\tclass ${1:ModelName}(models.Model):\n\t\t\"\"\"${2:docstring}\"\"\"\n\t\t${3}\n\t\t\n\t\tclass Meta:\n\t\t\t${4}\n\t\t\n\t\tdef __unicode__(self):\n\t\t\t${5}\n\t\t\n\t\tdef save(self, force_insert=False, force_update=False):\n\t\t\t${6}\n\t\t\n\t\t@models.permalink\n\t\tdef get_absolute_url(self):\n\t\t\treturn ('${7:view_or_url_name}' ${8})\n\nsnippet modeladmin\n\tclass ${1:ModelName}Admin(admin.ModelAdmin):\n\t\t${2}\n\t\n\tadmin.site.register($1, $1Admin)\n\t\nsnippet tabularinline\n\tclass ${1:ModelName}Inline(admin.TabularInline):\n\t\tmodel = $1\n\nsnippet stackedinline\n\tclass ${1:ModelName}Inline(admin.StackedInline):\n\t\tmodel = $1\n\nsnippet r2r\n\treturn render_to_response('${1:template.html}', {\n\t\t\t${2}\n\t\t}${3:, context_instance=RequestContext(request)}\n\t)\n"; }); + +define("ace/snippets/django",["require","exports","module","ace/snippets/django.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./django.snippets"); +exports.scope = "django"; + +}); (function() { + window.require(["ace/snippets/django"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/dockerfile.js b/vendor/assets/javascripts/ace/snippets/dockerfile.js index 75b4dedd..cd5d4182 100644 --- a/vendor/assets/javascripts/ace/snippets/dockerfile.js +++ b/vendor/assets/javascripts/ace/snippets/dockerfile.js @@ -1,7 +1,9 @@ -define("ace/snippets/dockerfile",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "dockerfile"; - -}); +; (function() { + window.require(["ace/snippets/dockerfile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/dot.js b/vendor/assets/javascripts/ace/snippets/dot.js index 77b345c0..aec363b0 100644 --- a/vendor/assets/javascripts/ace/snippets/dot.js +++ b/vendor/assets/javascripts/ace/snippets/dot.js @@ -1,7 +1,9 @@ -define("ace/snippets/dot",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "dot"; - -}); +; (function() { + window.require(["ace/snippets/dot"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/drools.js b/vendor/assets/javascripts/ace/snippets/drools.js index f2ed770c..095462a5 100644 --- a/vendor/assets/javascripts/ace/snippets/drools.js +++ b/vendor/assets/javascripts/ace/snippets/drools.js @@ -1,26 +1,16 @@ -define("ace/snippets/drools",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "\n\ -snippet rule\n\ - rule \"${1?:rule_name}\"\n\ - when\n\ - ${2:// when...} \n\ - then\n\ - ${3:// then...}\n\ - end\n\ -\n\ -snippet query\n\ - query ${1?:query_name}\n\ - ${2:// find} \n\ - end\n\ - \n\ -snippet declare\n\ - declare ${1?:type_name}\n\ - ${2:// attributes} \n\ - end\n\ -\n\ -"; -exports.scope = "drools"; +define("ace/snippets/drools.snippets",["require","exports","module"], function(require, exports, module){module.exports = "\nsnippet rule\n\trule \"${1?:rule_name}\"\n\twhen\n\t\t${2:// when...} \n\tthen\n\t\t${3:// then...}\n\tend\n\nsnippet query\n\tquery ${1?:query_name}\n\t\t${2:// find} \n\tend\n\t\nsnippet declare\n\tdeclare ${1?:type_name}\n\t\t${2:// attributes} \n\tend\n\n"; }); + +define("ace/snippets/drools",["require","exports","module","ace/snippets/drools.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./drools.snippets"); +exports.scope = "drools"; + +}); (function() { + window.require(["ace/snippets/drools"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/edifact.js b/vendor/assets/javascripts/ace/snippets/edifact.js new file mode 100644 index 00000000..47abe147 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/edifact.js @@ -0,0 +1,16 @@ +define("ace/snippets/edifact.snippets",["require","exports","module"], function(require, exports, module){module.exports = "## Access Modifiers\nsnippet u\n\tUN\nsnippet un\n\tUNB\nsnippet pr\n\tprivate\n##\n## Annotations\nsnippet before\n\t@Before\n\tstatic void ${1:intercept}(${2:args}) { ${3} }\nsnippet mm\n\t@ManyToMany\n\t${1}\nsnippet mo\n\t@ManyToOne\n\t${1}\nsnippet om\n\t@OneToMany${1:(cascade=CascadeType.ALL)}\n\t${2}\nsnippet oo\n\t@OneToOne\n\t${1}\n##\n## Basic Java packages and import\nsnippet im\n\timport\nsnippet j.b\n\tjava.beans.\nsnippet j.i\n\tjava.io.\nsnippet j.m\n\tjava.math.\nsnippet j.n\n\tjava.net.\nsnippet j.u\n\tjava.util.\n##\n## Class\nsnippet cl\n\tclass ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet in\n\tinterface ${1:`Filename(\"\", \"untitled\")`} ${2:extends Parent}${3}\nsnippet tc\n\tpublic class ${1:`Filename()`} extends ${2:TestCase}\n##\n## Class Enhancements\nsnippet ext\n\textends \nsnippet imp\n\timplements\n##\n## Comments\nsnippet /*\n\t/*\n\t * ${1}\n\t */\n##\n## Constants\nsnippet co\n\tstatic public final ${1:String} ${2:var} = ${3};${4}\nsnippet cos\n\tstatic public final String ${1:var} = \"${2}\";${3}\n##\n## Control Statements\nsnippet case\n\tcase ${1}:\n\t\t${2}\nsnippet def\n\tdefault:\n\t\t${2}\nsnippet el\n\telse\nsnippet elif\n\telse if (${1}) ${2}\nsnippet if\n\tif (${1}) ${2}\nsnippet sw\n\tswitch (${1}) {\n\t\t${2}\n\t}\n##\n## Create a Method\nsnippet m\n\t${1:void} ${2:method}(${3}) ${4:throws }${5}\n##\n## Create a Variable\nsnippet v\n\t${1:String} ${2:var}${3: = null}${4};${5}\n##\n## Enhancements to Methods, variables, classes, etc.\nsnippet ab\n\tabstract\nsnippet fi\n\tfinal\nsnippet st\n\tstatic\nsnippet sy\n\tsynchronized\n##\n## Error Methods\nsnippet err\n\tSystem.err.print(\"${1:Message}\");\nsnippet errf\n\tSystem.err.printf(\"${1:Message}\", ${2:exception});\nsnippet errln\n\tSystem.err.println(\"${1:Message}\");\n##\n## Exception Handling\nsnippet as\n\tassert ${1:test} : \"${2:Failure message}\";${3}\nsnippet ca\n\tcatch(${1:Exception} ${2:e}) ${3}\nsnippet thr\n\tthrow\nsnippet ths\n\tthrows\nsnippet try\n\ttry {\n\t\t${3}\n\t} catch(${1:Exception} ${2:e}) {\n\t}\nsnippet tryf\n\ttry {\n\t\t${3}\n\t} catch(${1:Exception} ${2:e}) {\n\t} finally {\n\t}\n##\n## Find Methods\nsnippet findall\n\tList<${1:listName}> ${2:items} = ${1}.findAll();${3}\nsnippet findbyid\n\t${1:var} ${2:item} = ${1}.findById(${3});${4}\n##\n## Javadocs\nsnippet /**\n\t/**\n\t * ${1}\n\t */\nsnippet @au\n\t@author `system(\"grep \\`id -un\\` /etc/passwd | cut -d \\\":\\\" -f5 | cut -d \\\",\\\" -f1\")`\nsnippet @br\n\t@brief ${1:Description}\nsnippet @fi\n\t@file ${1:`Filename()`}.java\nsnippet @pa\n\t@param ${1:param}\nsnippet @re\n\t@return ${1:param}\n##\n## Logger Methods\nsnippet debug\n\tLogger.debug(${1:param});${2}\nsnippet error\n\tLogger.error(${1:param});${2}\nsnippet info\n\tLogger.info(${1:param});${2}\nsnippet warn\n\tLogger.warn(${1:param});${2}\n##\n## Loops\nsnippet enfor\n\tfor (${1} : ${2}) ${3}\nsnippet for\n\tfor (${1}; ${2}; ${3}) ${4}\nsnippet wh\n\twhile (${1}) ${2}\n##\n## Main method\nsnippet main\n\tpublic static void main (String[] args) {\n\t\t${1:/* code */}\n\t}\n##\n## Print Methods\nsnippet print\n\tSystem.out.print(\"${1:Message}\");\nsnippet printf\n\tSystem.out.printf(\"${1:Message}\", ${2:args});\nsnippet println\n\tSystem.out.println(${1});\n##\n## Render Methods\nsnippet ren\n\trender(${1:param});${2}\nsnippet rena\n\trenderArgs.put(\"${1}\", ${2});${3}\nsnippet renb\n\trenderBinary(${1:param});${2}\nsnippet renj\n\trenderJSON(${1:param});${2}\nsnippet renx\n\trenderXml(${1:param});${2}\n##\n## Setter and Getter Methods\nsnippet set\n\t${1:public} void set${3:}(${2:String} ${4:}){\n\t\tthis.$4 = $4;\n\t}\nsnippet get\n\t${1:public} ${2:String} get${3:}(){\n\t\treturn this.${4:};\n\t}\n##\n## Terminate Methods or Loops\nsnippet re\n\treturn\nsnippet br\n\tbreak;\n##\n## Test Methods\nsnippet t\n\tpublic void test${1:Name}() throws Exception {\n\t\t${2}\n\t}\nsnippet test\n\t@Test\n\tpublic void test${1:Name}() throws Exception {\n\t\t${2}\n\t}\n##\n## Utils\nsnippet Sc\n\tScanner\n##\n## Miscellaneous\nsnippet action\n\tpublic static void ${1:index}(${2:args}) { ${3} }\nsnippet rnf\n\tnotFound(${1:param});${2}\nsnippet rnfin\n\tnotFoundIfNull(${1:param});${2}\nsnippet rr\n\tredirect(${1:param});${2}\nsnippet ru\n\tunauthorized(${1:param});${2}\nsnippet unless\n\t(unless=${1:param});${2}\n"; + +}); + +define("ace/snippets/edifact",["require","exports","module","ace/snippets/edifact.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./edifact.snippets"); +exports.scope = "edifact"; + +}); (function() { + window.require(["ace/snippets/edifact"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/eiffel.js b/vendor/assets/javascripts/ace/snippets/eiffel.js index 2ff0e7d0..60a36440 100644 --- a/vendor/assets/javascripts/ace/snippets/eiffel.js +++ b/vendor/assets/javascripts/ace/snippets/eiffel.js @@ -1,7 +1,9 @@ -define("ace/snippets/eiffel",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "eiffel"; - -}); +; (function() { + window.require(["ace/snippets/eiffel"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/ejs.js b/vendor/assets/javascripts/ace/snippets/ejs.js index 41bc823c..3e0f355e 100644 --- a/vendor/assets/javascripts/ace/snippets/ejs.js +++ b/vendor/assets/javascripts/ace/snippets/ejs.js @@ -1,7 +1,9 @@ -define("ace/snippets/ejs",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "ejs"; - -}); +; (function() { + window.require(["ace/snippets/ejs"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/elixir.js b/vendor/assets/javascripts/ace/snippets/elixir.js index a866bf72..f4083379 100644 --- a/vendor/assets/javascripts/ace/snippets/elixir.js +++ b/vendor/assets/javascripts/ace/snippets/elixir.js @@ -1,7 +1,9 @@ -define("ace/snippets/elixir",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = ""; - -}); +; (function() { + window.require(["ace/snippets/elixir"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/elm.js b/vendor/assets/javascripts/ace/snippets/elm.js index f75be859..c1122649 100644 --- a/vendor/assets/javascripts/ace/snippets/elm.js +++ b/vendor/assets/javascripts/ace/snippets/elm.js @@ -1,7 +1,9 @@ -define("ace/snippets/elm",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "elm"; - -}); +; (function() { + window.require(["ace/snippets/elm"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/erlang.js b/vendor/assets/javascripts/ace/snippets/erlang.js index b0d0c950..6557a3b6 100644 --- a/vendor/assets/javascripts/ace/snippets/erlang.js +++ b/vendor/assets/javascripts/ace/snippets/erlang.js @@ -1,167 +1,16 @@ -define("ace/snippets/erlang",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# module and export all\n\ -snippet mod\n\ - -module(${1:`Filename('', 'my')`}).\n\ - \n\ - -compile([export_all]).\n\ - \n\ - start() ->\n\ - ${2}\n\ - \n\ - stop() ->\n\ - ok.\n\ -# define directive\n\ -snippet def\n\ - -define(${1:macro}, ${2:body}).${3}\n\ -# export directive\n\ -snippet exp\n\ - -export([${1:function}/${2:arity}]).\n\ -# include directive\n\ -snippet inc\n\ - -include(\"${1:file}\").${2}\n\ -# behavior directive\n\ -snippet beh\n\ - -behaviour(${1:behaviour}).${2}\n\ -# if expression\n\ -snippet if\n\ - if\n\ - ${1:guard} ->\n\ - ${2:body}\n\ - end\n\ -# case expression\n\ -snippet case\n\ - case ${1:expression} of\n\ - ${2:pattern} ->\n\ - ${3:body};\n\ - end\n\ -# anonymous function\n\ -snippet fun\n\ - fun (${1:Parameters}) -> ${2:body} end${3}\n\ -# try...catch\n\ -snippet try\n\ - try\n\ - ${1}\n\ - catch\n\ - ${2:_:_} -> ${3:got_some_exception}\n\ - end\n\ -# record directive\n\ -snippet rec\n\ - -record(${1:record}, {\n\ - ${2:field}=${3:value}}).${4}\n\ -# todo comment\n\ -snippet todo\n\ - %% TODO: ${1}\n\ -## Snippets below (starting with '%') are in EDoc format.\n\ -## See http://www.erlang.org/doc/apps/edoc/chapter.html#id56887 for more details\n\ -# doc comment\n\ -snippet %d\n\ - %% @doc ${1}\n\ -# end of doc comment\n\ -snippet %e\n\ - %% @end\n\ -# specification comment\n\ -snippet %s\n\ - %% @spec ${1}\n\ -# private function marker\n\ -snippet %p\n\ - %% @private\n\ -# OTP application\n\ -snippet application\n\ - -module(${1:`Filename('', 'my')`}).\n\ -\n\ - -behaviour(application).\n\ -\n\ - -export([start/2, stop/1]).\n\ -\n\ - start(_Type, _StartArgs) ->\n\ - case ${2:root_supervisor}:start_link() of\n\ - {ok, Pid} ->\n\ - {ok, Pid};\n\ - Other ->\n\ - {error, Other}\n\ - end.\n\ -\n\ - stop(_State) ->\n\ - ok. \n\ -# OTP supervisor\n\ -snippet supervisor\n\ - -module(${1:`Filename('', 'my')`}).\n\ -\n\ - -behaviour(supervisor).\n\ -\n\ - %% API\n\ - -export([start_link/0]).\n\ -\n\ - %% Supervisor callbacks\n\ - -export([init/1]).\n\ -\n\ - -define(SERVER, ?MODULE).\n\ -\n\ - start_link() ->\n\ - supervisor:start_link({local, ?SERVER}, ?MODULE, []).\n\ -\n\ - init([]) ->\n\ - Server = {${2:my_server}, {$2, start_link, []},\n\ - permanent, 2000, worker, [$2]},\n\ - Children = [Server],\n\ - RestartStrategy = {one_for_one, 0, 1},\n\ - {ok, {RestartStrategy, Children}}.\n\ -# OTP gen_server\n\ -snippet gen_server\n\ - -module(${1:`Filename('', 'my')`}).\n\ -\n\ - -behaviour(gen_server).\n\ -\n\ - %% API\n\ - -export([\n\ - start_link/0\n\ - ]).\n\ -\n\ - %% gen_server callbacks\n\ - -export([init/1, handle_call/3, handle_cast/2, handle_info/2,\n\ - terminate/2, code_change/3]).\n\ -\n\ - -define(SERVER, ?MODULE).\n\ -\n\ - -record(state, {}).\n\ -\n\ - %%%===================================================================\n\ - %%% API\n\ - %%%===================================================================\n\ -\n\ - start_link() ->\n\ - gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).\n\ -\n\ - %%%===================================================================\n\ - %%% gen_server callbacks\n\ - %%%===================================================================\n\ -\n\ - init([]) ->\n\ - {ok, #state{}}.\n\ -\n\ - handle_call(_Request, _From, State) ->\n\ - Reply = ok,\n\ - {reply, Reply, State}.\n\ -\n\ - handle_cast(_Msg, State) ->\n\ - {noreply, State}.\n\ -\n\ - handle_info(_Info, State) ->\n\ - {noreply, State}.\n\ -\n\ - terminate(_Reason, _State) ->\n\ - ok.\n\ -\n\ - code_change(_OldVsn, State, _Extra) ->\n\ - {ok, State}.\n\ -\n\ - %%%===================================================================\n\ - %%% Internal functions\n\ - %%%===================================================================\n\ -\n\ -"; -exports.scope = "erlang"; +define("ace/snippets/erlang.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# module and export all\nsnippet mod\n\t-module(${1:`Filename('', 'my')`}).\n\t\n\t-compile([export_all]).\n\t\n\tstart() ->\n\t ${2}\n\t\n\tstop() ->\n\t ok.\n# define directive\nsnippet def\n\t-define(${1:macro}, ${2:body}).${3}\n# export directive\nsnippet exp\n\t-export([${1:function}/${2:arity}]).\n# include directive\nsnippet inc\n\t-include(\"${1:file}\").${2}\n# behavior directive\nsnippet beh\n\t-behaviour(${1:behaviour}).${2}\n# if expression\nsnippet if\n\tif\n\t ${1:guard} ->\n\t ${2:body}\n\tend\n# case expression\nsnippet case\n\tcase ${1:expression} of\n\t ${2:pattern} ->\n\t ${3:body};\n\tend\n# anonymous function\nsnippet fun\n\tfun (${1:Parameters}) -> ${2:body} end${3}\n# try...catch\nsnippet try\n\ttry\n\t ${1}\n\tcatch\n\t ${2:_:_} -> ${3:got_some_exception}\n\tend\n# record directive\nsnippet rec\n\t-record(${1:record}, {\n\t ${2:field}=${3:value}}).${4}\n# todo comment\nsnippet todo\n\t%% TODO: ${1}\n## Snippets below (starting with '%') are in EDoc format.\n## See http://www.erlang.org/doc/apps/edoc/chapter.html#id56887 for more details\n# doc comment\nsnippet %d\n\t%% @doc ${1}\n# end of doc comment\nsnippet %e\n\t%% @end\n# specification comment\nsnippet %s\n\t%% @spec ${1}\n# private function marker\nsnippet %p\n\t%% @private\n# OTP application\nsnippet application\n\t-module(${1:`Filename('', 'my')`}).\n\n\t-behaviour(application).\n\n\t-export([start/2, stop/1]).\n\n\tstart(_Type, _StartArgs) ->\n\t case ${2:root_supervisor}:start_link() of\n\t {ok, Pid} ->\n\t {ok, Pid};\n\t Other ->\n\t\t {error, Other}\n\t end.\n\n\tstop(_State) ->\n\t ok.\t\n# OTP supervisor\nsnippet supervisor\n\t-module(${1:`Filename('', 'my')`}).\n\n\t-behaviour(supervisor).\n\n\t%% API\n\t-export([start_link/0]).\n\n\t%% Supervisor callbacks\n\t-export([init/1]).\n\n\t-define(SERVER, ?MODULE).\n\n\tstart_link() ->\n\t supervisor:start_link({local, ?SERVER}, ?MODULE, []).\n\n\tinit([]) ->\n\t Server = {${2:my_server}, {$2, start_link, []},\n\t permanent, 2000, worker, [$2]},\n\t Children = [Server],\n\t RestartStrategy = {one_for_one, 0, 1},\n\t {ok, {RestartStrategy, Children}}.\n# OTP gen_server\nsnippet gen_server\n\t-module(${1:`Filename('', 'my')`}).\n\n\t-behaviour(gen_server).\n\n\t%% API\n\t-export([\n\t start_link/0\n\t ]).\n\n\t%% gen_server callbacks\n\t-export([init/1, handle_call/3, handle_cast/2, handle_info/2,\n\t terminate/2, code_change/3]).\n\n\t-define(SERVER, ?MODULE).\n\n\t-record(state, {}).\n\n\t%%%===================================================================\n\t%%% API\n\t%%%===================================================================\n\n\tstart_link() ->\n\t gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).\n\n\t%%%===================================================================\n\t%%% gen_server callbacks\n\t%%%===================================================================\n\n\tinit([]) ->\n\t {ok, #state{}}.\n\n\thandle_call(_Request, _From, State) ->\n\t Reply = ok,\n\t {reply, Reply, State}.\n\n\thandle_cast(_Msg, State) ->\n\t {noreply, State}.\n\n\thandle_info(_Info, State) ->\n\t {noreply, State}.\n\n\tterminate(_Reason, _State) ->\n\t ok.\n\n\tcode_change(_OldVsn, State, _Extra) ->\n\t {ok, State}.\n\n\t%%%===================================================================\n\t%%% Internal functions\n\t%%%===================================================================\n\n"; }); + +define("ace/snippets/erlang",["require","exports","module","ace/snippets/erlang.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./erlang.snippets"); +exports.scope = "erlang"; + +}); (function() { + window.require(["ace/snippets/erlang"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/flix.js b/vendor/assets/javascripts/ace/snippets/flix.js new file mode 100644 index 00000000..278785cd --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/flix.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/flix"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/forth.js b/vendor/assets/javascripts/ace/snippets/forth.js index f81b5a3f..a7a0c053 100644 --- a/vendor/assets/javascripts/ace/snippets/forth.js +++ b/vendor/assets/javascripts/ace/snippets/forth.js @@ -1,7 +1,9 @@ -define("ace/snippets/forth",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "forth"; - -}); +; (function() { + window.require(["ace/snippets/forth"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/fortran.js b/vendor/assets/javascripts/ace/snippets/fortran.js index 2375c4b0..ec3ae4e6 100644 --- a/vendor/assets/javascripts/ace/snippets/fortran.js +++ b/vendor/assets/javascripts/ace/snippets/fortran.js @@ -1,7 +1,9 @@ -define("ace/snippets/fortran",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "fortran"; - -}); +; (function() { + window.require(["ace/snippets/fortran"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/fsharp.js b/vendor/assets/javascripts/ace/snippets/fsharp.js new file mode 100644 index 00000000..dfe6a139 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/fsharp.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/fsharp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/fsl.js b/vendor/assets/javascripts/ace/snippets/fsl.js new file mode 100644 index 00000000..c6c3ec51 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/fsl.js @@ -0,0 +1,16 @@ +define("ace/snippets/fsl.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet header\n\tmachine_name : \"\";\n\tmachine_author : \"\";\n\tmachine_license : MIT;\n\tmachine_comment : \"\";\n\tmachine_language : en;\n\tmachine_version : 1.0.0;\n\tfsl_version : 1.0.0;\n\tstart_states : [];\n"; + +}); + +define("ace/snippets/fsl",["require","exports","module","ace/snippets/fsl.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./fsl.snippets"); +exports.scope = "fsl"; + +}); (function() { + window.require(["ace/snippets/fsl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/ftl.js b/vendor/assets/javascripts/ace/snippets/ftl.js index 8f8e7c1d..aa9f0e0b 100644 --- a/vendor/assets/javascripts/ace/snippets/ftl.js +++ b/vendor/assets/javascripts/ace/snippets/ftl.js @@ -1,7 +1,9 @@ -define("ace/snippets/ftl",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "ftl"; - -}); +; (function() { + window.require(["ace/snippets/ftl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/gcode.js b/vendor/assets/javascripts/ace/snippets/gcode.js index f00c381f..d85b1b48 100644 --- a/vendor/assets/javascripts/ace/snippets/gcode.js +++ b/vendor/assets/javascripts/ace/snippets/gcode.js @@ -1,7 +1,9 @@ -define("ace/snippets/gcode",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "gcode"; - -}); +; (function() { + window.require(["ace/snippets/gcode"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/gherkin.js b/vendor/assets/javascripts/ace/snippets/gherkin.js index 6b3de21c..11c54661 100644 --- a/vendor/assets/javascripts/ace/snippets/gherkin.js +++ b/vendor/assets/javascripts/ace/snippets/gherkin.js @@ -1,7 +1,9 @@ -define("ace/snippets/gherkin",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "gherkin"; - -}); +; (function() { + window.require(["ace/snippets/gherkin"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/gitignore.js b/vendor/assets/javascripts/ace/snippets/gitignore.js index c9f18286..a6af8361 100644 --- a/vendor/assets/javascripts/ace/snippets/gitignore.js +++ b/vendor/assets/javascripts/ace/snippets/gitignore.js @@ -1,7 +1,9 @@ -define("ace/snippets/gitignore",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "gitignore"; - -}); +; (function() { + window.require(["ace/snippets/gitignore"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/glsl.js b/vendor/assets/javascripts/ace/snippets/glsl.js index fff970ff..bdea4bfa 100644 --- a/vendor/assets/javascripts/ace/snippets/glsl.js +++ b/vendor/assets/javascripts/ace/snippets/glsl.js @@ -1,7 +1,9 @@ -define("ace/snippets/glsl",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "glsl"; - -}); +; (function() { + window.require(["ace/snippets/glsl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/gobstones.js b/vendor/assets/javascripts/ace/snippets/gobstones.js index c7febaf5..b6b89bc8 100644 --- a/vendor/assets/javascripts/ace/snippets/gobstones.js +++ b/vendor/assets/javascripts/ace/snippets/gobstones.js @@ -1,41 +1,16 @@ -define("ace/snippets/gobstones",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Procedure\n\ -snippet proc\n\ - procedure ${1?:name}(${2:argument}) {\n\ - ${3:// body...}\n\ - }\n\ -\n\ -# Function\n\ -snippet fun\n\ - function ${1?:name}(${2:argument}) {\n\ - return ${3:// body...}\n\ - }\n\ -\n\ -# Repeat\n\ -snippet rep\n\ - repeat ${1?:times} {\n\ - ${2:// body...}\n\ - }\n\ -\n\ -# For\n\ -snippet for\n\ - foreach ${1?:e} in ${2?:list} {\n\ - ${3:// body...} \n\ - }\n\ -\n\ -# If\n\ -snippet if\n\ - if (${1?:condition}) {\n\ - ${3:// body...} \n\ - }\n\ -\n\ -# While\n\ - while (${1?:condition}) {\n\ - ${2:// body...} \n\ - }\n\ -"; -exports.scope = "gobstones"; +define("ace/snippets/gobstones.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# scope: gobstones\n\n# program\nsnippet program\n\tprogram {\n\t\t${1:// cuerpo...}\n\t}\n\n# interactive program\nsnippet interactive program\n\tinteractive program {\n\t\t${1:INIT} -> { ${2:// cuerpo...} }\n\t\t${3:TIMEOUT(${4:5000}) -> { ${5:// cuerpo...} }\n\t\t${6:K_ENTER} -> { ${7:// cuerpo...} }\n\t\t_ -> {}\n\t}\n\n# procedure\nsnippet procedure\n\tprocedure ${1:Nombre}(${2:parametros}) {\n\t\t${3:// cuerpo...}\n\t}\n\n# function\nsnippet function\n\tfunction ${1:nombre}(${2:parametros}) {\n\t\treturn (${3:expresi\u00F3n..})\n\t}\n\n# return\nsnippet return\n\treturn (${1:expresi\u00F3n...})\n\n# type\nsnippet type\n\ttype ${1:Nombre}\n\n# is variant\nsnippet is variant\n\tis variant {\n\t\tcase ${1:NombreDelValor1} {}\n\t\tcase ${2:NombreDelValor2} {}\n\t\tcase ${3:NombreDelValor3} {}\n\t\tcase ${4:NombreDelValor4} {}\n\t}\n\n# is record\nsnippet is record\n\tis record {\n\t\tfield ${1:campo1} // ${2:Tipo}\n\t\tfield ${3:campo2} // ${4:Tipo}\n\t\tfield ${5:campo3} // ${6:Tipo}\n\t\tfield ${7:campo4} // ${8:Tipo}\n\t}\n\n# type _ is variant\nsnippet type _ is variant\n\ttype ${1:Nombre} is variant {\n\t\tcase ${2:NombreDelValor1} {}\n\t\tcase ${3:NombreDelValor2} {}\n\t\tcase ${4:NombreDelValor3} {}\n\t\tcase ${5:NombreDelValor4} {}\n\t}\n\n# type _ is record\nsnippet type _ is record\n\ttype ${1:Nombre} is record {\n\t\tfield ${2:campo1} // ${3:Tipo}\n\t\tfield ${4:campo2} // ${5:Tipo}\n\t\tfield ${6:campo3} // ${7:Tipo}\n\t\tfield ${8:campo4} // ${9:Tipo}\n\t}\n\n# repeat\nsnippet repeat\n\trepeat ${1:cantidad} {\n\t\t${2:// cuerpo...}\n\t}\n\n# foreach\nsnippet foreach\n\tforeach ${1:\u00EDndice} in ${2:lista} {\n\t\t${3:// cuerpo...}\n\t}\n\n# while\nsnippet while\n\twhile (${1?:condici\u00F3n}) {\n\t\t${2:// cuerpo...}\n\t}\n\n# if\nsnippet if\n\tif (${1?:condici\u00F3n}) {\n\t\t${2:// cuerpo...}\n\t}\n\n# elseif\nsnippet elseif\n\telseif (${1?:condici\u00F3n}) {\n\t\t${2:// cuerpo...}\n\t}\n\n# else\nsnippet else\n\telse {\n\t\t${1:// cuerpo...}\n\t}\n\n# if (con else)\nsnippet if (con else)\n\tif (${1:condici\u00F3n}) {\n\t\t${2:// cuerpo...}\n\t} else {\n\t\t${3:// cuerpo....}\n\t}\n\n# if (con elseif)\nsnippet if (con elseif)\n\tif (${1:condici\u00F3n}) {\n\t\t${2:// cuerpo...}\n\t} elseif (${3:condici\u00F3n}) {\n\t\t${4:// cuerpo...}\n\t}\n\n# if (con elseif y else)\nsnippet if (con elseif y else)\n\tif (${1:condici\u00F3n}) {\n\t\t${2:// cuerpo...}\n\t} elseif (${3:condici\u00F3n}) {\n\t\t${4:// cuerpo...}\n\t} else {\n\t\t${5:// cuerpo....}\n\t}\n\n# if (con 3 elseif)\nsnippet if (con 3 elseif)\n\tif (${1:condici\u00F3n}) {\n\t\t${2:// cuerpo...}\n\t} elseif (${3:condici\u00F3n}) {\n\t\t${4:// cuerpo...}\n\t} elseif (${5:condici\u00F3n}) {\n\t\t${6:// cuerpo...}\n\t} elseif (${7:condici\u00F3n}) {\n\t\t${8:// cuerpo...}\n\t}\n\n# choose (2 valores)\nsnippet choose (2 valores)\n\tchoose\n\t\t${1:Valor1} when (${2:condici\u00F3n})\n\t\t${3:Valor2} otherwise\n\n# choose (2 valores y boom)\nsnippet choose (2 valores y boom)\n\tchoose\n\t\t${1:Valor1} when (${2:condici\u00F3n})\n\t\t${3:Valor2} when (${4:condici\u00F3n})\n\t\t${5:Valor3} when (${6:condici\u00F3n})\n\t\t${7:Valor4} when (${8:condici\u00F3n})\n\t\tboom(\"${9:No es un valor v\u00E1lido}\") otherwise\n\n# matching (4 valores)\nsnippet matching (4 valores)\n\tmatching (${1:variable}) select\n\t\t${2:Valor1} on ${3:opci\u00F3n1}\n\t\t${4:Valor2} on ${5:opci\u00F3n2}\n\t\t${6:Valor3} on ${7:opci\u00F3n3}\n\t\t${8:Valor4} on ${9:opci\u00F3n4}\n\t\tboom(\"${10:No es un valor v\u00E1lido}\") otherwise\n\n# select (4 casos)\nsnippet select (4 casos)\n\tselect\n\t\t${1:Valor1} on (${2:opci\u00F3n1})\n\t\t${3:Valor2} on (${4:opci\u00F3n2})\n\t\t${5:Valor3} on (${6:opci\u00F3n3})\n\t\t${7:Valor4} on (${8:opci\u00F3n4})\n\t\tboom(\"${9:No es un valor v\u00E1lido}\") otherwise\n\n# switch\nsnippet switch\n\tswitch (${1:variable}) {\n\t\t${2:Valor1} -> {${3:// cuerpo...}}\n\t\t${4:Valor2} -> {${5:// cuerpo...}}\n\t\t${6:Valor3} -> {${7:// cuerpo...}}\n\t\t${8:Valor4} -> {${9:// cuerpo...}}\n\t\t_ -> {${10:// cuerpo...}}\n\t}\n\n# Poner\nsnippet Poner\n\tPoner(${1:color})\n\n# Sacar\nsnippet Sacar\n\tSacar(${1:color})\n\n# Mover\nsnippet Mover\n\tMover(${1:direcci\u00F3n})\n\n# IrAlBorde\nsnippet IrAlBorde\n\tIrAlBorde(${1:direcci\u00F3n})\n\n# VaciarTablero\nsnippet VaciarTablero\n\tVaciarTablero()\n\n# BOOM\nsnippet BOOM\n\tBOOM(\"${1:Mensaje de error}\")\n\n# hayBolitas\nsnippet hayBolitas\n\thayBolitas(${1:color})\n\n# nroBolitas\nsnippet nroBolitas\n\tnroBolitas(${1:color})\n\n# puedeMover\nsnippet puedeMover\n\tpuedeMover(${1:direcci\u00F3n})\n\n# siguiente\nsnippet siguiente\n\tsiguiente(${1:color|direcci\u00F3n})\n\n# previo\nsnippet previo\n\tprevio(${1:color|direcci\u00F3n})\n\n# opuesto\nsnippet opuesto\n\topuesto(${1:direcci\u00F3n})\n\n# minDir\nsnippet minDir\n\tminDir()\n\n# maxDir\nsnippet maxDir\n\tmaxDir()\n\n# minColor\nsnippet minColor\n\tminDir()\n\n# maxColor\nsnippet maxColor\n\tmaxDir()\n\n# minBool\nsnippet minBool\n\tminBool()\n\n# maxBool\nsnippet maxBool\n\tmaxBool()\n\n# primero\nsnippet primero\n\tprimero(${1:lista})\n\n# sinElPrimero\nsnippet sinElPrimero\n\tsinElPrimero(${1:lista})\n\n# esVac\u00EDa\nsnippet esVac\u00EDa\n\tesVac\u00EDa(${1:lista})\n\n# boom\nsnippet boom\n\tboom(\"${1:Mensaje de error}\")\n\n# Azul\nsnippet Azul\n\tAzul\n\n# Negro\nsnippet Negro\n\tNegro\n\n# Rojo\nsnippet Rojo\n\tRojo\n\n# Verde\nsnippet Verde\n\tVerde\n\n# Norte\nsnippet Norte\n\tNorte\n\n# Este\nsnippet Este\n\tEste\n\n# Sur\nsnippet Sur\n\tSur\n\n# Oeste\nsnippet Oeste\n\tOeste\n\n# True\nsnippet True\n\tTrue\n\n# False\nsnippet False\n\tFalse\n\n# INIT\nsnippet INIT\n\tINIT -> {$1:// cuerpo...}\n\n# TIMEOUT\nsnippet TIMEOUT\n\tTIMEOUT(${1:5000}) -> {$2:// cuerpo...}\n\n# K_A\nsnippet K_A\n\tK_A -> { ${1://cuerpo...} }\n# K_CTRL_A\nsnippet K_CTRL_A\n\tK_CTRL_A -> { ${1://cuerpo...} }\n# K_ALT_A\nsnippet K_ALT_A\n\tK_ALT_A -> { ${1://cuerpo...} }\n# K_SHIFT_A\nsnippet K_SHIFT_A\n\tK_SHIFT_A -> { ${1://cuerpo...} }\n# K_CTRL_ALT_A\nsnippet K_CTRL_ALT_A\n\tK_CTRL_ALT_A -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_A\nsnippet K_CTRL_SHIFT_A\n\tK_CTRL_SHIFT_A -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_A\nsnippet K_CTRL_ALT_SHIFT_A\n\tK_CTRL_ALT_SHIFT_A -> { ${1://cuerpo...} }\n\n# K_B\nsnippet K_B\n\tK_B -> { ${1://cuerpo...} }\n# K_CTRL_B\nsnippet K_CTRL_B\n\tK_CTRL_B -> { ${1://cuerpo...} }\n# K_ALT_B\nsnippet K_ALT_B\n\tK_ALT_B -> { ${1://cuerpo...} }\n# K_SHIFT_B\nsnippet K_SHIFT_B\n\tK_SHIFT_B -> { ${1://cuerpo...} }\n# K_CTRL_ALT_B\nsnippet K_CTRL_ALT_B\n\tK_CTRL_ALT_B -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_B\nsnippet K_CTRL_SHIFT_B\n\tK_CTRL_SHIFT_B -> { ${1://cuerpo...} }\n# K_ALT_SHIFT_C\nsnippet K_ALT_SHIFT_C\n\tK_ALT_SHIFT_C -> { ${1://cuerpo...} }\n# K_CTRL_BLT_SHIFT_B\nsnippet K_CTRL_BLT_SHIFT_B\n\tK_CTRL_ALT_SHIFT_B -> { ${1://cuerpo...} }\n\n# K_C\nsnippet K_C\n\tK_C -> { ${1://cuerpo...} }\n# K_CTRL_C\nsnippet K_CTRL_C\n\tK_CTRL_C -> { ${1://cuerpo...} }\n# K_ALT_C\nsnippet K_ALT_C\n\tK_ALT_C -> { ${1://cuerpo...} }\n# K_SHIFT_C\nsnippet K_SHIFT_C\n\tK_SHIFT_C -> { ${1://cuerpo...} }\n# K_CTRL_ALT_C\nsnippet K_CTRL_ALT_C\n\tK_CTRL_ALT_C -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_C\nsnippet K_CTRL_SHIFT_C\n\tK_CTRL_SHIFT_C -> { ${1://cuerpo...} }\n# K_ALT_SHIFT_C\nsnippet K_ALT_SHIFT_C\n\tK_ALT_SHIFT_C -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_C\nsnippet K_CTRL_ALT_SHIFT_C\n\tK_CTRL_ALT_SHIFT_C -> { ${1://cuerpo...} }\n\n# K_D\nsnippet K_D\n\tK_D -> { ${1://cuerpo...} }\n# K_CTRL_D\nsnippet K_CTRL_D\n\tK_CTRL_D -> { ${1://cuerpo...} }\n# K_ALT_D\nsnippet K_ALT_D\n\tK_DLT_D -> { ${1://cuerpo...} }\n# K_SHIFT_D\nsnippet K_SHIFT_D\n\tK_SHIFT_D -> { ${1://cuerpo...} }\n# K_CTRL_ALT_D\nsnippet K_CTRL_ALT_D\n\tK_CTRL_DLT_D -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_D\nsnippet K_CTRL_SHIFT_D\n\tK_CTRL_SHIFT_D -> { ${1://cuerpo...} }\n# K_ALT_SHIFT_D\nsnippet K_ALT_SHIFT_D\n\tK_ALT_SHIFT_D -> { ${1://cuerpo...} }\n# K_CTRL_DLT_SHIFT_D\nsnippet K_CTRL_DLT_SHIFT_D\n\tK_CTRL_ALT_SHIFT_D -> { ${1://cuerpo...} }\n\n# K_E\nsnippet K_E\n\tK_E -> { ${1://cuerpo...} }\n# K_CTRL_E\nsnippet K_CTRL_E\n\tK_CTRL_E -> { ${1://cuerpo...} }\n# K_ALT_E\nsnippet K_ALT_E\n\tK_ALT_E -> { ${1://cuerpo...} }\n# K_SHIFT_E\nsnippet K_SHIFT_E\n\tK_SHIFT_E -> { ${1://cuerpo...} }\n# K_CTRL_ALT_E\nsnippet K_CTRL_ALT_E\n\tK_CTRL_ALT_E -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_E\nsnippet K_CTRL_SHIFT_E\n\tK_CTRL_SHIFT_E -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_E\nsnippet K_CTRL_ALT_SHIFT_E\n\tK_CTRL_ALT_SHIFT_E -> { ${1://cuerpo...} }\n\n# K_F\nsnippet K_F\n\tK_F -> { ${1://cuerpo...} }\n# K_CTRL_F\nsnippet K_CTRL_F\n\tK_CTRL_F -> { ${1://cuerpo...} }\n# K_ALT_F\nsnippet K_ALT_F\n\tK_ALT_F -> { ${1://cuerpo...} }\n# K_SHIFT_F\nsnippet K_SHIFT_F\n\tK_SHIFT_F -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F\nsnippet K_CTRL_ALT_F\n\tK_CTRL_ALT_F -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F\nsnippet K_CTRL_SHIFT_F\n\tK_CTRL_SHIFT_F -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F\nsnippet K_CTRL_ALT_SHIFT_F\n\tK_CTRL_ALT_SHIFT_F -> { ${1://cuerpo...} }\n\n# K_G\nsnippet K_G\n\tK_G -> { ${1://cuerpo...} }\n# K_CTRL_G\nsnippet K_CTRL_G\n\tK_CTRL_G -> { ${1://cuerpo...} }\n# K_ALT_G\nsnippet K_ALT_G\n\tK_ALT_G -> { ${1://cuerpo...} }\n# K_SHIFT_G\nsnippet K_SHIFT_G\n\tK_SHIFT_G -> { ${1://cuerpo...} }\n# K_CTRL_ALT_G\nsnippet K_CTRL_ALT_G\n\tK_CTRL_ALT_G -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_G\nsnippet K_CTRL_SHIFT_G\n\tK_CTRL_SHIFT_G -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_G\nsnippet K_CTRL_ALT_SHIFT_G\n\tK_CTRL_ALT_SHIFT_G -> { ${1://cuerpo...} }\n\n# K_H\nsnippet K_H\n\tK_H -> { ${1://cuerpo...} }\n# K_CTRL_H\nsnippet K_CTRL_H\n\tK_CTRL_H -> { ${1://cuerpo...} }\n# K_ALT_H\nsnippet K_ALT_H\n\tK_ALT_H -> { ${1://cuerpo...} }\n# K_SHIFT_H\nsnippet K_SHIFT_H\n\tK_SHIFT_H -> { ${1://cuerpo...} }\n# K_CTRL_ALT_H\nsnippet K_CTRL_ALT_H\n\tK_CTRL_ALT_H -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_H\nsnippet K_CTRL_SHIFT_H\n\tK_CTRL_SHIFT_H -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_H\nsnippet K_CTRL_ALT_SHIFT_H\n\tK_CTRL_ALT_SHIFT_H -> { ${1://cuerpo...} }\n\n# K_I\nsnippet K_I\n\tK_I -> { ${1://cuerpo...} }\n# K_CTRL_I\nsnippet K_CTRL_I\n\tK_CTRL_I -> { ${1://cuerpo...} }\n# K_ALT_I\nsnippet K_ALT_I\n\tK_ALT_I -> { ${1://cuerpo...} }\n# K_SHIFT_I\nsnippet K_SHIFT_I\n\tK_SHIFT_I -> { ${1://cuerpo...} }\n# K_CTRL_ALT_I\nsnippet K_CTRL_ALT_I\n\tK_CTRL_ALT_I -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_I\nsnippet K_CTRL_SHIFT_I\n\tK_CTRL_SHIFT_I -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_I\nsnippet K_CTRL_ALT_SHIFT_I\n\tK_CTRL_ALT_SHIFT_I -> { ${1://cuerpo...} }\n\n# K_J\nsnippet K_J\n\tK_J -> { ${1://cuerpo...} }\n# K_CTRL_J\nsnippet K_CTRL_J\n\tK_CTRL_J -> { ${1://cuerpo...} }\n# K_ALT_J\nsnippet K_ALT_J\n\tK_ALT_J -> { ${1://cuerpo...} }\n# K_SHIFT_J\nsnippet K_SHIFT_J\n\tK_SHIFT_J -> { ${1://cuerpo...} }\n# K_CTRL_ALT_J\nsnippet K_CTRL_ALT_J\n\tK_CTRL_ALT_J -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_J\nsnippet K_CTRL_SHIFT_J\n\tK_CTRL_SHIFT_J -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_J\nsnippet K_CTRL_ALT_SHIFT_J\n\tK_CTRL_ALT_SHIFT_J -> { ${1://cuerpo...} }\n\n# K_K\nsnippet K_K\n\tK_K -> { ${1://cuerpo...} }\n# K_CTRL_K\nsnippet K_CTRL_K\n\tK_CTRL_K -> { ${1://cuerpo...} }\n# K_ALT_K\nsnippet K_ALT_K\n\tK_ALT_K -> { ${1://cuerpo...} }\n# K_SHIFT_K\nsnippet K_SHIFT_K\n\tK_SHIFT_K -> { ${1://cuerpo...} }\n# K_CTRL_ALT_K\nsnippet K_CTRL_ALT_K\n\tK_CTRL_ALT_K -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_K\nsnippet K_CTRL_SHIFT_K\n\tK_CTRL_SHIFT_K -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_K\nsnippet K_CTRL_ALT_SHIFT_K\n\tK_CTRL_ALT_SHIFT_K -> { ${1://cuerpo...} }\n\n# K_L\nsnippet K_L\n\tK_L -> { ${1://cuerpo...} }\n# K_CTRL_L\nsnippet K_CTRL_L\n\tK_CTRL_L -> { ${1://cuerpo...} }\n# K_ALT_L\nsnippet K_ALT_L\n\tK_ALT_L -> { ${1://cuerpo...} }\n# K_SHIFT_L\nsnippet K_SHIFT_L\n\tK_SHIFT_L -> { ${1://cuerpo...} }\n# K_CTRL_ALT_L\nsnippet K_CTRL_ALT_L\n\tK_CTRL_ALT_L -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_L\nsnippet K_CTRL_SHIFT_L\n\tK_CTRL_SHIFT_L -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_L\nsnippet K_CTRL_ALT_SHIFT_L\n\tK_CTRL_ALT_SHIFT_L -> { ${1://cuerpo...} }\n\n# K_M\nsnippet K_M\n\tK_M -> { ${1://cuerpo...} }\n# K_CTRL_M\nsnippet K_CTRL_M\n\tK_CTRL_M -> { ${1://cuerpo...} }\n# K_ALT_M\nsnippet K_ALT_M\n\tK_ALT_M -> { ${1://cuerpo...} }\n# K_SHIFT_M\nsnippet K_SHIFT_M\n\tK_SHIFT_M -> { ${1://cuerpo...} }\n# K_CTRL_ALT_M\nsnippet K_CTRL_ALT_M\n\tK_CTRL_ALT_M -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_M\nsnippet K_CTRL_SHIFT_M\n\tK_CTRL_SHIFT_M -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_M\nsnippet K_CTRL_ALT_SHIFT_M\n\tK_CTRL_ALT_SHIFT_M -> { ${1://cuerpo...} }\n\n# K_N\nsnippet K_N\n\tK_N -> { ${1://cuerpo...} }\n# K_CTRL_N\nsnippet K_CTRL_N\n\tK_CTRL_N -> { ${1://cuerpo...} }\n# K_ALT_N\nsnippet K_ALT_N\n\tK_ALT_N -> { ${1://cuerpo...} }\n# K_SHIFT_N\nsnippet K_SHIFT_N\n\tK_SHIFT_N -> { ${1://cuerpo...} }\n# K_CTRL_ALT_N\nsnippet K_CTRL_ALT_N\n\tK_CTRL_ALT_N -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_N\nsnippet K_CTRL_SHIFT_N\n\tK_CTRL_SHIFT_N -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_N\nsnippet K_CTRL_ALT_SHIFT_N\n\tK_CTRL_ALT_SHIFT_N -> { ${1://cuerpo...} }\n\n# K_\u00D1\nsnippet K_\u00D1\n\tK_\u00D1 -> { ${1://cuerpo...} }\n# K_CTRL_\u00D1\nsnippet K_CTRL_\u00D1\n\tK_CTRL_\u00D1 -> { ${1://cuerpo...} }\n# K_ALT_\u00D1\nsnippet K_ALT_\u00D1\n\tK_ALT_\u00D1 -> { ${1://cuerpo...} }\n# K_SHIFT_\u00D1\nsnippet K_SHIFT_\u00D1\n\tK_SHIFT_\u00D1 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_\u00D1\nsnippet K_CTRL_ALT_\u00D1\n\tK_CTRL_ALT_\u00D1 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_\u00D1\nsnippet K_CTRL_SHIFT_\u00D1\n\tK_CTRL_SHIFT_\u00D1 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_\u00D1\nsnippet K_CTRL_ALT_SHIFT_\u00D1\n\tK_CTRL_ALT_SHIFT_\u00D1 -> { ${1://cuerpo...} }\n\n# K_O\nsnippet K_O\n\tK_O -> { ${1://cuerpo...} }\n# K_CTRL_O\nsnippet K_CTRL_O\n\tK_CTRL_O -> { ${1://cuerpo...} }\n# K_ALT_O\nsnippet K_ALT_O\n\tK_ALT_O -> { ${1://cuerpo...} }\n# K_SHIFT_O\nsnippet K_SHIFT_O\n\tK_SHIFT_O -> { ${1://cuerpo...} }\n# K_CTRL_ALT_O\nsnippet K_CTRL_ALT_O\n\tK_CTRL_ALT_O -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_O\nsnippet K_CTRL_SHIFT_O\n\tK_CTRL_SHIFT_O -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_O\nsnippet K_CTRL_ALT_SHIFT_O\n\tK_CTRL_ALT_SHIFT_O -> { ${1://cuerpo...} }\n\n# K_P\nsnippet K_P\n\tK_P -> { ${1://cuerpo...} }\n# K_CTRL_P\nsnippet K_CTRL_P\n\tK_CTRL_P -> { ${1://cuerpo...} }\n# K_ALT_P\nsnippet K_ALT_P\n\tK_ALT_P -> { ${1://cuerpo...} }\n# K_SHIFT_P\nsnippet K_SHIFT_P\n\tK_SHIFT_P -> { ${1://cuerpo...} }\n# K_CTRL_ALT_P\nsnippet K_CTRL_ALT_P\n\tK_CTRL_ALT_P -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_P\nsnippet K_CTRL_SHIFT_P\n\tK_CTRL_SHIFT_P -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_P\nsnippet K_CTRL_ALT_SHIFT_P\n\tK_CTRL_ALT_SHIFT_P -> { ${1://cuerpo...} }\n\n# K_Q\nsnippet K_Q\n\tK_Q -> { ${1://cuerpo...} }\n# K_CTRL_Q\nsnippet K_CTRL_Q\n\tK_CTRL_Q -> { ${1://cuerpo...} }\n# K_ALT_Q\nsnippet K_ALT_Q\n\tK_ALT_Q -> { ${1://cuerpo...} }\n# K_SHIFT_Q\nsnippet K_SHIFT_Q\n\tK_SHIFT_Q -> { ${1://cuerpo...} }\n# K_CTRL_ALT_Q\nsnippet K_CTRL_ALT_Q\n\tK_CTRL_ALT_Q -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_Q\nsnippet K_CTRL_SHIFT_Q\n\tK_CTRL_SHIFT_Q -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_Q\nsnippet K_CTRL_ALT_SHIFT_Q\n\tK_CTRL_ALT_SHIFT_Q -> { ${1://cuerpo...} }\n\n# K_R\nsnippet K_R\n\tK_R -> { ${1://cuerpo...} }\n# K_CTRL_R\nsnippet K_CTRL_R\n\tK_CTRL_R -> { ${1://cuerpo...} }\n# K_ALT_R\nsnippet K_ALT_R\n\tK_ALT_R -> { ${1://cuerpo...} }\n# K_SHIFT_R\nsnippet K_SHIFT_R\n\tK_SHIFT_R -> { ${1://cuerpo...} }\n# K_CTRL_ALT_R\nsnippet K_CTRL_ALT_R\n\tK_CTRL_ALT_R -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_R\nsnippet K_CTRL_SHIFT_R\n\tK_CTRL_SHIFT_R -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_R\nsnippet K_CTRL_ALT_SHIFT_R\n\tK_CTRL_ALT_SHIFT_R -> { ${1://cuerpo...} }\n\n# K_S\nsnippet K_S\n\tK_S -> { ${1://cuerpo...} }\n# K_CTRL_S\nsnippet K_CTRL_S\n\tK_CTRL_S -> { ${1://cuerpo...} }\n# K_ALT_S\nsnippet K_ALT_S\n\tK_ALT_S -> { ${1://cuerpo...} }\n# K_SHIFT_S\nsnippet K_SHIFT_S\n\tK_SHIFT_S -> { ${1://cuerpo...} }\n# K_CTRL_ALT_S\nsnippet K_CTRL_ALT_S\n\tK_CTRL_ALT_S -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_S\nsnippet K_CTRL_SHIFT_S\n\tK_CTRL_SHIFT_S -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_S\nsnippet K_CTRL_ALT_SHIFT_S\n\tK_CTRL_ALT_SHIFT_S -> { ${1://cuerpo...} }\n\n# K_T\nsnippet K_T\n\tK_T -> { ${1://cuerpo...} }\n# K_CTRL_T\nsnippet K_CTRL_T\n\tK_CTRL_T -> { ${1://cuerpo...} }\n# K_ALT_T\nsnippet K_ALT_T\n\tK_ALT_T -> { ${1://cuerpo...} }\n# K_SHIFT_T\nsnippet K_SHIFT_T\n\tK_SHIFT_T -> { ${1://cuerpo...} }\n# K_CTRL_ALT_T\nsnippet K_CTRL_ALT_T\n\tK_CTRL_ALT_T -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_T\nsnippet K_CTRL_SHIFT_T\n\tK_CTRL_SHIFT_T -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_T\nsnippet K_CTRL_ALT_SHIFT_T\n\tK_CTRL_ALT_SHIFT_T -> { ${1://cuerpo...} }\n\n# K_U\nsnippet K_U\n\tK_U -> { ${1://cuerpo...} }\n# K_CTRL_U\nsnippet K_CTRL_U\n\tK_CTRL_U -> { ${1://cuerpo...} }\n# K_ALT_U\nsnippet K_ALT_U\n\tK_ALT_U -> { ${1://cuerpo...} }\n# K_SHIFT_U\nsnippet K_SHIFT_U\n\tK_SHIFT_U -> { ${1://cuerpo...} }\n# K_CTRL_ALT_U\nsnippet K_CTRL_ALT_U\n\tK_CTRL_ALT_U -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_U\nsnippet K_CTRL_SHIFT_U\n\tK_CTRL_SHIFT_U -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_U\nsnippet K_CTRL_ALT_SHIFT_U\n\tK_CTRL_ALT_SHIFT_U -> { ${1://cuerpo...} }\n\n# K_V\nsnippet K_V\n\tK_V -> { ${1://cuerpo...} }\n# K_CTRL_V\nsnippet K_CTRL_V\n\tK_CTRL_V -> { ${1://cuerpo...} }\n# K_ALT_V\nsnippet K_ALT_V\n\tK_ALT_V -> { ${1://cuerpo...} }\n# K_SHIFT_V\nsnippet K_SHIFT_V\n\tK_SHIFT_V -> { ${1://cuerpo...} }\n# K_CTRL_ALT_V\nsnippet K_CTRL_ALT_V\n\tK_CTRL_ALT_V -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_V\nsnippet K_CTRL_SHIFT_V\n\tK_CTRL_SHIFT_V -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_V\nsnippet K_CTRL_ALT_SHIFT_V\n\tK_CTRL_ALT_SHIFT_V -> { ${1://cuerpo...} }\n\n# K_W\nsnippet K_W\n\tK_W -> { ${1://cuerpo...} }\n# K_CTRL_W\nsnippet K_CTRL_W\n\tK_CTRL_W -> { ${1://cuerpo...} }\n# K_ALT_W\nsnippet K_ALT_W\n\tK_ALT_W -> { ${1://cuerpo...} }\n# K_SHIFT_W\nsnippet K_SHIFT_W\n\tK_SHIFT_W -> { ${1://cuerpo...} }\n# K_CTRL_ALT_W\nsnippet K_CTRL_ALT_W\n\tK_CTRL_ALT_W -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_W\nsnippet K_CTRL_SHIFT_W\n\tK_CTRL_SHIFT_W -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_W\nsnippet K_CTRL_ALT_SHIFT_W\n\tK_CTRL_ALT_SHIFT_W -> { ${1://cuerpo...} }\n\n# K_X\nsnippet K_X\n\tK_X -> { ${1://cuerpo...} }\n# K_CTRL_X\nsnippet K_CTRL_X\n\tK_CTRL_X -> { ${1://cuerpo...} }\n# K_ALT_X\nsnippet K_ALT_X\n\tK_ALT_X -> { ${1://cuerpo...} }\n# K_SHIFT_X\nsnippet K_SHIFT_X\n\tK_SHIFT_X -> { ${1://cuerpo...} }\n# K_CTRL_ALT_X\nsnippet K_CTRL_ALT_X\n\tK_CTRL_ALT_X -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_X\nsnippet K_CTRL_SHIFT_X\n\tK_CTRL_SHIFT_X -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_X\nsnippet K_CTRL_ALT_SHIFT_X\n\tK_CTRL_ALT_SHIFT_X -> { ${1://cuerpo...} }\n\n# K_Y\nsnippet K_Y\n\tK_Y -> { ${1://cuerpo...} }\n# K_CTRL_Y\nsnippet K_CTRL_Y\n\tK_CTRL_Y -> { ${1://cuerpo...} }\n# K_ALT_Y\nsnippet K_ALT_Y\n\tK_ALT_Y -> { ${1://cuerpo...} }\n# K_SHIFT_Y\nsnippet K_SHIFT_Y\n\tK_SHIFT_Y -> { ${1://cuerpo...} }\n# K_CTRL_ALT_Y\nsnippet K_CTRL_ALT_Y\n\tK_CTRL_ALT_Y -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_Y\nsnippet K_CTRL_SHIFT_Y\n\tK_CTRL_SHIFT_Y -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_Y\nsnippet K_CTRL_ALT_SHIFT_Y\n\tK_CTRL_ALT_SHIFT_Y -> { ${1://cuerpo...} }\n\n# K_Z\nsnippet K_Z\n\tK_Z -> { ${1://cuerpo...} }\n# K_CTRL_Z\nsnippet K_CTRL_Z\n\tK_CTRL_Z -> { ${1://cuerpo...} }\n# K_ALT_Z\nsnippet K_ALT_Z\n\tK_ALT_Z -> { ${1://cuerpo...} }\n# K_SHIFT_Z\nsnippet K_SHIFT_Z\n\tK_SHIFT_Z -> { ${1://cuerpo...} }\n# K_CTRL_ALT_Z\nsnippet K_CTRL_ALT_Z\n\tK_CTRL_ALT_Z -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_Z\nsnippet K_CTRL_SHIFT_Z\n\tK_CTRL_SHIFT_Z -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_Z\nsnippet K_CTRL_ALT_SHIFT_Z\n\tK_CTRL_ALT_SHIFT_Z -> { ${1://cuerpo...} }\n\n# K_0\nsnippet K_0\n\tK_0 -> { ${1://cuerpo...} }\n# K_CTRL_0\nsnippet K_CTRL_0\n\tK_CTRL_0 -> { ${1://cuerpo...} }\n# K_ALT_0\nsnippet K_ALT_0\n\tK_ALT_0 -> { ${1://cuerpo...} }\n# K_SHIFT_0\nsnippet K_SHIFT_0\n\tK_SHIFT_0 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_0\nsnippet K_CTRL_ALT_0\n\tK_CTRL_ALT_0 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_0\nsnippet K_CTRL_SHIFT_0\n\tK_CTRL_SHIFT_0 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_0\nsnippet K_CTRL_ALT_SHIFT_0\n\tK_CTRL_ALT_SHIFT_0 -> { ${1://cuerpo...} }\n\n# K_1\nsnippet K_1\n\tK_1 -> { ${1://cuerpo...} }\n# K_CTRL_1\nsnippet K_CTRL_1\n\tK_CTRL_1 -> { ${1://cuerpo...} }\n# K_ALT_1\nsnippet K_ALT_1\n\tK_ALT_1 -> { ${1://cuerpo...} }\n# K_SHIFT_1\nsnippet K_SHIFT_1\n\tK_SHIFT_1 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_1\nsnippet K_CTRL_ALT_1\n\tK_CTRL_ALT_1 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_1\nsnippet K_CTRL_SHIFT_1\n\tK_CTRL_SHIFT_1 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_1\nsnippet K_CTRL_ALT_SHIFT_1\n\tK_CTRL_ALT_SHIFT_1 -> { ${1://cuerpo...} }\n\n# K_2\nsnippet K_2\n\tK_2 -> { ${1://cuerpo...} }\n# K_CTRL_2\nsnippet K_CTRL_2\n\tK_CTRL_2 -> { ${1://cuerpo...} }\n# K_ALT_2\nsnippet K_ALT_2\n\tK_ALT_2 -> { ${1://cuerpo...} }\n# K_SHIFT_2\nsnippet K_SHIFT_2\n\tK_SHIFT_2 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_2\nsnippet K_CTRL_ALT_2\n\tK_CTRL_ALT_2 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_2\nsnippet K_CTRL_SHIFT_2\n\tK_CTRL_SHIFT_2 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_2\nsnippet K_CTRL_ALT_SHIFT_2\n\tK_CTRL_ALT_SHIFT_2 -> { ${1://cuerpo...} }\n\n# K_3\nsnippet K_3\n\tK_3 -> { ${1://cuerpo...} }\n# K_CTRL_3\nsnippet K_CTRL_3\n\tK_CTRL_3 -> { ${1://cuerpo...} }\n# K_ALT_3\nsnippet K_ALT_3\n\tK_ALT_3 -> { ${1://cuerpo...} }\n# K_SHIFT_3\nsnippet K_SHIFT_3\n\tK_SHIFT_3 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_3\nsnippet K_CTRL_ALT_3\n\tK_CTRL_ALT_3 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_3\nsnippet K_CTRL_SHIFT_3\n\tK_CTRL_SHIFT_3 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_3\nsnippet K_CTRL_ALT_SHIFT_3\n\tK_CTRL_ALT_SHIFT_3 -> { ${1://cuerpo...} }\n\n# K_4\nsnippet K_4\n\tK_4 -> { ${1://cuerpo...} }\n# K_CTRL_4\nsnippet K_CTRL_4\n\tK_CTRL_4 -> { ${1://cuerpo...} }\n# K_ALT_4\nsnippet K_ALT_4\n\tK_ALT_4 -> { ${1://cuerpo...} }\n# K_SHIFT_4\nsnippet K_SHIFT_4\n\tK_SHIFT_4 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_4\nsnippet K_CTRL_ALT_4\n\tK_CTRL_ALT_4 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_4\nsnippet K_CTRL_SHIFT_4\n\tK_CTRL_SHIFT_4 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_4\nsnippet K_CTRL_ALT_SHIFT_4\n\tK_CTRL_ALT_SHIFT_4 -> { ${1://cuerpo...} }\n\n# K_5\nsnippet K_5\n\tK_5 -> { ${1://cuerpo...} }\n# K_CTRL_5\nsnippet K_CTRL_5\n\tK_CTRL_5 -> { ${1://cuerpo...} }\n# K_ALT_5\nsnippet K_ALT_5\n\tK_ALT_5 -> { ${1://cuerpo...} }\n# K_SHIFT_5\nsnippet K_SHIFT_5\n\tK_SHIFT_5 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_5\nsnippet K_CTRL_ALT_5\n\tK_CTRL_ALT_5 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_5\nsnippet K_CTRL_SHIFT_5\n\tK_CTRL_SHIFT_5 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_5\nsnippet K_CTRL_ALT_SHIFT_5\n\tK_CTRL_ALT_SHIFT_5 -> { ${1://cuerpo...} }\n\n# K_6\nsnippet K_6\n\tK_6 -> { ${1://cuerpo...} }\n# K_CTRL_6\nsnippet K_CTRL_6\n\tK_CTRL_6 -> { ${1://cuerpo...} }\n# K_ALT_6\nsnippet K_ALT_6\n\tK_ALT_6 -> { ${1://cuerpo...} }\n# K_SHIFT_6\nsnippet K_SHIFT_6\n\tK_SHIFT_6 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_6\nsnippet K_CTRL_ALT_6\n\tK_CTRL_ALT_6 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_6\nsnippet K_CTRL_SHIFT_6\n\tK_CTRL_SHIFT_6 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_6\nsnippet K_CTRL_ALT_SHIFT_6\n\tK_CTRL_ALT_SHIFT_6 -> { ${1://cuerpo...} }\n\n# K_7\nsnippet K_7\n\tK_7 -> { ${1://cuerpo...} }\n# K_CTRL_7\nsnippet K_CTRL_7\n\tK_CTRL_7 -> { ${1://cuerpo...} }\n# K_ALT_7\nsnippet K_ALT_7\n\tK_ALT_7 -> { ${1://cuerpo...} }\n# K_SHIFT_7\nsnippet K_SHIFT_7\n\tK_SHIFT_7 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_7\nsnippet K_CTRL_ALT_7\n\tK_CTRL_ALT_7 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_7\nsnippet K_CTRL_SHIFT_7\n\tK_CTRL_SHIFT_7 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_7\nsnippet K_CTRL_ALT_SHIFT_7\n\tK_CTRL_ALT_SHIFT_7 -> { ${1://cuerpo...} }\n\n# K_8\nsnippet K_8\n\tK_8 -> { ${1://cuerpo...} }\n# K_CTRL_8\nsnippet K_CTRL_8\n\tK_CTRL_8 -> { ${1://cuerpo...} }\n# K_ALT_8\nsnippet K_ALT_8\n\tK_ALT_8 -> { ${1://cuerpo...} }\n# K_SHIFT_8\nsnippet K_SHIFT_8\n\tK_SHIFT_8 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_8\nsnippet K_CTRL_ALT_8\n\tK_CTRL_ALT_8 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_8\nsnippet K_CTRL_SHIFT_8\n\tK_CTRL_SHIFT_8 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_8\nsnippet K_CTRL_ALT_SHIFT_8\n\tK_CTRL_ALT_SHIFT_8 -> { ${1://cuerpo...} }\n\n# K_9\nsnippet K_9\n\tK_9 -> { ${1://cuerpo...} }\n# K_CTRL_9\nsnippet K_CTRL_9\n\tK_CTRL_9 -> { ${1://cuerpo...} }\n# K_ALT_9\nsnippet K_ALT_9\n\tK_ALT_9 -> { ${1://cuerpo...} }\n# K_SHIFT_9\nsnippet K_SHIFT_9\n\tK_SHIFT_9 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_9\nsnippet K_CTRL_ALT_9\n\tK_CTRL_ALT_9 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_9\nsnippet K_CTRL_SHIFT_9\n\tK_CTRL_SHIFT_9 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_9\nsnippet K_CTRL_ALT_SHIFT_9\n\tK_CTRL_ALT_SHIFT_9 -> { ${1://cuerpo...} }\n\n# K_F1\nsnippet K_F1\n\tK_F1 -> { ${1://cuerpo...} }\n# K_CTRL_F1\nsnippet K_CTRL_F1\n\tK_CTRL_F1 -> { ${1://cuerpo...} }\n# K_ALT_F1\nsnippet K_ALT_F1\n\tK_ALT_F1 -> { ${1://cuerpo...} }\n# K_SHIFT_F1\nsnippet K_SHIFT_F1\n\tK_SHIFT_F1 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F1\nsnippet K_CTRL_ALT_F1\n\tK_CTRL_ALT_F1 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F1\nsnippet K_CTRL_SHIFT_F1\n\tK_CTRL_SHIFT_F1 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F1\nsnippet K_CTRL_ALT_SHIFT_F1\n\tK_CTRL_ALT_SHIFT_F1 -> { ${1://cuerpo...} }\n\n# K_F2\nsnippet K_F2\n\tK_F2 -> { ${1://cuerpo...} }\n# K_CTRL_F2\nsnippet K_CTRL_F2\n\tK_CTRL_F2 -> { ${1://cuerpo...} }\n# K_ALT_F2\nsnippet K_ALT_F2\n\tK_ALT_F2 -> { ${1://cuerpo...} }\n# K_SHIFT_F2\nsnippet K_SHIFT_F2\n\tK_SHIFT_F2 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F2\nsnippet K_CTRL_ALT_F2\n\tK_CTRL_ALT_F2 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F2\nsnippet K_CTRL_SHIFT_F2\n\tK_CTRL_SHIFT_F2 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F2\nsnippet K_CTRL_ALT_SHIFT_F2\n\tK_CTRL_ALT_SHIFT_F2 -> { ${1://cuerpo...} }\n\n# K_F3\nsnippet K_F3\n\tK_F3 -> { ${1://cuerpo...} }\n# K_CTRL_F3\nsnippet K_CTRL_F3\n\tK_CTRL_F3 -> { ${1://cuerpo...} }\n# K_ALT_F3\nsnippet K_ALT_F3\n\tK_ALT_F3 -> { ${1://cuerpo...} }\n# K_SHIFT_F3\nsnippet K_SHIFT_F3\n\tK_SHIFT_F3 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F3\nsnippet K_CTRL_ALT_F3\n\tK_CTRL_ALT_F3 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F3\nsnippet K_CTRL_SHIFT_F3\n\tK_CTRL_SHIFT_F3 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F3\nsnippet K_CTRL_ALT_SHIFT_F3\n\tK_CTRL_ALT_SHIFT_F3 -> { ${1://cuerpo...} }\n\n# K_A\nsnippet K_A\n\tK_A -> { ${1://cuerpo...} }\n# K_CTRL_A\nsnippet K_CTRL_A\n\tK_CTRL_A -> { ${1://cuerpo...} }\n# K_ALT_A\nsnippet K_ALT_A\n\tK_ALT_A -> { ${1://cuerpo...} }\n# K_SHIFT_A\nsnippet K_SHIFT_A\n\tK_SHIFT_A -> { ${1://cuerpo...} }\n# K_CTRL_ALT_A\nsnippet K_CTRL_ALT_A\n\tK_CTRL_ALT_A -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_A\nsnippet K_CTRL_SHIFT_A\n\tK_CTRL_SHIFT_A -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_A\nsnippet K_CTRL_ALT_SHIFT_A\n\tK_CTRL_ALT_SHIFT_A -> { ${1://cuerpo...} }\n\n# K_F5\nsnippet K_F5\n\tK_F5 -> { ${1://cuerpo...} }\n# K_CTRL_F5\nsnippet K_CTRL_F5\n\tK_CTRL_F5 -> { ${1://cuerpo...} }\n# K_ALT_F5\nsnippet K_ALT_F5\n\tK_ALT_F5 -> { ${1://cuerpo...} }\n# K_SHIFT_F5\nsnippet K_SHIFT_F5\n\tK_SHIFT_F5 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F5\nsnippet K_CTRL_ALT_F5\n\tK_CTRL_ALT_F5 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F5\nsnippet K_CTRL_SHIFT_F5\n\tK_CTRL_SHIFT_F5 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F5\nsnippet K_CTRL_ALT_SHIFT_F5\n\tK_CTRL_ALT_SHIFT_F5 -> { ${1://cuerpo...} }\n\n# K_F6\nsnippet K_F6\n\tK_F6 -> { ${1://cuerpo...} }\n# K_CTRL_F6\nsnippet K_CTRL_F6\n\tK_CTRL_F6 -> { ${1://cuerpo...} }\n# K_ALT_F6\nsnippet K_ALT_F6\n\tK_ALT_F6 -> { ${1://cuerpo...} }\n# K_SHIFT_F6\nsnippet K_SHIFT_F6\n\tK_SHIFT_F6 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F6\nsnippet K_CTRL_ALT_F6\n\tK_CTRL_ALT_F6 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F6\nsnippet K_CTRL_SHIFT_F6\n\tK_CTRL_SHIFT_F6 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F6\nsnippet K_CTRL_ALT_SHIFT_F6\n\tK_CTRL_ALT_SHIFT_F6 -> { ${1://cuerpo...} }\n\n# K_F7\nsnippet K_F7\n\tK_F7 -> { ${1://cuerpo...} }\n# K_CTRL_F7\nsnippet K_CTRL_F7\n\tK_CTRL_F7 -> { ${1://cuerpo...} }\n# K_ALT_F7\nsnippet K_ALT_F7\n\tK_ALT_F7 -> { ${1://cuerpo...} }\n# K_SHIFT_F7\nsnippet K_SHIFT_F7\n\tK_SHIFT_F7 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F7\nsnippet K_CTRL_ALT_F7\n\tK_CTRL_ALT_F7 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F7\nsnippet K_CTRL_SHIFT_F7\n\tK_CTRL_SHIFT_F7 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F7\nsnippet K_CTRL_ALT_SHIFT_F7\n\tK_CTRL_ALT_SHIFT_F7 -> { ${1://cuerpo...} }\n\n# K_F8\nsnippet K_F8\n\tK_F8 -> { ${1://cuerpo...} }\n# K_CTRL_F8\nsnippet K_CTRL_F8\n\tK_CTRL_F8 -> { ${1://cuerpo...} }\n# K_ALT_F8\nsnippet K_ALT_F8\n\tK_ALT_F8 -> { ${1://cuerpo...} }\n# K_SHIFT_F8\nsnippet K_SHIFT_F8\n\tK_SHIFT_F8 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F8\nsnippet K_CTRL_ALT_F8\n\tK_CTRL_ALT_F8 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F8\nsnippet K_CTRL_SHIFT_F8\n\tK_CTRL_SHIFT_F8 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F8\nsnippet K_CTRL_ALT_SHIFT_F8\n\tK_CTRL_ALT_SHIFT_F8 -> { ${1://cuerpo...} }\n\n# K_F9\nsnippet K_F9\n\tK_F9 -> { ${1://cuerpo...} }\n# K_CTRL_F9\nsnippet K_CTRL_F9\n\tK_CTRL_F9 -> { ${1://cuerpo...} }\n# K_ALT_F9\nsnippet K_ALT_F9\n\tK_ALT_F9 -> { ${1://cuerpo...} }\n# K_SHIFT_F9\nsnippet K_SHIFT_F9\n\tK_SHIFT_F9 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F9\nsnippet K_CTRL_ALT_F9\n\tK_CTRL_ALT_F9 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F9\nsnippet K_CTRL_SHIFT_F9\n\tK_CTRL_SHIFT_F9 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F9\nsnippet K_CTRL_ALT_SHIFT_F9\n\tK_CTRL_ALT_SHIFT_F9 -> { ${1://cuerpo...} }\n\n# K_F10\nsnippet K_F10\n\tK_F10 -> { ${1://cuerpo...} }\n# K_CTRL_F10\nsnippet K_CTRL_F10\n\tK_CTRL_F10 -> { ${1://cuerpo...} }\n# K_ALT_F10\nsnippet K_ALT_F10\n\tK_ALT_F10 -> { ${1://cuerpo...} }\n# K_SHIFT_F10\nsnippet K_SHIFT_F10\n\tK_SHIFT_F10 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F10\nsnippet K_CTRL_ALT_F10\n\tK_CTRL_ALT_F10 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F10\nsnippet K_CTRL_SHIFT_F10\n\tK_CTRL_SHIFT_F10 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F10\nsnippet K_CTRL_ALT_SHIFT_F10\n\tK_CTRL_ALT_SHIFT_F10 -> { ${1://cuerpo...} }\n\n# K_F11\nsnippet K_F11\n\tK_F11 -> { ${1://cuerpo...} }\n# K_CTRL_F11\nsnippet K_CTRL_F11\n\tK_CTRL_F11 -> { ${1://cuerpo...} }\n# K_ALT_F11\nsnippet K_ALT_F11\n\tK_ALT_F11 -> { ${1://cuerpo...} }\n# K_SHIFT_F11\nsnippet K_SHIFT_F11\n\tK_SHIFT_F11 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F11\nsnippet K_CTRL_ALT_F11\n\tK_CTRL_ALT_F11 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F11\nsnippet K_CTRL_SHIFT_F11\n\tK_CTRL_SHIFT_F11 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F11\nsnippet K_CTRL_ALT_SHIFT_F11\n\tK_CTRL_ALT_SHIFT_F11 -> { ${1://cuerpo...} }\n\n# K_F12\nsnippet K_F12\n\tK_F12 -> { ${1://cuerpo...} }\n# K_CTRL_F12\nsnippet K_CTRL_F12\n\tK_CTRL_F12 -> { ${1://cuerpo...} }\n# K_ALT_F12\nsnippet K_ALT_F12\n\tK_ALT_F12 -> { ${1://cuerpo...} }\n# K_SHIFT_F12\nsnippet K_SHIFT_F12\n\tK_SHIFT_F12 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_F12\nsnippet K_CTRL_ALT_F12\n\tK_CTRL_ALT_F12 -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_F12\nsnippet K_CTRL_SHIFT_F12\n\tK_CTRL_SHIFT_F12 -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_F12\nsnippet K_CTRL_ALT_SHIFT_F12\n\tK_CTRL_ALT_SHIFT_F12 -> { ${1://cuerpo...} }\n\n# K_RETURN\nsnippet K_RETURN\n\tK_RETURN -> { ${1://cuerpo...} }\n# K_CTRL_RETURN\nsnippet K_CTRL_RETURN\n\tK_CTRL_RETURN -> { ${1://cuerpo...} }\n# K_ALT_RETURN\nsnippet K_ALT_RETURN\n\tK_ALT_RETURN -> { ${1://cuerpo...} }\n# K_SHIFT_RETURN\nsnippet K_SHIFT_RETURN\n\tK_SHIFT_RETURN -> { ${1://cuerpo...} }\n# K_CTRL_ALT_RETURN\nsnippet K_CTRL_ALT_RETURN\n\tK_CTRL_ALT_RETURN -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_RETURN\nsnippet K_CTRL_SHIFT_RETURN\n\tK_CTRL_SHIFT_RETURN -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_RETURN\nsnippet K_CTRL_ALT_SHIFT_RETURN\n\tK_CTRL_ALT_SHIFT_RETURN -> { ${1://cuerpo...} }\n\n# K_SPACE\nsnippet K_SPACE\n\tK_SPACE -> { ${1://cuerpo...} }\n# K_CTRL_SPACE\nsnippet K_CTRL_SPACE\n\tK_CTRL_SPACE -> { ${1://cuerpo...} }\n# K_ALT_SPACE\nsnippet K_ALT_SPACE\n\tK_ALT_SPACE -> { ${1://cuerpo...} }\n# K_SHIFT_SPACE\nsnippet K_SHIFT_SPACE\n\tK_SHIFT_SPACE -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SPACE\nsnippet K_CTRL_ALT_SPACE\n\tK_CTRL_ALT_SPACE -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_SPACE\nsnippet K_CTRL_SHIFT_SPACE\n\tK_CTRL_SHIFT_SPACE -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_SPACE\nsnippet K_CTRL_ALT_SHIFT_SPACE\n\tK_CTRL_ALT_SHIFT_SPACE -> { ${1://cuerpo...} }\n\n# K_ESCAPE\nsnippet K_ESCAPE\n\tK_ESCAPE -> { ${1://cuerpo...} }\n# K_CTRL_ESCAPE\nsnippet K_CTRL_ESCAPE\n\tK_CTRL_ESCAPE -> { ${1://cuerpo...} }\n# K_ALT_ESCAPE\nsnippet K_ALT_ESCAPE\n\tK_ALT_ESCAPE -> { ${1://cuerpo...} }\n# K_SHIFT_ESCAPE\nsnippet K_SHIFT_ESCAPE\n\tK_SHIFT_ESCAPE -> { ${1://cuerpo...} }\n# K_CTRL_ALT_ESCAPE\nsnippet K_CTRL_ALT_ESCAPE\n\tK_CTRL_ALT_ESCAPE -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_ESCAPE\nsnippet K_CTRL_SHIFT_ESCAPE\n\tK_CTRL_SHIFT_ESCAPE -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_ESCAPE\nsnippet K_CTRL_ALT_SHIFT_ESCAPE\n\tK_CTRL_ALT_SHIFT_ESCAPE -> { ${1://cuerpo...} }\n\n# K_BACKSPACE\nsnippet K_BACKSPACE\n\tK_BACKSPACE -> { ${1://cuerpo...} }\n# K_CTRL_BACKSPACE\nsnippet K_CTRL_BACKSPACE\n\tK_CTRL_BACKSPACE -> { ${1://cuerpo...} }\n# K_ALT_BACKSPACE\nsnippet K_ALT_BACKSPACE\n\tK_ALT_BACKSPACE -> { ${1://cuerpo...} }\n# K_SHIFT_BACKSPACE\nsnippet K_SHIFT_BACKSPACE\n\tK_SHIFT_BACKSPACE -> { ${1://cuerpo...} }\n# K_CTRL_ALT_BACKSPACE\nsnippet K_CTRL_ALT_BACKSPACE\n\tK_CTRL_ALT_BACKSPACE -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_BACKSPACE\nsnippet K_CTRL_SHIFT_BACKSPACE\n\tK_CTRL_SHIFT_BACKSPACE -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_BACKSPACE\nsnippet K_CTRL_ALT_SHIFT_BACKSPACE\n\tK_CTRL_ALT_SHIFT_BACKSPACE -> { ${1://cuerpo...} }\n\n# K_TAB\nsnippet K_TAB\n\tK_TAB -> { ${1://cuerpo...} }\n# K_CTRL_TAB\nsnippet K_CTRL_TAB\n\tK_CTRL_TAB -> { ${1://cuerpo...} }\n# K_ALT_TAB\nsnippet K_ALT_TAB\n\tK_ALT_TAB -> { ${1://cuerpo...} }\n# K_SHIFT_TAB\nsnippet K_SHIFT_TAB\n\tK_SHIFT_TAB -> { ${1://cuerpo...} }\n# K_CTRL_ALT_TAB\nsnippet K_CTRL_ALT_TAB\n\tK_CTRL_ALT_TAB -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_TAB\nsnippet K_CTRL_SHIFT_TAB\n\tK_CTRL_SHIFT_TAB -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_TAB\nsnippet K_CTRL_ALT_SHIFT_TAB\n\tK_CTRL_ALT_SHIFT_TAB -> { ${1://cuerpo...} }\n\n# K_UP\nsnippet K_UP\n\tK_UP -> { ${1://cuerpo...} }\n# K_CTRL_UP\nsnippet K_CTRL_UP\n\tK_CTRL_UP -> { ${1://cuerpo...} }\n# K_ALT_UP\nsnippet K_ALT_UP\n\tK_ALT_UP -> { ${1://cuerpo...} }\n# K_SHIFT_UP\nsnippet K_SHIFT_UP\n\tK_SHIFT_UP -> { ${1://cuerpo...} }\n# K_CTRL_ALT_UP\nsnippet K_CTRL_ALT_UP\n\tK_CTRL_ALT_UP -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_UP\nsnippet K_CTRL_SHIFT_UP\n\tK_CTRL_SHIFT_UP -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_UP\nsnippet K_CTRL_ALT_SHIFT_UP\n\tK_CTRL_ALT_SHIFT_UP -> { ${1://cuerpo...} }\n\n# K_DOWN\nsnippet K_DOWN\n\tK_DOWN -> { ${1://cuerpo...} }\n# K_CTRL_DOWN\nsnippet K_CTRL_DOWN\n\tK_CTRL_DOWN -> { ${1://cuerpo...} }\n# K_ALT_DOWN\nsnippet K_ALT_DOWN\n\tK_ALT_DOWN -> { ${1://cuerpo...} }\n# K_SHIFT_DOWN\nsnippet K_SHIFT_DOWN\n\tK_SHIFT_DOWN -> { ${1://cuerpo...} }\n# K_CTRL_ALT_DOWN\nsnippet K_CTRL_ALT_DOWN\n\tK_CTRL_ALT_DOWN -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_DOWN\nsnippet K_CTRL_SHIFT_DOWN\n\tK_CTRL_SHIFT_DOWN -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_DOWN\nsnippet K_CTRL_ALT_SHIFT_DOWN\n\tK_CTRL_ALT_SHIFT_DOWN -> { ${1://cuerpo...} }\n\n# K_LEFT\nsnippet K_LEFT\n\tK_LEFT -> { ${1://cuerpo...} }\n# K_CTRL_LEFT\nsnippet K_CTRL_LEFT\n\tK_CTRL_LEFT -> { ${1://cuerpo...} }\n# K_ALT_LEFT\nsnippet K_ALT_LEFT\n\tK_ALT_LEFT -> { ${1://cuerpo...} }\n# K_SHIFT_LEFT\nsnippet K_SHIFT_LEFT\n\tK_SHIFT_LEFT -> { ${1://cuerpo...} }\n# K_CTRL_ALT_LEFT\nsnippet K_CTRL_ALT_LEFT\n\tK_CTRL_ALT_LEFT -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_LEFT\nsnippet K_CTRL_SHIFT_LEFT\n\tK_CTRL_SHIFT_LEFT -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_LEFT\nsnippet K_CTRL_ALT_SHIFT_LEFT\n\tK_CTRL_ALT_SHIFT_LEFT -> { ${1://cuerpo...} }\n\n# K_RIGHT\nsnippet K_RIGHT\n\tK_RIGHT -> { ${1://cuerpo...} }\n# K_CTRL_RIGHT\nsnippet K_CTRL_RIGHT\n\tK_CTRL_RIGHT -> { ${1://cuerpo...} }\n# K_ALT_RIGHT\nsnippet K_ALT_RIGHT\n\tK_ALT_RIGHT -> { ${1://cuerpo...} }\n# K_SHIFT_RIGHT\nsnippet K_SHIFT_RIGHT\n\tK_SHIFT_RIGHT -> { ${1://cuerpo...} }\n# K_CTRL_ALT_RIGHT\nsnippet K_CTRL_ALT_RIGHT\n\tK_CTRL_ALT_RIGHT -> { ${1://cuerpo...} }\n# K_CTRL_SHIFT_RIGHT\nsnippet K_CTRL_SHIFT_RIGHT\n\tK_CTRL_SHIFT_RIGHT -> { ${1://cuerpo...} }\n# K_CTRL_ALT_SHIFT_RIGHT\nsnippet K_CTRL_ALT_SHIFT_RIGHT\n\tK_CTRL_ALT_SHIFT_RIGHT -> { ${1://cuerpo...} }\n\n# recorrido (simple)\nsnippet recorrido (simple)\n\t${1:// Ir al inicio}\n\twhile (not ${2:// es \u00FAltimo elemento}) {\n\t\t${3:// Procesar el elemento}\n\t\t${4:// Ir al pr\u00F3ximo elemento}\n\t}\n\t${5:// Finalizar}\n\n# recorrido (de acumulaci\u00F3n)\nsnippet recorrido (de acumulaci\u00F3n)\n\t${1:// Ir al inicio}\n\t${2:cantidadVistos} := ${3:// contar elementos en lugar actual}\n\twhile (not ${4:// es \u00FAltimo elemento}) {\n\t\t${4:// Ir al pr\u00F3ximo elemento}\n\t\t${2:cantidadVistos} := ${2:cantidadVistos} + ${3:// contar elementos en lugar actual}\n\t}\n\treturn (${2:cantidadVistos})\n\n# recorrido (de b\u00FAsqueda)\nsnippet recorrido (de b\u00FAsqueda)\n\t${1:// Ir al inicio}\n\twhile (not ${2:// encontr\u00E9 lo que buscaba}) {\n\t\t${3:// Ir al pr\u00F3ximo elemento}\n\t}\n\treturn (${2:// encontr\u00E9 lo que buscaba })\n\n# recorrido (de b\u00FAsqueda con borde)\nsnippet recorrido (de b\u00FAsqueda con borde)\n\t${1:// Ir al inicio}\n\twhile (not ${2:// encontr\u00E9 lo que buscaba} && not ${3:// es \u00FAltimo elemento}) {\n\t\t${4:// Ir al pr\u00F3ximo elemento}\n\t}\n\treturn (${2:// encontr\u00E9 lo que buscaba })\n\n# recorrido (de tipos enumerativos)\nsnippet recorrido (de tipos enumerativos)\n\t${1:elementoActual} := ${2:minElemento()}\n\twhile (${1:elementoActual} /= ${3:maxElemento()}) {\n\t\t${4:// Procesar con elemento actual}\n\t\t${1:elementoActual} := siguiente(${1:elementoActual})\n\t}\n\t${4:// Procesar con elemento actual}\n\n# recorrido (de b\u00FAsqueda sobre lista)\nsnippet recorrido (de b\u00FAsqueda sobre lista)\n\t${1:listaRecorrida} := ${2:lista}\n\twhile (primero(${1:listaRecorrida}) /= ${3://elemento buscado}) {\n\t\t${1:elementoActual} := sinElPrimero(${1:elementoActual})\n\t}\n\treturn (primero(${1:listaRecorrida}))\n\n# recorrido (de b\u00FAsqueda sobre lista con borde)\nsnippet recorrido (de b\u00FAsqueda sobre lista con borde)\n\t${1:listaRecorrida} := ${2:lista}\n\twhile (not esVac\u00EDa(${1:listaRecorrida}) && primero(${1:listaRecorrida}) /= ${3://elemento buscado}) {\n\t\t${1:elementoActual} := sinElPrimero(${1:elementoActual})\n\t}\n\treturn (not esVac\u00EDa(${1:listaRecorrida}))\n\n# docs (procedimiento)\nsnippet docs (procedimiento)\n\t/*\n\t\t@PROP\u00D3SITO: ${1:...}\n\t\t@PRECONDICI\u00D3N: ${2:...}\n\t*/\n\n# docs (procedimiento con par\u00E1metros)\nsnippet docs (procedimiento con par\u00E1metros)\n\t/*\n\t\t@PROP\u00D3SITO: ${1:...}\n\t\t@PRECONDICI\u00D3N: ${2:...}\n\t\t@PAR\u00C1METROS:\n\t\t\t\t* ${3:nombreDelPar\u00E1metro} : ${4:Tipo} - ${5:descripci\u00F3n}\n\t*/\n\n# docs (funci\u00F3n)\nsnippet docs (funci\u00F3n)\n\t/*\n\t\t@PROP\u00D3SITO: ${1:...}\n\t\t@PRECONDICI\u00D3N: ${2:...}\n\t\t@TIPO: ${3:...}\n\t*/\n\n# docs (funci\u00F3n con par\u00E1metros)\nsnippet docs (funci\u00F3n con par\u00E1metros)\n\t/*\n\t\t@PROP\u00D3SITO: ${1:...}\n\t\t@PRECONDICI\u00D3N: ${2:...}\n\t\t@PAR\u00C1METROS:\n\t\t\t\t* ${3:nombreDelPar\u00E1metro} : ${4:Tipo} - ${5:descripci\u00F3n}\n\t\t@TIPO: ${6:...}\n\t*/\n"; }); + +define("ace/snippets/gobstones",["require","exports","module","ace/snippets/gobstones.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./gobstones.snippets"); +exports.scope = "gobstones"; + +}); (function() { + window.require(["ace/snippets/gobstones"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/golang.js b/vendor/assets/javascripts/ace/snippets/golang.js index 81d2ab9f..18a9f97b 100644 --- a/vendor/assets/javascripts/ace/snippets/golang.js +++ b/vendor/assets/javascripts/ace/snippets/golang.js @@ -1,7 +1,9 @@ -define("ace/snippets/golang",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "golang"; - -}); +; (function() { + window.require(["ace/snippets/golang"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/graphqlschema.js b/vendor/assets/javascripts/ace/snippets/graphqlschema.js index e9780417..e769b1df 100644 --- a/vendor/assets/javascripts/ace/snippets/graphqlschema.js +++ b/vendor/assets/javascripts/ace/snippets/graphqlschema.js @@ -1,39 +1,16 @@ -define("ace/snippets/graphqlschema",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Type Snippet\n\ -trigger type\n\ -snippet type\n\ - type ${1:type_name} {\n\ - ${2:type_siblings}\n\ - }\n\ -\n\ -# Input Snippet\n\ -trigger input\n\ -snippet input\n\ - input ${1:input_name} {\n\ - ${2:input_siblings}\n\ - }\n\ -\n\ -# Interface Snippet\n\ -trigger interface\n\ -snippet interface\n\ - interface ${1:interface_name} {\n\ - ${2:interface_siblings}\n\ - }\n\ -\n\ -# Interface Snippet\n\ -trigger union\n\ -snippet union\n\ - union ${1:union_name} = ${2:type} | ${3: type}\n\ -\n\ -# Enum Snippet\n\ -trigger enum\n\ -snippet enum\n\ - enum ${1:enum_name} {\n\ - ${2:enum_siblings}\n\ - }\n\ -"; -exports.scope = "graphqlschema"; +define("ace/snippets/graphqlschema.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Type Snippet\ntrigger type\nsnippet type\n\ttype ${1:type_name} {\n\t\t${2:type_siblings}\n\t}\n\n# Input Snippet\ntrigger input\nsnippet input\n\tinput ${1:input_name} {\n\t\t${2:input_siblings}\n\t}\n\n# Interface Snippet\ntrigger interface\nsnippet interface\n\tinterface ${1:interface_name} {\n\t\t${2:interface_siblings}\n\t}\n\n# Interface Snippet\ntrigger union\nsnippet union\n\tunion ${1:union_name} = ${2:type} | ${3: type}\n\n# Enum Snippet\ntrigger enum\nsnippet enum\n\tenum ${1:enum_name} {\n\t\t${2:enum_siblings}\n\t}\n"; }); + +define("ace/snippets/graphqlschema",["require","exports","module","ace/snippets/graphqlschema.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./graphqlschema.snippets"); +exports.scope = "graphqlschema"; + +}); (function() { + window.require(["ace/snippets/graphqlschema"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/groovy.js b/vendor/assets/javascripts/ace/snippets/groovy.js index f5a16581..72f2f32e 100644 --- a/vendor/assets/javascripts/ace/snippets/groovy.js +++ b/vendor/assets/javascripts/ace/snippets/groovy.js @@ -1,7 +1,9 @@ -define("ace/snippets/groovy",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "groovy"; - -}); +; (function() { + window.require(["ace/snippets/groovy"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/haml.js b/vendor/assets/javascripts/ace/snippets/haml.js index cfb95477..e447ae3f 100644 --- a/vendor/assets/javascripts/ace/snippets/haml.js +++ b/vendor/assets/javascripts/ace/snippets/haml.js @@ -1,27 +1,16 @@ -define("ace/snippets/haml",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet t\n\ - %table\n\ - %tr\n\ - %th\n\ - ${1:headers}\n\ - %tr\n\ - %td\n\ - ${2:headers}\n\ -snippet ul\n\ - %ul\n\ - %li\n\ - ${1:item}\n\ - %li\n\ -snippet =rp\n\ - = render :partial => '${1:partial}'\n\ -snippet =rpl\n\ - = render :partial => '${1:partial}', :locals => {}\n\ -snippet =rpc\n\ - = render :partial => '${1:partial}', :collection => @$1\n\ -\n\ -"; -exports.scope = "haml"; +define("ace/snippets/haml.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet t\n\t%table\n\t\t%tr\n\t\t\t%th\n\t\t\t\t${1:headers}\n\t\t%tr\n\t\t\t%td\n\t\t\t\t${2:headers}\nsnippet ul\n\t%ul\n\t\t%li\n\t\t\t${1:item}\n\t\t%li\nsnippet =rp\n\t= render :partial => '${1:partial}'\nsnippet =rpl\n\t= render :partial => '${1:partial}', :locals => {}\nsnippet =rpc\n\t= render :partial => '${1:partial}', :collection => @$1\n\n"; }); + +define("ace/snippets/haml",["require","exports","module","ace/snippets/haml.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./haml.snippets"); +exports.scope = "haml"; + +}); (function() { + window.require(["ace/snippets/haml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/handlebars.js b/vendor/assets/javascripts/ace/snippets/handlebars.js index 85eacaa5..2eaf61de 100644 --- a/vendor/assets/javascripts/ace/snippets/handlebars.js +++ b/vendor/assets/javascripts/ace/snippets/handlebars.js @@ -1,7 +1,9 @@ -define("ace/snippets/handlebars",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "handlebars"; - -}); +; (function() { + window.require(["ace/snippets/handlebars"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/haskell.js b/vendor/assets/javascripts/ace/snippets/haskell.js index b4f504a6..be6352b6 100644 --- a/vendor/assets/javascripts/ace/snippets/haskell.js +++ b/vendor/assets/javascripts/ace/snippets/haskell.js @@ -1,89 +1,16 @@ -define("ace/snippets/haskell",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet lang\n\ - {-# LANGUAGE ${1:OverloadedStrings} #-}\n\ -snippet info\n\ - -- |\n\ - -- Module : ${1:Module.Namespace}\n\ - -- Copyright : ${2:Author} ${3:2011-2012}\n\ - -- License : ${4:BSD3}\n\ - --\n\ - -- Maintainer : ${5:email@something.com}\n\ - -- Stability : ${6:experimental}\n\ - -- Portability : ${7:unknown}\n\ - --\n\ - -- ${8:Description}\n\ - --\n\ -snippet import\n\ - import ${1:Data.Text}\n\ -snippet import2\n\ - import ${1:Data.Text} (${2:head})\n\ -snippet importq\n\ - import qualified ${1:Data.Text} as ${2:T}\n\ -snippet inst\n\ - instance ${1:Monoid} ${2:Type} where\n\ - ${3}\n\ -snippet type\n\ - type ${1:Type} = ${2:Type}\n\ -snippet data\n\ - data ${1:Type} = ${2:$1} ${3:Int}\n\ -snippet newtype\n\ - newtype ${1:Type} = ${2:$1} ${3:Int}\n\ -snippet class\n\ - class ${1:Class} a where\n\ - ${2}\n\ -snippet module\n\ - module `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n\ - ) where\n\ - `expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n print \\\"hello world\\\"\" : \"\"`\n\ -\n\ -snippet const\n\ - ${1:name} :: ${2:a}\n\ - $1 = ${3:undefined}\n\ -snippet fn\n\ - ${1:fn} :: ${2:a} -> ${3:a}\n\ - $1 ${4} = ${5:undefined}\n\ -snippet fn2\n\ - ${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n\ - $1 ${5} = ${6:undefined}\n\ -snippet ap\n\ - ${1:map} ${2:fn} ${3:list}\n\ -snippet do\n\ - do\n\ - \n\ -snippet λ\n\ - \\${1:x} -> ${2}\n\ -snippet \\\n\ - \\${1:x} -> ${2}\n\ -snippet <-\n\ - ${1:a} <- ${2:m a}\n\ -snippet ←\n\ - ${1:a} <- ${2:m a}\n\ -snippet ->\n\ - ${1:m a} -> ${2:a}\n\ -snippet →\n\ - ${1:m a} -> ${2:a}\n\ -snippet tup\n\ - (${1:a}, ${2:b})\n\ -snippet tup2\n\ - (${1:a}, ${2:b}, ${3:c})\n\ -snippet tup3\n\ - (${1:a}, ${2:b}, ${3:c}, ${4:d})\n\ -snippet rec\n\ - ${1:Record} { ${2:recFieldA} = ${3:undefined}\n\ - , ${4:recFieldB} = ${5:undefined}\n\ - }\n\ -snippet case\n\ - case ${1:something} of\n\ - ${2} -> ${3}\n\ -snippet let\n\ - let ${1} = ${2}\n\ - in ${3}\n\ -snippet where\n\ - where\n\ - ${1:fn} = ${2:undefined}\n\ -"; -exports.scope = "haskell"; +define("ace/snippets/haskell.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet lang\n\t{-# LANGUAGE ${1:OverloadedStrings} #-}\nsnippet info\n\t-- |\n\t-- Module : ${1:Module.Namespace}\n\t-- Copyright : ${2:Author} ${3:2011-2012}\n\t-- License : ${4:BSD3}\n\t--\n\t-- Maintainer : ${5:email@something.com}\n\t-- Stability : ${6:experimental}\n\t-- Portability : ${7:unknown}\n\t--\n\t-- ${8:Description}\n\t--\nsnippet import\n\timport ${1:Data.Text}\nsnippet import2\n\timport ${1:Data.Text} (${2:head})\nsnippet importq\n\timport qualified ${1:Data.Text} as ${2:T}\nsnippet inst\n\tinstance ${1:Monoid} ${2:Type} where\n\t\t${3}\nsnippet type\n\ttype ${1:Type} = ${2:Type}\nsnippet data\n\tdata ${1:Type} = ${2:$1} ${3:Int}\nsnippet newtype\n\tnewtype ${1:Type} = ${2:$1} ${3:Int}\nsnippet class\n\tclass ${1:Class} a where\n\t\t${2}\nsnippet module\n\tmodule `substitute(substitute(expand('%:r'), '[/\\\\]','.','g'),'^\\%(\\l*\\.\\)\\?','','')` (\n\t)\twhere\n\t`expand('%') =~ 'Main' ? \"\\n\\nmain = do\\n print \\\"hello world\\\"\" : \"\"`\n\nsnippet const\n\t${1:name} :: ${2:a}\n\t$1 = ${3:undefined}\nsnippet fn\n\t${1:fn} :: ${2:a} -> ${3:a}\n\t$1 ${4} = ${5:undefined}\nsnippet fn2\n\t${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}\n\t$1 ${5} = ${6:undefined}\nsnippet ap\n\t${1:map} ${2:fn} ${3:list}\nsnippet do\n\tdo\n\t\t\nsnippet \u03BB\n\t\\${1:x} -> ${2}\nsnippet \\\n\t\\${1:x} -> ${2}\nsnippet <-\n\t${1:a} <- ${2:m a}\nsnippet \u2190\n\t${1:a} <- ${2:m a}\nsnippet ->\n\t${1:m a} -> ${2:a}\nsnippet \u2192\n\t${1:m a} -> ${2:a}\nsnippet tup\n\t(${1:a}, ${2:b})\nsnippet tup2\n\t(${1:a}, ${2:b}, ${3:c})\nsnippet tup3\n\t(${1:a}, ${2:b}, ${3:c}, ${4:d})\nsnippet rec\n\t${1:Record} { ${2:recFieldA} = ${3:undefined}\n\t\t\t\t, ${4:recFieldB} = ${5:undefined}\n\t\t\t\t}\nsnippet case\n\tcase ${1:something} of\n\t\t${2} -> ${3}\nsnippet let\n\tlet ${1} = ${2}\n\tin ${3}\nsnippet where\n\twhere\n\t\t${1:fn} = ${2:undefined}\n"; }); + +define("ace/snippets/haskell",["require","exports","module","ace/snippets/haskell.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./haskell.snippets"); +exports.scope = "haskell"; + +}); (function() { + window.require(["ace/snippets/haskell"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/haskell_cabal.js b/vendor/assets/javascripts/ace/snippets/haskell_cabal.js index 3a30576d..1a90a9cb 100644 --- a/vendor/assets/javascripts/ace/snippets/haskell_cabal.js +++ b/vendor/assets/javascripts/ace/snippets/haskell_cabal.js @@ -1,7 +1,9 @@ -define("ace/snippets/haskell_cabal",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "haskell_cabal"; - -}); +; (function() { + window.require(["ace/snippets/haskell_cabal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/haxe.js b/vendor/assets/javascripts/ace/snippets/haxe.js index 6a42a507..b1f2dbe6 100644 --- a/vendor/assets/javascripts/ace/snippets/haxe.js +++ b/vendor/assets/javascripts/ace/snippets/haxe.js @@ -1,7 +1,9 @@ -define("ace/snippets/haxe",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "haxe"; - -}); +; (function() { + window.require(["ace/snippets/haxe"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/hjson.js b/vendor/assets/javascripts/ace/snippets/hjson.js index fb4f68bd..96938d67 100644 --- a/vendor/assets/javascripts/ace/snippets/hjson.js +++ b/vendor/assets/javascripts/ace/snippets/hjson.js @@ -1,7 +1,9 @@ -define("ace/snippets/hjson",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = ""; - -}); +; (function() { + window.require(["ace/snippets/hjson"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/html.js b/vendor/assets/javascripts/ace/snippets/html.js index a3800347..193dc5bf 100644 --- a/vendor/assets/javascripts/ace/snippets/html.js +++ b/vendor/assets/javascripts/ace/snippets/html.js @@ -1,862 +1,16 @@ -define("ace/snippets/html",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Some useful Unicode entities\n\ -# Non-Breaking Space\n\ -snippet nbs\n\ -  \n\ -# ←\n\ -snippet left\n\ - ←\n\ -# →\n\ -snippet right\n\ - →\n\ -# ↑\n\ -snippet up\n\ - ↑\n\ -# ↓\n\ -snippet down\n\ - ↓\n\ -# ↩\n\ -snippet return\n\ - ↩\n\ -# ⇤\n\ -snippet backtab\n\ - ⇤\n\ -# ⇥\n\ -snippet tab\n\ - ⇥\n\ -# ⇧\n\ -snippet shift\n\ - ⇧\n\ -# ⌃\n\ -snippet ctrl\n\ - ⌃\n\ -# ⌅\n\ -snippet enter\n\ - ⌅\n\ -# ⌘\n\ -snippet cmd\n\ - ⌘\n\ -# ⌥\n\ -snippet option\n\ - ⌥\n\ -# ⌦\n\ -snippet delete\n\ - ⌦\n\ -# ⌫\n\ -snippet backspace\n\ - ⌫\n\ -# ⎋\n\ -snippet esc\n\ - ⎋\n\ -# Generic Doctype\n\ -snippet doctype HTML 4.01 Strict\n\ - \n\ -snippet doctype HTML 4.01 Transitional\n\ - \n\ -snippet doctype HTML 5\n\ - \n\ -snippet doctype XHTML 1.0 Frameset\n\ - \n\ -snippet doctype XHTML 1.0 Strict\n\ - \n\ -snippet doctype XHTML 1.0 Transitional\n\ - \n\ -snippet doctype XHTML 1.1\n\ - \n\ -# HTML Doctype 4.01 Strict\n\ -snippet docts\n\ - \n\ -# HTML Doctype 4.01 Transitional\n\ -snippet doct\n\ - \n\ -# HTML Doctype 5\n\ -snippet doct5\n\ - \n\ -# XHTML Doctype 1.0 Frameset\n\ -snippet docxf\n\ - \n\ -# XHTML Doctype 1.0 Strict\n\ -snippet docxs\n\ - \n\ -# XHTML Doctype 1.0 Transitional\n\ -snippet docxt\n\ - \n\ -# XHTML Doctype 1.1\n\ -snippet docx\n\ - \n\ -# html5shiv\n\ -snippet html5shiv\n\ - \n\ -snippet html5printshiv\n\ - \n\ -# Attributes\n\ -snippet attr\n\ - ${1:attribute}=\"${2:property}\"\n\ -snippet attr+\n\ - ${1:attribute}=\"${2:property}\" attr+${3}\n\ -snippet .\n\ - class=\"${1}\"${2}\n\ -snippet #\n\ - id=\"${1}\"${2}\n\ -snippet alt\n\ - alt=\"${1}\"${2}\n\ -snippet charset\n\ - charset=\"${1:utf-8}\"${2}\n\ -snippet data\n\ - data-${1}=\"${2:$1}\"${3}\n\ -snippet for\n\ - for=\"${1}\"${2}\n\ -snippet height\n\ - height=\"${1}\"${2}\n\ -snippet href\n\ - href=\"${1:#}\"${2}\n\ -snippet lang\n\ - lang=\"${1:en}\"${2}\n\ -snippet media\n\ - media=\"${1}\"${2}\n\ -snippet name\n\ - name=\"${1}\"${2}\n\ -snippet rel\n\ - rel=\"${1}\"${2}\n\ -snippet scope\n\ - scope=\"${1:row}\"${2}\n\ -snippet src\n\ - src=\"${1}\"${2}\n\ -snippet title=\n\ - title=\"${1}\"${2}\n\ -snippet type\n\ - type=\"${1}\"${2}\n\ -snippet value\n\ - value=\"${1}\"${2}\n\ -snippet width\n\ - width=\"${1}\"${2}\n\ -# Elements\n\ -snippet a\n\ - ${2:$1}\n\ -snippet a.\n\ - ${3:$1}\n\ -snippet a#\n\ - ${3:$1}\n\ -snippet a:ext\n\ - ${2:$1}\n\ -snippet a:mail\n\ - ${3:email me}\n\ -snippet abbr\n\ - ${2}\n\ -snippet address\n\ -
\n\ - ${1}\n\ -
\n\ -snippet area\n\ - \"${4}\"\n\ -snippet area+\n\ - \"${4}\"\n\ - area+${5}\n\ -snippet area:c\n\ - \"${3}\"\n\ -snippet area:d\n\ - \"${3}\"\n\ -snippet area:p\n\ - \"${3}\"\n\ -snippet area:r\n\ - \"${3}\"\n\ -snippet article\n\ -
\n\ - ${1}\n\ -
\n\ -snippet article.\n\ -
\n\ - ${2}\n\ -
\n\ -snippet article#\n\ -
\n\ - ${2}\n\ -
\n\ -snippet aside\n\ - \n\ -snippet aside.\n\ - \n\ -snippet aside#\n\ - \n\ -snippet audio\n\ - \n\ -snippet b\n\ - ${1}\n\ -snippet base\n\ - \n\ -snippet bdi\n\ - ${1}\n\ -snippet bdo\n\ - ${2}\n\ -snippet bdo:l\n\ - ${1}\n\ -snippet bdo:r\n\ - ${1}\n\ -snippet blockquote\n\ -
\n\ - ${1}\n\ -
\n\ -snippet body\n\ - \n\ - ${1}\n\ - \n\ -snippet br\n\ -
${1}\n\ -snippet button\n\ - \n\ -snippet button.\n\ - \n\ -snippet button#\n\ - \n\ -snippet button:s\n\ - \n\ -snippet button:r\n\ - \n\ -snippet canvas\n\ - \n\ - ${1}\n\ - \n\ -snippet caption\n\ - ${1}\n\ -snippet cite\n\ - ${1}\n\ -snippet code\n\ - ${1}\n\ -snippet col\n\ - ${1}\n\ -snippet col+\n\ - \n\ - col+${1}\n\ -snippet colgroup\n\ - \n\ - ${1}\n\ - \n\ -snippet colgroup+\n\ - \n\ - \n\ - col+${1}\n\ - \n\ -snippet command\n\ - \n\ -snippet command:c\n\ - \n\ -snippet command:r\n\ - \n\ -snippet datagrid\n\ - \n\ - ${1}\n\ - \n\ -snippet datalist\n\ - \n\ - ${1}\n\ - \n\ -snippet datatemplate\n\ - \n\ - ${1}\n\ - \n\ -snippet dd\n\ -
${1}
\n\ -snippet dd.\n\ -
${2}
\n\ -snippet dd#\n\ -
${2}
\n\ -snippet del\n\ - ${1}\n\ -snippet details\n\ -
${1}
\n\ -snippet dfn\n\ - ${1}\n\ -snippet dialog\n\ - \n\ - ${1}\n\ - \n\ -snippet div\n\ -
\n\ - ${1}\n\ -
\n\ -snippet div.\n\ -
\n\ - ${2}\n\ -
\n\ -snippet div#\n\ -
\n\ - ${2}\n\ -
\n\ -snippet dl\n\ -
\n\ - ${1}\n\ -
\n\ -snippet dl.\n\ -
\n\ - ${2}\n\ -
\n\ -snippet dl#\n\ -
\n\ - ${2}\n\ -
\n\ -snippet dl+\n\ -
\n\ -
${1}
\n\ -
${2}
\n\ - dt+${3}\n\ -
\n\ -snippet dt\n\ -
${1}
\n\ -snippet dt.\n\ -
${2}
\n\ -snippet dt#\n\ -
${2}
\n\ -snippet dt+\n\ -
${1}
\n\ -
${2}
\n\ - dt+${3}\n\ -snippet em\n\ - ${1}\n\ -snippet embed\n\ - \n\ -snippet fieldset\n\ -
\n\ - ${1}\n\ -
\n\ -snippet fieldset.\n\ -
\n\ - ${2}\n\ -
\n\ -snippet fieldset#\n\ -
\n\ - ${2}\n\ -
\n\ -snippet fieldset+\n\ -
\n\ - ${1}\n\ - ${2}\n\ -
\n\ - fieldset+${3}\n\ -snippet figcaption\n\ -
${1}
\n\ -snippet figure\n\ -
${1}
\n\ -snippet footer\n\ -
\n\ - ${1}\n\ -
\n\ -snippet footer.\n\ -
\n\ - ${2}\n\ -
\n\ -snippet footer#\n\ -
\n\ - ${2}\n\ -
\n\ -snippet form\n\ -
\n\ - ${3}\n\ -
\n\ -snippet form.\n\ -
\n\ - ${4}\n\ -
\n\ -snippet form#\n\ -
\n\ - ${4}\n\ -
\n\ -snippet h1\n\ -

${1}

\n\ -snippet h1.\n\ -

${2}

\n\ -snippet h1#\n\ -

${2}

\n\ -snippet h2\n\ -

${1}

\n\ -snippet h2.\n\ -

${2}

\n\ -snippet h2#\n\ -

${2}

\n\ -snippet h3\n\ -

${1}

\n\ -snippet h3.\n\ -

${2}

\n\ -snippet h3#\n\ -

${2}

\n\ -snippet h4\n\ -

${1}

\n\ -snippet h4.\n\ -

${2}

\n\ -snippet h4#\n\ -

${2}

\n\ -snippet h5\n\ -
${1}
\n\ -snippet h5.\n\ -
${2}
\n\ -snippet h5#\n\ -
${2}
\n\ -snippet h6\n\ -
${1}
\n\ -snippet h6.\n\ -
${2}
\n\ -snippet h6#\n\ -
${2}
\n\ -snippet head\n\ - \n\ - \n\ -\n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2}\n\ - \n\ -snippet header\n\ -
\n\ - ${1}\n\ -
\n\ -snippet header.\n\ -
\n\ - ${2}\n\ -
\n\ -snippet header#\n\ -
\n\ - ${2}\n\ -
\n\ -snippet hgroup\n\ -
\n\ - ${1}\n\ -
\n\ -snippet hgroup.\n\ -
\n\ - ${2}\n\ -
\n\ -snippet hr\n\ -
${1}\n\ -snippet html\n\ - \n\ - ${1}\n\ - \n\ -snippet xhtml\n\ - \n\ - ${1}\n\ - \n\ -snippet html5\n\ - \n\ - \n\ - \n\ - \n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2:meta}\n\ - \n\ - \n\ - ${3:body}\n\ - \n\ - \n\ -snippet xhtml5\n\ - \n\ - \n\ - \n\ - \n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ - ${2:meta}\n\ - \n\ - \n\ - ${3:body}\n\ - \n\ - \n\ -snippet i\n\ - ${1}\n\ -snippet iframe\n\ - ${2}\n\ -snippet iframe.\n\ - ${3}\n\ -snippet iframe#\n\ - ${3}\n\ -snippet img\n\ - \"${2}\"${3}\n\ -snippet img.\n\ - \"${3}\"${4}\n\ -snippet img#\n\ - \"${3}\"${4}\n\ -snippet input\n\ - ${5}\n\ -snippet input.\n\ - ${6}\n\ -snippet input:text\n\ - ${4}\n\ -snippet input:submit\n\ - ${4}\n\ -snippet input:hidden\n\ - ${4}\n\ -snippet input:button\n\ - ${4}\n\ -snippet input:image\n\ - ${5}\n\ -snippet input:checkbox\n\ - ${3}\n\ -snippet input:radio\n\ - ${3}\n\ -snippet input:color\n\ - ${4}\n\ -snippet input:date\n\ - ${4}\n\ -snippet input:datetime\n\ - ${4}\n\ -snippet input:datetime-local\n\ - ${4}\n\ -snippet input:email\n\ - ${4}\n\ -snippet input:file\n\ - ${4}\n\ -snippet input:month\n\ - ${4}\n\ -snippet input:number\n\ - ${4}\n\ -snippet input:password\n\ - ${4}\n\ -snippet input:range\n\ - ${4}\n\ -snippet input:reset\n\ - ${4}\n\ -snippet input:search\n\ - ${4}\n\ -snippet input:time\n\ - ${4}\n\ -snippet input:url\n\ - ${4}\n\ -snippet input:week\n\ - ${4}\n\ -snippet ins\n\ - ${1}\n\ -snippet kbd\n\ - ${1}\n\ -snippet keygen\n\ - ${1}\n\ -snippet label\n\ - \n\ -snippet label:i\n\ - \n\ - ${7}\n\ -snippet label:s\n\ - \n\ - \n\ -snippet legend\n\ - ${1}\n\ -snippet legend+\n\ - ${1}\n\ -snippet li\n\ -
  • ${1}
  • \n\ -snippet li.\n\ -
  • ${2}
  • \n\ -snippet li+\n\ -
  • ${1}
  • \n\ - li+${2}\n\ -snippet lia\n\ -
  • ${1}
  • \n\ -snippet lia+\n\ -
  • ${1}
  • \n\ - lia+${3}\n\ -snippet link\n\ - ${5}\n\ -snippet link:atom\n\ - ${2}\n\ -snippet link:css\n\ - ${4}\n\ -snippet link:favicon\n\ - ${2}\n\ -snippet link:rss\n\ - ${2}\n\ -snippet link:touch\n\ - ${2}\n\ -snippet map\n\ - \n\ - ${2}\n\ - \n\ -snippet map.\n\ - \n\ - ${3}\n\ - \n\ -snippet map#\n\ - \n\ - ${3}\n\ - \n\ -snippet map+\n\ - \n\ - \"${5}\"${6}\n\ - ${7}\n\ -snippet mark\n\ - ${1}\n\ -snippet menu\n\ - \n\ - ${1}\n\ - \n\ -snippet menu:c\n\ - \n\ - ${1}\n\ - \n\ -snippet menu:t\n\ - \n\ - ${1}\n\ - \n\ -snippet meta\n\ - ${3}\n\ -snippet meta:compat\n\ - ${3}\n\ -snippet meta:refresh\n\ - ${3}\n\ -snippet meta:utf\n\ - ${3}\n\ -snippet meter\n\ - ${1}\n\ -snippet nav\n\ - \n\ -snippet nav.\n\ - \n\ -snippet nav#\n\ - \n\ -snippet noscript\n\ - \n\ -snippet object\n\ - \n\ - ${3}\n\ - ${4}\n\ -# Embed QT Movie\n\ -snippet movie\n\ - \n\ - \n\ - \n\ - \n\ - \n\ - ${6}\n\ -snippet ol\n\ -
      \n\ - ${1}\n\ -
    \n\ -snippet ol.\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ol#\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ol+\n\ -
      \n\ -
    1. ${1}
    2. \n\ - li+${2}\n\ -
    \n\ -snippet opt\n\ - \n\ -snippet opt+\n\ - \n\ - opt+${3}\n\ -snippet optt\n\ - \n\ -snippet optgroup\n\ - \n\ - \n\ - opt+${3}\n\ - \n\ -snippet output\n\ - ${1}\n\ -snippet p\n\ -

    ${1}

    \n\ -snippet param\n\ - ${3}\n\ -snippet pre\n\ -
    \n\
    -		${1}\n\
    -	
    \n\ -snippet progress\n\ - ${1}\n\ -snippet q\n\ - ${1}\n\ -snippet rp\n\ - ${1}\n\ -snippet rt\n\ - ${1}\n\ -snippet ruby\n\ - \n\ - ${1}\n\ - \n\ -snippet s\n\ - ${1}\n\ -snippet samp\n\ - \n\ - ${1}\n\ - \n\ -snippet script\n\ - \n\ -snippet scriptsrc\n\ - \n\ -snippet newscript\n\ - \n\ -snippet newscriptsrc\n\ - \n\ -snippet section\n\ -
    \n\ - ${1}\n\ -
    \n\ -snippet section.\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet section#\n\ -
    \n\ - ${2}\n\ -
    \n\ -snippet select\n\ - \n\ -snippet select.\n\ - \n\ -snippet select+\n\ - \n\ -snippet small\n\ - ${1}\n\ -snippet source\n\ - \n\ -snippet span\n\ - ${1}\n\ -snippet strong\n\ - ${1}\n\ -snippet style\n\ - \n\ -snippet sub\n\ - ${1}\n\ -snippet summary\n\ - \n\ - ${1}\n\ - \n\ -snippet sup\n\ - ${1}\n\ -snippet table\n\ - \n\ - ${2}\n\ -
    \n\ -snippet table.\n\ - \n\ - ${3}\n\ -
    \n\ -snippet table#\n\ - \n\ - ${3}\n\ -
    \n\ -snippet tbody\n\ - \n\ - ${1}\n\ - \n\ -snippet td\n\ - ${1}\n\ -snippet td.\n\ - ${2}\n\ -snippet td#\n\ - ${2}\n\ -snippet td+\n\ - ${1}\n\ - td+${2}\n\ -snippet textarea\n\ - ${6}\n\ -snippet tfoot\n\ - \n\ - ${1}\n\ - \n\ -snippet th\n\ - ${1}\n\ -snippet th.\n\ - ${2}\n\ -snippet th#\n\ - ${2}\n\ -snippet th+\n\ - ${1}\n\ - th+${2}\n\ -snippet thead\n\ - \n\ - ${1}\n\ - \n\ -snippet time\n\ - \n\ -snippet title\n\ - ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\ -snippet tr\n\ - \n\ - ${1}\n\ - \n\ -snippet tr+\n\ - \n\ - ${1}\n\ - td+${2}\n\ - \n\ -snippet track\n\ - ${5}${6}\n\ -snippet ul\n\ -
      \n\ - ${1}\n\ -
    \n\ -snippet ul.\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ul#\n\ -
      \n\ - ${2}\n\ -
    \n\ -snippet ul+\n\ -
      \n\ -
    • ${1}
    • \n\ - li+${2}\n\ -
    \n\ -snippet var\n\ - ${1}\n\ -snippet video\n\ - ${8}\n\ -snippet wbr\n\ - ${1}\n\ -"; -exports.scope = "html"; +define("ace/snippets/html.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Some useful Unicode entities\n# Non-Breaking Space\nsnippet nbs\n\t \n# \u2190\nsnippet left\n\t←\n# \u2192\nsnippet right\n\t→\n# \u2191\nsnippet up\n\t↑\n# \u2193\nsnippet down\n\t↓\n# \u21A9\nsnippet return\n\t↩\n# \u21E4\nsnippet backtab\n\t⇤\n# \u21E5\nsnippet tab\n\t⇥\n# \u21E7\nsnippet shift\n\t⇧\n# \u2303\nsnippet ctrl\n\t⌃\n# \u2305\nsnippet enter\n\t⌅\n# \u2318\nsnippet cmd\n\t⌘\n# \u2325\nsnippet option\n\t⌥\n# \u2326\nsnippet delete\n\t⌦\n# \u232B\nsnippet backspace\n\t⌫\n# \u238B\nsnippet esc\n\t⎋\n# Generic Doctype\nsnippet doctype HTML 4.01 Strict\n\t\nsnippet doctype HTML 4.01 Transitional\n\t\nsnippet doctype HTML 5\n\t\nsnippet doctype XHTML 1.0 Frameset\n\t\nsnippet doctype XHTML 1.0 Strict\n\t\nsnippet doctype XHTML 1.0 Transitional\n\t\nsnippet doctype XHTML 1.1\n\t\n# HTML Doctype 4.01 Strict\nsnippet docts\n\t\n# HTML Doctype 4.01 Transitional\nsnippet doct\n\t\n# HTML Doctype 5\nsnippet doct5\n\t\n# XHTML Doctype 1.0 Frameset\nsnippet docxf\n\t\n# XHTML Doctype 1.0 Strict\nsnippet docxs\n\t\n# XHTML Doctype 1.0 Transitional\nsnippet docxt\n\t\n# XHTML Doctype 1.1\nsnippet docx\n\t\n# html5shiv\nsnippet html5shiv\n\t\nsnippet html5printshiv\n\t\n# Attributes\nsnippet attr\n\t${1:attribute}=\"${2:property}\"\nsnippet attr+\n\t${1:attribute}=\"${2:property}\" attr+${3}\nsnippet .\n\tclass=\"${1}\"${2}\nsnippet #\n\tid=\"${1}\"${2}\nsnippet alt\n\talt=\"${1}\"${2}\nsnippet charset\n\tcharset=\"${1:utf-8}\"${2}\nsnippet data\n\tdata-${1}=\"${2:$1}\"${3}\nsnippet for\n\tfor=\"${1}\"${2}\nsnippet height\n\theight=\"${1}\"${2}\nsnippet href\n\thref=\"${1:#}\"${2}\nsnippet lang\n\tlang=\"${1:en}\"${2}\nsnippet media\n\tmedia=\"${1}\"${2}\nsnippet name\n\tname=\"${1}\"${2}\nsnippet rel\n\trel=\"${1}\"${2}\nsnippet scope\n\tscope=\"${1:row}\"${2}\nsnippet src\n\tsrc=\"${1}\"${2}\nsnippet title=\n\ttitle=\"${1}\"${2}\nsnippet type\n\ttype=\"${1}\"${2}\nsnippet value\n\tvalue=\"${1}\"${2}\nsnippet width\n\twidth=\"${1}\"${2}\n# Elements\nsnippet a\n\t${2:$1}\nsnippet a.\n\t${3:$1}\nsnippet a#\n\t${3:$1}\nsnippet a:ext\n\t${2:$1}\nsnippet a:mail\n\t${3:email me}\nsnippet abbr\n\t${2}\nsnippet address\n\t
    \n\t\t${1}\n\t
    \nsnippet area\n\t\"${4}\"\nsnippet area+\n\t\"${4}\"\n\tarea+${5}\nsnippet area:c\n\t\"${3}\"\nsnippet area:d\n\t\"${3}\"\nsnippet area:p\n\t\"${3}\"\nsnippet area:r\n\t\"${3}\"\nsnippet article\n\t
    \n\t\t${1}\n\t
    \nsnippet article.\n\t
    \n\t\t${2}\n\t
    \nsnippet article#\n\t
    \n\t\t${2}\n\t
    \nsnippet aside\n\t\nsnippet aside.\n\t\nsnippet aside#\n\t\nsnippet audio\n\t\nsnippet b\n\t${1}\nsnippet base\n\t\nsnippet bdi\n\t${1}\nsnippet bdo\n\t${2}\nsnippet bdo:l\n\t${1}\nsnippet bdo:r\n\t${1}\nsnippet blockquote\n\t
    \n\t\t${1}\n\t
    \nsnippet body\n\t\n\t\t${1}\n\t\nsnippet br\n\t
    ${1}\nsnippet button\n\t\nsnippet button.\n\t\nsnippet button#\n\t\nsnippet button:s\n\t\nsnippet button:r\n\t\nsnippet canvas\n\t\nsnippet caption\n\t${1}\nsnippet cite\n\t${1}\nsnippet code\n\t${1}\nsnippet col\n\t${1}\nsnippet col+\n\t\n\tcol+${1}\nsnippet colgroup\n\t\n\t\t${1}\n\t\nsnippet colgroup+\n\t\n\t\t\n\t\tcol+${1}\n\t\nsnippet command\n\t\nsnippet command:c\n\t\nsnippet command:r\n\t\nsnippet datagrid\n\t\n\t\t${1}\n\t\nsnippet datalist\n\t\n\t\t${1}\n\t\nsnippet datatemplate\n\t\n\t\t${1}\n\t\nsnippet dd\n\t
    ${1}
    \nsnippet dd.\n\t
    ${2}
    \nsnippet dd#\n\t
    ${2}
    \nsnippet del\n\t${1}\nsnippet details\n\t
    ${1}
    \nsnippet dfn\n\t${1}\nsnippet dialog\n\t\n\t\t${1}\n\t\nsnippet div\n\t
    \n\t\t${1}\n\t
    \nsnippet div.\n\t
    \n\t\t${2}\n\t
    \nsnippet div#\n\t
    \n\t\t${2}\n\t
    \nsnippet dl\n\t
    \n\t\t${1}\n\t
    \nsnippet dl.\n\t
    \n\t\t${2}\n\t
    \nsnippet dl#\n\t
    \n\t\t${2}\n\t
    \nsnippet dl+\n\t
    \n\t\t
    ${1}
    \n\t\t
    ${2}
    \n\t\tdt+${3}\n\t
    \nsnippet dt\n\t
    ${1}
    \nsnippet dt.\n\t
    ${2}
    \nsnippet dt#\n\t
    ${2}
    \nsnippet dt+\n\t
    ${1}
    \n\t
    ${2}
    \n\tdt+${3}\nsnippet em\n\t${1}\nsnippet embed\n\t\nsnippet fieldset\n\t
    \n\t\t${1}\n\t
    \nsnippet fieldset.\n\t
    \n\t\t${2}\n\t
    \nsnippet fieldset#\n\t
    \n\t\t${2}\n\t
    \nsnippet fieldset+\n\t
    \n\t\t${1}\n\t\t${2}\n\t
    \n\tfieldset+${3}\nsnippet figcaption\n\t
    ${1}
    \nsnippet figure\n\t
    ${1}
    \nsnippet footer\n\t
    \n\t\t${1}\n\t
    \nsnippet footer.\n\t
    \n\t\t${2}\n\t
    \nsnippet footer#\n\t
    \n\t\t${2}\n\t
    \nsnippet form\n\t
    \n\t\t${3}\n\t
    \nsnippet form.\n\t
    \n\t\t${4}\n\t
    \nsnippet form#\n\t
    \n\t\t${4}\n\t
    \nsnippet h1\n\t

    ${1}

    \nsnippet h1.\n\t

    ${2}

    \nsnippet h1#\n\t

    ${2}

    \nsnippet h2\n\t

    ${1}

    \nsnippet h2.\n\t

    ${2}

    \nsnippet h2#\n\t

    ${2}

    \nsnippet h3\n\t

    ${1}

    \nsnippet h3.\n\t

    ${2}

    \nsnippet h3#\n\t

    ${2}

    \nsnippet h4\n\t

    ${1}

    \nsnippet h4.\n\t

    ${2}

    \nsnippet h4#\n\t

    ${2}

    \nsnippet h5\n\t
    ${1}
    \nsnippet h5.\n\t
    ${2}
    \nsnippet h5#\n\t
    ${2}
    \nsnippet h6\n\t
    ${1}
    \nsnippet h6.\n\t
    ${2}
    \nsnippet h6#\n\t
    ${2}
    \nsnippet head\n\t\n\t\t\n\n\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t${2}\n\t\nsnippet header\n\t
    \n\t\t${1}\n\t
    \nsnippet header.\n\t
    \n\t\t${2}\n\t
    \nsnippet header#\n\t
    \n\t\t${2}\n\t
    \nsnippet hgroup\n\t
    \n\t\t${1}\n\t
    \nsnippet hgroup.\n\t
    \n\t\t${2}\n\t
    \nsnippet hr\n\t
    ${1}\nsnippet html\n\t\n\t${1}\n\t\nsnippet xhtml\n\t\n\t${1}\n\t\nsnippet html5\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t\t${2:meta}\n\t\t\n\t\t\n\t\t\t${3:body}\n\t\t\n\t\nsnippet xhtml5\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t\t${2:meta}\n\t\t\n\t\t\n\t\t\t${3:body}\n\t\t\n\t\nsnippet i\n\t${1}\nsnippet iframe\n\t${2}\nsnippet iframe.\n\t${3}\nsnippet iframe#\n\t${3}\nsnippet img\n\t\"${2}\"${3}\nsnippet img.\n\t\"${3}\"${4}\nsnippet img#\n\t\"${3}\"${4}\nsnippet input\n\t${5}\nsnippet input.\n\t${6}\nsnippet input:text\n\t${4}\nsnippet input:submit\n\t${4}\nsnippet input:hidden\n\t${4}\nsnippet input:button\n\t${4}\nsnippet input:image\n\t${5}\nsnippet input:checkbox\n\t${3}\nsnippet input:radio\n\t${3}\nsnippet input:color\n\t${4}\nsnippet input:date\n\t${4}\nsnippet input:datetime\n\t${4}\nsnippet input:datetime-local\n\t${4}\nsnippet input:email\n\t${4}\nsnippet input:file\n\t${4}\nsnippet input:month\n\t${4}\nsnippet input:number\n\t${4}\nsnippet input:password\n\t${4}\nsnippet input:range\n\t${4}\nsnippet input:reset\n\t${4}\nsnippet input:search\n\t${4}\nsnippet input:time\n\t${4}\nsnippet input:url\n\t${4}\nsnippet input:week\n\t${4}\nsnippet ins\n\t${1}\nsnippet kbd\n\t${1}\nsnippet keygen\n\t${1}\nsnippet label\n\t\nsnippet label:i\n\t\n\t${7}\nsnippet label:s\n\t\n\t\nsnippet legend\n\t${1}\nsnippet legend+\n\t${1}\nsnippet li\n\t
  • ${1}
  • \nsnippet li.\n\t
  • ${2}
  • \nsnippet li+\n\t
  • ${1}
  • \n\tli+${2}\nsnippet lia\n\t
  • ${1}
  • \nsnippet lia+\n\t
  • ${1}
  • \n\tlia+${3}\nsnippet link\n\t${5}\nsnippet link:atom\n\t${2}\nsnippet link:css\n\t${4}\nsnippet link:favicon\n\t${2}\nsnippet link:rss\n\t${2}\nsnippet link:touch\n\t${2}\nsnippet map\n\t\n\t\t${2}\n\t\nsnippet map.\n\t\n\t\t${3}\n\t\nsnippet map#\n\t\n\t\t${3}\n\t\nsnippet map+\n\t\n\t\t\"${5}\"${6}\n\t${7}\nsnippet mark\n\t${1}\nsnippet menu\n\t\n\t\t${1}\n\t\nsnippet menu:c\n\t\n\t\t${1}\n\t\nsnippet menu:t\n\t\n\t\t${1}\n\t\nsnippet meta\n\t${3}\nsnippet meta:compat\n\t${3}\nsnippet meta:refresh\n\t${3}\nsnippet meta:utf\n\t${3}\nsnippet meter\n\t${1}\nsnippet nav\n\t\nsnippet nav.\n\t\nsnippet nav#\n\t\nsnippet noscript\n\t\nsnippet object\n\t\n\t\t${3}\n\t${4}\n# Embed QT Movie\nsnippet movie\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t${6}\nsnippet ol\n\t
      \n\t\t${1}\n\t
    \nsnippet ol.\n\t
      \n\t\t${2}\n\t
    \nsnippet ol#\n\t
      \n\t\t${2}\n\t
    \nsnippet ol+\n\t
      \n\t\t
    1. ${1}
    2. \n\t\tli+${2}\n\t
    \nsnippet opt\n\t\nsnippet opt+\n\t\n\topt+${3}\nsnippet optt\n\t\nsnippet optgroup\n\t\n\t\t\n\t\topt+${3}\n\t\nsnippet output\n\t${1}\nsnippet p\n\t

    ${1}

    \nsnippet param\n\t${3}\nsnippet pre\n\t
    \n\t\t${1}\n\t
    \nsnippet progress\n\t${1}\nsnippet q\n\t${1}\nsnippet rp\n\t${1}\nsnippet rt\n\t${1}\nsnippet ruby\n\t\n\t\t${1}\n\t\nsnippet s\n\t${1}\nsnippet samp\n\t\n\t\t${1}\n\t\nsnippet script\n\t\nsnippet scriptsrc\n\t\nsnippet newscript\n\t\nsnippet newscriptsrc\n\t\nsnippet section\n\t
    \n\t\t${1}\n\t
    \nsnippet section.\n\t
    \n\t\t${2}\n\t
    \nsnippet section#\n\t
    \n\t\t${2}\n\t
    \nsnippet select\n\t\nsnippet select.\n\t\nsnippet select+\n\t\nsnippet small\n\t${1}\nsnippet source\n\t\nsnippet span\n\t${1}\nsnippet strong\n\t${1}\nsnippet style\n\t\nsnippet sub\n\t${1}\nsnippet summary\n\t\n\t\t${1}\n\t\nsnippet sup\n\t${1}\nsnippet table\n\t\n\t\t${2}\n\t
    \nsnippet table.\n\t\n\t\t${3}\n\t
    \nsnippet table#\n\t\n\t\t${3}\n\t
    \nsnippet tbody\n\t\n\t\t${1}\n\t\nsnippet td\n\t${1}\nsnippet td.\n\t${2}\nsnippet td#\n\t${2}\nsnippet td+\n\t${1}\n\ttd+${2}\nsnippet textarea\n\t${6}\nsnippet tfoot\n\t\n\t\t${1}\n\t\nsnippet th\n\t${1}\nsnippet th.\n\t${2}\nsnippet th#\n\t${2}\nsnippet th+\n\t${1}\n\tth+${2}\nsnippet thead\n\t\n\t\t${1}\n\t\nsnippet time\n\t\nsnippet title\n\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\nsnippet tr\n\t\n\t\t${1}\n\t\nsnippet tr+\n\t\n\t\t${1}\n\t\ttd+${2}\n\t\nsnippet track\n\t${5}${6}\nsnippet ul\n\t
      \n\t\t${1}\n\t
    \nsnippet ul.\n\t
      \n\t\t${2}\n\t
    \nsnippet ul#\n\t
      \n\t\t${2}\n\t
    \nsnippet ul+\n\t
      \n\t\t
    • ${1}
    • \n\t\tli+${2}\n\t
    \nsnippet var\n\t${1}\nsnippet video\n\t${8}\nsnippet wbr\n\t${1}\n"; }); + +define("ace/snippets/html",["require","exports","module","ace/snippets/html.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./html.snippets"); +exports.scope = "html"; + +}); (function() { + window.require(["ace/snippets/html"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/html_elixir.js b/vendor/assets/javascripts/ace/snippets/html_elixir.js index 4535c5e4..0db3e076 100644 --- a/vendor/assets/javascripts/ace/snippets/html_elixir.js +++ b/vendor/assets/javascripts/ace/snippets/html_elixir.js @@ -1,7 +1,9 @@ -define("ace/snippets/html_elixir",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "html_elixir"; - -}); +; (function() { + window.require(["ace/snippets/html_elixir"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/html_ruby.js b/vendor/assets/javascripts/ace/snippets/html_ruby.js index 7a781d81..5d449974 100644 --- a/vendor/assets/javascripts/ace/snippets/html_ruby.js +++ b/vendor/assets/javascripts/ace/snippets/html_ruby.js @@ -1,7 +1,9 @@ -define("ace/snippets/html_ruby",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "html_ruby"; - -}); +; (function() { + window.require(["ace/snippets/html_ruby"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/ini.js b/vendor/assets/javascripts/ace/snippets/ini.js index bc5bc939..f31743c5 100644 --- a/vendor/assets/javascripts/ace/snippets/ini.js +++ b/vendor/assets/javascripts/ace/snippets/ini.js @@ -1,7 +1,9 @@ -define("ace/snippets/ini",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "ini"; - -}); +; (function() { + window.require(["ace/snippets/ini"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/io.js b/vendor/assets/javascripts/ace/snippets/io.js index 743b5d2a..5f720445 100644 --- a/vendor/assets/javascripts/ace/snippets/io.js +++ b/vendor/assets/javascripts/ace/snippets/io.js @@ -1,6 +1,4 @@ -define("ace/snippets/io",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/snippets/io",["require","exports","module"], function(require, exports, module){"use strict"; exports.snippets = [ { "content": "assertEquals(${1:expected}, ${2:expr})", @@ -66,4 +64,11 @@ exports.snippets = [ ]; exports.scope = "io"; -}); +}); (function() { + window.require(["ace/snippets/io"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/ion.js b/vendor/assets/javascripts/ace/snippets/ion.js new file mode 100644 index 00000000..c2711bce --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/ion.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/ion"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/jack.js b/vendor/assets/javascripts/ace/snippets/jack.js index 154a0b06..fc242d3c 100644 --- a/vendor/assets/javascripts/ace/snippets/jack.js +++ b/vendor/assets/javascripts/ace/snippets/jack.js @@ -1,7 +1,9 @@ -define("ace/snippets/jack",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "jack"; - -}); +; (function() { + window.require(["ace/snippets/jack"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/jade.js b/vendor/assets/javascripts/ace/snippets/jade.js index f96faee4..1a1c1c25 100644 --- a/vendor/assets/javascripts/ace/snippets/jade.js +++ b/vendor/assets/javascripts/ace/snippets/jade.js @@ -1,7 +1,9 @@ -define("ace/snippets/jade",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "jade"; - -}); +; (function() { + window.require(["ace/snippets/jade"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/java.js b/vendor/assets/javascripts/ace/snippets/java.js index 0f000c70..4be45fce 100644 --- a/vendor/assets/javascripts/ace/snippets/java.js +++ b/vendor/assets/javascripts/ace/snippets/java.js @@ -1,247 +1,16 @@ -define("ace/snippets/java",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "## Access Modifiers\n\ -snippet po\n\ - protected\n\ -snippet pu\n\ - public\n\ -snippet pr\n\ - private\n\ -##\n\ -## Annotations\n\ -snippet before\n\ - @Before\n\ - static void ${1:intercept}(${2:args}) { ${3} }\n\ -snippet mm\n\ - @ManyToMany\n\ - ${1}\n\ -snippet mo\n\ - @ManyToOne\n\ - ${1}\n\ -snippet om\n\ - @OneToMany${1:(cascade=CascadeType.ALL)}\n\ - ${2}\n\ -snippet oo\n\ - @OneToOne\n\ - ${1}\n\ -##\n\ -## Basic Java packages and import\n\ -snippet im\n\ - import\n\ -snippet j.b\n\ - java.beans.\n\ -snippet j.i\n\ - java.io.\n\ -snippet j.m\n\ - java.math.\n\ -snippet j.n\n\ - java.net.\n\ -snippet j.u\n\ - java.util.\n\ -##\n\ -## Class\n\ -snippet cl\n\ - class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ -snippet in\n\ - interface ${1:`Filename(\"\", \"untitled\")`} ${2:extends Parent}${3}\n\ -snippet tc\n\ - public class ${1:`Filename()`} extends ${2:TestCase}\n\ -##\n\ -## Class Enhancements\n\ -snippet ext\n\ - extends \n\ -snippet imp\n\ - implements\n\ -##\n\ -## Comments\n\ -snippet /*\n\ - /*\n\ - * ${1}\n\ - */\n\ -##\n\ -## Constants\n\ -snippet co\n\ - static public final ${1:String} ${2:var} = ${3};${4}\n\ -snippet cos\n\ - static public final String ${1:var} = \"${2}\";${3}\n\ -##\n\ -## Control Statements\n\ -snippet case\n\ - case ${1}:\n\ - ${2}\n\ -snippet def\n\ - default:\n\ - ${2}\n\ -snippet el\n\ - else\n\ -snippet elif\n\ - else if (${1}) ${2}\n\ -snippet if\n\ - if (${1}) ${2}\n\ -snippet sw\n\ - switch (${1}) {\n\ - ${2}\n\ - }\n\ -##\n\ -## Create a Method\n\ -snippet m\n\ - ${1:void} ${2:method}(${3}) ${4:throws }${5}\n\ -##\n\ -## Create a Variable\n\ -snippet v\n\ - ${1:String} ${2:var}${3: = null}${4};${5}\n\ -##\n\ -## Enhancements to Methods, variables, classes, etc.\n\ -snippet ab\n\ - abstract\n\ -snippet fi\n\ - final\n\ -snippet st\n\ - static\n\ -snippet sy\n\ - synchronized\n\ -##\n\ -## Error Methods\n\ -snippet err\n\ - System.err.print(\"${1:Message}\");\n\ -snippet errf\n\ - System.err.printf(\"${1:Message}\", ${2:exception});\n\ -snippet errln\n\ - System.err.println(\"${1:Message}\");\n\ -##\n\ -## Exception Handling\n\ -snippet as\n\ - assert ${1:test} : \"${2:Failure message}\";${3}\n\ -snippet ca\n\ - catch(${1:Exception} ${2:e}) ${3}\n\ -snippet thr\n\ - throw\n\ -snippet ths\n\ - throws\n\ -snippet try\n\ - try {\n\ - ${3}\n\ - } catch(${1:Exception} ${2:e}) {\n\ - }\n\ -snippet tryf\n\ - try {\n\ - ${3}\n\ - } catch(${1:Exception} ${2:e}) {\n\ - } finally {\n\ - }\n\ -##\n\ -## Find Methods\n\ -snippet findall\n\ - List<${1:listName}> ${2:items} = ${1}.findAll();${3}\n\ -snippet findbyid\n\ - ${1:var} ${2:item} = ${1}.findById(${3});${4}\n\ -##\n\ -## Javadocs\n\ -snippet /**\n\ - /**\n\ - * ${1}\n\ - */\n\ -snippet @au\n\ - @author `system(\"grep \\`id -un\\` /etc/passwd | cut -d \\\":\\\" -f5 | cut -d \\\",\\\" -f1\")`\n\ -snippet @br\n\ - @brief ${1:Description}\n\ -snippet @fi\n\ - @file ${1:`Filename()`}.java\n\ -snippet @pa\n\ - @param ${1:param}\n\ -snippet @re\n\ - @return ${1:param}\n\ -##\n\ -## Logger Methods\n\ -snippet debug\n\ - Logger.debug(${1:param});${2}\n\ -snippet error\n\ - Logger.error(${1:param});${2}\n\ -snippet info\n\ - Logger.info(${1:param});${2}\n\ -snippet warn\n\ - Logger.warn(${1:param});${2}\n\ -##\n\ -## Loops\n\ -snippet enfor\n\ - for (${1} : ${2}) ${3}\n\ -snippet for\n\ - for (${1}; ${2}; ${3}) ${4}\n\ -snippet wh\n\ - while (${1}) ${2}\n\ -##\n\ -## Main method\n\ -snippet main\n\ - public static void main (String[] args) {\n\ - ${1:/* code */}\n\ - }\n\ -##\n\ -## Print Methods\n\ -snippet print\n\ - System.out.print(\"${1:Message}\");\n\ -snippet printf\n\ - System.out.printf(\"${1:Message}\", ${2:args});\n\ -snippet println\n\ - System.out.println(${1});\n\ -##\n\ -## Render Methods\n\ -snippet ren\n\ - render(${1:param});${2}\n\ -snippet rena\n\ - renderArgs.put(\"${1}\", ${2});${3}\n\ -snippet renb\n\ - renderBinary(${1:param});${2}\n\ -snippet renj\n\ - renderJSON(${1:param});${2}\n\ -snippet renx\n\ - renderXml(${1:param});${2}\n\ -##\n\ -## Setter and Getter Methods\n\ -snippet set\n\ - ${1:public} void set${3:}(${2:String} ${4:}){\n\ - this.$4 = $4;\n\ - }\n\ -snippet get\n\ - ${1:public} ${2:String} get${3:}(){\n\ - return this.${4:};\n\ - }\n\ -##\n\ -## Terminate Methods or Loops\n\ -snippet re\n\ - return\n\ -snippet br\n\ - break;\n\ -##\n\ -## Test Methods\n\ -snippet t\n\ - public void test${1:Name}() throws Exception {\n\ - ${2}\n\ - }\n\ -snippet test\n\ - @Test\n\ - public void test${1:Name}() throws Exception {\n\ - ${2}\n\ - }\n\ -##\n\ -## Utils\n\ -snippet Sc\n\ - Scanner\n\ -##\n\ -## Miscellaneous\n\ -snippet action\n\ - public static void ${1:index}(${2:args}) { ${3} }\n\ -snippet rnf\n\ - notFound(${1:param});${2}\n\ -snippet rnfin\n\ - notFoundIfNull(${1:param});${2}\n\ -snippet rr\n\ - redirect(${1:param});${2}\n\ -snippet ru\n\ - unauthorized(${1:param});${2}\n\ -snippet unless\n\ - (unless=${1:param});${2}\n\ -"; -exports.scope = "java"; +define("ace/snippets/java.snippets",["require","exports","module"], function(require, exports, module){module.exports = "## Access Modifiers\nsnippet po\n\tprotected\nsnippet pu\n\tpublic\nsnippet pr\n\tprivate\n##\n## Annotations\nsnippet before\n\t@Before\n\tstatic void ${1:intercept}(${2:args}) { ${3} }\nsnippet mm\n\t@ManyToMany\n\t${1}\nsnippet mo\n\t@ManyToOne\n\t${1}\nsnippet om\n\t@OneToMany${1:(cascade=CascadeType.ALL)}\n\t${2}\nsnippet oo\n\t@OneToOne\n\t${1}\n##\n## Basic Java packages and import\nsnippet im\n\timport\nsnippet j.b\n\tjava.beans.\nsnippet j.i\n\tjava.io.\nsnippet j.m\n\tjava.math.\nsnippet j.n\n\tjava.net.\nsnippet j.u\n\tjava.util.\n##\n## Class\nsnippet cl\n\tclass ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet in\n\tinterface ${1:`Filename(\"\", \"untitled\")`} ${2:extends Parent}${3}\nsnippet tc\n\tpublic class ${1:`Filename()`} extends ${2:TestCase}\n##\n## Class Enhancements\nsnippet ext\n\textends \nsnippet imp\n\timplements\n##\n## Comments\nsnippet /*\n\t/*\n\t * ${1}\n\t */\n##\n## Constants\nsnippet co\n\tstatic public final ${1:String} ${2:var} = ${3};${4}\nsnippet cos\n\tstatic public final String ${1:var} = \"${2}\";${3}\n##\n## Control Statements\nsnippet case\n\tcase ${1}:\n\t\t${2}\nsnippet def\n\tdefault:\n\t\t${2}\nsnippet el\n\telse\nsnippet elif\n\telse if (${1}) ${2}\nsnippet if\n\tif (${1}) ${2}\nsnippet sw\n\tswitch (${1}) {\n\t\t${2}\n\t}\n##\n## Create a Method\nsnippet m\n\t${1:void} ${2:method}(${3}) ${4:throws }${5}\n##\n## Create a Variable\nsnippet v\n\t${1:String} ${2:var}${3: = null}${4};${5}\n##\n## Enhancements to Methods, variables, classes, etc.\nsnippet ab\n\tabstract\nsnippet fi\n\tfinal\nsnippet st\n\tstatic\nsnippet sy\n\tsynchronized\n##\n## Error Methods\nsnippet err\n\tSystem.err.print(\"${1:Message}\");\nsnippet errf\n\tSystem.err.printf(\"${1:Message}\", ${2:exception});\nsnippet errln\n\tSystem.err.println(\"${1:Message}\");\n##\n## Exception Handling\nsnippet as\n\tassert ${1:test} : \"${2:Failure message}\";${3}\nsnippet ca\n\tcatch(${1:Exception} ${2:e}) ${3}\nsnippet thr\n\tthrow\nsnippet ths\n\tthrows\nsnippet try\n\ttry {\n\t\t${3}\n\t} catch(${1:Exception} ${2:e}) {\n\t}\nsnippet tryf\n\ttry {\n\t\t${3}\n\t} catch(${1:Exception} ${2:e}) {\n\t} finally {\n\t}\n##\n## Find Methods\nsnippet findall\n\tList<${1:listName}> ${2:items} = ${1}.findAll();${3}\nsnippet findbyid\n\t${1:var} ${2:item} = ${1}.findById(${3});${4}\n##\n## Javadocs\nsnippet /**\n\t/**\n\t * ${1}\n\t */\nsnippet @au\n\t@author `system(\"grep \\`id -un\\` /etc/passwd | cut -d \\\":\\\" -f5 | cut -d \\\",\\\" -f1\")`\nsnippet @br\n\t@brief ${1:Description}\nsnippet @fi\n\t@file ${1:`Filename()`}.java\nsnippet @pa\n\t@param ${1:param}\nsnippet @re\n\t@return ${1:param}\n##\n## Logger Methods\nsnippet debug\n\tLogger.debug(${1:param});${2}\nsnippet error\n\tLogger.error(${1:param});${2}\nsnippet info\n\tLogger.info(${1:param});${2}\nsnippet warn\n\tLogger.warn(${1:param});${2}\n##\n## Loops\nsnippet enfor\n\tfor (${1} : ${2}) ${3}\nsnippet for\n\tfor (${1}; ${2}; ${3}) ${4}\nsnippet wh\n\twhile (${1}) ${2}\n##\n## Main method\nsnippet main\n\tpublic static void main (String[] args) {\n\t\t${1:/* code */}\n\t}\n##\n## Print Methods\nsnippet print\n\tSystem.out.print(\"${1:Message}\");\nsnippet printf\n\tSystem.out.printf(\"${1:Message}\", ${2:args});\nsnippet println\n\tSystem.out.println(${1});\n##\n## Render Methods\nsnippet ren\n\trender(${1:param});${2}\nsnippet rena\n\trenderArgs.put(\"${1}\", ${2});${3}\nsnippet renb\n\trenderBinary(${1:param});${2}\nsnippet renj\n\trenderJSON(${1:param});${2}\nsnippet renx\n\trenderXml(${1:param});${2}\n##\n## Setter and Getter Methods\nsnippet set\n\t${1:public} void set${3:}(${2:String} ${4:}){\n\t\tthis.$4 = $4;\n\t}\nsnippet get\n\t${1:public} ${2:String} get${3:}(){\n\t\treturn this.${4:};\n\t}\n##\n## Terminate Methods or Loops\nsnippet re\n\treturn\nsnippet br\n\tbreak;\n##\n## Test Methods\nsnippet t\n\tpublic void test${1:Name}() throws Exception {\n\t\t${2}\n\t}\nsnippet test\n\t@Test\n\tpublic void test${1:Name}() throws Exception {\n\t\t${2}\n\t}\n##\n## Utils\nsnippet Sc\n\tScanner\n##\n## Miscellaneous\nsnippet action\n\tpublic static void ${1:index}(${2:args}) { ${3} }\nsnippet rnf\n\tnotFound(${1:param});${2}\nsnippet rnfin\n\tnotFoundIfNull(${1:param});${2}\nsnippet rr\n\tredirect(${1:param});${2}\nsnippet ru\n\tunauthorized(${1:param});${2}\nsnippet unless\n\t(unless=${1:param});${2}\n"; }); + +define("ace/snippets/java",["require","exports","module","ace/snippets/java.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./java.snippets"); +exports.scope = "java"; + +}); (function() { + window.require(["ace/snippets/java"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/javascript.js b/vendor/assets/javascripts/ace/snippets/javascript.js index 01355e16..bdc7d83d 100644 --- a/vendor/assets/javascripts/ace/snippets/javascript.js +++ b/vendor/assets/javascripts/ace/snippets/javascript.js @@ -1,202 +1,16 @@ -define("ace/snippets/javascript",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Prototype\n\ -snippet proto\n\ - ${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n\ - ${4:// body...}\n\ - };\n\ -# Function\n\ -snippet fun\n\ - function ${1?:function_name}(${2:argument}) {\n\ - ${3:// body...}\n\ - }\n\ -# Anonymous Function\n\ -regex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\n\ -snippet f\n\ - function${M1?: ${1:functionName}}($2) {\n\ - ${0:$TM_SELECTED_TEXT}\n\ - }${M2?;}${M3?,}${M4?)}\n\ -# Immediate function\n\ -trigger \\(?f\\(\n\ -endTrigger \\)?\n\ -snippet f(\n\ - (function(${1}) {\n\ - ${0:${TM_SELECTED_TEXT:/* code */}}\n\ - }(${1}));\n\ -# if\n\ -snippet if\n\ - if (${1:true}) {\n\ - ${0}\n\ - }\n\ -# if ... else\n\ -snippet ife\n\ - if (${1:true}) {\n\ - ${2}\n\ - } else {\n\ - ${0}\n\ - }\n\ -# tertiary conditional\n\ -snippet ter\n\ - ${1:/* condition */} ? ${2:a} : ${3:b}\n\ -# switch\n\ -snippet switch\n\ - switch (${1:expression}) {\n\ - case '${3:case}':\n\ - ${4:// code}\n\ - break;\n\ - ${5}\n\ - default:\n\ - ${2:// code}\n\ - }\n\ -# case\n\ -snippet case\n\ - case '${1:case}':\n\ - ${2:// code}\n\ - break;\n\ - ${3}\n\ -\n\ -# while (...) {...}\n\ -snippet wh\n\ - while (${1:/* condition */}) {\n\ - ${0:/* code */}\n\ - }\n\ -# try\n\ -snippet try\n\ - try {\n\ - ${0:/* code */}\n\ - } catch (e) {}\n\ -# do...while\n\ -snippet do\n\ - do {\n\ - ${2:/* code */}\n\ - } while (${1:/* condition */});\n\ -# Object Method\n\ -snippet :f\n\ -regex /([,{[])|^\\s*/:f/\n\ - ${1:method_name}: function(${2:attribute}) {\n\ - ${0}\n\ - }${3:,}\n\ -# setTimeout function\n\ -snippet setTimeout\n\ -regex /\\b/st|timeout|setTimeo?u?t?/\n\ - setTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n\ -# Get Elements\n\ -snippet gett\n\ - getElementsBy${1:TagName}('${2}')${3}\n\ -# Get Element\n\ -snippet get\n\ - getElementBy${1:Id}('${2}')${3}\n\ -# console.log (Firebug)\n\ -snippet cl\n\ - console.log(${1});\n\ -# return\n\ -snippet ret\n\ - return ${1:result}\n\ -# for (property in object ) { ... }\n\ -snippet fori\n\ - for (var ${1:prop} in ${2:Things}) {\n\ - ${0:$2[$1]}\n\ - }\n\ -# hasOwnProperty\n\ -snippet has\n\ - hasOwnProperty(${1})\n\ -# docstring\n\ -snippet /**\n\ - /**\n\ - * ${1:description}\n\ - *\n\ - */\n\ -snippet @par\n\ -regex /^\\s*\\*\\s*/@(para?m?)?/\n\ - @param {${1:type}} ${2:name} ${3:description}\n\ -snippet @ret\n\ - @return {${1:type}} ${2:description}\n\ -# JSON.parse\n\ -snippet jsonp\n\ - JSON.parse(${1:jstr});\n\ -# JSON.stringify\n\ -snippet jsons\n\ - JSON.stringify(${1:object});\n\ -# self-defining function\n\ -snippet sdf\n\ - var ${1:function_name} = function(${2:argument}) {\n\ - ${3:// initial code ...}\n\ -\n\ - $1 = function($2) {\n\ - ${4:// main code}\n\ - };\n\ - }\n\ -# singleton\n\ -snippet sing\n\ - function ${1:Singleton} (${2:argument}) {\n\ - // the cached instance\n\ - var instance;\n\ -\n\ - // rewrite the constructor\n\ - $1 = function $1($2) {\n\ - return instance;\n\ - };\n\ - \n\ - // carry over the prototype properties\n\ - $1.prototype = this;\n\ -\n\ - // the instance\n\ - instance = new $1();\n\ -\n\ - // reset the constructor pointer\n\ - instance.constructor = $1;\n\ -\n\ - ${3:// code ...}\n\ -\n\ - return instance;\n\ - }\n\ -# class\n\ -snippet class\n\ -regex /^\\s*/clas{0,2}/\n\ - var ${1:class} = function(${20}) {\n\ - $40$0\n\ - };\n\ - \n\ - (function() {\n\ - ${60:this.prop = \"\"}\n\ - }).call(${1:class}.prototype);\n\ - \n\ - exports.${1:class} = ${1:class};\n\ -# \n\ -snippet for-\n\ - for (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n\ - ${0:${2:Things}[${1:i}];}\n\ - }\n\ -# for (...) {...}\n\ -snippet for\n\ - for (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n\ - ${3:$2[$1]}$0\n\ - }\n\ -# for (...) {...} (Improved Native For-Loop)\n\ -snippet forr\n\ - for (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n\ - ${3:$2[$1]}$0\n\ - }\n\ -\n\ -\n\ -#modules\n\ -snippet def\n\ - define(function(require, exports, module) {\n\ - \"use strict\";\n\ - var ${1/.*\\///} = require(\"${1}\");\n\ - \n\ - $TM_SELECTED_TEXT\n\ - });\n\ -snippet req\n\ -guard ^\\s*\n\ - var ${1/.*\\///} = require(\"${1}\");\n\ - $0\n\ -snippet requ\n\ -guard ^\\s*\n\ - var ${1/.*\\/(.)/\\u$1/} = require(\"${1}\").${1/.*\\/(.)/\\u$1/};\n\ - $0\n\ -"; -exports.scope = "javascript"; +define("ace/snippets/javascript.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Prototype\nsnippet proto\n\t${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) {\n\t\t${4:// body...}\n\t};\n# Function\nsnippet fun\n\tfunction ${1?:function_name}(${2:argument}) {\n\t\t${3:// body...}\n\t}\n# Anonymous Function\nregex /((=)\\s*|(:)\\s*|(\\()|\\b)/f/(\\))?/\nsnippet f\n\tfunction${M1?: ${1:functionName}}($2) {\n\t\t${0:$TM_SELECTED_TEXT}\n\t}${M2?;}${M3?,}${M4?)}\n# Immediate function\ntrigger \\(?f\\(\nendTrigger \\)?\nsnippet f(\n\t(function(${1}) {\n\t\t${0:${TM_SELECTED_TEXT:/* code */}}\n\t}(${1}));\n# if\nsnippet if\n\tif (${1:true}) {\n\t\t${0}\n\t}\n# if ... else\nsnippet ife\n\tif (${1:true}) {\n\t\t${2}\n\t} else {\n\t\t${0}\n\t}\n# tertiary conditional\nsnippet ter\n\t${1:/* condition */} ? ${2:a} : ${3:b}\n# switch\nsnippet switch\n\tswitch (${1:expression}) {\n\t\tcase '${3:case}':\n\t\t\t${4:// code}\n\t\t\tbreak;\n\t\t${5}\n\t\tdefault:\n\t\t\t${2:// code}\n\t}\n# case\nsnippet case\n\tcase '${1:case}':\n\t\t${2:// code}\n\t\tbreak;\n\t${3}\n\n# while (...) {...}\nsnippet wh\n\twhile (${1:/* condition */}) {\n\t\t${0:/* code */}\n\t}\n# try\nsnippet try\n\ttry {\n\t\t${0:/* code */}\n\t} catch (e) {}\n# do...while\nsnippet do\n\tdo {\n\t\t${2:/* code */}\n\t} while (${1:/* condition */});\n# Object Method\nsnippet :f\nregex /([,{[])|^\\s*/:f/\n\t${1:method_name}: function(${2:attribute}) {\n\t\t${0}\n\t}${3:,}\n# setTimeout function\nsnippet setTimeout\nregex /\\b/st|timeout|setTimeo?u?t?/\n\tsetTimeout(function() {${3:$TM_SELECTED_TEXT}}, ${1:10});\n# Get Elements\nsnippet gett\n\tgetElementsBy${1:TagName}('${2}')${3}\n# Get Element\nsnippet get\n\tgetElementBy${1:Id}('${2}')${3}\n# console.log (Firebug)\nsnippet cl\n\tconsole.log(${1});\n# return\nsnippet ret\n\treturn ${1:result}\n# for (property in object ) { ... }\nsnippet fori\n\tfor (var ${1:prop} in ${2:Things}) {\n\t\t${0:$2[$1]}\n\t}\n# hasOwnProperty\nsnippet has\n\thasOwnProperty(${1})\n# docstring\nsnippet /**\n\t/**\n\t * ${1:description}\n\t *\n\t */\nsnippet @par\nregex /^\\s*\\*\\s*/@(para?m?)?/\n\t@param {${1:type}} ${2:name} ${3:description}\nsnippet @ret\n\t@return {${1:type}} ${2:description}\n# JSON.parse\nsnippet jsonp\n\tJSON.parse(${1:jstr});\n# JSON.stringify\nsnippet jsons\n\tJSON.stringify(${1:object});\n# self-defining function\nsnippet sdf\n\tvar ${1:function_name} = function(${2:argument}) {\n\t\t${3:// initial code ...}\n\n\t\t$1 = function($2) {\n\t\t\t${4:// main code}\n\t\t};\n\t}\n# singleton\nsnippet sing\n\tfunction ${1:Singleton} (${2:argument}) {\n\t\t// the cached instance\n\t\tvar instance;\n\n\t\t// rewrite the constructor\n\t\t$1 = function $1($2) {\n\t\t\treturn instance;\n\t\t};\n\t\t\n\t\t// carry over the prototype properties\n\t\t$1.prototype = this;\n\n\t\t// the instance\n\t\tinstance = new $1();\n\n\t\t// reset the constructor pointer\n\t\tinstance.constructor = $1;\n\n\t\t${3:// code ...}\n\n\t\treturn instance;\n\t}\n# class\nsnippet class\nregex /^\\s*/clas{0,2}/\n\tvar ${1:class} = function(${20}) {\n\t\t$40$0\n\t};\n\t\n\t(function() {\n\t\t${60:this.prop = \"\"}\n\t}).call(${1:class}.prototype);\n\t\n\texports.${1:class} = ${1:class};\n# \nsnippet for-\n\tfor (var ${1:i} = ${2:Things}.length; ${1:i}--; ) {\n\t\t${0:${2:Things}[${1:i}];}\n\t}\n# for (...) {...}\nsnippet for\n\tfor (var ${1:i} = 0; $1 < ${2:Things}.length; $1++) {\n\t\t${3:$2[$1]}$0\n\t}\n# for (...) {...} (Improved Native For-Loop)\nsnippet forr\n\tfor (var ${1:i} = ${2:Things}.length - 1; $1 >= 0; $1--) {\n\t\t${3:$2[$1]}$0\n\t}\n\n\n#modules\nsnippet def\n\tdefine(function(require, exports, module) {\n\t\"use strict\";\n\tvar ${1/.*\\///} = require(\"${1}\");\n\t\n\t$TM_SELECTED_TEXT\n\t});\nsnippet req\nguard ^\\s*\n\tvar ${1/.*\\///} = require(\"${1}\");\n\t$0\nsnippet requ\nguard ^\\s*\n\tvar ${1/.*\\/(.)/\\u$1/} = require(\"${1}\").${1/.*\\/(.)/\\u$1/};\n\t$0\n"; }); + +define("ace/snippets/javascript",["require","exports","module","ace/snippets/javascript.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./javascript.snippets"); +exports.scope = "javascript"; + +}); (function() { + window.require(["ace/snippets/javascript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/jexl.js b/vendor/assets/javascripts/ace/snippets/jexl.js new file mode 100644 index 00000000..7593cd85 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/jexl.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/jexl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/json.js b/vendor/assets/javascripts/ace/snippets/json.js index 88a63c16..f1c015c4 100644 --- a/vendor/assets/javascripts/ace/snippets/json.js +++ b/vendor/assets/javascripts/ace/snippets/json.js @@ -1,7 +1,9 @@ -define("ace/snippets/json",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "json"; - -}); +; (function() { + window.require(["ace/snippets/json"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/json5.js b/vendor/assets/javascripts/ace/snippets/json5.js new file mode 100644 index 00000000..4ae9f4b7 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/json5.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/json5"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/jsoniq.js b/vendor/assets/javascripts/ace/snippets/jsoniq.js index 7b036696..edee708e 100644 --- a/vendor/assets/javascripts/ace/snippets/jsoniq.js +++ b/vendor/assets/javascripts/ace/snippets/jsoniq.js @@ -1,68 +1,78 @@ -define("ace/snippets/jsoniq",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet for\n\ - for $${1:item} in ${2:expr}\n\ +define("ace/snippets/jsoniq.snippets",["require","exports","module"], function(require, exports, module) {module.exports = 'snippet for\n\ + for \$\${1:item} in \${2:expr}\n\ snippet return\n\ - return ${1:expr}\n\ + return \${1:expr}\n\ snippet import\n\ - import module namespace ${1:ns} = \"${2:http://www.example.com/}\";\n\ + import module namespace \${1:ns} = "\${2:http://www.example.com/}";\n\ snippet some\n\ - some $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ + some \$\${1:varname} in \${2:expr} satisfies \${3:expr}\n\ snippet every\n\ - every $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ + every \$\${1:varname} in \${2:expr} satisfies \${3:expr}\n\ snippet if\n\ - if(${1:true}) then ${2:expr} else ${3:true}\n\ + if(\${1:true}) then \${2:expr} else \${3:true}\n\ snippet switch\n\ - switch(${1:\"foo\"})\n\ - case ${2:\"foo\"}\n\ - return ${3:true}\n\ - default return ${4:false}\n\ + switch(\${1:"foo"})\n\ + case \${2:"foo"}\n\ + return \${3:true}\n\ + default return \${4:false}\n\ snippet try\n\ - try { ${1:expr} } catch ${2:*} { ${3:expr} }\n\ + try { \${1:expr} } catch \${2:*} { \${3:expr} }\n\ snippet tumbling\n\ - for tumbling window $${1:varname} in ${2:expr}\n\ - start at $${3:start} when ${4:expr}\n\ - end at $${5:end} when ${6:expr}\n\ - return ${7:expr}\n\ + for tumbling window \$\${1:varname} in \${2:expr}\n\ + start at \$\${3:start} when \${4:expr}\n\ + end at \$\${5:end} when \${6:expr}\n\ + return \${7:expr}\n\ snippet sliding\n\ - for sliding window $${1:varname} in ${2:expr}\n\ - start at $${3:start} when ${4:expr}\n\ - end at $${5:end} when ${6:expr}\n\ - return ${7:expr}\n\ + for sliding window \$\${1:varname} in \${2:expr}\n\ + start at \$\${3:start} when \${4:expr}\n\ + end at \$\${5:end} when \${6:expr}\n\ + return \${7:expr}\n\ snippet let\n\ - let $${1:varname} := ${2:expr}\n\ + let \$\${1:varname} := \${2:expr}\n\ snippet group\n\ - group by $${1:varname} := ${2:expr}\n\ + group by \$\${1:varname} := \${2:expr}\n\ snippet order\n\ - order by ${1:expr} ${2:descending}\n\ + order by \${1:expr} \${2:descending}\n\ snippet stable\n\ - stable order by ${1:expr}\n\ + stable order by \${1:expr}\n\ snippet count\n\ - count $${1:varname}\n\ + count \$\${1:varname}\n\ snippet ordered\n\ - ordered { ${1:expr} }\n\ + ordered { \${1:expr} }\n\ snippet unordered\n\ - unordered { ${1:expr} }\n\ + unordered { \${1:expr} }\n\ snippet treat \n\ - treat as ${1:expr}\n\ + treat as \${1:expr}\n\ snippet castable\n\ - castable as ${1:atomicType}\n\ + castable as \${1:atomicType}\n\ snippet cast\n\ - cast as ${1:atomicType}\n\ + cast as \${1:atomicType}\n\ snippet typeswitch\n\ - typeswitch(${1:expr})\n\ - case ${2:type} return ${3:expr}\n\ - default return ${4:expr}\n\ + typeswitch(\${1:expr})\n\ + case \${2:type} return \${3:expr}\n\ + default return \${4:expr}\n\ snippet var\n\ - declare variable $${1:varname} := ${2:expr};\n\ + declare variable \$\${1:varname} := \${2:expr};\n\ snippet fn\n\ - declare function ${1:ns}:${2:name}(){\n\ - ${3:expr}\n\ + declare function \${1:ns}:\${2:name}(){\n\ + \${3:expr}\n\ };\n\ snippet module\n\ - module namespace ${1:ns} = \"${2:http://www.example.com}\";\n\ -"; -exports.scope = "jsoniq"; + module namespace \${1:ns} = "\${2:http://www.example.com}";\n\ +'; }); + +define("ace/snippets/jsoniq",["require","exports","module","ace/snippets/jsoniq.snippets"], function(require, exports, module) {"use strict"; + +exports.snippetText = require("./jsoniq.snippets"); +exports.scope = "jsoniq"; + +}); (function() { + window.require(["ace/snippets/jsoniq"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/jsp.js b/vendor/assets/javascripts/ace/snippets/jsp.js index 2aff1564..9f9cebe4 100644 --- a/vendor/assets/javascripts/ace/snippets/jsp.js +++ b/vendor/assets/javascripts/ace/snippets/jsp.js @@ -1,106 +1,16 @@ -define("ace/snippets/jsp",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet @page\n\ - <%@page contentType=\"text/html\" pageEncoding=\"UTF-8\"%>\n\ -snippet jstl\n\ - <%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n\ - <%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\n\ -snippet jstl:c\n\ - <%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n\ -snippet jstl:fn\n\ - <%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\n\ -snippet cpath\n\ - ${pageContext.request.contextPath}\n\ -snippet cout\n\ - \n\ -snippet cset\n\ - \n\ -snippet cremove\n\ - \n\ -snippet ccatch\n\ - \n\ -snippet cif\n\ - \n\ - ${2}\n\ - \n\ -snippet cchoose\n\ - \n\ - ${1}\n\ - \n\ -snippet cwhen\n\ - \n\ - ${2}\n\ - \n\ -snippet cother\n\ - \n\ - ${1}\n\ - \n\ -snippet cfore\n\ - \n\ - ${4:}\n\ - \n\ -snippet cfort\n\ - ${2:item1,item2,item3}\n\ - \n\ - ${5:}\n\ - \n\ -snippet cparam\n\ - \n\ -snippet cparam+\n\ - \n\ - cparam+${3}\n\ -snippet cimport\n\ - \n\ -snippet cimport+\n\ - \n\ - \n\ - cparam+${4}\n\ - \n\ -snippet curl\n\ - \n\ - ${3}\n\ -snippet curl+\n\ - \n\ - \n\ - cparam+${6}\n\ - \n\ - ${3}\n\ -snippet credirect\n\ - \n\ -snippet contains\n\ - ${fn:contains(${1:string}, ${2:substr})}\n\ -snippet contains:i\n\ - ${fn:containsIgnoreCase(${1:string}, ${2:substr})}\n\ -snippet endswith\n\ - ${fn:endsWith(${1:string}, ${2:suffix})}\n\ -snippet escape\n\ - ${fn:escapeXml(${1:string})}\n\ -snippet indexof\n\ - ${fn:indexOf(${1:string}, ${2:substr})}\n\ -snippet join\n\ - ${fn:join(${1:collection}, ${2:delims})}\n\ -snippet length\n\ - ${fn:length(${1:collection_or_string})}\n\ -snippet replace\n\ - ${fn:replace(${1:string}, ${2:substr}, ${3:replace})}\n\ -snippet split\n\ - ${fn:split(${1:string}, ${2:delims})}\n\ -snippet startswith\n\ - ${fn:startsWith(${1:string}, ${2:prefix})}\n\ -snippet substr\n\ - ${fn:substring(${1:string}, ${2:begin}, ${3:end})}\n\ -snippet substr:a\n\ - ${fn:substringAfter(${1:string}, ${2:substr})}\n\ -snippet substr:b\n\ - ${fn:substringBefore(${1:string}, ${2:substr})}\n\ -snippet lc\n\ - ${fn:toLowerCase(${1:string})}\n\ -snippet uc\n\ - ${fn:toUpperCase(${1:string})}\n\ -snippet trim\n\ - ${fn:trim(${1:string})}\n\ -"; -exports.scope = "jsp"; +define("ace/snippets/jsp.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet @page\n\t<%@page contentType=\"text/html\" pageEncoding=\"UTF-8\"%>\nsnippet jstl\n\t<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n\t<%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\nsnippet jstl:c\n\t<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\nsnippet jstl:fn\n\t<%@ taglib uri=\"http://java.sun.com/jsp/jstl/functions\" prefix=\"fn\" %>\nsnippet cpath\n\t${pageContext.request.contextPath}\nsnippet cout\n\t\nsnippet cset\n\t\nsnippet cremove\n\t\nsnippet ccatch\n\t\nsnippet cif\n\t\n\t\t${2}\n\t\nsnippet cchoose\n\t\n\t\t${1}\n\t\nsnippet cwhen\n\t\n\t\t${2}\n\t\nsnippet cother\n\t\n\t\t${1}\n\t\nsnippet cfore\n\t\n\t\t${4:}\n\t\nsnippet cfort\n\t${2:item1,item2,item3}\n\t\n\t\t${5:}\n\t\nsnippet cparam\n\t\nsnippet cparam+\n\t\n\tcparam+${3}\nsnippet cimport\n\t\nsnippet cimport+\n\t\n\t\t\n\t\tcparam+${4}\n\t\nsnippet curl\n\t\n\t${3}\nsnippet curl+\n\t\n\t\t\n\t\tcparam+${6}\n\t\n\t${3}\nsnippet credirect\n\t\nsnippet contains\n\t${fn:contains(${1:string}, ${2:substr})}\nsnippet contains:i\n\t${fn:containsIgnoreCase(${1:string}, ${2:substr})}\nsnippet endswith\n\t${fn:endsWith(${1:string}, ${2:suffix})}\nsnippet escape\n\t${fn:escapeXml(${1:string})}\nsnippet indexof\n\t${fn:indexOf(${1:string}, ${2:substr})}\nsnippet join\n\t${fn:join(${1:collection}, ${2:delims})}\nsnippet length\n\t${fn:length(${1:collection_or_string})}\nsnippet replace\n\t${fn:replace(${1:string}, ${2:substr}, ${3:replace})}\nsnippet split\n\t${fn:split(${1:string}, ${2:delims})}\nsnippet startswith\n\t${fn:startsWith(${1:string}, ${2:prefix})}\nsnippet substr\n\t${fn:substring(${1:string}, ${2:begin}, ${3:end})}\nsnippet substr:a\n\t${fn:substringAfter(${1:string}, ${2:substr})}\nsnippet substr:b\n\t${fn:substringBefore(${1:string}, ${2:substr})}\nsnippet lc\n\t${fn:toLowerCase(${1:string})}\nsnippet uc\n\t${fn:toUpperCase(${1:string})}\nsnippet trim\n\t${fn:trim(${1:string})}\n"; }); + +define("ace/snippets/jsp",["require","exports","module","ace/snippets/jsp.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./jsp.snippets"); +exports.scope = "jsp"; + +}); (function() { + window.require(["ace/snippets/jsp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/jssm.js b/vendor/assets/javascripts/ace/snippets/jssm.js index a8be36ed..2fcea71c 100644 --- a/vendor/assets/javascripts/ace/snippets/jssm.js +++ b/vendor/assets/javascripts/ace/snippets/jssm.js @@ -1,7 +1,9 @@ -define("ace/snippets/jssm",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = ""; - -}); +; (function() { + window.require(["ace/snippets/jssm"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/jsx.js b/vendor/assets/javascripts/ace/snippets/jsx.js index 5e9957da..b26a3586 100644 --- a/vendor/assets/javascripts/ace/snippets/jsx.js +++ b/vendor/assets/javascripts/ace/snippets/jsx.js @@ -1,7 +1,9 @@ -define("ace/snippets/jsx",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "jsx"; - -}); +; (function() { + window.require(["ace/snippets/jsx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/julia.js b/vendor/assets/javascripts/ace/snippets/julia.js index 17a6554e..30a74650 100644 --- a/vendor/assets/javascripts/ace/snippets/julia.js +++ b/vendor/assets/javascripts/ace/snippets/julia.js @@ -1,7 +1,9 @@ -define("ace/snippets/julia",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "julia"; - -}); +; (function() { + window.require(["ace/snippets/julia"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/kotlin.js b/vendor/assets/javascripts/ace/snippets/kotlin.js index e40b6bae..c9e543c7 100644 --- a/vendor/assets/javascripts/ace/snippets/kotlin.js +++ b/vendor/assets/javascripts/ace/snippets/kotlin.js @@ -1,7 +1,9 @@ -define("ace/snippets/kotlin",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = ""; - -}); +; (function() { + window.require(["ace/snippets/kotlin"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/latex.js b/vendor/assets/javascripts/ace/snippets/latex.js index 5e152b31..711a30b7 100644 --- a/vendor/assets/javascripts/ace/snippets/latex.js +++ b/vendor/assets/javascripts/ace/snippets/latex.js @@ -1,7 +1,9 @@ -define("ace/snippets/latex",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "latex"; - -}); +; (function() { + window.require(["ace/snippets/latex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/latte.js b/vendor/assets/javascripts/ace/snippets/latte.js new file mode 100644 index 00000000..d5c341ce --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/latte.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/latte"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/lean.js b/vendor/assets/javascripts/ace/snippets/lean.js deleted file mode 100644 index 21eec75f..00000000 --- a/vendor/assets/javascripts/ace/snippets/lean.js +++ /dev/null @@ -1,7 +0,0 @@ -define("ace/snippets/lean",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText =undefined; -exports.scope = "lean"; - -}); diff --git a/vendor/assets/javascripts/ace/snippets/less.js b/vendor/assets/javascripts/ace/snippets/less.js index af4ce7ca..2b4c6b3b 100644 --- a/vendor/assets/javascripts/ace/snippets/less.js +++ b/vendor/assets/javascripts/ace/snippets/less.js @@ -1,7 +1,9 @@ -define("ace/snippets/less",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "less"; - -}); +; (function() { + window.require(["ace/snippets/less"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/liquid.js b/vendor/assets/javascripts/ace/snippets/liquid.js index a86117c2..e7f11f74 100644 --- a/vendor/assets/javascripts/ace/snippets/liquid.js +++ b/vendor/assets/javascripts/ace/snippets/liquid.js @@ -1,7 +1,16 @@ -define("ace/snippets/liquid",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText =undefined; -exports.scope = "liquid"; +define("ace/snippets/liquid.snippets",["require","exports","module"], function(require, exports, module){module.exports = "\n# liquid specific snippets\nsnippet ife\n\t{% if ${1:condition} %}\n\n\t{% else %}\n\n\t{% endif %}\nsnippet if\n\t{% if ${1:condition} %}\n\t\t\n\t{% endif %}\nsnippet for\n\t{% for in ${1:iterator} %}\n\n\t{% endfor %}\nsnippet capture\n\t{% capture ${1} %}\n\n\t{% endcapture %}\nsnippet comment\n\t{% comment %}\n\t ${1:comment}\n\t{% endcomment %}\n\n# Include html.snippets\n# Some useful Unicode entities\n# Non-Breaking Space\nsnippet nbs\n\t \n# \u2190\nsnippet left\n\t←\n# \u2192\nsnippet right\n\t→\n# \u2191\nsnippet up\n\t↑\n# \u2193\nsnippet down\n\t↓\n# \u21A9\nsnippet return\n\t↩\n# \u21E4\nsnippet backtab\n\t⇤\n# \u21E5\nsnippet tab\n\t⇥\n# \u21E7\nsnippet shift\n\t⇧\n# \u2303\nsnippet ctrl\n\t⌃\n# \u2305\nsnippet enter\n\t⌅\n# \u2318\nsnippet cmd\n\t⌘\n# \u2325\nsnippet option\n\t⌥\n# \u2326\nsnippet delete\n\t⌦\n# \u232B\nsnippet backspace\n\t⌫\n# \u238B\nsnippet esc\n\t⎋\n# Generic Doctype\nsnippet doctype HTML 4.01 Strict\n\t\nsnippet doctype HTML 4.01 Transitional\n\t\nsnippet doctype HTML 5\n\t\nsnippet doctype XHTML 1.0 Frameset\n\t\nsnippet doctype XHTML 1.0 Strict\n\t\nsnippet doctype XHTML 1.0 Transitional\n\t\nsnippet doctype XHTML 1.1\n\t\n# HTML Doctype 4.01 Strict\nsnippet docts\n\t\n# HTML Doctype 4.01 Transitional\nsnippet doct\n\t\n# HTML Doctype 5\nsnippet doct5\n\t\n# XHTML Doctype 1.0 Frameset\nsnippet docxf\n\t\n# XHTML Doctype 1.0 Strict\nsnippet docxs\n\t\n# XHTML Doctype 1.0 Transitional\nsnippet docxt\n\t\n# XHTML Doctype 1.1\nsnippet docx\n\t\n# html5shiv\nsnippet html5shiv\n\t\nsnippet html5printshiv\n\t\n# Attributes\nsnippet attr\n\t${1:attribute}=\"${2:property}\"\nsnippet attr+\n\t${1:attribute}=\"${2:property}\" attr+${3}\nsnippet .\n\tclass=\"${1}\"${2}\nsnippet #\n\tid=\"${1}\"${2}\nsnippet alt\n\talt=\"${1}\"${2}\nsnippet charset\n\tcharset=\"${1:utf-8}\"${2}\nsnippet data\n\tdata-${1}=\"${2:$1}\"${3}\nsnippet for\n\tfor=\"${1}\"${2}\nsnippet height\n\theight=\"${1}\"${2}\nsnippet href\n\thref=\"${1:#}\"${2}\nsnippet lang\n\tlang=\"${1:en}\"${2}\nsnippet media\n\tmedia=\"${1}\"${2}\nsnippet name\n\tname=\"${1}\"${2}\nsnippet rel\n\trel=\"${1}\"${2}\nsnippet scope\n\tscope=\"${1:row}\"${2}\nsnippet src\n\tsrc=\"${1}\"${2}\nsnippet title=\n\ttitle=\"${1}\"${2}\nsnippet type\n\ttype=\"${1}\"${2}\nsnippet value\n\tvalue=\"${1}\"${2}\nsnippet width\n\twidth=\"${1}\"${2}\n# Elements\nsnippet a\n\t${2:$1}\nsnippet a.\n\t${3:$1}\nsnippet a#\n\t${3:$1}\nsnippet a:ext\n\t${2:$1}\nsnippet a:mail\n\t${3:email me}\nsnippet abbr\n\t${2}\nsnippet address\n\t
    \n\t\t${1}\n\t
    \nsnippet area\n\t\"${4}\"\nsnippet area+\n\t\"${4}\"\n\tarea+${5}\nsnippet area:c\n\t\"${3}\"\nsnippet area:d\n\t\"${3}\"\nsnippet area:p\n\t\"${3}\"\nsnippet area:r\n\t\"${3}\"\nsnippet article\n\t
    \n\t\t${1}\n\t
    \nsnippet article.\n\t
    \n\t\t${2}\n\t
    \nsnippet article#\n\t
    \n\t\t${2}\n\t
    \nsnippet aside\n\t\nsnippet aside.\n\t\nsnippet aside#\n\t\nsnippet audio\n\t\nsnippet b\n\t${1}\nsnippet base\n\t\nsnippet bdi\n\t${1}\nsnippet bdo\n\t${2}\nsnippet bdo:l\n\t${1}\nsnippet bdo:r\n\t${1}\nsnippet blockquote\n\t
    \n\t\t${1}\n\t
    \nsnippet body\n\t\n\t\t${1}\n\t\nsnippet br\n\t
    ${1}\nsnippet button\n\t\nsnippet button.\n\t\nsnippet button#\n\t\nsnippet button:s\n\t\nsnippet button:r\n\t\nsnippet canvas\n\t\n\t\t${1}\n\t\nsnippet caption\n\t${1}\nsnippet cite\n\t${1}\nsnippet code\n\t${1}\nsnippet col\n\t${1}\nsnippet col+\n\t\n\tcol+${1}\nsnippet colgroup\n\t\n\t\t${1}\n\t\nsnippet colgroup+\n\t\n\t\t\n\t\tcol+${1}\n\t\nsnippet command\n\t\nsnippet command:c\n\t\nsnippet command:r\n\t\nsnippet datagrid\n\t\n\t\t${1}\n\t\nsnippet datalist\n\t\n\t\t${1}\n\t\nsnippet datatemplate\n\t\n\t\t${1}\n\t\nsnippet dd\n\t
    ${1}
    \nsnippet dd.\n\t
    ${2}
    \nsnippet dd#\n\t
    ${2}
    \nsnippet del\n\t${1}\nsnippet details\n\t
    ${1}
    \nsnippet dfn\n\t${1}\nsnippet dialog\n\t\n\t\t${1}\n\t\nsnippet div\n\t
    \n\t\t${1}\n\t
    \nsnippet div.\n\t
    \n\t\t${2}\n\t
    \nsnippet div#\n\t
    \n\t\t${2}\n\t
    \nsnippet dl\n\t
    \n\t\t${1}\n\t
    \nsnippet dl.\n\t
    \n\t\t${2}\n\t
    \nsnippet dl#\n\t
    \n\t\t${2}\n\t
    \nsnippet dl+\n\t
    \n\t\t
    ${1}
    \n\t\t
    ${2}
    \n\t\tdt+${3}\n\t
    \nsnippet dt\n\t
    ${1}
    \nsnippet dt.\n\t
    ${2}
    \nsnippet dt#\n\t
    ${2}
    \nsnippet dt+\n\t
    ${1}
    \n\t
    ${2}
    \n\tdt+${3}\nsnippet em\n\t${1}\nsnippet embed\n\t\nsnippet fieldset\n\t
    \n\t\t${1}\n\t
    \nsnippet fieldset.\n\t
    \n\t\t${2}\n\t
    \nsnippet fieldset#\n\t
    \n\t\t${2}\n\t
    \nsnippet fieldset+\n\t
    \n\t\t${1}\n\t\t${2}\n\t
    \n\tfieldset+${3}\nsnippet figcaption\n\t
    ${1}
    \nsnippet figure\n\t
    ${1}
    \nsnippet footer\n\t
    \n\t\t${1}\n\t
    \nsnippet footer.\n\t
    \n\t\t${2}\n\t
    \nsnippet footer#\n\t
    \n\t\t${2}\n\t
    \nsnippet form\n\t
    \n\t\t${3}\n\t
    \nsnippet form.\n\t
    \n\t\t${4}\n\t
    \nsnippet form#\n\t
    \n\t\t${4}\n\t
    \nsnippet h1\n\t

    ${1}

    \nsnippet h1.\n\t

    ${2}

    \nsnippet h1#\n\t

    ${2}

    \nsnippet h2\n\t

    ${1}

    \nsnippet h2.\n\t

    ${2}

    \nsnippet h2#\n\t

    ${2}

    \nsnippet h3\n\t

    ${1}

    \nsnippet h3.\n\t

    ${2}

    \nsnippet h3#\n\t

    ${2}

    \nsnippet h4\n\t

    ${1}

    \nsnippet h4.\n\t

    ${2}

    \nsnippet h4#\n\t

    ${2}

    \nsnippet h5\n\t
    ${1}
    \nsnippet h5.\n\t
    ${2}
    \nsnippet h5#\n\t
    ${2}
    \nsnippet h6\n\t
    ${1}
    \nsnippet h6.\n\t
    ${2}
    \nsnippet h6#\n\t
    ${2}
    \nsnippet head\n\t\n\t\t\n\n\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t${2}\n\t\nsnippet header\n\t
    \n\t\t${1}\n\t
    \nsnippet header.\n\t
    \n\t\t${2}\n\t
    \nsnippet header#\n\t
    \n\t\t${2}\n\t
    \nsnippet hgroup\n\t
    \n\t\t${1}\n\t
    \nsnippet hgroup.\n\t
    \n\t\t${2}\n\t
    \nsnippet hr\n\t
    ${1}\nsnippet html\n\t\n\t${1}\n\t\nsnippet xhtml\n\t\n\t${1}\n\t\nsnippet html5\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t\t${2:meta}\n\t\t\n\t\t\n\t\t\t${3:body}\n\t\t\n\t\nsnippet xhtml5\n\t\n\t\n\t\t\n\t\t\t\n\t\t\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\n\t\t\t${2:meta}\n\t\t\n\t\t\n\t\t\t${3:body}\n\t\t\n\t\nsnippet i\n\t${1}\nsnippet iframe\n\t${2}\nsnippet iframe.\n\t${3}\nsnippet iframe#\n\t${3}\nsnippet img\n\t\"${2}\"${3}\nsnippet img.\n\t\"${3}\"${4}\nsnippet img#\n\t\"${3}\"${4}\nsnippet input\n\t${5}\nsnippet input.\n\t${6}\nsnippet input:text\n\t${4}\nsnippet input:submit\n\t${4}\nsnippet input:hidden\n\t${4}\nsnippet input:button\n\t${4}\nsnippet input:image\n\t${5}\nsnippet input:checkbox\n\t${3}\nsnippet input:radio\n\t${3}\nsnippet input:color\n\t${4}\nsnippet input:date\n\t${4}\nsnippet input:datetime\n\t${4}\nsnippet input:datetime-local\n\t${4}\nsnippet input:email\n\t${4}\nsnippet input:file\n\t${4}\nsnippet input:month\n\t${4}\nsnippet input:number\n\t${4}\nsnippet input:password\n\t${4}\nsnippet input:range\n\t${4}\nsnippet input:reset\n\t${4}\nsnippet input:search\n\t${4}\nsnippet input:time\n\t${4}\nsnippet input:url\n\t${4}\nsnippet input:week\n\t${4}\nsnippet ins\n\t${1}\nsnippet kbd\n\t${1}\nsnippet keygen\n\t${1}\nsnippet label\n\t\nsnippet label:i\n\t\n\t${7}\nsnippet label:s\n\t\n\t\nsnippet legend\n\t${1}\nsnippet legend+\n\t${1}\nsnippet li\n\t
  • ${1}
  • \nsnippet li.\n\t
  • ${2}
  • \nsnippet li+\n\t
  • ${1}
  • \n\tli+${2}\nsnippet lia\n\t
  • ${1}
  • \nsnippet lia+\n\t
  • ${1}
  • \n\tlia+${3}\nsnippet link\n\t${5}\nsnippet link:atom\n\t${2}\nsnippet link:css\n\t${4}\nsnippet link:favicon\n\t${2}\nsnippet link:rss\n\t${2}\nsnippet link:touch\n\t${2}\nsnippet map\n\t\n\t\t${2}\n\t\nsnippet map.\n\t\n\t\t${3}\n\t\nsnippet map#\n\t\n\t\t${3}\n\t\nsnippet map+\n\t\n\t\t\"${5}\"${6}\n\t${7}\nsnippet mark\n\t${1}\nsnippet menu\n\t\n\t\t${1}\n\t\nsnippet menu:c\n\t\n\t\t${1}\n\t\nsnippet menu:t\n\t\n\t\t${1}\n\t\nsnippet meta\n\t${3}\nsnippet meta:compat\n\t${3}\nsnippet meta:refresh\n\t${3}\nsnippet meta:utf\n\t${3}\nsnippet meter\n\t${1}\nsnippet nav\n\t\nsnippet nav.\n\t\nsnippet nav#\n\t\nsnippet noscript\n\t\nsnippet object\n\t\n\t\t${3}\n\t${4}\n# Embed QT Movie\nsnippet movie\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t${6}\nsnippet ol\n\t
      \n\t\t${1}\n\t
    \nsnippet ol.\n\t
      \n\t\t${2}\n\t
    \nsnippet ol#\n\t
      \n\t\t${2}\n\t
    \nsnippet ol+\n\t
      \n\t\t
    1. ${1}
    2. \n\t\tli+${2}\n\t
    \nsnippet opt\n\t\nsnippet opt+\n\t\n\topt+${3}\nsnippet optt\n\t\nsnippet optgroup\n\t\n\t\t\n\t\topt+${3}\n\t\nsnippet output\n\t${1}\nsnippet p\n\t

    ${1}

    \nsnippet param\n\t${3}\nsnippet pre\n\t
    \n\t\t${1}\n\t
    \nsnippet progress\n\t${1}\nsnippet q\n\t${1}\nsnippet rp\n\t${1}\nsnippet rt\n\t${1}\nsnippet ruby\n\t\n\t\t${1}\n\t\nsnippet s\n\t${1}\nsnippet samp\n\t\n\t\t${1}\n\t\nsnippet script\n\t\nsnippet scriptsrc\n\t\nsnippet newscript\n\t\nsnippet newscriptsrc\n\t\nsnippet section\n\t
    \n\t\t${1}\n\t
    \nsnippet section.\n\t
    \n\t\t${2}\n\t
    \nsnippet section#\n\t
    \n\t\t${2}\n\t
    \nsnippet select\n\t\nsnippet select.\n\t\nsnippet select+\n\t\nsnippet small\n\t${1}\nsnippet source\n\t\nsnippet span\n\t${1}\nsnippet strong\n\t${1}\nsnippet style\n\t\nsnippet sub\n\t${1}\nsnippet summary\n\t\n\t\t${1}\n\t\nsnippet sup\n\t${1}\nsnippet table\n\t\n\t\t${2}\n\t
    \nsnippet table.\n\t\n\t\t${3}\n\t
    \nsnippet table#\n\t\n\t\t${3}\n\t
    \nsnippet tbody\n\t\n\t\t${1}\n\t\nsnippet td\n\t${1}\nsnippet td.\n\t${2}\nsnippet td#\n\t${2}\nsnippet td+\n\t${1}\n\ttd+${2}\nsnippet textarea\n\t${6}\nsnippet tfoot\n\t\n\t\t${1}\n\t\nsnippet th\n\t${1}\nsnippet th.\n\t${2}\nsnippet th#\n\t${2}\nsnippet th+\n\t${1}\n\tth+${2}\nsnippet thead\n\t\n\t\t${1}\n\t\nsnippet time\n\t\nsnippet title\n\t${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`}\nsnippet tr\n\t\n\t\t${1}\n\t\nsnippet tr+\n\t\n\t\t${1}\n\t\ttd+${2}\n\t\nsnippet track\n\t${5}${6}\nsnippet ul\n\t
      \n\t\t${1}\n\t
    \nsnippet ul.\n\t
      \n\t\t${2}\n\t
    \nsnippet ul#\n\t
      \n\t\t${2}\n\t
    \nsnippet ul+\n\t
      \n\t\t
    • ${1}
    • \n\t\tli+${2}\n\t
    \nsnippet var\n\t${1}\nsnippet video\n\t${8}\nsnippet wbr\n\t${1}\n"; }); + +define("ace/snippets/liquid",["require","exports","module","ace/snippets/liquid.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./liquid.snippets"); +exports.scope = "liquid"; + +}); (function() { + window.require(["ace/snippets/liquid"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/lisp.js b/vendor/assets/javascripts/ace/snippets/lisp.js index c02fd8dc..a971e213 100644 --- a/vendor/assets/javascripts/ace/snippets/lisp.js +++ b/vendor/assets/javascripts/ace/snippets/lisp.js @@ -1,7 +1,9 @@ -define("ace/snippets/lisp",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "lisp"; - -}); +; (function() { + window.require(["ace/snippets/lisp"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/live_script.js b/vendor/assets/javascripts/ace/snippets/live_script.js deleted file mode 100644 index 9ab33767..00000000 --- a/vendor/assets/javascripts/ace/snippets/live_script.js +++ /dev/null @@ -1,7 +0,0 @@ -define("ace/snippets/live_script",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText =undefined; -exports.scope = ""; - -}); diff --git a/vendor/assets/javascripts/ace/snippets/livescript.js b/vendor/assets/javascripts/ace/snippets/livescript.js index 4a254bd7..ed4b397a 100644 --- a/vendor/assets/javascripts/ace/snippets/livescript.js +++ b/vendor/assets/javascripts/ace/snippets/livescript.js @@ -1,7 +1,9 @@ -define("ace/snippets/livescript",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "livescript"; - -}); +; (function() { + window.require(["ace/snippets/livescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/logiql.js b/vendor/assets/javascripts/ace/snippets/logiql.js index 9a6b7923..d0fea2bd 100644 --- a/vendor/assets/javascripts/ace/snippets/logiql.js +++ b/vendor/assets/javascripts/ace/snippets/logiql.js @@ -1,7 +1,9 @@ -define("ace/snippets/logiql",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "logiql"; - -}); +; (function() { + window.require(["ace/snippets/logiql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/logtalk.js b/vendor/assets/javascripts/ace/snippets/logtalk.js new file mode 100644 index 00000000..4ae82ed9 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/logtalk.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/logtalk"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/lsl.js b/vendor/assets/javascripts/ace/snippets/lsl.js index 6fbdc9f2..cf0f4179 100644 --- a/vendor/assets/javascripts/ace/snippets/lsl.js +++ b/vendor/assets/javascripts/ace/snippets/lsl.js @@ -1,1239 +1,16 @@ -define("ace/snippets/lsl",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet @\n\ - @${1:label};\n\ -snippet CAMERA_ACTIVE\n\ - CAMERA_ACTIVE, ${1:integer isActive}, $0\n\ -snippet CAMERA_BEHINDNESS_ANGLE\n\ - CAMERA_BEHINDNESS_ANGLE, ${1:float degrees}, $0\n\ -snippet CAMERA_BEHINDNESS_LAG\n\ - CAMERA_BEHINDNESS_LAG, ${1:float seconds}, $0\n\ -snippet CAMERA_DISTANCE\n\ - CAMERA_DISTANCE, ${1:float meters}, $0\n\ -snippet CAMERA_FOCUS\n\ - CAMERA_FOCUS, ${1:vector position}, $0\n\ -snippet CAMERA_FOCUS_LAG\n\ - CAMERA_FOCUS_LAG, ${1:float seconds}, $0\n\ -snippet CAMERA_FOCUS_LOCKED\n\ - CAMERA_FOCUS_LOCKED, ${1:integer isLocked}, $0\n\ -snippet CAMERA_FOCUS_OFFSET\n\ - CAMERA_FOCUS_OFFSET, ${1:vector meters}, $0\n\ -snippet CAMERA_FOCUS_THRESHOLD\n\ - CAMERA_FOCUS_THRESHOLD, ${1:float meters}, $0\n\ -snippet CAMERA_PITCH\n\ - CAMERA_PITCH, ${1:float degrees}, $0\n\ -snippet CAMERA_POSITION\n\ - CAMERA_POSITION, ${1:vector position}, $0\n\ -snippet CAMERA_POSITION_LAG\n\ - CAMERA_POSITION_LAG, ${1:float seconds}, $0\n\ -snippet CAMERA_POSITION_LOCKED\n\ - CAMERA_POSITION_LOCKED, ${1:integer isLocked}, $0\n\ -snippet CAMERA_POSITION_THRESHOLD\n\ - CAMERA_POSITION_THRESHOLD, ${1:float meters}, $0\n\ -snippet CHARACTER_AVOIDANCE_MODE\n\ - CHARACTER_AVOIDANCE_MODE, ${1:integer flags}, $0\n\ -snippet CHARACTER_DESIRED_SPEED\n\ - CHARACTER_DESIRED_SPEED, ${1:float speed}, $0\n\ -snippet CHARACTER_DESIRED_TURN_SPEED\n\ - CHARACTER_DESIRED_TURN_SPEED, ${1:float speed}, $0\n\ -snippet CHARACTER_LENGTH\n\ - CHARACTER_LENGTH, ${1:float length}, $0\n\ -snippet CHARACTER_MAX_TURN_RADIUS\n\ - CHARACTER_MAX_TURN_RADIUS, ${1:float radius}, $0\n\ -snippet CHARACTER_ORIENTATION\n\ - CHARACTER_ORIENTATION, ${1:integer orientation}, $0\n\ -snippet CHARACTER_RADIUS\n\ - CHARACTER_RADIUS, ${1:float radius}, $0\n\ -snippet CHARACTER_STAY_WITHIN_PARCEL\n\ - CHARACTER_STAY_WITHIN_PARCEL, ${1:boolean stay}, $0\n\ -snippet CHARACTER_TYPE\n\ - CHARACTER_TYPE, ${1:integer type}, $0\n\ -snippet HTTP_BODY_MAXLENGTH\n\ - HTTP_BODY_MAXLENGTH, ${1:integer length}, $0\n\ -snippet HTTP_CUSTOM_HEADER\n\ - HTTP_CUSTOM_HEADER, ${1:string name}, ${2:string value}, $0\n\ -snippet HTTP_METHOD\n\ - HTTP_METHOD, ${1:string method}, $0\n\ -snippet HTTP_MIMETYPE\n\ - HTTP_MIMETYPE, ${1:string mimeType}, $0\n\ -snippet HTTP_PRAGMA_NO_CACHE\n\ - HTTP_PRAGMA_NO_CACHE, ${1:integer send_header}, $0\n\ -snippet HTTP_VERBOSE_THROTTLE\n\ - HTTP_VERBOSE_THROTTLE, ${1:integer noisy}, $0\n\ -snippet HTTP_VERIFY_CERT\n\ - HTTP_VERIFY_CERT, ${1:integer verify}, $0\n\ -snippet RC_DATA_FLAGS\n\ - RC_DATA_FLAGS, ${1:integer flags}, $0\n\ -snippet RC_DETECT_PHANTOM\n\ - RC_DETECT_PHANTOM, ${1:integer dectedPhantom}, $0\n\ -snippet RC_MAX_HITS\n\ - RC_MAX_HITS, ${1:integer maxHits}, $0\n\ -snippet RC_REJECT_TYPES\n\ - RC_REJECT_TYPES, ${1:integer filterMask}, $0\n\ -snippet at_rot_target\n\ - at_rot_target(${1:integer handle}, ${2:rotation targetrot}, ${3:rotation ourrot})\n\ - {\n\ - $0\n\ - }\n\ -snippet at_target\n\ - at_target(${1:integer tnum}, ${2:vector targetpos}, ${3:vector ourpos})\n\ - {\n\ - $0\n\ - }\n\ -snippet attach\n\ - attach(${1:key id})\n\ - {\n\ - $0\n\ - }\n\ -snippet changed\n\ - changed(${1:integer change})\n\ - {\n\ - $0\n\ - }\n\ -snippet collision\n\ - collision(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet collision_end\n\ - collision_end(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet collision_start\n\ - collision_start(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet control\n\ - control(${1:key id}, ${2:integer level}, ${3:integer edge})\n\ - {\n\ - $0\n\ - }\n\ -snippet dataserver\n\ - dataserver(${1:key query_id}, ${2:string data})\n\ - {\n\ - $0\n\ - }\n\ -snippet do\n\ - do\n\ - {\n\ - $0\n\ - }\n\ - while (${1:condition});\n\ -snippet else\n\ - else\n\ - {\n\ - $0\n\ - }\n\ -snippet email\n\ - email(${1:string time}, ${2:string address}, ${3:string subject}, ${4:string message}, ${5:integer num_left})\n\ - {\n\ - $0\n\ - }\n\ -snippet experience_permissions\n\ - experience_permissions(${1:key agent_id})\n\ - {\n\ - $0\n\ - }\n\ -snippet experience_permissions_denied\n\ - experience_permissions_denied(${1:key agent_id}, ${2:integer reason})\n\ - {\n\ - $0\n\ - }\n\ -snippet for\n\ - for (${1:start}; ${3:condition}; ${3:step})\n\ - {\n\ - $0\n\ - }\n\ -snippet http_request\n\ - http_request(${1:key request_id}, ${2:string method}, ${3:string body})\n\ - {\n\ - $0\n\ - }\n\ -snippet http_response\n\ - http_response(${1:key request_id}, ${2:integer status}, ${3:list metadata}, ${4:string body})\n\ - {\n\ - $0\n\ - }\n\ -snippet if\n\ - if (${1:condition})\n\ - {\n\ - $0\n\ - }\n\ -snippet jump\n\ - jump ${1:label};\n\ -snippet land_collision\n\ - land_collision(${1:vector pos})\n\ - {\n\ - $0\n\ - }\n\ -snippet land_collision_end\n\ - land_collision_end(${1:vector pos})\n\ - {\n\ - $0\n\ - }\n\ -snippet land_collision_start\n\ - land_collision_start(${1:vector pos})\n\ - {\n\ - $0\n\ - }\n\ -snippet link_message\n\ - link_message(${1:integer sender_num}, ${2:integer num}, ${3:string str}, ${4:key id})\n\ - {\n\ - $0\n\ - }\n\ -snippet listen\n\ - listen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string message})\n\ - {\n\ - $0\n\ - }\n\ -snippet llAbs\n\ - llAbs(${1:integer val})\n\ -snippet llAcos\n\ - llAcos(${1:float val})\n\ -snippet llAddToLandBanList\n\ - llAddToLandBanList(${1:key agent}, ${2:float hours});\n\ - $0\n\ -snippet llAddToLandPassList\n\ - llAddToLandPassList(${1:key agent}, ${2:float hours});\n\ - $0\n\ -snippet llAdjustSoundVolume\n\ - llAdjustSoundVolume(${1:float volume});\n\ - $0\n\ -snippet llAgentInExperience\n\ - llAgentInExperience(${1:key agent})\n\ -snippet llAllowInventoryDrop\n\ - llAllowInventoryDrop(${1:integer add});\n\ - $0\n\ -snippet llAngleBetween\n\ - llAngleBetween(${1:rotation a}, ${2:rotation b})\n\ -snippet llApplyImpulse\n\ - llApplyImpulse(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llApplyRotationalImpulse\n\ - llApplyRotationalImpulse(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llAsin\n\ - llAsin(${1:float val})\n\ -snippet llAtan2\n\ - llAtan2(${1:float y}, ${2:float x})\n\ -snippet llAttachToAvatar\n\ - llAttachToAvatar(${1:integer attach_point});\n\ - $0\n\ -snippet llAttachToAvatarTemp\n\ - llAttachToAvatarTemp(${1:integer attach_point});\n\ - $0\n\ -snippet llAvatarOnLinkSitTarget\n\ - llAvatarOnLinkSitTarget(${1:integer link})\n\ -snippet llAvatarOnSitTarget\n\ - llAvatarOnSitTarget()\n\ -snippet llAxes2Rot\n\ - llAxes2Rot(${1:vector fwd}, ${2:vector left}, ${3:vector up})\n\ -snippet llAxisAngle2Rot\n\ - llAxisAngle2Rot(${1:vector axis}, ${2:float angle})\n\ -snippet llBase64ToInteger\n\ - llBase64ToInteger(${1:string str})\n\ -snippet llBase64ToString\n\ - llBase64ToString(${1:string str})\n\ -snippet llBreakAllLinks\n\ - llBreakAllLinks();\n\ - $0\n\ -snippet llBreakLink\n\ - llBreakLink(${1:integer link});\n\ - $0\n\ -snippet llCastRay\n\ - llCastRay(${1:vector start}, ${2:vector end}, ${3:list options});\n\ - $0\n\ -snippet llCeil\n\ - llCeil(${1:float val})\n\ -snippet llClearCameraParams\n\ - llClearCameraParams();\n\ - $0\n\ -snippet llClearLinkMedia\n\ - llClearLinkMedia(${1:integer link}, ${2:integer face});\n\ - $0\n\ -snippet llClearPrimMedia\n\ - llClearPrimMedia(${1:integer face});\n\ - $0\n\ -snippet llCloseRemoteDataChannel\n\ - llCloseRemoteDataChannel(${1:key channel});\n\ - $0\n\ -snippet llCollisionFilter\n\ - llCollisionFilter(${1:string name}, ${2:key id}, ${3:integer accept});\n\ - $0\n\ -snippet llCollisionSound\n\ - llCollisionSound(${1:string impact_sound}, ${2:float impact_volume});\n\ - $0\n\ -snippet llCos\n\ - llCos(${1:float theta})\n\ -snippet llCreateCharacter\n\ - llCreateCharacter(${1:list options});\n\ - $0\n\ -snippet llCreateKeyValue\n\ - llCreateKeyValue(${1:string k})\n\ -snippet llCreateLink\n\ - llCreateLink(${1:key target}, ${2:integer parent});\n\ - $0\n\ -snippet llCSV2List\n\ - llCSV2List(${1:string src})\n\ -snippet llDataSizeKeyValue\n\ - llDataSizeKeyValue()\n\ -snippet llDeleteCharacter\n\ - llDeleteCharacter();\n\ - $0\n\ -snippet llDeleteKeyValue\n\ - llDeleteKeyValue(${1:string k})\n\ -snippet llDeleteSubList\n\ - llDeleteSubList(${1:list src}, ${2:integer start}, ${3:integer end})\n\ -snippet llDeleteSubString\n\ - llDeleteSubString(${1:string src}, ${2:integer start}, ${3:integer end})\n\ -snippet llDetachFromAvatar\n\ - llDetachFromAvatar();\n\ - $0\n\ -snippet llDetectedGrab\n\ - llDetectedGrab(${1:integer number})\n\ -snippet llDetectedGroup\n\ - llDetectedGroup(${1:integer number})\n\ -snippet llDetectedKey\n\ - llDetectedKey(${1:integer number})\n\ -snippet llDetectedLinkNumber\n\ - llDetectedLinkNumber(${1:integer number})\n\ -snippet llDetectedName\n\ - llDetectedName(${1:integer number})\n\ -snippet llDetectedOwner\n\ - llDetectedOwner(${1:integer number})\n\ -snippet llDetectedPos\n\ - llDetectedPosl(${1:integer number})\n\ -snippet llDetectedRot\n\ - llDetectedRot(${1:integer number})\n\ -snippet llDetectedTouchBinormal\n\ - llDetectedTouchBinormal(${1:integer number})\n\ -snippet llDetectedTouchFace\n\ - llDetectedTouchFace(${1:integer number})\n\ -snippet llDetectedTouchNormal\n\ - llDetectedTouchNormal(${1:integer number})\n\ -snippet llDetectedTouchPos\n\ - llDetectedTouchPos(${1:integer number})\n\ -snippet llDetectedTouchST\n\ - llDetectedTouchST(${1:integer number})\n\ -snippet llDetectedTouchUV\n\ - llDetectedTouchUV(${1:integer number})\n\ -snippet llDetectedType\n\ - llDetectedType(${1:integer number})\n\ -snippet llDetectedVel\n\ - llDetectedVel(${1:integer number})\n\ -snippet llDialog\n\ - llDialog(${1:key agent}, ${2:string message}, ${3:list buttons}, ${4:integer channel});\n\ - $0\n\ -snippet llDie\n\ - llDie();\n\ - $0\n\ -snippet llDumpList2String\n\ - llDumpList2String(${1:list src}, ${2:string separator})\n\ -snippet llEdgeOfWorld\n\ - llEdgeOfWorld(${1:vector pos}, ${2:vector dir})\n\ -snippet llEjectFromLand\n\ - llEjectFromLand(${1:key agent});\n\ - $0\n\ -snippet llEmail\n\ - llEmail(${1:string address}, ${2:string subject}, ${3:string message});\n\ - $0\n\ -snippet llEscapeURL\n\ - llEscapeURL(${1:string url})\n\ -snippet llEuler2Rot\n\ - llEuler2Rot(${1:vector v})\n\ -snippet llExecCharacterCmd\n\ - llExecCharacterCmd(${1:integer command}, ${2:list options});\n\ - $0\n\ -snippet llEvade\n\ - llEvade(${1:key target}, ${2:list options});\n\ - $0\n\ -snippet llFabs\n\ - llFabs(${1:float val})\n\ -snippet llFleeFrom\n\ - llFleeFrom(${1:vector position}, ${2:float distance}, ${3:list options});\n\ - $0\n\ -snippet llFloor\n\ - llFloor(${1:float val})\n\ -snippet llForceMouselook\n\ - llForceMouselook(${1:integer mouselook});\n\ - $0\n\ -snippet llFrand\n\ - llFrand(${1:float mag})\n\ -snippet llGenerateKey\n\ - llGenerateKey()\n\ -snippet llGetAccel\n\ - llGetAccel()\n\ -snippet llGetAgentInfo\n\ - llGetAgentInfo(${1:key id})\n\ -snippet llGetAgentLanguage\n\ - llGetAgentLanguage(${1:key agent})\n\ -snippet llGetAgentList\n\ - llGetAgentList(${1:integer scope}, ${2:list options})\n\ -snippet llGetAgentSize\n\ - llGetAgentSize(${1:key agent})\n\ -snippet llGetAlpha\n\ - llGetAlpha(${1:integer face})\n\ -snippet llGetAndResetTime\n\ - llGetAndResetTime()\n\ -snippet llGetAnimation\n\ - llGetAnimation(${1:key id})\n\ -snippet llGetAnimationList\n\ - llGetAnimationList(${1:key agent})\n\ -snippet llGetAnimationOverride\n\ - llGetAnimationOverride(${1:string anim_state})\n\ -snippet llGetAttached\n\ - llGetAttached()\n\ -snippet llGetAttachedList\n\ - llGetAttachedList(${1:key id})\n\ -snippet llGetBoundingBox\n\ - llGetBoundingBox(${1:key object})\n\ -snippet llGetCameraPos\n\ - llGetCameraPos()\n\ -snippet llGetCameraRot\n\ - llGetCameraRot()\n\ -snippet llGetCenterOfMass\n\ - llGetCenterOfMass()\n\ -snippet llGetClosestNavPoint\n\ - llGetClosestNavPoint(${1:vector point}, ${2:list options})\n\ -snippet llGetColor\n\ - llGetColor(${1:integer face})\n\ -snippet llGetCreator\n\ - llGetCreator()\n\ -snippet llGetDate\n\ - llGetDate()\n\ -snippet llGetDisplayName\n\ - llGetDisplayName(${1:key id})\n\ -snippet llGetEnergy\n\ - llGetEnergy()\n\ -snippet llGetEnv\n\ - llGetEnv(${1:string name})\n\ -snippet llGetExperienceDetails\n\ - llGetExperienceDetails(${1:key experience_id})\n\ -snippet llGetExperienceErrorMessage\n\ - llGetExperienceErrorMessage(${1:integer error})\n\ -snippet llGetForce\n\ - llGetForce()\n\ -snippet llGetFreeMemory\n\ - llGetFreeMemory()\n\ -snippet llGetFreeURLs\n\ - llGetFreeURLs()\n\ -snippet llGetGeometricCenter\n\ - llGetGeometricCenter()\n\ -snippet llGetGMTclock\n\ - llGetGMTclock()\n\ -snippet llGetHTTPHeader\n\ - llGetHTTPHeader(${1:key request_id}, ${2:string header})\n\ -snippet llGetInventoryCreator\n\ - llGetInventoryCreator(${1:string item})\n\ -snippet llGetInventoryKey\n\ - llGetInventoryKey(${1:string name})\n\ -snippet llGetInventoryName\n\ - llGetInventoryName(${1:integer type}, ${2:integer number})\n\ -snippet llGetInventoryNumber\n\ - llGetInventoryNumber(${1:integer type})\n\ -snippet llGetInventoryPermMask\n\ - llGetInventoryPermMask(${1:string item}, ${2:integer mask})\n\ -snippet llGetInventoryType\n\ - llGetInventoryType(${1:string name})\n\ -snippet llGetKey\n\ - llGetKey()\n\ -snippet llGetLandOwnerAt\n\ - llGetLandOwnerAt(${1:vector pos})\n\ -snippet llGetLinkKey\n\ - llGetLinkKey(${1:integer link})\n\ -snippet llGetLinkMedia\n\ - llGetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params})\n\ -snippet llGetLinkName\n\ - llGetLinkName(${1:integer link})\n\ -snippet llGetLinkNumber\n\ - llGetLinkNumber()\n\ -snippet llGetLinkNumberOfSides\n\ - llGetLinkNumberOfSides(${1:integer link})\n\ -snippet llGetLinkPrimitiveParams\n\ - llGetLinkPrimitiveParams(${1:integer link}, ${2:list params})\n\ -snippet llGetListEntryType\n\ - llGetListEntryType(${1:list src}, ${2:integer index})\n\ -snippet llGetListLength\n\ - llGetListLength(${1:list src})\n\ -snippet llGetLocalPos\n\ - llGetLocalPos()\n\ -snippet llGetLocalRot\n\ - llGetLocalRot()\n\ -snippet llGetMass\n\ - llGetMass()\n\ -snippet llGetMassMKS\n\ - llGetMassMKS()\n\ -snippet llGetMaxScaleFactor\n\ - llGetMaxScaleFactor()\n\ -snippet llGetMemoryLimit\n\ - llGetMemoryLimit()\n\ -snippet llGetMinScaleFactor\n\ - llGetMinScaleFactor()\n\ -snippet llGetNextEmail\n\ - llGetNextEmail(${1:string address}, ${2:string subject});\n\ - $0\n\ -snippet llGetNotecardLine\n\ - llGetNotecardLine(${1:string name}, ${2:integer line})\n\ -snippet llGetNumberOfNotecardLines\n\ - llGetNumberOfNotecardLines(${1:string name})\n\ -snippet llGetNumberOfPrims\n\ - llGetNumberOfPrims()\n\ -snippet llGetNumberOfSides\n\ - llGetNumberOfSides()\n\ -snippet llGetObjectDesc\n\ - llGetObjectDesc()\n\ -snippet llGetObjectDetails\n\ - llGetObjectDetails(${1:key id}, ${2:list params})\n\ -snippet llGetObjectMass\n\ - llGetObjectMass(${1:key id})\n\ -snippet llGetObjectName\n\ - llGetObjectName()\n\ -snippet llGetObjectPermMask\n\ - llGetObjectPermMask(${1:integer mask})\n\ -snippet llGetObjectPrimCount\n\ - llGetObjectPrimCount(${1:key prim})\n\ -snippet llGetOmega\n\ - llGetOmega()\n\ -snippet llGetOwner\n\ - llGetOwner()\n\ -snippet llGetOwnerKey\n\ - llGetOwnerKey(${1:key id})\n\ -snippet llGetParcelDetails\n\ - llGetParcelDetails(${1:vector pos}, ${2:list params})\n\ -snippet llGetParcelFlags\n\ - llGetParcelFlags(${1:vector pos})\n\ -snippet llGetParcelMaxPrims\n\ - llGetParcelMaxPrims(${1:vector pos}, ${2:integer sim_wide})\n\ -snippet llGetParcelMusicURL\n\ - llGetParcelMusicURL()\n\ -snippet llGetParcelPrimCount\n\ - llGetParcelPrimCount(${1:vector pos}, ${2:integer category}, ${3:integer sim_wide})\n\ -snippet llGetParcelPrimOwners\n\ - llGetParcelPrimOwners(${1:vector pos})\n\ -snippet llGetPermissions\n\ - llGetPermissions()\n\ -snippet llGetPermissionsKey\n\ - llGetPermissionsKey()\n\ -snippet llGetPhysicsMaterial\n\ - llGetPhysicsMaterial()\n\ -snippet llGetPos\n\ - llGetPos()\n\ -snippet llGetPrimitiveParams\n\ - llGetPrimitiveParams(${1:list params})\n\ -snippet llGetPrimMediaParams\n\ - llGetPrimMediaParams(${1:integer face}, ${2:list params})\n\ -snippet llGetRegionAgentCount\n\ - llGetRegionAgentCount()\n\ -snippet llGetRegionCorner\n\ - llGetRegionCorner()\n\ -snippet llGetRegionFlags\n\ - llGetRegionFlags()\n\ -snippet llGetRegionFPS\n\ - llGetRegionFPS()\n\ -snippet llGetRegionName\n\ - llGetRegionName()\n\ -snippet llGetRegionTimeDilation\n\ - llGetRegionTimeDilation()\n\ -snippet llGetRootPosition\n\ - llGetRootPosition()\n\ -snippet llGetRootRotation\n\ - llGetRootRotation()\n\ -snippet llGetRot\n\ - llGetRot()\n\ -snippet llGetScale\n\ - llGetScale()\n\ -snippet llGetScriptName\n\ - llGetScriptName()\n\ -snippet llGetScriptState\n\ - llGetScriptState(${1:string script})\n\ -snippet llGetSimStats\n\ - llGetSimStats(${1:integer stat_type})\n\ -snippet llGetSimulatorHostname\n\ - llGetSimulatorHostname()\n\ -snippet llGetSPMaxMemory\n\ - llGetSPMaxMemory()\n\ -snippet llGetStartParameter\n\ - llGetStartParameter()\n\ -snippet llGetStaticPath\n\ - llGetStaticPath(${1:vector start}, ${2:vector end}, ${3:float radius}, ${4:list params})\n\ -snippet llGetStatus\n\ - llGetStatus(${1:integer status})\n\ -snippet llGetSubString\n\ - llGetSubString(${1:string src}, ${2:integer start}, ${3:integer end})\n\ -snippet llGetSunDirection\n\ - llGetSunDirection()\n\ -snippet llGetTexture\n\ - llGetTexture(${1:integer face})\n\ -snippet llGetTextureOffset\n\ - llGetTextureOffset(${1:integer face})\n\ -snippet llGetTextureRot\n\ - llGetTextureRot(${1:integer face})\n\ -snippet llGetTextureScale\n\ - llGetTextureScale(${1:integer face})\n\ -snippet llGetTime\n\ - llGetTime()\n\ -snippet llGetTimeOfDay\n\ - llGetTimeOfDay()\n\ -snippet llGetTimestamp\n\ - llGetTimestamp()\n\ -snippet llGetTorque\n\ - llGetTorque()\n\ -snippet llGetUnixTime\n\ - llGetUnixTime()\n\ -snippet llGetUsedMemory\n\ - llGetUsedMemory()\n\ -snippet llGetUsername\n\ - llGetUsername(${1:key id})\n\ -snippet llGetVel\n\ - llGetVel()\n\ -snippet llGetWallclock\n\ - llGetWallclock()\n\ -snippet llGiveInventory\n\ - llGiveInventory(${1:key destination}, ${2:string inventory});\n\ - $0\n\ -snippet llGiveInventoryList\n\ - llGiveInventoryList(${1:key target}, ${2:string folder}, ${3:list inventory});\n\ - $0\n\ -snippet llGiveMoney\n\ - llGiveMoney(${1:key destination}, ${2:integer amount})\n\ -snippet llGround\n\ - llGround(${1:vector offset})\n\ -snippet llGroundContour\n\ - llGroundContour(${1:vector offset})\n\ -snippet llGroundNormal\n\ - llGroundNormal(${1:vector offset})\n\ -snippet llGroundRepel\n\ - llGroundRepel(${1:float height}, ${2:integer water}, ${3:float tau});\n\ - $0\n\ -snippet llGroundSlope\n\ - llGroundSlope(${1:vector offset})\n\ -snippet llHTTPRequest\n\ - llHTTPRequest(${1:string url}, ${2:list parameters}, ${3:string body})\n\ -snippet llHTTPResponse\n\ - llHTTPResponse(${1:key request_id}, ${2:integer status}, ${3:string body});\n\ - $0\n\ -snippet llInsertString\n\ - llInsertString(${1:string dst}, ${2:integer pos}, ${3:string src})\n\ -snippet llInstantMessage\n\ - llInstantMessage(${1:key user}, ${2:string message});\n\ - $0\n\ -snippet llIntegerToBase64\n\ - llIntegerToBase64(${1:integer number})\n\ -snippet llJson2List\n\ - llJson2List(${1:string json})\n\ -snippet llJsonGetValue\n\ - llJsonGetValue(${1:string json}, ${2:list specifiers})\n\ -snippet llJsonSetValue\n\ - llJsonSetValue(${1:string json}, ${2:list specifiers}, ${3:string newValue})\n\ -snippet llJsonValueType\n\ - llJsonValueType(${1:string json}, ${2:list specifiers})\n\ -snippet llKey2Name\n\ - llKey2Name(${1:key id})\n\ -snippet llKeyCountKeyValue\n\ - llKeyCountKeyValue()\n\ -snippet llKeysKeyValue\n\ - llKeysKeyValue(${1:integer first}, ${2:integer count})\n\ -snippet llLinkParticleSystem\n\ - llLinkParticleSystem(${1:integer link}, ${2:list rules});\n\ - $0\n\ -snippet llLinkSitTarget\n\ - llLinkSitTarget(${1:integer link}, ${2:vector offset}, ${3:rotation rot});\n\ - $0\n\ -snippet llList2CSV\n\ - llList2CSV(${1:list src})\n\ -snippet llList2Float\n\ - llList2Float(${1:list src}, ${2:integer index})\n\ -snippet llList2Integer\n\ - llList2Integer(${1:list src}, ${2:integer index})\n\ -snippet llList2Json\n\ - llList2Json(${1:string type}, ${2:list values})\n\ -snippet llList2Key\n\ - llList2Key(${1:list src}, ${2:integer index})\n\ -snippet llList2List\n\ - llList2List(${1:list src}, ${2:integer start}, ${3:integer end})\n\ -snippet llList2ListStrided\n\ - llList2ListStrided(${1:list src}, ${2:integer start}, ${3:integer end}, ${4:integer stride})\n\ -snippet llList2Rot\n\ - llList2Rot(${1:list src}, ${2:integer index})\n\ -snippet llList2String\n\ - llList2String(${1:list src}, ${2:integer index})\n\ -snippet llList2Vector\n\ - llList2Vector(${1:list src}, ${2:integer index})\n\ -snippet llListen\n\ - llListen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string msg})\n\ -snippet llListenControl\n\ - llListenControl(${1:integer handle}, ${2:integer active});\n\ - $0\n\ -snippet llListenRemove\n\ - llListenRemove(${1:integer handle});\n\ - $0\n\ -snippet llListFindList\n\ - llListFindList(${1:list src}, ${2:list test})\n\ -snippet llListInsertList\n\ - llListInsertList(${1:list dest}, ${2:list src}, ${3:integer start})\n\ -snippet llListRandomize\n\ - llListRandomize(${1:list src}, ${2:integer stride})\n\ -snippet llListReplaceList\n\ - llListReplaceList(${1:list dest}, ${2:list src}, ${3:integer start}, ${4:integer end})\n\ -snippet llListSort\n\ - llListSort(${1:list src}, ${2:integer stride}, ${3:integer ascending})\n\ -snippet llListStatistics\n\ - llListStatistics(${1:integer operation}, ${2:list src})\n\ -snippet llLoadURL\n\ - llLoadURL(${1:key agent}, ${2:string message}, ${3:string url});\n\ - $0\n\ -snippet llLog\n\ - llLog(${1:float val})\n\ -snippet llLog10\n\ - llLog10(${1:float val})\n\ -snippet llLookAt\n\ - llLookAt(${1:vector target}, ${2:float strength}, ${3:float damping});\n\ - $0\n\ -snippet llLoopSound\n\ - llLoopSound(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llLoopSoundMaster\n\ - llLoopSoundMaster(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llLoopSoundSlave\n\ - llLoopSoundSlave(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llManageEstateAccess\n\ - llManageEstateAccess(${1:integer action}, ${2:key agent})\n\ -snippet llMapDestination\n\ - llMapDestination(${1:string simname}, ${2:vector pos}, ${3:vector look_at});\n\ - $0\n\ -snippet llMD5String\n\ - llMD5String(${1:string src}, ${2:integer nonce})\n\ -snippet llMessageLinked\n\ - llMessageLinked(${1:integer link}, ${2:integer num}, ${3:string str}, ${4:key id});\n\ - $0\n\ -snippet llMinEventDelay\n\ - llMinEventDelay(${1:float delay});\n\ - $0\n\ -snippet llModifyLand\n\ - llModifyLand(${1:integer action}, ${2:integer brush});\n\ - $0\n\ -snippet llModPow\n\ - llModPow(${1:integer a}, ${2:integer b}, ${3:integer c})\n\ -snippet llMoveToTarget\n\ - llMoveToTarget(${1:vector target}, ${2:float tau});\n\ - $0\n\ -snippet llNavigateTo\n\ - llNavigateTo(${1:vector pos}, ${2:list options});\n\ - $0\n\ -snippet llOffsetTexture\n\ - llOffsetTexture(${1:float u}, ${2:float v}, ${3:integer face});\n\ - $0\n\ -snippet llOpenRemoteDataChannel\n\ - llOpenRemoteDataChannel();\n\ - $0\n\ -snippet llOverMyLand\n\ - llOverMyLand(${1:key id})\n\ -snippet llOwnerSay\n\ - llOwnerSay(${1:string msg});\n\ - $0\n\ -snippet llParcelMediaCommandList\n\ - llParcelMediaCommandList(${1:list commandList});\n\ - $0\n\ -snippet llParcelMediaQuery\n\ - llParcelMediaQuery(${1:list query})\n\ -snippet llParseString2List\n\ - llParseString2List(${1:string src}, ${2:list separators}, ${3:list spacers})\n\ -snippet llParseStringKeepNulls\n\ - llParseStringKeepNulls(${1:string src}, ${2:list separators}, ${3:list spacers})\n\ -snippet llParticleSystem\n\ - llParticleSystem(${1:list rules});\n\ - $0\n\ -snippet llPassCollisions\n\ - llPassCollisions(${1:integer pass});\n\ - $0\n\ -snippet llPassTouches\n\ - llPassTouches(${1:integer pass});\n\ - $0\n\ -snippet llPatrolPoints\n\ - llPatrolPoints(${1:list patrolPoints}, ${2:list options});\n\ - $0\n\ -snippet llPlaySound\n\ - llPlaySound(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llPlaySoundSlave\n\ - llPlaySoundSlave(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llPow\n\ - llPow(${1:float base}, ${2:float exponent})\n\ -snippet llPreloadSound\n\ - llPreloadSound(${1:string sound});\n\ - $0\n\ -snippet llPursue\n\ - llPursue(${1:key target}, ${2:list options});\n\ - $0\n\ -snippet llPushObject\n\ - llPushObject(${1:key target}, ${2:vector impulse}, ${3:vector ang_impulse}, ${4:integer local});\n\ - $0\n\ -snippet llReadKeyValue\n\ - llReadKeyValue(${1:string k})\n\ -snippet llRegionSay\n\ - llRegionSay(${1:integer channel}, ${2:string msg});\n\ - $0\n\ -snippet llRegionSayTo\n\ - llRegionSayTo(${1:key target}, ${2:integer channel}, ${3:string msg});\n\ - $0\n\ -snippet llReleaseControls\n\ - llReleaseControls();\n\ - $0\n\ -snippet llReleaseURL\n\ - llReleaseURL(${1:string url});\n\ - $0\n\ -snippet llRemoteDataReply\n\ - llRemoteDataReply(${1:key channel}, ${2:key message_id}, ${3:string sdata}, ${4:integer idata});\n\ - $0\n\ -snippet llRemoteLoadScriptPin\n\ - llRemoteLoadScriptPin(${1:key target}, ${2:string name}, ${3:integer pin}, ${4:integer running}, ${5:integer start_param});\n\ - $0\n\ -snippet llRemoveFromLandBanList\n\ - llRemoveFromLandBanList(${1:key agent});\n\ - $0\n\ -snippet llRemoveFromLandPassList\n\ - llRemoveFromLandPassList(${1:key agent});\n\ - $0\n\ -snippet llRemoveInventory\n\ - llRemoveInventory(${1:string item});\n\ - $0\n\ -snippet llRemoveVehicleFlags\n\ - llRemoveVehicleFlags(${1:integer flags});\n\ - $0\n\ -snippet llRequestAgentData\n\ - llRequestAgentData(${1:key id}, ${2:integer data})\n\ -snippet llRequestDisplayName\n\ - llRequestDisplayName(${1:key id})\n\ -snippet llRequestExperiencePermissions\n\ - llRequestExperiencePermissions(${1:key agent}, ${2:string name})\n\ -snippet llRequestInventoryData\n\ - llRequestInventoryData(${1:string name})\n\ -snippet llRequestPermissions\n\ - llRequestPermissions(${1:key agent}, ${2:integer permissions})\n\ -snippet llRequestSecureURL\n\ - llRequestSecureURL()\n\ -snippet llRequestSimulatorData\n\ - llRequestSimulatorData(${1:string region}, ${2:integer data})\n\ -snippet llRequestURL\n\ - llRequestURL()\n\ -snippet llRequestUsername\n\ - llRequestUsername(${1:key id})\n\ -snippet llResetAnimationOverride\n\ - llResetAnimationOverride(${1:string anim_state});\n\ - $0\n\ -snippet llResetLandBanList\n\ - llResetLandBanList();\n\ - $0\n\ -snippet llResetLandPassList\n\ - llResetLandPassList();\n\ - $0\n\ -snippet llResetOtherScript\n\ - llResetOtherScript(${1:string name});\n\ - $0\n\ -snippet llResetScript\n\ - llResetScript();\n\ - $0\n\ -snippet llResetTime\n\ - llResetTime();\n\ - $0\n\ -snippet llReturnObjectsByID\n\ - llReturnObjectsByID(${1:list objects})\n\ -snippet llReturnObjectsByOwner\n\ - llReturnObjectsByOwner(${1:key owner}, ${2:integer scope})\n\ -snippet llRezAtRoot\n\ - llRezAtRoot(${1:string inventory}, ${2:vector position}, ${3:vector velocity}, ${4:rotation rot}, ${5:integer param});\n\ - $0\n\ -snippet llRezObject\n\ - llRezObject(${1:string inventory}, ${2:vector pos}, ${3:vector vel}, ${4:rotation rot}, ${5:integer param});\n\ - $0\n\ -snippet llRot2Angle\n\ - llRot2Angle(${1:rotation rot})\n\ -snippet llRot2Axis\n\ - llRot2Axis(${1:rotation rot})\n\ -snippet llRot2Euler\n\ - llRot2Euler(${1:rotation quat})\n\ -snippet llRot2Fwd\n\ - llRot2Fwd(${1:rotation q})\n\ -snippet llRot2Left\n\ - llRot2Left(${1:rotation q})\n\ -snippet llRot2Up\n\ - llRot2Up(${1:rotation q})\n\ -snippet llRotateTexture\n\ - llRotateTexture(${1:float angle}, ${2:integer face});\n\ - $0\n\ -snippet llRotBetween\n\ - llRotBetween(${1:vector start}, ${2:vector end})\n\ -snippet llRotLookAt\n\ - llRotLookAt(${1:rotation target_direction}, ${2:float strength}, ${3:float damping});\n\ - $0\n\ -snippet llRotTarget\n\ - llRotTarget(${1:rotation rot}, ${2:float error})\n\ -snippet llRotTargetRemove\n\ - llRotTargetRemove(${1:integer handle});\n\ - $0\n\ -snippet llRound\n\ - llRound(${1:float val})\n\ -snippet llSameGroup\n\ - llSameGroup(${1:key group})\n\ -snippet llSay\n\ - llSay(${1:integer channel}, ${2:string msg});\n\ - $0\n\ -snippet llScaleByFactor\n\ - llScaleByFactor(${1:float scaling_factor})\n\ -snippet llScaleTexture\n\ - llScaleTexture(${1:float u}, ${2:float v}, ${3:integer face});\n\ - $0\n\ -snippet llScriptDanger\n\ - llScriptDanger(${1:vector pos})\n\ -snippet llScriptProfiler\n\ - llScriptProfiler(${1:integer flags});\n\ - $0\n\ -snippet llSendRemoteData\n\ - llSendRemoteData(${1:key channel}, ${2:string dest}, ${3:integer idata}, ${4:string sdata})\n\ -snippet llSensor\n\ - llSensor(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc});\n\ - $0\n\ -snippet llSensorRepeat\n\ - llSensorRepeat(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc}, ${6:float rate});\n\ - $0\n\ -snippet llSetAlpha\n\ - llSetAlpha(${1:float alpha}, ${2:integer face});\n\ - $0\n\ -snippet llSetAngularVelocity\n\ - llSetAngularVelocity(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llSetAnimationOverride\n\ - llSetAnimationOverride(${1:string anim_state}, ${2:string anim})\n\ -snippet llSetBuoyancy\n\ - llSetBuoyancy(${1:float buoyancy});\n\ - $0\n\ -snippet llSetCameraAtOffset\n\ - llSetCameraAtOffset(${1:vector offset});\n\ - $0\n\ -snippet llSetCameraEyeOffset\n\ - llSetCameraEyeOffset(${1:vector offset});\n\ - $0\n\ -snippet llSetCameraParams\n\ - llSetCameraParams(${1:list rules});\n\ - $0\n\ -snippet llSetClickAction\n\ - llSetClickAction(${1:integer action});\n\ - $0\n\ -snippet llSetColor\n\ - llSetColor(${1:vector color}, ${2:integer face});\n\ - $0\n\ -snippet llSetContentType\n\ - llSetContentType(${1:key request_id}, ${2:integer content_type});\n\ - $0\n\ -snippet llSetDamage\n\ - llSetDamage(${1:float damage});\n\ - $0\n\ -snippet llSetForce\n\ - llSetForce(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llSetForceAndTorque\n\ - llSetForceAndTorque(${1:vector force}, ${2:vector torque}, ${3:integer local});\n\ - $0\n\ -snippet llSetHoverHeight\n\ - llSetHoverHeight(${1:float height}, ${2:integer water}, ${3:float tau});\n\ - $0\n\ -snippet llSetKeyframedMotion\n\ - llSetKeyframedMotion(${1:list keyframes}, ${2:list options});\n\ - $0\n\ -snippet llSetLinkAlpha\n\ - llSetLinkAlpha(${1:integer link}, ${2:float alpha}, ${3:integer face});\n\ - $0\n\ -snippet llSetLinkCamera\n\ - llSetLinkCamera(${1:integer link}, ${2:vector eye}, ${3:vector at});\n\ - $0\n\ -snippet llSetLinkColor\n\ - llSetLinkColor(${1:integer link}, ${2:vector color}, ${3:integer face});\n\ - $0\n\ -snippet llSetLinkMedia\n\ - llSetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params});\n\ - $0\n\ -snippet llSetLinkPrimitiveParams\n\ - llSetLinkPrimitiveParams(${1:integer link}, ${2:list rules});\n\ - $0\n\ -snippet llSetLinkPrimitiveParamsFast\n\ - llSetLinkPrimitiveParamsFast(${1:integer link}, ${2:list rules});\n\ - $0\n\ -snippet llSetLinkTexture\n\ - llSetLinkTexture(${1:integer link}, ${2:string texture}, ${3:integer face});\n\ - $0\n\ -snippet llSetLinkTextureAnim\n\ - llSetLinkTextureAnim(${1:integer link}, ${2:integer mode}, ${3:integer face}, ${4:integer sizex}, ${5:integer sizey}, ${6:float start}, ${7:float length}, ${8:float rate});\n\ - $0\n\ -snippet llSetLocalRot\n\ - llSetLocalRot(${1:rotation rot});\n\ - $0\n\ -snippet llSetMemoryLimit\n\ - llSetMemoryLimit(${1:integer limit})\n\ -snippet llSetObjectDesc\n\ - llSetObjectDesc(${1:string description});\n\ - $0\n\ -snippet llSetObjectName\n\ - llSetObjectName(${1:string name});\n\ - $0\n\ -snippet llSetParcelMusicURL\n\ - llSetParcelMusicURL(${1:string url});\n\ - $0\n\ -snippet llSetPayPrice\n\ - llSetPayPrice(${1:integer price}, [${2:integer price_button_a}, ${3:integer price_button_b}, ${4:integer price_button_c}, ${5:integer price_button_d}]);\n\ - $0\n\ -snippet llSetPhysicsMaterial\n\ - llSetPhysicsMaterial(${1:integer mask}, ${2:float gravity_multiplier}, ${3:float restitution}, ${4:float friction}, ${5:float density});\n\ - $0\n\ -snippet llSetPos\n\ - llSetPos(${1:vector pos});\n\ - $0\n\ -snippet llSetPrimitiveParams\n\ - llSetPrimitiveParams(${1:list rules});\n\ - $0\n\ -snippet llSetPrimMediaParams\n\ - llSetPrimMediaParams(${1:integer face}, ${2:list params});\n\ - $0\n\ -snippet llSetRegionPos\n\ - llSetRegionPos(${1:vector position})\n\ -snippet llSetRemoteScriptAccessPin\n\ - llSetRemoteScriptAccessPin(${1:integer pin});\n\ - $0\n\ -snippet llSetRot\n\ - llSetRot(${1:rotation rot});\n\ - $0\n\ -snippet llSetScale\n\ - llSetScale(${1:vector size});\n\ - $0\n\ -snippet llSetScriptState\n\ - llSetScriptState(${1:string name}, ${2:integer run});\n\ - $0\n\ -snippet llSetSitText\n\ - llSetSitText(${1:string text});\n\ - $0\n\ -snippet llSetSoundQueueing\n\ - llSetSoundQueueing(${1:integer queue});\n\ - $0\n\ -snippet llSetSoundRadius\n\ - llSetSoundRadius(${1:float radius});\n\ - $0\n\ -snippet llSetStatus\n\ - llSetStatus(${1:integer status}, ${2:integer value});\n\ - $0\n\ -snippet llSetText\n\ - llSetText(${1:string text}, ${2:vector color}, ${3:float alpha});\n\ - $0\n\ -snippet llSetTexture\n\ - llSetTexture(${1:string texture}, ${2:integer face});\n\ - $0\n\ -snippet llSetTextureAnim\n\ - llSetTextureAnim(${1:integer mode}, ${2:integer face}, ${3:integer sizex}, ${4:integer sizey}, ${5:float start}, ${6:float length}, ${7:float rate});\n\ - $0\n\ -snippet llSetTimerEvent\n\ - llSetTimerEvent(${1:float sec});\n\ - $0\n\ -snippet llSetTorque\n\ - llSetTorque(${1:vector torque}, ${2:integer local});\n\ - $0\n\ -snippet llSetTouchText\n\ - llSetTouchText(${1:string text});\n\ - $0\n\ -snippet llSetVehicleFlags\n\ - llSetVehicleFlags(${1:integer flags});\n\ - $0\n\ -snippet llSetVehicleFloatParam\n\ - llSetVehicleFloatParam(${1:integer param}, ${2:float value});\n\ - $0\n\ -snippet llSetVehicleRotationParam\n\ - llSetVehicleRotationParam(${1:integer param}, ${2:rotation rot});\n\ - $0\n\ -snippet llSetVehicleType\n\ - llSetVehicleType(${1:integer type});\n\ - $0\n\ -snippet llSetVehicleVectorParam\n\ - llSetVehicleVectorParam(${1:integer param}, ${2:vector vec});\n\ - $0\n\ -snippet llSetVelocity\n\ - llSetVelocity(${1:vector force}, ${2:integer local});\n\ - $0\n\ -snippet llSHA1String\n\ - llSHA1String(${1:string src})\n\ -snippet llShout\n\ - llShout(${1:integer channel}, ${2:string msg});\n\ - $0\n\ -snippet llSin\n\ - llSin(${1:float theta})\n\ -snippet llSitTarget\n\ - llSitTarget(${1:vector offset}, ${2:rotation rot});\n\ - $0\n\ -snippet llSleep\n\ - llSleep(${1:float sec});\n\ - $0\n\ -snippet llSqrt\n\ - llSqrt(${1:float val})\n\ -snippet llStartAnimation\n\ - llStartAnimation(${1:string anim});\n\ - $0\n\ -snippet llStopAnimation\n\ - llStopAnimation(${1:string anim});\n\ - $0\n\ -snippet llStopHover\n\ - llStopHover();\n\ - $0\n\ -snippet llStopLookAt\n\ - llStopLookAt();\n\ - $0\n\ -snippet llStopMoveToTarget\n\ - llStopMoveToTarget();\n\ - $0\n\ -snippet llStopSound\n\ - llStopSound();\n\ - $0\n\ -snippet llStringLength\n\ - llStringLength(${1:string str})\n\ -snippet llStringToBase64\n\ - llStringToBase64(${1:string str})\n\ -snippet llStringTrim\n\ - llStringTrim(${1:string src}, ${2:integer type})\n\ -snippet llSubStringIndex\n\ - llSubStringIndex(${1:string source}, ${2:string pattern})\n\ -snippet llTakeControls\n\ - llTakeControls(${1:integer controls}, ${2:integer accept}, ${3:integer pass_on});\n\ - $0\n\ -snippet llTan\n\ - llTan(${1:float theta})\n\ -snippet llTarget\n\ - llTarget(${1:vector position}, ${2:float range})\n\ -snippet llTargetOmega\n\ - llTargetOmega(${1:vector axis}, ${2:float spinrate}, ${3:float gain});\n\ - $0\n\ -snippet llTargetRemove\n\ - llTargetRemove(${1:integer handle});\n\ - $0\n\ -snippet llTeleportAgent\n\ - llTeleportAgent(${1:key agent}, ${2:string landmark}, ${3:vector position}, ${4:vector look_at});\n\ - $0\n\ -snippet llTeleportAgentGlobalCoords\n\ - llTeleportAgentGlobalCoords(${1:key agent}, ${2:vector global_coordinates}, ${3:vector region_coordinates}, ${4:vector look_at});\n\ - $0\n\ -snippet llTeleportAgentHome\n\ - llTeleportAgentHome(${1:key agent});\n\ - $0\n\ -snippet llTextBox\n\ - llTextBox(${1:key agent}, ${2:string message}, ${3:integer channel});\n\ - $0\n\ -snippet llToLower\n\ - llToLower(${1:string src})\n\ -snippet llToUpper\n\ - llToUpper(${1:string src})\n\ -snippet llTransferLindenDollars\n\ - llTransferLindenDollars(${1:key destination}, ${2:integer amount})\n\ -snippet llTriggerSound\n\ - llTriggerSound(${1:string sound}, ${2:float volume});\n\ - $0\n\ -snippet llTriggerSoundLimited\n\ - llTriggerSoundLimited(${1:string sound}, ${2:float volume}, ${3:vector top_north_east}, ${4:vector bottom_south_west});\n\ - $0\n\ -snippet llUnescapeURL\n\ - llUnescapeURL(${1:string url})\n\ -snippet llUnSit\n\ - llUnSit(${1:key id});\n\ - $0\n\ -snippet llUpdateCharacter\n\ - llUpdateCharacter(${1:list options})\n\ -snippet llUpdateKeyValue\n\ - llUpdateKeyValue(${1:string k}, ${2:string v}, ${3:integer checked}, ${4:string ov})\n\ -snippet llVecDist\n\ - llVecDist(${1:vector vec_a}, ${2:vector vec_b})\n\ -snippet llVecMag\n\ - llVecMag(${1:vector vec})\n\ -snippet llVecNorm\n\ - llVecNorm(${1:vector vec})\n\ -snippet llVolumeDetect\n\ - llVolumeDetect(${1:integer detect});\n\ - $0\n\ -snippet llWanderWithin\n\ - llWanderWithin(${1:vector origin}, ${2:vector dist}, ${3:list options});\n\ - $0\n\ -snippet llWater\n\ - llWater(${1:vector offset});\n\ - $0\n\ -snippet llWhisper\n\ - llWhisper(${1:integer channel}, ${2:string msg});\n\ - $0\n\ -snippet llWind\n\ - llWind(${1:vector offset});\n\ - $0\n\ -snippet llXorBase64\n\ - llXorBase64(${1:string str1}, ${2:string str2})\n\ -snippet money\n\ - money(${1:key id}, ${2:integer amount})\n\ - {\n\ - $0\n\ - }\n\ -snippet object_rez\n\ - object_rez(${1:key id})\n\ - {\n\ - $0\n\ - }\n\ -snippet on_rez\n\ - on_rez(${1:integer start_param})\n\ - {\n\ - $0\n\ - }\n\ -snippet path_update\n\ - path_update(${1:integer type}, ${2:list reserved})\n\ - {\n\ - $0\n\ - }\n\ -snippet remote_data\n\ - remote_data(${1:integer event_type}, ${2:key channel}, ${3:key message_id}, ${4:string sender}, ${5:integer idata}, ${6:string sdata})\n\ - {\n\ - $0\n\ - }\n\ -snippet run_time_permissions\n\ - run_time_permissions(${1:integer perm})\n\ - {\n\ - $0\n\ - }\n\ -snippet sensor\n\ - sensor(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet state\n\ - state ${1:name}\n\ -snippet touch\n\ - touch(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet touch_end\n\ - touch_end(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet touch_start\n\ - touch_start(${1:integer index})\n\ - {\n\ - $0\n\ - }\n\ -snippet transaction_result\n\ - transaction_result(${1:key id}, ${2:integer success}, ${3:string data})\n\ - {\n\ - $0\n\ - }\n\ -snippet while\n\ - while (${1:condition})\n\ - {\n\ - $0\n\ - }\n\ -"; -exports.scope = "lsl"; +define("ace/snippets/lsl.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet @\n\t@${1:label};\nsnippet CAMERA_ACTIVE\n\tCAMERA_ACTIVE, ${1:integer isActive}, $0\nsnippet CAMERA_BEHINDNESS_ANGLE\n\tCAMERA_BEHINDNESS_ANGLE, ${1:float degrees}, $0\nsnippet CAMERA_BEHINDNESS_LAG\n\tCAMERA_BEHINDNESS_LAG, ${1:float seconds}, $0\nsnippet CAMERA_DISTANCE\n\tCAMERA_DISTANCE, ${1:float meters}, $0\nsnippet CAMERA_FOCUS\n\tCAMERA_FOCUS, ${1:vector position}, $0\nsnippet CAMERA_FOCUS_LAG\n\tCAMERA_FOCUS_LAG, ${1:float seconds}, $0\nsnippet CAMERA_FOCUS_LOCKED\n\tCAMERA_FOCUS_LOCKED, ${1:integer isLocked}, $0\nsnippet CAMERA_FOCUS_OFFSET\n\tCAMERA_FOCUS_OFFSET, ${1:vector meters}, $0\nsnippet CAMERA_FOCUS_THRESHOLD\n\tCAMERA_FOCUS_THRESHOLD, ${1:float meters}, $0\nsnippet CAMERA_PITCH\n\tCAMERA_PITCH, ${1:float degrees}, $0\nsnippet CAMERA_POSITION\n\tCAMERA_POSITION, ${1:vector position}, $0\nsnippet CAMERA_POSITION_LAG\n\tCAMERA_POSITION_LAG, ${1:float seconds}, $0\nsnippet CAMERA_POSITION_LOCKED\n\tCAMERA_POSITION_LOCKED, ${1:integer isLocked}, $0\nsnippet CAMERA_POSITION_THRESHOLD\n\tCAMERA_POSITION_THRESHOLD, ${1:float meters}, $0\nsnippet CHARACTER_AVOIDANCE_MODE\n\tCHARACTER_AVOIDANCE_MODE, ${1:integer flags}, $0\nsnippet CHARACTER_DESIRED_SPEED\n\tCHARACTER_DESIRED_SPEED, ${1:float speed}, $0\nsnippet CHARACTER_DESIRED_TURN_SPEED\n\tCHARACTER_DESIRED_TURN_SPEED, ${1:float speed}, $0\nsnippet CHARACTER_LENGTH\n\tCHARACTER_LENGTH, ${1:float length}, $0\nsnippet CHARACTER_MAX_TURN_RADIUS\n\tCHARACTER_MAX_TURN_RADIUS, ${1:float radius}, $0\nsnippet CHARACTER_ORIENTATION\n\tCHARACTER_ORIENTATION, ${1:integer orientation}, $0\nsnippet CHARACTER_RADIUS\n\tCHARACTER_RADIUS, ${1:float radius}, $0\nsnippet CHARACTER_STAY_WITHIN_PARCEL\n\tCHARACTER_STAY_WITHIN_PARCEL, ${1:boolean stay}, $0\nsnippet CHARACTER_TYPE\n\tCHARACTER_TYPE, ${1:integer type}, $0\nsnippet HTTP_BODY_MAXLENGTH\n\tHTTP_BODY_MAXLENGTH, ${1:integer length}, $0\nsnippet HTTP_CUSTOM_HEADER\n\tHTTP_CUSTOM_HEADER, ${1:string name}, ${2:string value}, $0\nsnippet HTTP_METHOD\n\tHTTP_METHOD, ${1:string method}, $0\nsnippet HTTP_MIMETYPE\n\tHTTP_MIMETYPE, ${1:string mimeType}, $0\nsnippet HTTP_PRAGMA_NO_CACHE\n\tHTTP_PRAGMA_NO_CACHE, ${1:integer send_header}, $0\nsnippet HTTP_VERBOSE_THROTTLE\n\tHTTP_VERBOSE_THROTTLE, ${1:integer noisy}, $0\nsnippet HTTP_VERIFY_CERT\n\tHTTP_VERIFY_CERT, ${1:integer verify}, $0\nsnippet RC_DATA_FLAGS\n\tRC_DATA_FLAGS, ${1:integer flags}, $0\nsnippet RC_DETECT_PHANTOM\n\tRC_DETECT_PHANTOM, ${1:integer dectedPhantom}, $0\nsnippet RC_MAX_HITS\n\tRC_MAX_HITS, ${1:integer maxHits}, $0\nsnippet RC_REJECT_TYPES\n\tRC_REJECT_TYPES, ${1:integer filterMask}, $0\nsnippet at_rot_target\n\tat_rot_target(${1:integer handle}, ${2:rotation targetrot}, ${3:rotation ourrot})\n\t{\n\t\t$0\n\t}\nsnippet at_target\n\tat_target(${1:integer tnum}, ${2:vector targetpos}, ${3:vector ourpos})\n\t{\n\t\t$0\n\t}\nsnippet attach\n\tattach(${1:key id})\n\t{\n\t\t$0\n\t}\nsnippet changed\n\tchanged(${1:integer change})\n\t{\n\t\t$0\n\t}\nsnippet collision\n\tcollision(${1:integer index})\n\t{\n\t\t$0\n\t}\nsnippet collision_end\n\tcollision_end(${1:integer index})\n\t{\n\t\t$0\n\t}\nsnippet collision_start\n\tcollision_start(${1:integer index})\n\t{\n\t\t$0\n\t}\nsnippet control\n\tcontrol(${1:key id}, ${2:integer level}, ${3:integer edge})\n\t{\n\t\t$0\n\t}\nsnippet dataserver\n\tdataserver(${1:key query_id}, ${2:string data})\n\t{\n\t\t$0\n\t}\nsnippet do\n\tdo\n\t{\n\t\t$0\n\t}\n\twhile (${1:condition});\nsnippet else\n\telse\n\t{\n\t\t$0\n\t}\nsnippet email\n\temail(${1:string time}, ${2:string address}, ${3:string subject}, ${4:string message}, ${5:integer num_left})\n\t{\n\t\t$0\n\t}\nsnippet experience_permissions\n\texperience_permissions(${1:key agent_id})\n\t{\n\t\t$0\n\t}\nsnippet experience_permissions_denied\n\texperience_permissions_denied(${1:key agent_id}, ${2:integer reason})\n\t{\n\t\t$0\n\t}\nsnippet for\n\tfor (${1:start}; ${3:condition}; ${3:step})\n\t{\n\t\t$0\n\t}\nsnippet http_request\n\thttp_request(${1:key request_id}, ${2:string method}, ${3:string body})\n\t{\n\t\t$0\n\t}\nsnippet http_response\n\thttp_response(${1:key request_id}, ${2:integer status}, ${3:list metadata}, ${4:string body})\n\t{\n\t\t$0\n\t}\nsnippet if\n\tif (${1:condition})\n\t{\n\t\t$0\n\t}\nsnippet jump\n\tjump ${1:label};\nsnippet land_collision\n\tland_collision(${1:vector pos})\n\t{\n\t\t$0\n\t}\nsnippet land_collision_end\n\tland_collision_end(${1:vector pos})\n\t{\n\t\t$0\n\t}\nsnippet land_collision_start\n\tland_collision_start(${1:vector pos})\n\t{\n\t\t$0\n\t}\nsnippet link_message\n\tlink_message(${1:integer sender_num}, ${2:integer num}, ${3:string str}, ${4:key id})\n\t{\n\t\t$0\n\t}\nsnippet listen\n\tlisten(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string message})\n\t{\n\t\t$0\n\t}\nsnippet llAbs\n\tllAbs(${1:integer val})\nsnippet llAcos\n\tllAcos(${1:float val})\nsnippet llAddToLandBanList\n\tllAddToLandBanList(${1:key agent}, ${2:float hours});\n\t$0\nsnippet llAddToLandPassList\n\tllAddToLandPassList(${1:key agent}, ${2:float hours});\n\t$0\nsnippet llAdjustSoundVolume\n\tllAdjustSoundVolume(${1:float volume});\n\t$0\nsnippet llAgentInExperience\n\tllAgentInExperience(${1:key agent})\nsnippet llAllowInventoryDrop\n\tllAllowInventoryDrop(${1:integer add});\n\t$0\nsnippet llAngleBetween\n\tllAngleBetween(${1:rotation a}, ${2:rotation b})\nsnippet llApplyImpulse\n\tllApplyImpulse(${1:vector force}, ${2:integer local});\n\t$0\nsnippet llApplyRotationalImpulse\n\tllApplyRotationalImpulse(${1:vector force}, ${2:integer local});\n\t$0\nsnippet llAsin\n\tllAsin(${1:float val})\nsnippet llAtan2\n\tllAtan2(${1:float y}, ${2:float x})\nsnippet llAttachToAvatar\n\tllAttachToAvatar(${1:integer attach_point});\n\t$0\nsnippet llAttachToAvatarTemp\n\tllAttachToAvatarTemp(${1:integer attach_point});\n\t$0\nsnippet llAvatarOnLinkSitTarget\n\tllAvatarOnLinkSitTarget(${1:integer link})\nsnippet llAvatarOnSitTarget\n\tllAvatarOnSitTarget()\nsnippet llAxes2Rot\n\tllAxes2Rot(${1:vector fwd}, ${2:vector left}, ${3:vector up})\nsnippet llAxisAngle2Rot\n\tllAxisAngle2Rot(${1:vector axis}, ${2:float angle})\nsnippet llBase64ToInteger\n\tllBase64ToInteger(${1:string str})\nsnippet llBase64ToString\n\tllBase64ToString(${1:string str})\nsnippet llBreakAllLinks\n\tllBreakAllLinks();\n\t$0\nsnippet llBreakLink\n\tllBreakLink(${1:integer link});\n\t$0\nsnippet llCastRay\n\tllCastRay(${1:vector start}, ${2:vector end}, ${3:list options});\n\t$0\nsnippet llCeil\n\tllCeil(${1:float val})\nsnippet llClearCameraParams\n\tllClearCameraParams();\n\t$0\nsnippet llClearLinkMedia\n\tllClearLinkMedia(${1:integer link}, ${2:integer face});\n\t$0\nsnippet llClearPrimMedia\n\tllClearPrimMedia(${1:integer face});\n\t$0\nsnippet llCloseRemoteDataChannel\n\tllCloseRemoteDataChannel(${1:key channel});\n\t$0\nsnippet llCollisionFilter\n\tllCollisionFilter(${1:string name}, ${2:key id}, ${3:integer accept});\n\t$0\nsnippet llCollisionSound\n\tllCollisionSound(${1:string impact_sound}, ${2:float impact_volume});\n\t$0\nsnippet llCos\n\tllCos(${1:float theta})\nsnippet llCreateCharacter\n\tllCreateCharacter(${1:list options});\n\t$0\nsnippet llCreateKeyValue\n\tllCreateKeyValue(${1:string k})\nsnippet llCreateLink\n\tllCreateLink(${1:key target}, ${2:integer parent});\n\t$0\nsnippet llCSV2List\n\tllCSV2List(${1:string src})\nsnippet llDataSizeKeyValue\n\tllDataSizeKeyValue()\nsnippet llDeleteCharacter\n\tllDeleteCharacter();\n\t$0\nsnippet llDeleteKeyValue\n\tllDeleteKeyValue(${1:string k})\nsnippet llDeleteSubList\n\tllDeleteSubList(${1:list src}, ${2:integer start}, ${3:integer end})\nsnippet llDeleteSubString\n\tllDeleteSubString(${1:string src}, ${2:integer start}, ${3:integer end})\nsnippet llDetachFromAvatar\n\tllDetachFromAvatar();\n\t$0\nsnippet llDetectedGrab\n\tllDetectedGrab(${1:integer number})\nsnippet llDetectedGroup\n\tllDetectedGroup(${1:integer number})\nsnippet llDetectedKey\n\tllDetectedKey(${1:integer number})\nsnippet llDetectedLinkNumber\n\tllDetectedLinkNumber(${1:integer number})\nsnippet llDetectedName\n\tllDetectedName(${1:integer number})\nsnippet llDetectedOwner\n\tllDetectedOwner(${1:integer number})\nsnippet llDetectedPos\n\tllDetectedPosl(${1:integer number})\nsnippet llDetectedRot\n\tllDetectedRot(${1:integer number})\nsnippet llDetectedTouchBinormal\n\tllDetectedTouchBinormal(${1:integer number})\nsnippet llDetectedTouchFace\n\tllDetectedTouchFace(${1:integer number})\nsnippet llDetectedTouchNormal\n\tllDetectedTouchNormal(${1:integer number})\nsnippet llDetectedTouchPos\n\tllDetectedTouchPos(${1:integer number})\nsnippet llDetectedTouchST\n\tllDetectedTouchST(${1:integer number})\nsnippet llDetectedTouchUV\n\tllDetectedTouchUV(${1:integer number})\nsnippet llDetectedType\n\tllDetectedType(${1:integer number})\nsnippet llDetectedVel\n\tllDetectedVel(${1:integer number})\nsnippet llDialog\n\tllDialog(${1:key agent}, ${2:string message}, ${3:list buttons}, ${4:integer channel});\n\t$0\nsnippet llDie\n\tllDie();\n\t$0\nsnippet llDumpList2String\n\tllDumpList2String(${1:list src}, ${2:string separator})\nsnippet llEdgeOfWorld\n\tllEdgeOfWorld(${1:vector pos}, ${2:vector dir})\nsnippet llEjectFromLand\n\tllEjectFromLand(${1:key agent});\n\t$0\nsnippet llEmail\n\tllEmail(${1:string address}, ${2:string subject}, ${3:string message});\n\t$0\nsnippet llEscapeURL\n\tllEscapeURL(${1:string url})\nsnippet llEuler2Rot\n\tllEuler2Rot(${1:vector v})\nsnippet llExecCharacterCmd\n\tllExecCharacterCmd(${1:integer command}, ${2:list options});\n\t$0\nsnippet llEvade\n\tllEvade(${1:key target}, ${2:list options});\n\t$0\nsnippet llFabs\n\tllFabs(${1:float val})\nsnippet llFleeFrom\n\tllFleeFrom(${1:vector position}, ${2:float distance}, ${3:list options});\n\t$0\nsnippet llFloor\n\tllFloor(${1:float val})\nsnippet llForceMouselook\n\tllForceMouselook(${1:integer mouselook});\n\t$0\nsnippet llFrand\n\tllFrand(${1:float mag})\nsnippet llGenerateKey\n\tllGenerateKey()\nsnippet llGetAccel\n\tllGetAccel()\nsnippet llGetAgentInfo\n\tllGetAgentInfo(${1:key id})\nsnippet llGetAgentLanguage\n\tllGetAgentLanguage(${1:key agent})\nsnippet llGetAgentList\n\tllGetAgentList(${1:integer scope}, ${2:list options})\nsnippet llGetAgentSize\n\tllGetAgentSize(${1:key agent})\nsnippet llGetAlpha\n\tllGetAlpha(${1:integer face})\nsnippet llGetAndResetTime\n\tllGetAndResetTime()\nsnippet llGetAnimation\n\tllGetAnimation(${1:key id})\nsnippet llGetAnimationList\n\tllGetAnimationList(${1:key agent})\nsnippet llGetAnimationOverride\n\tllGetAnimationOverride(${1:string anim_state})\nsnippet llGetAttached\n\tllGetAttached()\nsnippet llGetAttachedList\n\tllGetAttachedList(${1:key id})\nsnippet llGetBoundingBox\n\tllGetBoundingBox(${1:key object})\nsnippet llGetCameraPos\n\tllGetCameraPos()\nsnippet llGetCameraRot\n\tllGetCameraRot()\nsnippet llGetCenterOfMass\n\tllGetCenterOfMass()\nsnippet llGetClosestNavPoint\n\tllGetClosestNavPoint(${1:vector point}, ${2:list options})\nsnippet llGetColor\n\tllGetColor(${1:integer face})\nsnippet llGetCreator\n\tllGetCreator()\nsnippet llGetDate\n\tllGetDate()\nsnippet llGetDisplayName\n\tllGetDisplayName(${1:key id})\nsnippet llGetEnergy\n\tllGetEnergy()\nsnippet llGetEnv\n\tllGetEnv(${1:string name})\nsnippet llGetExperienceDetails\n\tllGetExperienceDetails(${1:key experience_id})\nsnippet llGetExperienceErrorMessage\n\tllGetExperienceErrorMessage(${1:integer error})\nsnippet llGetForce\n\tllGetForce()\nsnippet llGetFreeMemory\n\tllGetFreeMemory()\nsnippet llGetFreeURLs\n\tllGetFreeURLs()\nsnippet llGetGeometricCenter\n\tllGetGeometricCenter()\nsnippet llGetGMTclock\n\tllGetGMTclock()\nsnippet llGetHTTPHeader\n\tllGetHTTPHeader(${1:key request_id}, ${2:string header})\nsnippet llGetInventoryCreator\n\tllGetInventoryCreator(${1:string item})\nsnippet llGetInventoryKey\n\tllGetInventoryKey(${1:string name})\nsnippet llGetInventoryName\n\tllGetInventoryName(${1:integer type}, ${2:integer number})\nsnippet llGetInventoryNumber\n\tllGetInventoryNumber(${1:integer type})\nsnippet llGetInventoryPermMask\n\tllGetInventoryPermMask(${1:string item}, ${2:integer mask})\nsnippet llGetInventoryType\n\tllGetInventoryType(${1:string name})\nsnippet llGetKey\n\tllGetKey()\nsnippet llGetLandOwnerAt\n\tllGetLandOwnerAt(${1:vector pos})\nsnippet llGetLinkKey\n\tllGetLinkKey(${1:integer link})\nsnippet llGetLinkMedia\n\tllGetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params})\nsnippet llGetLinkName\n\tllGetLinkName(${1:integer link})\nsnippet llGetLinkNumber\n\tllGetLinkNumber()\nsnippet llGetLinkNumberOfSides\n\tllGetLinkNumberOfSides(${1:integer link})\nsnippet llGetLinkPrimitiveParams\n\tllGetLinkPrimitiveParams(${1:integer link}, ${2:list params})\nsnippet llGetListEntryType\n\tllGetListEntryType(${1:list src}, ${2:integer index})\nsnippet llGetListLength\n\tllGetListLength(${1:list src})\nsnippet llGetLocalPos\n\tllGetLocalPos()\nsnippet llGetLocalRot\n\tllGetLocalRot()\nsnippet llGetMass\n\tllGetMass()\nsnippet llGetMassMKS\n\tllGetMassMKS()\nsnippet llGetMaxScaleFactor\n\tllGetMaxScaleFactor()\nsnippet llGetMemoryLimit\n\tllGetMemoryLimit()\nsnippet llGetMinScaleFactor\n\tllGetMinScaleFactor()\nsnippet llGetNextEmail\n\tllGetNextEmail(${1:string address}, ${2:string subject});\n\t$0\nsnippet llGetNotecardLine\n\tllGetNotecardLine(${1:string name}, ${2:integer line})\nsnippet llGetNumberOfNotecardLines\n\tllGetNumberOfNotecardLines(${1:string name})\nsnippet llGetNumberOfPrims\n\tllGetNumberOfPrims()\nsnippet llGetNumberOfSides\n\tllGetNumberOfSides()\nsnippet llGetObjectDesc\n\tllGetObjectDesc()\nsnippet llGetObjectDetails\n\tllGetObjectDetails(${1:key id}, ${2:list params})\nsnippet llGetObjectMass\n\tllGetObjectMass(${1:key id})\nsnippet llGetObjectName\n\tllGetObjectName()\nsnippet llGetObjectPermMask\n\tllGetObjectPermMask(${1:integer mask})\nsnippet llGetObjectPrimCount\n\tllGetObjectPrimCount(${1:key prim})\nsnippet llGetOmega\n\tllGetOmega()\nsnippet llGetOwner\n\tllGetOwner()\nsnippet llGetOwnerKey\n\tllGetOwnerKey(${1:key id})\nsnippet llGetParcelDetails\n\tllGetParcelDetails(${1:vector pos}, ${2:list params})\nsnippet llGetParcelFlags\n\tllGetParcelFlags(${1:vector pos})\nsnippet llGetParcelMaxPrims\n\tllGetParcelMaxPrims(${1:vector pos}, ${2:integer sim_wide})\nsnippet llGetParcelMusicURL\n\tllGetParcelMusicURL()\nsnippet llGetParcelPrimCount\n\tllGetParcelPrimCount(${1:vector pos}, ${2:integer category}, ${3:integer sim_wide})\nsnippet llGetParcelPrimOwners\n\tllGetParcelPrimOwners(${1:vector pos})\nsnippet llGetPermissions\n\tllGetPermissions()\nsnippet llGetPermissionsKey\n\tllGetPermissionsKey()\nsnippet llGetPhysicsMaterial\n\tllGetPhysicsMaterial()\nsnippet llGetPos\n\tllGetPos()\nsnippet llGetPrimitiveParams\n\tllGetPrimitiveParams(${1:list params})\nsnippet llGetPrimMediaParams\n\tllGetPrimMediaParams(${1:integer face}, ${2:list params})\nsnippet llGetRegionAgentCount\n\tllGetRegionAgentCount()\nsnippet llGetRegionCorner\n\tllGetRegionCorner()\nsnippet llGetRegionFlags\n\tllGetRegionFlags()\nsnippet llGetRegionFPS\n\tllGetRegionFPS()\nsnippet llGetRegionName\n\tllGetRegionName()\nsnippet llGetRegionTimeDilation\n\tllGetRegionTimeDilation()\nsnippet llGetRootPosition\n\tllGetRootPosition()\nsnippet llGetRootRotation\n\tllGetRootRotation()\nsnippet llGetRot\n\tllGetRot()\nsnippet llGetScale\n\tllGetScale()\nsnippet llGetScriptName\n\tllGetScriptName()\nsnippet llGetScriptState\n\tllGetScriptState(${1:string script})\nsnippet llGetSimStats\n\tllGetSimStats(${1:integer stat_type})\nsnippet llGetSimulatorHostname\n\tllGetSimulatorHostname()\nsnippet llGetSPMaxMemory\n\tllGetSPMaxMemory()\nsnippet llGetStartParameter\n\tllGetStartParameter()\nsnippet llGetStaticPath\n\tllGetStaticPath(${1:vector start}, ${2:vector end}, ${3:float radius}, ${4:list params})\nsnippet llGetStatus\n\tllGetStatus(${1:integer status})\nsnippet llGetSubString\n\tllGetSubString(${1:string src}, ${2:integer start}, ${3:integer end})\nsnippet llGetSunDirection\n\tllGetSunDirection()\nsnippet llGetTexture\n\tllGetTexture(${1:integer face})\nsnippet llGetTextureOffset\n\tllGetTextureOffset(${1:integer face})\nsnippet llGetTextureRot\n\tllGetTextureRot(${1:integer face})\nsnippet llGetTextureScale\n\tllGetTextureScale(${1:integer face})\nsnippet llGetTime\n\tllGetTime()\nsnippet llGetTimeOfDay\n\tllGetTimeOfDay()\nsnippet llGetTimestamp\n\tllGetTimestamp()\nsnippet llGetTorque\n\tllGetTorque()\nsnippet llGetUnixTime\n\tllGetUnixTime()\nsnippet llGetUsedMemory\n\tllGetUsedMemory()\nsnippet llGetUsername\n\tllGetUsername(${1:key id})\nsnippet llGetVel\n\tllGetVel()\nsnippet llGetWallclock\n\tllGetWallclock()\nsnippet llGiveInventory\n\tllGiveInventory(${1:key destination}, ${2:string inventory});\n\t$0\nsnippet llGiveInventoryList\n\tllGiveInventoryList(${1:key target}, ${2:string folder}, ${3:list inventory});\n\t$0\nsnippet llGiveMoney\n\tllGiveMoney(${1:key destination}, ${2:integer amount})\nsnippet llGround\n\tllGround(${1:vector offset})\nsnippet llGroundContour\n\tllGroundContour(${1:vector offset})\nsnippet llGroundNormal\n\tllGroundNormal(${1:vector offset})\nsnippet llGroundRepel\n\tllGroundRepel(${1:float height}, ${2:integer water}, ${3:float tau});\n\t$0\nsnippet llGroundSlope\n\tllGroundSlope(${1:vector offset})\nsnippet llHTTPRequest\n\tllHTTPRequest(${1:string url}, ${2:list parameters}, ${3:string body})\nsnippet llHTTPResponse\n\tllHTTPResponse(${1:key request_id}, ${2:integer status}, ${3:string body});\n\t$0\nsnippet llInsertString\n\tllInsertString(${1:string dst}, ${2:integer pos}, ${3:string src})\nsnippet llInstantMessage\n\tllInstantMessage(${1:key user}, ${2:string message});\n\t$0\nsnippet llIntegerToBase64\n\tllIntegerToBase64(${1:integer number})\nsnippet llJson2List\n\tllJson2List(${1:string json})\nsnippet llJsonGetValue\n\tllJsonGetValue(${1:string json}, ${2:list specifiers})\nsnippet llJsonSetValue\n\tllJsonSetValue(${1:string json}, ${2:list specifiers}, ${3:string newValue})\nsnippet llJsonValueType\n\tllJsonValueType(${1:string json}, ${2:list specifiers})\nsnippet llKey2Name\n\tllKey2Name(${1:key id})\nsnippet llKeyCountKeyValue\n\tllKeyCountKeyValue()\nsnippet llKeysKeyValue\n\tllKeysKeyValue(${1:integer first}, ${2:integer count})\nsnippet llLinkParticleSystem\n\tllLinkParticleSystem(${1:integer link}, ${2:list rules});\n\t$0\nsnippet llLinkSitTarget\n\tllLinkSitTarget(${1:integer link}, ${2:vector offset}, ${3:rotation rot});\n\t$0\nsnippet llList2CSV\n\tllList2CSV(${1:list src})\nsnippet llList2Float\n\tllList2Float(${1:list src}, ${2:integer index})\nsnippet llList2Integer\n\tllList2Integer(${1:list src}, ${2:integer index})\nsnippet llList2Json\n\tllList2Json(${1:string type}, ${2:list values})\nsnippet llList2Key\n\tllList2Key(${1:list src}, ${2:integer index})\nsnippet llList2List\n\tllList2List(${1:list src}, ${2:integer start}, ${3:integer end})\nsnippet llList2ListStrided\n\tllList2ListStrided(${1:list src}, ${2:integer start}, ${3:integer end}, ${4:integer stride})\nsnippet llList2Rot\n\tllList2Rot(${1:list src}, ${2:integer index})\nsnippet llList2String\n\tllList2String(${1:list src}, ${2:integer index})\nsnippet llList2Vector\n\tllList2Vector(${1:list src}, ${2:integer index})\nsnippet llListen\n\tllListen(${1:integer channel}, ${2:string name}, ${3:key id}, ${4:string msg})\nsnippet llListenControl\n\tllListenControl(${1:integer handle}, ${2:integer active});\n\t$0\nsnippet llListenRemove\n\tllListenRemove(${1:integer handle});\n\t$0\nsnippet llListFindList\n\tllListFindList(${1:list src}, ${2:list test})\nsnippet llListInsertList\n\tllListInsertList(${1:list dest}, ${2:list src}, ${3:integer start})\nsnippet llListRandomize\n\tllListRandomize(${1:list src}, ${2:integer stride})\nsnippet llListReplaceList\n\tllListReplaceList(${1:list dest}, ${2:list src}, ${3:integer start}, ${4:integer end})\nsnippet llListSort\n\tllListSort(${1:list src}, ${2:integer stride}, ${3:integer ascending})\nsnippet llListStatistics\n\tllListStatistics(${1:integer operation}, ${2:list src})\nsnippet llLoadURL\n\tllLoadURL(${1:key agent}, ${2:string message}, ${3:string url});\n\t$0\nsnippet llLog\n\tllLog(${1:float val})\nsnippet llLog10\n\tllLog10(${1:float val})\nsnippet llLookAt\n\tllLookAt(${1:vector target}, ${2:float strength}, ${3:float damping});\n\t$0\nsnippet llLoopSound\n\tllLoopSound(${1:string sound}, ${2:float volume});\n\t$0\nsnippet llLoopSoundMaster\n\tllLoopSoundMaster(${1:string sound}, ${2:float volume});\n\t$0\nsnippet llLoopSoundSlave\n\tllLoopSoundSlave(${1:string sound}, ${2:float volume});\n\t$0\nsnippet llManageEstateAccess\n\tllManageEstateAccess(${1:integer action}, ${2:key agent})\nsnippet llMapDestination\n\tllMapDestination(${1:string simname}, ${2:vector pos}, ${3:vector look_at});\n\t$0\nsnippet llMD5String\n\tllMD5String(${1:string src}, ${2:integer nonce})\nsnippet llMessageLinked\n\tllMessageLinked(${1:integer link}, ${2:integer num}, ${3:string str}, ${4:key id});\n\t$0\nsnippet llMinEventDelay\n\tllMinEventDelay(${1:float delay});\n\t$0\nsnippet llModifyLand\n\tllModifyLand(${1:integer action}, ${2:integer brush});\n\t$0\nsnippet llModPow\n\tllModPow(${1:integer a}, ${2:integer b}, ${3:integer c})\nsnippet llMoveToTarget\n\tllMoveToTarget(${1:vector target}, ${2:float tau});\n\t$0\nsnippet llNavigateTo\n\tllNavigateTo(${1:vector pos}, ${2:list options});\n\t$0\nsnippet llOffsetTexture\n\tllOffsetTexture(${1:float u}, ${2:float v}, ${3:integer face});\n\t$0\nsnippet llOpenRemoteDataChannel\n\tllOpenRemoteDataChannel();\n\t$0\nsnippet llOverMyLand\n\tllOverMyLand(${1:key id})\nsnippet llOwnerSay\n\tllOwnerSay(${1:string msg});\n\t$0\nsnippet llParcelMediaCommandList\n\tllParcelMediaCommandList(${1:list commandList});\n\t$0\nsnippet llParcelMediaQuery\n\tllParcelMediaQuery(${1:list query})\nsnippet llParseString2List\n\tllParseString2List(${1:string src}, ${2:list separators}, ${3:list spacers})\nsnippet llParseStringKeepNulls\n\tllParseStringKeepNulls(${1:string src}, ${2:list separators}, ${3:list spacers})\nsnippet llParticleSystem\n\tllParticleSystem(${1:list rules});\n\t$0\nsnippet llPassCollisions\n\tllPassCollisions(${1:integer pass});\n\t$0\nsnippet llPassTouches\n\tllPassTouches(${1:integer pass});\n\t$0\nsnippet llPatrolPoints\n\tllPatrolPoints(${1:list patrolPoints}, ${2:list options});\n\t$0\nsnippet llPlaySound\n\tllPlaySound(${1:string sound}, ${2:float volume});\n\t$0\nsnippet llPlaySoundSlave\n\tllPlaySoundSlave(${1:string sound}, ${2:float volume});\n\t$0\nsnippet llPow\n\tllPow(${1:float base}, ${2:float exponent})\nsnippet llPreloadSound\n\tllPreloadSound(${1:string sound});\n\t$0\nsnippet llPursue\n\tllPursue(${1:key target}, ${2:list options});\n\t$0\nsnippet llPushObject\n\tllPushObject(${1:key target}, ${2:vector impulse}, ${3:vector ang_impulse}, ${4:integer local});\n\t$0\nsnippet llReadKeyValue\n\tllReadKeyValue(${1:string k})\nsnippet llRegionSay\n\tllRegionSay(${1:integer channel}, ${2:string msg});\n\t$0\nsnippet llRegionSayTo\n\tllRegionSayTo(${1:key target}, ${2:integer channel}, ${3:string msg});\n\t$0\nsnippet llReleaseControls\n\tllReleaseControls();\n\t$0\nsnippet llReleaseURL\n\tllReleaseURL(${1:string url});\n\t$0\nsnippet llRemoteDataReply\n\tllRemoteDataReply(${1:key channel}, ${2:key message_id}, ${3:string sdata}, ${4:integer idata});\n\t$0\nsnippet llRemoteLoadScriptPin\n\tllRemoteLoadScriptPin(${1:key target}, ${2:string name}, ${3:integer pin}, ${4:integer running}, ${5:integer start_param});\n\t$0\nsnippet llRemoveFromLandBanList\n\tllRemoveFromLandBanList(${1:key agent});\n\t$0\nsnippet llRemoveFromLandPassList\n\tllRemoveFromLandPassList(${1:key agent});\n\t$0\nsnippet llRemoveInventory\n\tllRemoveInventory(${1:string item});\n\t$0\nsnippet llRemoveVehicleFlags\n\tllRemoveVehicleFlags(${1:integer flags});\n\t$0\nsnippet llRequestAgentData\n\tllRequestAgentData(${1:key id}, ${2:integer data})\nsnippet llRequestDisplayName\n\tllRequestDisplayName(${1:key id})\nsnippet llRequestExperiencePermissions\n\tllRequestExperiencePermissions(${1:key agent}, ${2:string name})\nsnippet llRequestInventoryData\n\tllRequestInventoryData(${1:string name})\nsnippet llRequestPermissions\n\tllRequestPermissions(${1:key agent}, ${2:integer permissions})\nsnippet llRequestSecureURL\n\tllRequestSecureURL()\nsnippet llRequestSimulatorData\n\tllRequestSimulatorData(${1:string region}, ${2:integer data})\nsnippet llRequestURL\n\tllRequestURL()\nsnippet llRequestUsername\n\tllRequestUsername(${1:key id})\nsnippet llResetAnimationOverride\n\tllResetAnimationOverride(${1:string anim_state});\n\t$0\nsnippet llResetLandBanList\n\tllResetLandBanList();\n\t$0\nsnippet llResetLandPassList\n\tllResetLandPassList();\n\t$0\nsnippet llResetOtherScript\n\tllResetOtherScript(${1:string name});\n\t$0\nsnippet llResetScript\n\tllResetScript();\n\t$0\nsnippet llResetTime\n\tllResetTime();\n\t$0\nsnippet llReturnObjectsByID\n\tllReturnObjectsByID(${1:list objects})\nsnippet llReturnObjectsByOwner\n\tllReturnObjectsByOwner(${1:key owner}, ${2:integer scope})\nsnippet llRezAtRoot\n\tllRezAtRoot(${1:string inventory}, ${2:vector position}, ${3:vector velocity}, ${4:rotation rot}, ${5:integer param});\n\t$0\nsnippet llRezObject\n\tllRezObject(${1:string inventory}, ${2:vector pos}, ${3:vector vel}, ${4:rotation rot}, ${5:integer param});\n\t$0\nsnippet llRot2Angle\n\tllRot2Angle(${1:rotation rot})\nsnippet llRot2Axis\n\tllRot2Axis(${1:rotation rot})\nsnippet llRot2Euler\n\tllRot2Euler(${1:rotation quat})\nsnippet llRot2Fwd\n\tllRot2Fwd(${1:rotation q})\nsnippet llRot2Left\n\tllRot2Left(${1:rotation q})\nsnippet llRot2Up\n\tllRot2Up(${1:rotation q})\nsnippet llRotateTexture\n\tllRotateTexture(${1:float angle}, ${2:integer face});\n\t$0\nsnippet llRotBetween\n\tllRotBetween(${1:vector start}, ${2:vector end})\nsnippet llRotLookAt\n\tllRotLookAt(${1:rotation target_direction}, ${2:float strength}, ${3:float damping});\n\t$0\nsnippet llRotTarget\n\tllRotTarget(${1:rotation rot}, ${2:float error})\nsnippet llRotTargetRemove\n\tllRotTargetRemove(${1:integer handle});\n\t$0\nsnippet llRound\n\tllRound(${1:float val})\nsnippet llSameGroup\n\tllSameGroup(${1:key group})\nsnippet llSay\n\tllSay(${1:integer channel}, ${2:string msg});\n\t$0\nsnippet llScaleByFactor\n\tllScaleByFactor(${1:float scaling_factor})\nsnippet llScaleTexture\n\tllScaleTexture(${1:float u}, ${2:float v}, ${3:integer face});\n\t$0\nsnippet llScriptDanger\n\tllScriptDanger(${1:vector pos})\nsnippet llScriptProfiler\n\tllScriptProfiler(${1:integer flags});\n\t$0\nsnippet llSendRemoteData\n\tllSendRemoteData(${1:key channel}, ${2:string dest}, ${3:integer idata}, ${4:string sdata})\nsnippet llSensor\n\tllSensor(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc});\n\t$0\nsnippet llSensorRepeat\n\tllSensorRepeat(${1:string name}, ${2:key id}, ${3:integer type}, ${4:float range}, ${5:float arc}, ${6:float rate});\n\t$0\nsnippet llSetAlpha\n\tllSetAlpha(${1:float alpha}, ${2:integer face});\n\t$0\nsnippet llSetAngularVelocity\n\tllSetAngularVelocity(${1:vector force}, ${2:integer local});\n\t$0\nsnippet llSetAnimationOverride\n\tllSetAnimationOverride(${1:string anim_state}, ${2:string anim})\nsnippet llSetBuoyancy\n\tllSetBuoyancy(${1:float buoyancy});\n\t$0\nsnippet llSetCameraAtOffset\n\tllSetCameraAtOffset(${1:vector offset});\n\t$0\nsnippet llSetCameraEyeOffset\n\tllSetCameraEyeOffset(${1:vector offset});\n\t$0\nsnippet llSetCameraParams\n\tllSetCameraParams(${1:list rules});\n\t$0\nsnippet llSetClickAction\n\tllSetClickAction(${1:integer action});\n\t$0\nsnippet llSetColor\n\tllSetColor(${1:vector color}, ${2:integer face});\n\t$0\nsnippet llSetContentType\n\tllSetContentType(${1:key request_id}, ${2:integer content_type});\n\t$0\nsnippet llSetDamage\n\tllSetDamage(${1:float damage});\n\t$0\nsnippet llSetForce\n\tllSetForce(${1:vector force}, ${2:integer local});\n\t$0\nsnippet llSetForceAndTorque\n\tllSetForceAndTorque(${1:vector force}, ${2:vector torque}, ${3:integer local});\n\t$0\nsnippet llSetHoverHeight\n\tllSetHoverHeight(${1:float height}, ${2:integer water}, ${3:float tau});\n\t$0\nsnippet llSetKeyframedMotion\n\tllSetKeyframedMotion(${1:list keyframes}, ${2:list options});\n\t$0\nsnippet llSetLinkAlpha\n\tllSetLinkAlpha(${1:integer link}, ${2:float alpha}, ${3:integer face});\n\t$0\nsnippet llSetLinkCamera\n\tllSetLinkCamera(${1:integer link}, ${2:vector eye}, ${3:vector at});\n\t$0\nsnippet llSetLinkColor\n\tllSetLinkColor(${1:integer link}, ${2:vector color}, ${3:integer face});\n\t$0\nsnippet llSetLinkMedia\n\tllSetLinkMedia(${1:integer link}, ${2:integer face}, ${3:list params});\n\t$0\nsnippet llSetLinkPrimitiveParams\n\tllSetLinkPrimitiveParams(${1:integer link}, ${2:list rules});\n\t$0\nsnippet llSetLinkPrimitiveParamsFast\n\tllSetLinkPrimitiveParamsFast(${1:integer link}, ${2:list rules});\n\t$0\nsnippet llSetLinkTexture\n\tllSetLinkTexture(${1:integer link}, ${2:string texture}, ${3:integer face});\n\t$0\nsnippet llSetLinkTextureAnim\n\tllSetLinkTextureAnim(${1:integer link}, ${2:integer mode}, ${3:integer face}, ${4:integer sizex}, ${5:integer sizey}, ${6:float start}, ${7:float length}, ${8:float rate});\n\t$0\nsnippet llSetLocalRot\n\tllSetLocalRot(${1:rotation rot});\n\t$0\nsnippet llSetMemoryLimit\n\tllSetMemoryLimit(${1:integer limit})\nsnippet llSetObjectDesc\n\tllSetObjectDesc(${1:string description});\n\t$0\nsnippet llSetObjectName\n\tllSetObjectName(${1:string name});\n\t$0\nsnippet llSetParcelMusicURL\n\tllSetParcelMusicURL(${1:string url});\n\t$0\nsnippet llSetPayPrice\n\tllSetPayPrice(${1:integer price}, [${2:integer price_button_a}, ${3:integer price_button_b}, ${4:integer price_button_c}, ${5:integer price_button_d}]);\n\t$0\nsnippet llSetPhysicsMaterial\n\tllSetPhysicsMaterial(${1:integer mask}, ${2:float gravity_multiplier}, ${3:float restitution}, ${4:float friction}, ${5:float density});\n\t$0\nsnippet llSetPos\n\tllSetPos(${1:vector pos});\n\t$0\nsnippet llSetPrimitiveParams\n\tllSetPrimitiveParams(${1:list rules});\n\t$0\nsnippet llSetPrimMediaParams\n\tllSetPrimMediaParams(${1:integer face}, ${2:list params});\n\t$0\nsnippet llSetRegionPos\n\tllSetRegionPos(${1:vector position})\nsnippet llSetRemoteScriptAccessPin\n\tllSetRemoteScriptAccessPin(${1:integer pin});\n\t$0\nsnippet llSetRot\n\tllSetRot(${1:rotation rot});\n\t$0\nsnippet llSetScale\n\tllSetScale(${1:vector size});\n\t$0\nsnippet llSetScriptState\n\tllSetScriptState(${1:string name}, ${2:integer run});\n\t$0\nsnippet llSetSitText\n\tllSetSitText(${1:string text});\n\t$0\nsnippet llSetSoundQueueing\n\tllSetSoundQueueing(${1:integer queue});\n\t$0\nsnippet llSetSoundRadius\n\tllSetSoundRadius(${1:float radius});\n\t$0\nsnippet llSetStatus\n\tllSetStatus(${1:integer status}, ${2:integer value});\n\t$0\nsnippet llSetText\n\tllSetText(${1:string text}, ${2:vector color}, ${3:float alpha});\n\t$0\nsnippet llSetTexture\n\tllSetTexture(${1:string texture}, ${2:integer face});\n\t$0\nsnippet llSetTextureAnim\n\tllSetTextureAnim(${1:integer mode}, ${2:integer face}, ${3:integer sizex}, ${4:integer sizey}, ${5:float start}, ${6:float length}, ${7:float rate});\n\t$0\nsnippet llSetTimerEvent\n\tllSetTimerEvent(${1:float sec});\n\t$0\nsnippet llSetTorque\n\tllSetTorque(${1:vector torque}, ${2:integer local});\n\t$0\nsnippet llSetTouchText\n\tllSetTouchText(${1:string text});\n\t$0\nsnippet llSetVehicleFlags\n\tllSetVehicleFlags(${1:integer flags});\n\t$0\nsnippet llSetVehicleFloatParam\n\tllSetVehicleFloatParam(${1:integer param}, ${2:float value});\n\t$0\nsnippet llSetVehicleRotationParam\n\tllSetVehicleRotationParam(${1:integer param}, ${2:rotation rot});\n\t$0\nsnippet llSetVehicleType\n\tllSetVehicleType(${1:integer type});\n\t$0\nsnippet llSetVehicleVectorParam\n\tllSetVehicleVectorParam(${1:integer param}, ${2:vector vec});\n\t$0\nsnippet llSetVelocity\n\tllSetVelocity(${1:vector force}, ${2:integer local});\n\t$0\nsnippet llSHA1String\n\tllSHA1String(${1:string src})\nsnippet llShout\n\tllShout(${1:integer channel}, ${2:string msg});\n\t$0\nsnippet llSin\n\tllSin(${1:float theta})\nsnippet llSitTarget\n\tllSitTarget(${1:vector offset}, ${2:rotation rot});\n\t$0\nsnippet llSleep\n\tllSleep(${1:float sec});\n\t$0\nsnippet llSqrt\n\tllSqrt(${1:float val})\nsnippet llStartAnimation\n\tllStartAnimation(${1:string anim});\n\t$0\nsnippet llStopAnimation\n\tllStopAnimation(${1:string anim});\n\t$0\nsnippet llStopHover\n\tllStopHover();\n\t$0\nsnippet llStopLookAt\n\tllStopLookAt();\n\t$0\nsnippet llStopMoveToTarget\n\tllStopMoveToTarget();\n\t$0\nsnippet llStopSound\n\tllStopSound();\n\t$0\nsnippet llStringLength\n\tllStringLength(${1:string str})\nsnippet llStringToBase64\n\tllStringToBase64(${1:string str})\nsnippet llStringTrim\n\tllStringTrim(${1:string src}, ${2:integer type})\nsnippet llSubStringIndex\n\tllSubStringIndex(${1:string source}, ${2:string pattern})\nsnippet llTakeControls\n\tllTakeControls(${1:integer controls}, ${2:integer accept}, ${3:integer pass_on});\n\t$0\nsnippet llTan\n\tllTan(${1:float theta})\nsnippet llTarget\n\tllTarget(${1:vector position}, ${2:float range})\nsnippet llTargetOmega\n\tllTargetOmega(${1:vector axis}, ${2:float spinrate}, ${3:float gain});\n\t$0\nsnippet llTargetRemove\n\tllTargetRemove(${1:integer handle});\n\t$0\nsnippet llTeleportAgent\n\tllTeleportAgent(${1:key agent}, ${2:string landmark}, ${3:vector position}, ${4:vector look_at});\n\t$0\nsnippet llTeleportAgentGlobalCoords\n\tllTeleportAgentGlobalCoords(${1:key agent}, ${2:vector global_coordinates}, ${3:vector region_coordinates}, ${4:vector look_at});\n\t$0\nsnippet llTeleportAgentHome\n\tllTeleportAgentHome(${1:key agent});\n\t$0\nsnippet llTextBox\n\tllTextBox(${1:key agent}, ${2:string message}, ${3:integer channel});\n\t$0\nsnippet llToLower\n\tllToLower(${1:string src})\nsnippet llToUpper\n\tllToUpper(${1:string src})\nsnippet llTransferLindenDollars\n\tllTransferLindenDollars(${1:key destination}, ${2:integer amount})\nsnippet llTriggerSound\n\tllTriggerSound(${1:string sound}, ${2:float volume});\n\t$0\nsnippet llTriggerSoundLimited\n\tllTriggerSoundLimited(${1:string sound}, ${2:float volume}, ${3:vector top_north_east}, ${4:vector bottom_south_west});\n\t$0\nsnippet llUnescapeURL\n\tllUnescapeURL(${1:string url})\nsnippet llUnSit\n\tllUnSit(${1:key id});\n\t$0\nsnippet llUpdateCharacter\n\tllUpdateCharacter(${1:list options})\nsnippet llUpdateKeyValue\n\tllUpdateKeyValue(${1:string k}, ${2:string v}, ${3:integer checked}, ${4:string ov})\nsnippet llVecDist\n\tllVecDist(${1:vector vec_a}, ${2:vector vec_b})\nsnippet llVecMag\n\tllVecMag(${1:vector vec})\nsnippet llVecNorm\n\tllVecNorm(${1:vector vec})\nsnippet llVolumeDetect\n\tllVolumeDetect(${1:integer detect});\n\t$0\nsnippet llWanderWithin\n\tllWanderWithin(${1:vector origin}, ${2:vector dist}, ${3:list options});\n\t$0\nsnippet llWater\n\tllWater(${1:vector offset});\n\t$0\nsnippet llWhisper\n\tllWhisper(${1:integer channel}, ${2:string msg});\n\t$0\nsnippet llWind\n\tllWind(${1:vector offset});\n\t$0\nsnippet llXorBase64\n\tllXorBase64(${1:string str1}, ${2:string str2})\nsnippet money\n\tmoney(${1:key id}, ${2:integer amount})\n\t{\n\t\t$0\n\t}\nsnippet object_rez\n\tobject_rez(${1:key id})\n\t{\n\t\t$0\n\t}\nsnippet on_rez\n\ton_rez(${1:integer start_param})\n\t{\n\t\t$0\n\t}\nsnippet path_update\n\tpath_update(${1:integer type}, ${2:list reserved})\n\t{\n\t\t$0\n\t}\nsnippet remote_data\n\tremote_data(${1:integer event_type}, ${2:key channel}, ${3:key message_id}, ${4:string sender}, ${5:integer idata}, ${6:string sdata})\n\t{\n\t\t$0\n\t}\nsnippet run_time_permissions\n\trun_time_permissions(${1:integer perm})\n\t{\n\t\t$0\n\t}\nsnippet sensor\n\tsensor(${1:integer index})\n\t{\n\t\t$0\n\t}\nsnippet state\n\tstate ${1:name}\nsnippet touch\n\ttouch(${1:integer index})\n\t{\n\t\t$0\n\t}\nsnippet touch_end\n\ttouch_end(${1:integer index})\n\t{\n\t\t$0\n\t}\nsnippet touch_start\n\ttouch_start(${1:integer index})\n\t{\n\t\t$0\n\t}\nsnippet transaction_result\n\ttransaction_result(${1:key id}, ${2:integer success}, ${3:string data})\n\t{\n\t\t$0\n\t}\nsnippet while\n\twhile (${1:condition})\n\t{\n\t\t$0\n\t}\n"; }); + +define("ace/snippets/lsl",["require","exports","module","ace/snippets/lsl.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./lsl.snippets"); +exports.scope = "lsl"; + +}); (function() { + window.require(["ace/snippets/lsl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/lua.js b/vendor/assets/javascripts/ace/snippets/lua.js index a4678bb9..75b0c26a 100644 --- a/vendor/assets/javascripts/ace/snippets/lua.js +++ b/vendor/assets/javascripts/ace/snippets/lua.js @@ -1,28 +1,16 @@ -define("ace/snippets/lua",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet #!\n\ - #!/usr/bin/env lua\n\ - $1\n\ -snippet local\n\ - local ${1:x} = ${2:1}\n\ -snippet fun\n\ - function ${1:fname}(${2:...})\n\ - ${3:-- body}\n\ - end\n\ -snippet for\n\ - for ${1:i}=${2:1},${3:10} do\n\ - ${4:print(i)}\n\ - end\n\ -snippet forp\n\ - for ${1:i},${2:v} in pairs(${3:table_name}) do\n\ - ${4:-- body}\n\ - end\n\ -snippet fori\n\ - for ${1:i},${2:v} in ipairs(${3:table_name}) do\n\ - ${4:-- body}\n\ - end\n\ -"; -exports.scope = "lua"; +define("ace/snippets/lua.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet #!\n\t#!/usr/bin/env lua\n\t$1\nsnippet local\n\tlocal ${1:x} = ${2:1}\nsnippet fun\n\tfunction ${1:fname}(${2:...})\n\t\t${3:-- body}\n\tend\nsnippet for\n\tfor ${1:i}=${2:1},${3:10} do\n\t\t${4:print(i)}\n\tend\nsnippet forp\n\tfor ${1:i},${2:v} in pairs(${3:table_name}) do\n\t ${4:-- body}\n\tend\nsnippet fori\n\tfor ${1:i},${2:v} in ipairs(${3:table_name}) do\n\t ${4:-- body}\n\tend\n"; }); + +define("ace/snippets/lua",["require","exports","module","ace/snippets/lua.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./lua.snippets"); +exports.scope = "lua"; + +}); (function() { + window.require(["ace/snippets/lua"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/luapage.js b/vendor/assets/javascripts/ace/snippets/luapage.js index 02134aae..db7de782 100644 --- a/vendor/assets/javascripts/ace/snippets/luapage.js +++ b/vendor/assets/javascripts/ace/snippets/luapage.js @@ -1,7 +1,9 @@ -define("ace/snippets/luapage",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "luapage"; - -}); +; (function() { + window.require(["ace/snippets/luapage"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/lucene.js b/vendor/assets/javascripts/ace/snippets/lucene.js index 47151fc1..bb248e9c 100644 --- a/vendor/assets/javascripts/ace/snippets/lucene.js +++ b/vendor/assets/javascripts/ace/snippets/lucene.js @@ -1,7 +1,9 @@ -define("ace/snippets/lucene",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "lucene"; - -}); +; (function() { + window.require(["ace/snippets/lucene"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/makefile.js b/vendor/assets/javascripts/ace/snippets/makefile.js index a1f40999..8a6588de 100644 --- a/vendor/assets/javascripts/ace/snippets/makefile.js +++ b/vendor/assets/javascripts/ace/snippets/makefile.js @@ -1,11 +1,16 @@ -define("ace/snippets/makefile",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet ifeq\n\ - ifeq (${1:cond0},${2:cond1})\n\ - ${3:code}\n\ - endif\n\ -"; -exports.scope = "makefile"; +define("ace/snippets/makefile.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet ifeq\n\tifeq (${1:cond0},${2:cond1})\n\t\t${3:code}\n\tendif\n"; }); + +define("ace/snippets/makefile",["require","exports","module","ace/snippets/makefile.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./makefile.snippets"); +exports.scope = "makefile"; + +}); (function() { + window.require(["ace/snippets/makefile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/markdown.js b/vendor/assets/javascripts/ace/snippets/markdown.js index 0eceacaa..e7e3a31d 100644 --- a/vendor/assets/javascripts/ace/snippets/markdown.js +++ b/vendor/assets/javascripts/ace/snippets/markdown.js @@ -1,95 +1,16 @@ -define("ace/snippets/markdown",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Markdown\n\ -\n\ -# Includes octopress (http://octopress.org/) snippets\n\ -\n\ -snippet [\n\ - [${1:text}](http://${2:address} \"${3:title}\")\n\ -snippet [*\n\ - [${1:link}](${2:`@*`} \"${3:title}\")${4}\n\ -\n\ -snippet [:\n\ - [${1:id}]: http://${2:url} \"${3:title}\"\n\ -snippet [:*\n\ - [${1:id}]: ${2:`@*`} \"${3:title}\"\n\ -\n\ -snippet ![\n\ - ![${1:alttext}](${2:/images/image.jpg} \"${3:title}\")\n\ -snippet ![*\n\ - ![${1:alt}](${2:`@*`} \"${3:title}\")${4}\n\ -\n\ -snippet ![:\n\ - ![${1:id}]: ${2:url} \"${3:title}\"\n\ -snippet ![:*\n\ - ![${1:id}]: ${2:`@*`} \"${3:title}\"\n\ -\n\ -snippet ===\n\ -regex /^/=+/=*//\n\ - ${PREV_LINE/./=/g}\n\ - \n\ - ${0}\n\ -snippet ---\n\ -regex /^/-+/-*//\n\ - ${PREV_LINE/./-/g}\n\ - \n\ - ${0}\n\ -snippet blockquote\n\ - {% blockquote %}\n\ - ${1:quote}\n\ - {% endblockquote %}\n\ -\n\ -snippet blockquote-author\n\ - {% blockquote ${1:author}, ${2:title} %}\n\ - ${3:quote}\n\ - {% endblockquote %}\n\ -\n\ -snippet blockquote-link\n\ - {% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n\ - ${4:quote}\n\ - {% endblockquote %}\n\ -\n\ -snippet bt-codeblock-short\n\ - ```\n\ - ${1:code_snippet}\n\ - ```\n\ -\n\ -snippet bt-codeblock-full\n\ - ``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n\ - ${5:code_snippet}\n\ - ```\n\ -\n\ -snippet codeblock-short\n\ - {% codeblock %}\n\ - ${1:code_snippet}\n\ - {% endcodeblock %}\n\ -\n\ -snippet codeblock-full\n\ - {% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n\ - ${5:code_snippet}\n\ - {% endcodeblock %}\n\ -\n\ -snippet gist-full\n\ - {% gist ${1:gist_id} ${2:filename} %}\n\ -\n\ -snippet gist-short\n\ - {% gist ${1:gist_id} %}\n\ -\n\ -snippet img\n\ - {% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\ -\n\ -snippet youtube\n\ - {% youtube ${1:video_id} %}\n\ -\n\ -# The quote should appear only once in the text. It is inherently part of it.\n\ -# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\ -\n\ -snippet pullquote\n\ - {% pullquote %}\n\ - ${1:text} {\" ${2:quote} \"} ${3:text}\n\ - {% endpullquote %}\n\ -"; -exports.scope = "markdown"; +define("ace/snippets/markdown.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Markdown\n\n# Includes octopress (http://octopress.org/) snippets\n\nsnippet [\n\t[${1:text}](http://${2:address} \"${3:title}\")\nsnippet [*\n\t[${1:link}](${2:`@*`} \"${3:title}\")${4}\n\nsnippet [:\n\t[${1:id}]: http://${2:url} \"${3:title}\"\nsnippet [:*\n\t[${1:id}]: ${2:`@*`} \"${3:title}\"\n\nsnippet ![\n\t![${1:alttext}](${2:/images/image.jpg} \"${3:title}\")\nsnippet ![*\n\t![${1:alt}](${2:`@*`} \"${3:title}\")${4}\n\nsnippet ![:\n\t![${1:id}]: ${2:url} \"${3:title}\"\nsnippet ![:*\n\t![${1:id}]: ${2:`@*`} \"${3:title}\"\n\nsnippet ===\nregex /^/=+/=*//\n\t${PREV_LINE/./=/g}\n\t\n\t${0}\nsnippet ---\nregex /^/-+/-*//\n\t${PREV_LINE/./-/g}\n\t\n\t${0}\nsnippet blockquote\n\t{% blockquote %}\n\t${1:quote}\n\t{% endblockquote %}\n\nsnippet blockquote-author\n\t{% blockquote ${1:author}, ${2:title} %}\n\t${3:quote}\n\t{% endblockquote %}\n\nsnippet blockquote-link\n\t{% blockquote ${1:author} ${2:URL} ${3:link_text} %}\n\t${4:quote}\n\t{% endblockquote %}\n\nsnippet bt-codeblock-short\n\t```\n\t${1:code_snippet}\n\t```\n\nsnippet bt-codeblock-full\n\t``` ${1:language} ${2:title} ${3:URL} ${4:link_text}\n\t${5:code_snippet}\n\t```\n\nsnippet codeblock-short\n\t{% codeblock %}\n\t${1:code_snippet}\n\t{% endcodeblock %}\n\nsnippet codeblock-full\n\t{% codeblock ${1:title} lang:${2:language} ${3:URL} ${4:link_text} %}\n\t${5:code_snippet}\n\t{% endcodeblock %}\n\nsnippet gist-full\n\t{% gist ${1:gist_id} ${2:filename} %}\n\nsnippet gist-short\n\t{% gist ${1:gist_id} %}\n\nsnippet img\n\t{% img ${1:class} ${2:URL} ${3:width} ${4:height} ${5:title_text} ${6:alt_text} %}\n\nsnippet youtube\n\t{% youtube ${1:video_id} %}\n\n# The quote should appear only once in the text. It is inherently part of it.\n# See http://octopress.org/docs/plugins/pullquote/ for more info.\n\nsnippet pullquote\n\t{% pullquote %}\n\t${1:text} {\" ${2:quote} \"} ${3:text}\n\t{% endpullquote %}\n"; }); + +define("ace/snippets/markdown",["require","exports","module","ace/snippets/markdown.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./markdown.snippets"); +exports.scope = "markdown"; + +}); (function() { + window.require(["ace/snippets/markdown"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/mask.js b/vendor/assets/javascripts/ace/snippets/mask.js index c03d2a0f..f63c0a61 100644 --- a/vendor/assets/javascripts/ace/snippets/mask.js +++ b/vendor/assets/javascripts/ace/snippets/mask.js @@ -1,7 +1,9 @@ -define("ace/snippets/mask",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "mask"; - -}); +; (function() { + window.require(["ace/snippets/mask"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/matlab.js b/vendor/assets/javascripts/ace/snippets/matlab.js index 15b63a82..cc5fb70e 100644 --- a/vendor/assets/javascripts/ace/snippets/matlab.js +++ b/vendor/assets/javascripts/ace/snippets/matlab.js @@ -1,7 +1,9 @@ -define("ace/snippets/matlab",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "matlab"; - -}); +; (function() { + window.require(["ace/snippets/matlab"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/maze.js b/vendor/assets/javascripts/ace/snippets/maze.js index 019d1de2..3a3824c4 100644 --- a/vendor/assets/javascripts/ace/snippets/maze.js +++ b/vendor/assets/javascripts/ace/snippets/maze.js @@ -1,16 +1,16 @@ -define("ace/snippets/maze",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet >\n\ -description assignment\n\ -scope maze\n\ - -> ${1}= ${2}\n\ -\n\ -snippet >\n\ -description if\n\ -scope maze\n\ - -> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n\ -"; -exports.scope = "maze"; +define("ace/snippets/maze.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet >\ndescription assignment\nscope maze\n\t-> ${1}= ${2}\n\nsnippet >\ndescription if\nscope maze\n\t-> IF ${2:**} THEN %${3:L} ELSE %${4:R}\n"; }); + +define("ace/snippets/maze",["require","exports","module","ace/snippets/maze.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./maze.snippets"); +exports.scope = "maze"; + +}); (function() { + window.require(["ace/snippets/maze"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/mediawiki.js b/vendor/assets/javascripts/ace/snippets/mediawiki.js new file mode 100644 index 00000000..bd73d000 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/mediawiki.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/mediawiki"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/mel.js b/vendor/assets/javascripts/ace/snippets/mel.js index cda71654..fa5ecbc8 100644 --- a/vendor/assets/javascripts/ace/snippets/mel.js +++ b/vendor/assets/javascripts/ace/snippets/mel.js @@ -1,7 +1,9 @@ -define("ace/snippets/mel",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "mel"; - -}); +; (function() { + window.require(["ace/snippets/mel"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/mips.js b/vendor/assets/javascripts/ace/snippets/mips.js new file mode 100644 index 00000000..9badca8e --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/mips.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/mips"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/mips_assembler.js b/vendor/assets/javascripts/ace/snippets/mips_assembler.js deleted file mode 100644 index 9ced9202..00000000 --- a/vendor/assets/javascripts/ace/snippets/mips_assembler.js +++ /dev/null @@ -1,7 +0,0 @@ -define("ace/snippets/mips_assembler",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText =undefined; -exports.scope = "mips_assembler"; - -}); diff --git a/vendor/assets/javascripts/ace/snippets/mipsassembler.js b/vendor/assets/javascripts/ace/snippets/mipsassembler.js deleted file mode 100644 index 7c06b691..00000000 --- a/vendor/assets/javascripts/ace/snippets/mipsassembler.js +++ /dev/null @@ -1,7 +0,0 @@ -define("ace/snippets/mipsassembler",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText =undefined; -exports.scope = ""; - -}); diff --git a/vendor/assets/javascripts/ace/snippets/mixal.js b/vendor/assets/javascripts/ace/snippets/mixal.js new file mode 100644 index 00000000..8246ef78 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/mixal.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/mixal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/mushcode.js b/vendor/assets/javascripts/ace/snippets/mushcode.js index 2efb023a..8eddd370 100644 --- a/vendor/assets/javascripts/ace/snippets/mushcode.js +++ b/vendor/assets/javascripts/ace/snippets/mushcode.js @@ -1,7 +1,9 @@ -define("ace/snippets/mushcode",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "mushcode"; - -}); +; (function() { + window.require(["ace/snippets/mushcode"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/mysql.js b/vendor/assets/javascripts/ace/snippets/mysql.js index 5c810d0c..d8544a1b 100644 --- a/vendor/assets/javascripts/ace/snippets/mysql.js +++ b/vendor/assets/javascripts/ace/snippets/mysql.js @@ -1,7 +1,9 @@ -define("ace/snippets/mysql",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "mysql"; - -}); +; (function() { + window.require(["ace/snippets/mysql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/nasal.js b/vendor/assets/javascripts/ace/snippets/nasal.js new file mode 100644 index 00000000..1161161c --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/nasal.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/nasal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/nginx.js b/vendor/assets/javascripts/ace/snippets/nginx.js new file mode 100644 index 00000000..565e3b8a --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/nginx.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/nginx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/nim.js b/vendor/assets/javascripts/ace/snippets/nim.js new file mode 100644 index 00000000..b3b4dfc0 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/nim.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/nim"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/nix.js b/vendor/assets/javascripts/ace/snippets/nix.js index ff789601..bc63bd3d 100644 --- a/vendor/assets/javascripts/ace/snippets/nix.js +++ b/vendor/assets/javascripts/ace/snippets/nix.js @@ -1,7 +1,9 @@ -define("ace/snippets/nix",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "nix"; - -}); +; (function() { + window.require(["ace/snippets/nix"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/nsis.js b/vendor/assets/javascripts/ace/snippets/nsis.js index 6ee73f00..caf0839d 100644 --- a/vendor/assets/javascripts/ace/snippets/nsis.js +++ b/vendor/assets/javascripts/ace/snippets/nsis.js @@ -1,7 +1,9 @@ -define("ace/snippets/nsis",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = ""; - -}); +; (function() { + window.require(["ace/snippets/nsis"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/nunjucks.js b/vendor/assets/javascripts/ace/snippets/nunjucks.js new file mode 100644 index 00000000..748d2d9f --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/nunjucks.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/nunjucks"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/objectivec.js b/vendor/assets/javascripts/ace/snippets/objectivec.js index 7270a4fb..77bad68f 100644 --- a/vendor/assets/javascripts/ace/snippets/objectivec.js +++ b/vendor/assets/javascripts/ace/snippets/objectivec.js @@ -1,7 +1,9 @@ -define("ace/snippets/objectivec",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "objectivec"; - -}); +; (function() { + window.require(["ace/snippets/objectivec"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/ocaml.js b/vendor/assets/javascripts/ace/snippets/ocaml.js index bf2fba96..23789d1e 100644 --- a/vendor/assets/javascripts/ace/snippets/ocaml.js +++ b/vendor/assets/javascripts/ace/snippets/ocaml.js @@ -1,7 +1,9 @@ -define("ace/snippets/ocaml",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "ocaml"; - -}); +; (function() { + window.require(["ace/snippets/ocaml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/odin.js b/vendor/assets/javascripts/ace/snippets/odin.js new file mode 100644 index 00000000..cc6a884a --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/odin.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/odin"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/partiql.js b/vendor/assets/javascripts/ace/snippets/partiql.js new file mode 100644 index 00000000..9a24e616 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/partiql.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/partiql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/pascal.js b/vendor/assets/javascripts/ace/snippets/pascal.js index c5855014..f6d60d88 100644 --- a/vendor/assets/javascripts/ace/snippets/pascal.js +++ b/vendor/assets/javascripts/ace/snippets/pascal.js @@ -1,7 +1,9 @@ -define("ace/snippets/pascal",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "pascal"; - -}); +; (function() { + window.require(["ace/snippets/pascal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/perl.js b/vendor/assets/javascripts/ace/snippets/perl.js index e5da0bc4..64b9f625 100644 --- a/vendor/assets/javascripts/ace/snippets/perl.js +++ b/vendor/assets/javascripts/ace/snippets/perl.js @@ -1,354 +1,16 @@ -define("ace/snippets/perl",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# #!/usr/bin/perl\n\ -snippet #!\n\ - #!/usr/bin/env perl\n\ -\n\ -# Hash Pointer\n\ -snippet .\n\ - =>\n\ -# Function\n\ -snippet sub\n\ - sub ${1:function_name} {\n\ - ${2:#body ...}\n\ - }\n\ -# Conditional\n\ -snippet if\n\ - if (${1}) {\n\ - ${2:# body...}\n\ - }\n\ -# Conditional if..else\n\ -snippet ife\n\ - if (${1}) {\n\ - ${2:# body...}\n\ - }\n\ - else {\n\ - ${3:# else...}\n\ - }\n\ -# Conditional if..elsif..else\n\ -snippet ifee\n\ - if (${1}) {\n\ - ${2:# body...}\n\ - }\n\ - elsif (${3}) {\n\ - ${4:# elsif...}\n\ - }\n\ - else {\n\ - ${5:# else...}\n\ - }\n\ -# Conditional One-line\n\ -snippet xif\n\ - ${1:expression} if ${2:condition};${3}\n\ -# Unless conditional\n\ -snippet unless\n\ - unless (${1}) {\n\ - ${2:# body...}\n\ - }\n\ -# Unless conditional One-line\n\ -snippet xunless\n\ - ${1:expression} unless ${2:condition};${3}\n\ -# Try/Except\n\ -snippet eval\n\ - local $@;\n\ - eval {\n\ - ${1:# do something risky...}\n\ - };\n\ - if (my $e = $@) {\n\ - ${2:# handle failure...}\n\ - }\n\ -# While Loop\n\ -snippet wh\n\ - while (${1}) {\n\ - ${2:# body...}\n\ - }\n\ -# While Loop One-line\n\ -snippet xwh\n\ - ${1:expression} while ${2:condition};${3}\n\ -# C-style For Loop\n\ -snippet cfor\n\ - for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\ - ${4:# body...}\n\ - }\n\ -# For loop one-line\n\ -snippet xfor\n\ - ${1:expression} for @${2:array};${3}\n\ -# Foreach Loop\n\ -snippet for\n\ - foreach my $${1:x} (@${2:array}) {\n\ - ${3:# body...}\n\ - }\n\ -# Foreach Loop One-line\n\ -snippet fore\n\ - ${1:expression} foreach @${2:array};${3}\n\ -# Package\n\ -snippet package\n\ - package ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`};\n\ -\n\ - ${2}\n\ -\n\ - 1;\n\ -\n\ - __END__\n\ -# Package syntax perl >= 5.14\n\ -snippet packagev514\n\ - package ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`} ${2:0.99};\n\ -\n\ - ${3}\n\ -\n\ - 1;\n\ -\n\ - __END__\n\ -#moose\n\ -snippet moose\n\ - use Moose;\n\ - use namespace::autoclean;\n\ - ${1:#}BEGIN {extends '${2:ParentClass}'};\n\ -\n\ - ${3}\n\ -# parent\n\ -snippet parent\n\ - use parent qw(${1:Parent Class});\n\ -# Read File\n\ -snippet slurp\n\ - my $${1:var} = do { local $/; open my $file, '<', \"${2:file}\"; <$file> };\n\ - ${3}\n\ -# strict warnings\n\ -snippet strwar\n\ - use strict;\n\ - use warnings;\n\ -# older versioning with perlcritic bypass\n\ -snippet vers\n\ - ## no critic\n\ - our $VERSION = '${1:version}';\n\ - eval $VERSION;\n\ - ## use critic\n\ -# new 'switch' like feature\n\ -snippet switch\n\ - use feature 'switch';\n\ -\n\ -# Anonymous subroutine\n\ -snippet asub\n\ - sub {\n\ - ${1:# body }\n\ - }\n\ -\n\ -\n\ -\n\ -# Begin block\n\ -snippet begin\n\ - BEGIN {\n\ - ${1:# begin body}\n\ - }\n\ -\n\ -# call package function with some parameter\n\ -snippet pkgmv\n\ - __PACKAGE__->${1:package_method}(${2:var})\n\ -\n\ -# call package function without a parameter\n\ -snippet pkgm\n\ - __PACKAGE__->${1:package_method}()\n\ -\n\ -# call package \"get_\" function without a parameter\n\ -snippet pkget\n\ - __PACKAGE__->get_${1:package_method}()\n\ -\n\ -# call package function with a parameter\n\ -snippet pkgetv\n\ - __PACKAGE__->get_${1:package_method}(${2:var})\n\ -\n\ -# complex regex\n\ -snippet qrx\n\ - qr/\n\ - ${1:regex}\n\ - /xms\n\ -\n\ -#simpler regex\n\ -snippet qr/\n\ - qr/${1:regex}/x\n\ -\n\ -#given\n\ -snippet given\n\ - given ($${1:var}) {\n\ - ${2:# cases}\n\ - ${3:# default}\n\ - }\n\ -\n\ -# switch-like case\n\ -snippet when\n\ - when (${1:case}) {\n\ - ${2:# body}\n\ - }\n\ -\n\ -# hash slice\n\ -snippet hslice\n\ - @{ ${1:hash} }{ ${2:array} }\n\ -\n\ -\n\ -# map\n\ -snippet map\n\ - map { ${2: body } } ${1: @array } ;\n\ -\n\ -\n\ -\n\ -# Pod stub\n\ -snippet ppod\n\ - =head1 NAME\n\ -\n\ - ${1:ClassName} - ${2:ShortDesc}\n\ -\n\ - =head1 SYNOPSIS\n\ -\n\ - use $1;\n\ -\n\ - ${3:# synopsis...}\n\ -\n\ - =head1 DESCRIPTION\n\ -\n\ - ${4:# longer description...}\n\ -\n\ -\n\ - =head1 INTERFACE\n\ -\n\ -\n\ - =head1 DEPENDENCIES\n\ -\n\ -\n\ - =head1 SEE ALSO\n\ -\n\ -\n\ -# Heading for a subroutine stub\n\ -snippet psub\n\ - =head2 ${1:MethodName}\n\ -\n\ - ${2:Summary....}\n\ -\n\ -# Heading for inline subroutine pod\n\ -snippet psubi\n\ - =head2 ${1:MethodName}\n\ -\n\ - ${2:Summary...}\n\ -\n\ -\n\ - =cut\n\ -# inline documented subroutine\n\ -snippet subpod\n\ - =head2 $1\n\ -\n\ - Summary of $1\n\ -\n\ - =cut\n\ -\n\ - sub ${1:subroutine_name} {\n\ - ${2:# body...}\n\ - }\n\ -# Subroutine signature\n\ -snippet parg\n\ - =over 2\n\ -\n\ - =item\n\ - Arguments\n\ -\n\ -\n\ - =over 3\n\ -\n\ - =item\n\ - C<${1:DataStructure}>\n\ -\n\ - ${2:Sample}\n\ -\n\ -\n\ - =back\n\ -\n\ -\n\ - =item\n\ - Return\n\ -\n\ - =over 3\n\ -\n\ -\n\ - =item\n\ - C<${3:...return data}>\n\ -\n\ -\n\ - =back\n\ -\n\ -\n\ - =back\n\ -\n\ -\n\ -\n\ -# Moose has\n\ -snippet has\n\ - has ${1:attribute} => (\n\ - is => '${2:ro|rw}',\n\ - isa => '${3:Str|Int|HashRef|ArrayRef|etc}',\n\ - default => sub {\n\ - ${4:defaultvalue}\n\ - },\n\ - ${5:# other attributes}\n\ - );\n\ -\n\ -\n\ -# override\n\ -snippet override\n\ - override ${1:attribute} => sub {\n\ - ${2:# my $self = shift;};\n\ - ${3:# my ($self, $args) = @_;};\n\ - };\n\ -\n\ -\n\ -# use test classes\n\ -snippet tuse\n\ - use Test::More;\n\ - use Test::Deep; # (); # uncomment to stop prototype errors\n\ - use Test::Exception;\n\ -\n\ -# local test lib\n\ -snippet tlib\n\ - use lib qw{ ./t/lib };\n\ -\n\ -#test methods\n\ -snippet tmeths\n\ - $ENV{TEST_METHOD} = '${1:regex}';\n\ -\n\ -# runtestclass\n\ -snippet trunner\n\ - use ${1:test_class};\n\ - $1->runtests();\n\ -\n\ -# Test::Class-style test\n\ -snippet tsub\n\ - sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {\n\ - my $self = shift;\n\ - ${4:# body}\n\ -\n\ - }\n\ -\n\ -# Test::Routine-style test\n\ -snippet trsub\n\ - test ${1:test_name} => { description => '${2:Description of test.}'} => sub {\n\ - my ($self) = @_;\n\ - ${3:# test code}\n\ - };\n\ -\n\ -#prep test method\n\ -snippet tprep\n\ - sub prep${1:number}_${2:test_case} :Test(startup) {\n\ - my $self = shift;\n\ - ${4:# body}\n\ - }\n\ -\n\ -# cause failures to print stack trace\n\ -snippet debug_trace\n\ - use Carp; # 'verbose';\n\ - # cloak \"die\"\n\ - # warn \"warning\"\n\ - $SIG{'__DIE__'} = sub {\n\ - require Carp; Carp::confess\n\ - };\n\ -\n\ -"; -exports.scope = "perl"; +define("ace/snippets/perl.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# #!/usr/bin/perl\nsnippet #!\n\t#!/usr/bin/env perl\n\n# Hash Pointer\nsnippet .\n\t =>\n# Function\nsnippet sub\n\tsub ${1:function_name} {\n\t\t${2:#body ...}\n\t}\n# Conditional\nsnippet if\n\tif (${1}) {\n\t\t${2:# body...}\n\t}\n# Conditional if..else\nsnippet ife\n\tif (${1}) {\n\t\t${2:# body...}\n\t}\n\telse {\n\t\t${3:# else...}\n\t}\n# Conditional if..elsif..else\nsnippet ifee\n\tif (${1}) {\n\t\t${2:# body...}\n\t}\n\telsif (${3}) {\n\t\t${4:# elsif...}\n\t}\n\telse {\n\t\t${5:# else...}\n\t}\n# Conditional One-line\nsnippet xif\n\t${1:expression} if ${2:condition};${3}\n# Unless conditional\nsnippet unless\n\tunless (${1}) {\n\t\t${2:# body...}\n\t}\n# Unless conditional One-line\nsnippet xunless\n\t${1:expression} unless ${2:condition};${3}\n# Try/Except\nsnippet eval\n\tlocal $@;\n\teval {\n\t\t${1:# do something risky...}\n\t};\n\tif (my $e = $@) {\n\t\t${2:# handle failure...}\n\t}\n# While Loop\nsnippet wh\n\twhile (${1}) {\n\t\t${2:# body...}\n\t}\n# While Loop One-line\nsnippet xwh\n\t${1:expression} while ${2:condition};${3}\n# C-style For Loop\nsnippet cfor\n\tfor (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\t\t${4:# body...}\n\t}\n# For loop one-line\nsnippet xfor\n\t${1:expression} for @${2:array};${3}\n# Foreach Loop\nsnippet for\n\tforeach my $${1:x} (@${2:array}) {\n\t\t${3:# body...}\n\t}\n# Foreach Loop One-line\nsnippet fore\n\t${1:expression} foreach @${2:array};${3}\n# Package\nsnippet package\n\tpackage ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`};\n\n\t${2}\n\n\t1;\n\n\t__END__\n# Package syntax perl >= 5.14\nsnippet packagev514\n\tpackage ${1:`substitute(Filename('', 'Page Title'), '^.', '\\u&', '')`} ${2:0.99};\n\n\t${3}\n\n\t1;\n\n\t__END__\n#moose\nsnippet moose\n\tuse Moose;\n\tuse namespace::autoclean;\n\t${1:#}BEGIN {extends '${2:ParentClass}'};\n\n\t${3}\n# parent\nsnippet parent\n\tuse parent qw(${1:Parent Class});\n# Read File\nsnippet slurp\n\tmy $${1:var} = do { local $/; open my $file, '<', \"${2:file}\"; <$file> };\n\t${3}\n# strict warnings\nsnippet strwar\n\tuse strict;\n\tuse warnings;\n# older versioning with perlcritic bypass\nsnippet vers\n\t## no critic\n\tour $VERSION = '${1:version}';\n\teval $VERSION;\n\t## use critic\n# new 'switch' like feature\nsnippet switch\n\tuse feature 'switch';\n\n# Anonymous subroutine\nsnippet asub\n\tsub {\n\t \t${1:# body }\n\t}\n\n\n\n# Begin block\nsnippet begin\n\tBEGIN {\n\t\t${1:# begin body}\n\t}\n\n# call package function with some parameter\nsnippet pkgmv\n\t__PACKAGE__->${1:package_method}(${2:var})\n\n# call package function without a parameter\nsnippet pkgm\n\t__PACKAGE__->${1:package_method}()\n\n# call package \"get_\" function without a parameter\nsnippet pkget\n\t__PACKAGE__->get_${1:package_method}()\n\n# call package function with a parameter\nsnippet pkgetv\n\t__PACKAGE__->get_${1:package_method}(${2:var})\n\n# complex regex\nsnippet qrx\n\tqr/\n\t ${1:regex}\n\t/xms\n\n#simpler regex\nsnippet qr/\n\tqr/${1:regex}/x\n\n#given\nsnippet given\n\tgiven ($${1:var}) {\n\t\t${2:# cases}\n\t\t${3:# default}\n\t}\n\n# switch-like case\nsnippet when\n\twhen (${1:case}) {\n\t\t${2:# body}\n\t}\n\n# hash slice\nsnippet hslice\n\t@{ ${1:hash} }{ ${2:array} }\n\n\n# map\nsnippet map\n\tmap { ${2: body } } ${1: @array } ;\n\n\n\n# Pod stub\nsnippet ppod\n\t=head1 NAME\n\n\t${1:ClassName} - ${2:ShortDesc}\n\n\t=head1 SYNOPSIS\n\n\t use $1;\n\n\t ${3:# synopsis...}\n\n\t=head1 DESCRIPTION\n\n\t${4:# longer description...}\n\n\n\t=head1 INTERFACE\n\n\n\t=head1 DEPENDENCIES\n\n\n\t=head1 SEE ALSO\n\n\n# Heading for a subroutine stub\nsnippet psub\n\t=head2 ${1:MethodName}\n\n\t${2:Summary....}\n\n# Heading for inline subroutine pod\nsnippet psubi\n\t=head2 ${1:MethodName}\n\n\t${2:Summary...}\n\n\n\t=cut\n# inline documented subroutine\nsnippet subpod\n\t=head2 $1\n\n\tSummary of $1\n\n\t=cut\n\n\tsub ${1:subroutine_name} {\n\t\t${2:# body...}\n\t}\n# Subroutine signature\nsnippet parg\n\t=over 2\n\n\t=item\n\tArguments\n\n\n\t=over 3\n\n\t=item\n\tC<${1:DataStructure}>\n\n\t ${2:Sample}\n\n\n\t=back\n\n\n\t=item\n\tReturn\n\n\t=over 3\n\n\n\t=item\n\tC<${3:...return data}>\n\n\n\t=back\n\n\n\t=back\n\n\n\n# Moose has\nsnippet has\n\thas ${1:attribute} => (\n\t\tis\t => '${2:ro|rw}',\n\t\tisa \t=> '${3:Str|Int|HashRef|ArrayRef|etc}',\n\t\tdefault => sub {\n\t\t\t${4:defaultvalue}\n\t\t},\n\t\t${5:# other attributes}\n\t);\n\n\n# override\nsnippet override\n\toverride ${1:attribute} => sub {\n\t\t${2:# my $self = shift;};\n\t\t${3:# my ($self, $args) = @_;};\n\t};\n\n\n# use test classes\nsnippet tuse\n\tuse Test::More;\n\tuse Test::Deep; # (); # uncomment to stop prototype errors\n\tuse Test::Exception;\n\n# local test lib\nsnippet tlib\n\tuse lib qw{ ./t/lib };\n\n#test methods\nsnippet tmeths\n\t$ENV{TEST_METHOD} = '${1:regex}';\n\n# runtestclass\nsnippet trunner\n\tuse ${1:test_class};\n\t$1->runtests();\n\n# Test::Class-style test\nsnippet tsub\n\tsub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {\n\t\tmy $self = shift;\n\t\t${4:# body}\n\n\t}\n\n# Test::Routine-style test\nsnippet trsub\n\ttest ${1:test_name} => { description => '${2:Description of test.}'} => sub {\n\t\tmy ($self) = @_;\n\t\t${3:# test code}\n\t};\n\n#prep test method\nsnippet tprep\n\tsub prep${1:number}_${2:test_case} :Test(startup) {\n\t\tmy $self = shift;\n\t\t${4:# body}\n\t}\n\n# cause failures to print stack trace\nsnippet debug_trace\n\tuse Carp; # 'verbose';\n\t# cloak \"die\"\n\t# warn \"warning\"\n\t$SIG{'__DIE__'} = sub {\n\t\trequire Carp; Carp::confess\n\t};\n\n"; }); + +define("ace/snippets/perl",["require","exports","module","ace/snippets/perl.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./perl.snippets"); +exports.scope = "perl"; + +}); (function() { + window.require(["ace/snippets/perl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/pgsql.js b/vendor/assets/javascripts/ace/snippets/pgsql.js index 2fea6cc0..c15cb260 100644 --- a/vendor/assets/javascripts/ace/snippets/pgsql.js +++ b/vendor/assets/javascripts/ace/snippets/pgsql.js @@ -1,7 +1,9 @@ -define("ace/snippets/pgsql",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "pgsql"; - -}); +; (function() { + window.require(["ace/snippets/pgsql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/php.js b/vendor/assets/javascripts/ace/snippets/php.js index 9671254b..7545745d 100644 --- a/vendor/assets/javascripts/ace/snippets/php.js +++ b/vendor/assets/javascripts/ace/snippets/php.js @@ -1,384 +1,16 @@ -define("ace/snippets/php",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet \n\ -# this one is for php5.4\n\ -snippet \n\ -snippet ns\n\ - namespace ${1:Foo\\Bar\\Baz};\n\ - ${2}\n\ -snippet use\n\ - use ${1:Foo\\Bar\\Baz};\n\ - ${2}\n\ -snippet c\n\ - ${1:abstract }class ${2:$FILENAME}\n\ - {\n\ - ${3}\n\ - }\n\ -snippet i\n\ - interface ${1:$FILENAME}\n\ - {\n\ - ${2}\n\ - }\n\ -snippet t.\n\ - $this->${1}\n\ -snippet f\n\ - function ${1:foo}(${2:array }${3:$bar})\n\ - {\n\ - ${4}\n\ - }\n\ -# method\n\ -snippet m\n\ - ${1:abstract }${2:protected}${3: static} function ${4:foo}(${5:array }${6:$bar})\n\ - {\n\ - ${7}\n\ - }\n\ -# setter method\n\ -snippet sm \n\ - /**\n\ - * Sets the value of ${1:foo}\n\ - *\n\ - * @param ${2:$1} $$1 ${3:description}\n\ - *\n\ - * @return ${4:$FILENAME}\n\ - */\n\ - ${5:public} function set${6:$2}(${7:$2 }$$1)\n\ - {\n\ - $this->${8:$1} = $$1;\n\ - return $this;\n\ - }${9}\n\ -# getter method\n\ -snippet gm\n\ - /**\n\ - * Gets the value of ${1:foo}\n\ - *\n\ - * @return ${2:$1}\n\ - */\n\ - ${3:public} function get${4:$2}()\n\ - {\n\ - return $this->${5:$1};\n\ - }${6}\n\ -#setter\n\ -snippet $s\n\ - ${1:$foo}->set${2:Bar}(${3});\n\ -#getter\n\ -snippet $g\n\ - ${1:$foo}->get${2:Bar}();\n\ -\n\ -# Tertiary conditional\n\ -snippet =?:\n\ - $${1:foo} = ${2:true} ? ${3:a} : ${4};\n\ -snippet ?:\n\ - ${1:true} ? ${2:a} : ${3}\n\ -\n\ -snippet C\n\ - $_COOKIE['${1:variable}']${2}\n\ -snippet E\n\ - $_ENV['${1:variable}']${2}\n\ -snippet F\n\ - $_FILES['${1:variable}']${2}\n\ -snippet G\n\ - $_GET['${1:variable}']${2}\n\ -snippet P\n\ - $_POST['${1:variable}']${2}\n\ -snippet R\n\ - $_REQUEST['${1:variable}']${2}\n\ -snippet S\n\ - $_SERVER['${1:variable}']${2}\n\ -snippet SS\n\ - $_SESSION['${1:variable}']${2}\n\ - \n\ -# the following are old ones\n\ -snippet inc\n\ - include '${1:file}';${2}\n\ -snippet inc1\n\ - include_once '${1:file}';${2}\n\ -snippet req\n\ - require '${1:file}';${2}\n\ -snippet req1\n\ - require_once '${1:file}';${2}\n\ -# Start Docblock\n\ -snippet /*\n\ - /**\n\ - * ${1}\n\ - */\n\ -# Class - post doc\n\ -snippet doc_cp\n\ - /**\n\ - * ${1:undocumented class}\n\ - *\n\ - * @package ${2:default}\n\ - * @subpackage ${3:default}\n\ - * @author ${4:`g:snips_author`}\n\ - */${5}\n\ -# Class Variable - post doc\n\ -snippet doc_vp\n\ - /**\n\ - * ${1:undocumented class variable}\n\ - *\n\ - * @var ${2:string}\n\ - */${3}\n\ -# Class Variable\n\ -snippet doc_v\n\ - /**\n\ - * ${3:undocumented class variable}\n\ - *\n\ - * @var ${4:string}\n\ - */\n\ - ${1:var} $${2};${5}\n\ -# Class\n\ -snippet doc_c\n\ - /**\n\ - * ${3:undocumented class}\n\ - *\n\ - * @package ${4:default}\n\ - * @subpackage ${5:default}\n\ - * @author ${6:`g:snips_author`}\n\ - */\n\ - ${1:}class ${2:}\n\ - {\n\ - ${7}\n\ - } // END $1class $2\n\ -# Constant Definition - post doc\n\ -snippet doc_dp\n\ - /**\n\ - * ${1:undocumented constant}\n\ - */${2}\n\ -# Constant Definition\n\ -snippet doc_d\n\ - /**\n\ - * ${3:undocumented constant}\n\ - */\n\ - define(${1}, ${2});${4}\n\ -# Function - post doc\n\ -snippet doc_fp\n\ - /**\n\ - * ${1:undocumented function}\n\ - *\n\ - * @return ${2:void}\n\ - * @author ${3:`g:snips_author`}\n\ - */${4}\n\ -# Function signature\n\ -snippet doc_s\n\ - /**\n\ - * ${4:undocumented function}\n\ - *\n\ - * @return ${5:void}\n\ - * @author ${6:`g:snips_author`}\n\ - */\n\ - ${1}function ${2}(${3});${7}\n\ -# Function\n\ -snippet doc_f\n\ - /**\n\ - * ${4:undocumented function}\n\ - *\n\ - * @return ${5:void}\n\ - * @author ${6:`g:snips_author`}\n\ - */\n\ - ${1}function ${2}(${3})\n\ - {${7}\n\ - }\n\ -# Header\n\ -snippet doc_h\n\ - /**\n\ - * ${1}\n\ - *\n\ - * @author ${2:`g:snips_author`}\n\ - * @version ${3:$Id$}\n\ - * @copyright ${4:$2}, `strftime('%d %B, %Y')`\n\ - * @package ${5:default}\n\ - */\n\ - \n\ -# Interface\n\ -snippet interface\n\ - /**\n\ - * ${2:undocumented class}\n\ - *\n\ - * @package ${3:default}\n\ - * @author ${4:`g:snips_author`}\n\ - */\n\ - interface ${1:$FILENAME}\n\ - {\n\ - ${5}\n\ - }\n\ -# class ...\n\ -snippet class\n\ - /**\n\ - * ${1}\n\ - */\n\ - class ${2:$FILENAME}\n\ - {\n\ - ${3}\n\ - /**\n\ - * ${4}\n\ - */\n\ - ${5:public} function ${6:__construct}(${7:argument})\n\ - {\n\ - ${8:// code...}\n\ - }\n\ - }\n\ -# define(...)\n\ -snippet def\n\ - define('${1}'${2});${3}\n\ -# defined(...)\n\ -snippet def?\n\ - ${1}defined('${2}')${3}\n\ -snippet wh\n\ - while (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - }\n\ -# do ... while\n\ -snippet do\n\ - do {\n\ - ${2:// code... }\n\ - } while (${1:/* condition */});\n\ -snippet if\n\ - if (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - }\n\ -snippet ifil\n\ - \n\ - ${2:}\n\ - \n\ -snippet ife\n\ - if (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - } else {\n\ - ${3:// code...}\n\ - }\n\ - ${4}\n\ -snippet ifeil\n\ - \n\ - ${2:}\n\ - \n\ - ${3:}\n\ - \n\ - ${4}\n\ -snippet else\n\ - else {\n\ - ${1:// code...}\n\ - }\n\ -snippet elseif\n\ - elseif (${1:/* condition */}) {\n\ - ${2:// code...}\n\ - }\n\ -snippet switch\n\ - switch ($${1:variable}) {\n\ - case '${2:value}':\n\ - ${3:// code...}\n\ - break;\n\ - ${5}\n\ - default:\n\ - ${4:// code...}\n\ - break;\n\ - }\n\ -snippet case\n\ - case '${1:value}':\n\ - ${2:// code...}\n\ - break;${3}\n\ -snippet for\n\ - for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\ - ${4: // code...}\n\ - }\n\ -snippet foreach\n\ - foreach ($${1:variable} as $${2:value}) {\n\ - ${3:// code...}\n\ - }\n\ -snippet foreachil\n\ - \n\ - ${3:}\n\ - \n\ -snippet foreachk\n\ - foreach ($${1:variable} as $${2:key} => $${3:value}) {\n\ - ${4:// code...}\n\ - }\n\ -snippet foreachkil\n\ - $${3:value}): ?>\n\ - ${4:}\n\ - \n\ -# $... = array (...)\n\ -snippet array\n\ - $${1:arrayName} = array('${2}' => ${3});${4}\n\ -snippet try\n\ - try {\n\ - ${2}\n\ - } catch (${1:Exception} $e) {\n\ - }\n\ -# lambda with closure\n\ -snippet lambda\n\ - ${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {\n\ - ${4}\n\ - };\n\ -# pre_dump();\n\ -snippet pd\n\ - echo '
    '; var_dump(${1}); echo '
    ';\n\ -# pre_dump(); die();\n\ -snippet pdd\n\ - echo '
    '; var_dump(${1}); echo '
    '; die(${2:});\n\ -snippet vd\n\ - var_dump(${1});\n\ -snippet vdd\n\ - var_dump(${1}); die(${2:});\n\ -snippet http_redirect\n\ - header (\"HTTP/1.1 301 Moved Permanently\"); \n\ - header (\"Location: \".URL); \n\ - exit();\n\ -# Getters & Setters\n\ -snippet gs\n\ - /**\n\ - * Gets the value of ${1:foo}\n\ - *\n\ - * @return ${2:$1}\n\ - */\n\ - public function get${3:$2}()\n\ - {\n\ - return $this->${4:$1};\n\ - }\n\ -\n\ - /**\n\ - * Sets the value of $1\n\ - *\n\ - * @param $2 $$1 ${5:description}\n\ - *\n\ - * @return ${6:$FILENAME}\n\ - */\n\ - public function set$3(${7:$2 }$$1)\n\ - {\n\ - $this->$4 = $$1;\n\ - return $this;\n\ - }${8}\n\ -# anotation, get, and set, useful for doctrine\n\ -snippet ags\n\ - /**\n\ - * ${1:description}\n\ - * \n\ - * @${7}\n\ - */\n\ - ${2:protected} $${3:foo};\n\ -\n\ - public function get${4:$3}()\n\ - {\n\ - return $this->$3;\n\ - }\n\ -\n\ - public function set$4(${5:$4 }$${6:$3})\n\ - {\n\ - $this->$3 = $$6;\n\ - return $this;\n\ - }\n\ -snippet rett\n\ - return true;\n\ -snippet retf\n\ - return false;\n\ -"; -exports.scope = "php"; +define("ace/snippets/php.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet ec\n\techo ${1};\nsnippet ns\n\tnamespace ${1:Foo\\Bar\\Baz};\n\t${2}\nsnippet use\n\tuse ${1:Foo\\Bar\\Baz};\n\t${2}\nsnippet c\n\t${1:abstract }class ${2:$FILENAME}\n\t{\n\t\t${3}\n\t}\nsnippet i\n\tinterface ${1:$FILENAME}\n\t{\n\t\t${2}\n\t}\nsnippet t.\n\t$this->${1}\nsnippet f\n\tfunction ${1:foo}(${2:array }${3:$bar})\n\t{\n\t\t${4}\n\t}\n# method\nsnippet m\n\t${1:abstract }${2:protected}${3: static} function ${4:foo}(${5:array }${6:$bar})\n\t{\n\t\t${7}\n\t}\n# setter method\nsnippet sm\n\t/**\n\t * Sets the value of ${1:foo}\n\t *\n\t * @param ${2:$1} $$1 ${3:description}\n\t *\n\t * @return ${4:$FILENAME}\n\t */\n\t${5:public} function set${6:$2}(${7:$2 }$$1)\n\t{\n\t\t$this->${8:$1} = $$1;\n\t\treturn $this;\n\t}${9}\n# getter method\nsnippet gm\n\t/**\n\t * Gets the value of ${1:foo}\n\t *\n\t * @return ${2:$1}\n\t */\n\t${3:public} function get${4:$2}()\n\t{\n\t\treturn $this->${5:$1};\n\t}${6}\n#setter\nsnippet $s\n\t${1:$foo}->set${2:Bar}(${3});\n#getter\nsnippet $g\n\t${1:$foo}->get${2:Bar}();\n\n# Tertiary conditional\nsnippet =?:\n\t$${1:foo} = ${2:true} ? ${3:a} : ${4};\nsnippet ?:\n\t${1:true} ? ${2:a} : ${3}\n\nsnippet C\n\t$_COOKIE['${1:variable}']${2}\nsnippet E\n\t$_ENV['${1:variable}']${2}\nsnippet F\n\t$_FILES['${1:variable}']${2}\nsnippet G\n\t$_GET['${1:variable}']${2}\nsnippet P\n\t$_POST['${1:variable}']${2}\nsnippet R\n\t$_REQUEST['${1:variable}']${2}\nsnippet S\n\t$_SERVER['${1:variable}']${2}\nsnippet SS\n\t$_SESSION['${1:variable}']${2}\n\n# the following are old ones\nsnippet inc\n\tinclude '${1:file}';${2}\nsnippet inc1\n\tinclude_once '${1:file}';${2}\nsnippet req\n\trequire '${1:file}';${2}\nsnippet req1\n\trequire_once '${1:file}';${2}\n# Start Docblock\nsnippet /*\n\t/**\n\t * ${1}\n\t */\n# Class - post doc\nsnippet doc_cp\n\t/**\n\t * ${1:undocumented class}\n\t *\n\t * @package ${2:default}\n\t * @subpackage ${3:default}\n\t * @author ${4:`g:snips_author`}\n\t */${5}\n# Class Variable - post doc\nsnippet doc_vp\n\t/**\n\t * ${1:undocumented class variable}\n\t *\n\t * @var ${2:string}\n\t */${3}\n# Class Variable\nsnippet doc_v\n\t/**\n\t * ${3:undocumented class variable}\n\t *\n\t * @var ${4:string}\n\t */\n\t${1:var} $${2};${5}\n# Class\nsnippet doc_c\n\t/**\n\t * ${3:undocumented class}\n\t *\n\t * @package ${4:default}\n\t * @subpackage ${5:default}\n\t * @author ${6:`g:snips_author`}\n\t */\n\t${1:}class ${2:}\n\t{\n\t\t${7}\n\t} // END $1class $2\n# Constant Definition - post doc\nsnippet doc_dp\n\t/**\n\t * ${1:undocumented constant}\n\t */${2}\n# Constant Definition\nsnippet doc_d\n\t/**\n\t * ${3:undocumented constant}\n\t */\n\tdefine(${1}, ${2});${4}\n# Function - post doc\nsnippet doc_fp\n\t/**\n\t * ${1:undocumented function}\n\t *\n\t * @return ${2:void}\n\t * @author ${3:`g:snips_author`}\n\t */${4}\n# Function signature\nsnippet doc_s\n\t/**\n\t * ${4:undocumented function}\n\t *\n\t * @return ${5:void}\n\t * @author ${6:`g:snips_author`}\n\t */\n\t${1}function ${2}(${3});${7}\n# Function\nsnippet doc_f\n\t/**\n\t * ${4:undocumented function}\n\t *\n\t * @return ${5:void}\n\t * @author ${6:`g:snips_author`}\n\t */\n\t${1}function ${2}(${3})\n\t{${7}\n\t}\n# Header\nsnippet doc_h\n\t/**\n\t * ${1}\n\t *\n\t * @author ${2:`g:snips_author`}\n\t * @version ${3:$Id$}\n\t * @copyright ${4:$2}, `strftime('%d %B, %Y')`\n\t * @package ${5:default}\n\t */\n\n# Interface\nsnippet interface\n\t/**\n\t * ${2:undocumented class}\n\t *\n\t * @package ${3:default}\n\t * @author ${4:`g:snips_author`}\n\t */\n\tinterface ${1:$FILENAME}\n\t{\n\t\t${5}\n\t}\n# class ...\nsnippet class\n\t/**\n\t * ${1}\n\t */\n\tclass ${2:$FILENAME}\n\t{\n\t\t${3}\n\t\t/**\n\t\t * ${4}\n\t\t */\n\t\t${5:public} function ${6:__construct}(${7:argument})\n\t\t{\n\t\t\t${8:// code...}\n\t\t}\n\t}\n# define(...)\nsnippet def\n\tdefine('${1}'${2});${3}\n# defined(...)\nsnippet def?\n\t${1}defined('${2}')${3}\nsnippet wh\n\twhile (${1:/* condition */}) {\n\t\t${2:// code...}\n\t}\n# do ... while\nsnippet do\n\tdo {\n\t\t${2:// code... }\n\t} while (${1:/* condition */});\nsnippet if\n\tif (${1:/* condition */}) {\n\t\t${2:// code...}\n\t}\nsnippet ife\n\tif (${1:/* condition */}) {\n\t\t${2:// code...}\n\t} else {\n\t\t${3:// code...}\n\t}\n\t${4}\nsnippet else\n\telse {\n\t\t${1:// code...}\n\t}\nsnippet elseif\n\telseif (${1:/* condition */}) {\n\t\t${2:// code...}\n\t}\nsnippet switch\n\tswitch ($${1:variable}) {\n\t\tcase '${2:value}':\n\t\t\t${3:// code...}\n\t\t\tbreak;\n\t\t${5}\n\t\tdefault:\n\t\t\t${4:// code...}\n\t\t\tbreak;\n\t}\nsnippet case\n\tcase '${1:value}':\n\t\t${2:// code...}\n\t\tbreak;${3}\nsnippet for\n\tfor ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {\n\t\t${4: // code...}\n\t}\nsnippet foreach\n\tforeach ($${1:variable} as $${2:value}) {\n\t\t${3:// code...}\n\t}\nsnippet foreachk\n\tforeach ($${1:variable} as $${2:key} => $${3:value}) {\n\t\t${4:// code...}\n\t}\n# $... = array (...)\nsnippet array\n\t$${1:arrayName} = array('${2}' => ${3});${4}\nsnippet try\n\ttry {\n\t\t${2}\n\t} catch (${1:Exception} $e) {\n\t}\n# lambda with closure\nsnippet lambda\n\t${1:static }function (${2:args}) use (${3:&$x, $y /*put vars in scope (closure) */}) {\n\t\t${4}\n\t};\n# pre_dump();\nsnippet pd\n\techo '
    '; var_dump(${1}); echo '
    ';\n# pre_dump(); die();\nsnippet pdd\n\techo '
    '; var_dump(${1}); echo '
    '; die(${2:});\nsnippet vd\n\tvar_dump(${1});\nsnippet vdd\n\tvar_dump(${1}); die(${2:});\nsnippet http_redirect\n\theader (\"HTTP/1.1 301 Moved Permanently\");\n\theader (\"Location: \".URL);\n\texit();\n# Getters & Setters\nsnippet gs\n\t/**\n\t * Gets the value of ${1:foo}\n\t *\n\t * @return ${2:$1}\n\t */\n\tpublic function get${3:$2}()\n\t{\n\t\treturn $this->${4:$1};\n\t}\n\n\t/**\n\t * Sets the value of $1\n\t *\n\t * @param $2 $$1 ${5:description}\n\t *\n\t * @return ${6:$FILENAME}\n\t */\n\tpublic function set$3(${7:$2 }$$1)\n\t{\n\t\t$this->$4 = $$1;\n\t\treturn $this;\n\t}${8}\n# anotation, get, and set, useful for doctrine\nsnippet ags\n\t/**\n\t * ${1:description}\n\t *\n\t * @${7}\n\t */\n\t${2:protected} $${3:foo};\n\n\tpublic function get${4:$3}()\n\t{\n\t\treturn $this->$3;\n\t}\n\n\tpublic function set$4(${5:$4 }$${6:$3})\n\t{\n\t\t$this->$3 = $$6;\n\t\treturn $this;\n\t}\nsnippet rett\n\treturn true;\nsnippet retf\n\treturn false;\nscope html\nsnippet \n# this one is for php5.4\nsnippet \nsnippet ifil\n\t\n\t\t${2:}\n\t\nsnippet ifeil\n\t\n\t\t${2:}\n\t\n\t\t${3:}\n\t\n\t${4}\nsnippet foreachil\n\t\n\t\t${3:}\n\t\nsnippet foreachkil\n\t $${3:value}): ?>\n\t\t${4:}\n\t\nscope html-tag\nsnippet ifil\\n\\\n\t${2:code}\nsnippet ifeil\\n\\\n\t${2:code}${3:code}${4}\n"; }); + +define("ace/snippets/php",["require","exports","module","ace/snippets/php.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./php.snippets"); +exports.scope = "php"; + +}); (function() { + window.require(["ace/snippets/php"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/php_laravel_blade.js b/vendor/assets/javascripts/ace/snippets/php_laravel_blade.js new file mode 100644 index 00000000..d4790ba2 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/php_laravel_blade.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/php_laravel_blade"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/pig.js b/vendor/assets/javascripts/ace/snippets/pig.js index d1b6fc0f..157d1921 100644 --- a/vendor/assets/javascripts/ace/snippets/pig.js +++ b/vendor/assets/javascripts/ace/snippets/pig.js @@ -1,7 +1,9 @@ -define("ace/snippets/pig",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "pig"; - -}); +; (function() { + window.require(["ace/snippets/pig"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/plain_text.js b/vendor/assets/javascripts/ace/snippets/plain_text.js index d0309cf3..92dfce5c 100644 --- a/vendor/assets/javascripts/ace/snippets/plain_text.js +++ b/vendor/assets/javascripts/ace/snippets/plain_text.js @@ -1,7 +1,9 @@ -define("ace/snippets/plain_text",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "plain_text"; - -}); +; (function() { + window.require(["ace/snippets/plain_text"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/plsql.js b/vendor/assets/javascripts/ace/snippets/plsql.js new file mode 100644 index 00000000..b7b54bd8 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/plsql.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/plsql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/powershell.js b/vendor/assets/javascripts/ace/snippets/powershell.js index b1c2037a..0f36eede 100644 --- a/vendor/assets/javascripts/ace/snippets/powershell.js +++ b/vendor/assets/javascripts/ace/snippets/powershell.js @@ -1,7 +1,9 @@ -define("ace/snippets/powershell",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "powershell"; - -}); +; (function() { + window.require(["ace/snippets/powershell"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/praat.js b/vendor/assets/javascripts/ace/snippets/praat.js index d688531b..e4e734fc 100644 --- a/vendor/assets/javascripts/ace/snippets/praat.js +++ b/vendor/assets/javascripts/ace/snippets/praat.js @@ -1,7 +1,9 @@ -define("ace/snippets/praat",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "praat"; - -}); +; (function() { + window.require(["ace/snippets/praat"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/prisma.js b/vendor/assets/javascripts/ace/snippets/prisma.js new file mode 100644 index 00000000..4a9e2b3e --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/prisma.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/prisma"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/prolog.js b/vendor/assets/javascripts/ace/snippets/prolog.js index 3330832b..4c23dac3 100644 --- a/vendor/assets/javascripts/ace/snippets/prolog.js +++ b/vendor/assets/javascripts/ace/snippets/prolog.js @@ -1,7 +1,9 @@ -define("ace/snippets/prolog",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "prolog"; - -}); +; (function() { + window.require(["ace/snippets/prolog"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/properties.js b/vendor/assets/javascripts/ace/snippets/properties.js index 13627095..36c01dcb 100644 --- a/vendor/assets/javascripts/ace/snippets/properties.js +++ b/vendor/assets/javascripts/ace/snippets/properties.js @@ -1,7 +1,9 @@ -define("ace/snippets/properties",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "properties"; - -}); +; (function() { + window.require(["ace/snippets/properties"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/protobuf.js b/vendor/assets/javascripts/ace/snippets/protobuf.js index ca88cb0d..b169bbfc 100644 --- a/vendor/assets/javascripts/ace/snippets/protobuf.js +++ b/vendor/assets/javascripts/ace/snippets/protobuf.js @@ -1,7 +1,9 @@ -define("ace/snippets/protobuf",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText = ""; -exports.scope = "protobuf"; - -}); +; (function() { + window.require(["ace/snippets/protobuf"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/prql.js b/vendor/assets/javascripts/ace/snippets/prql.js new file mode 100644 index 00000000..80905e5b --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/prql.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/prql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/puppet.js b/vendor/assets/javascripts/ace/snippets/puppet.js new file mode 100644 index 00000000..52021e3a --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/puppet.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/puppet"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/python.js b/vendor/assets/javascripts/ace/snippets/python.js index 8bc443a6..77030aae 100644 --- a/vendor/assets/javascripts/ace/snippets/python.js +++ b/vendor/assets/javascripts/ace/snippets/python.js @@ -1,165 +1,16 @@ -define("ace/snippets/python",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet #!\n\ - #!/usr/bin/env python\n\ -snippet imp\n\ - import ${1:module}\n\ -snippet from\n\ - from ${1:package} import ${2:module}\n\ -# Module Docstring\n\ -snippet docs\n\ - '''\n\ - File: ${1:FILENAME:file_name}\n\ - Author: ${2:author}\n\ - Description: ${3}\n\ - '''\n\ -snippet wh\n\ - while ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -# dowh - does the same as do...while in other languages\n\ -snippet dowh\n\ - while True:\n\ - ${1:# TODO: write code...}\n\ - if ${2:condition}:\n\ - break\n\ -snippet with\n\ - with ${1:expr} as ${2:var}:\n\ - ${3:# TODO: write code...}\n\ -# New Class\n\ -snippet cl\n\ - class ${1:ClassName}(${2:object}):\n\ - \"\"\"${3:docstring for $1}\"\"\"\n\ - def __init__(self, ${4:arg}):\n\ - ${5:super($1, self).__init__()}\n\ - self.$4 = $4\n\ - ${6}\n\ -# New Function\n\ -snippet def\n\ - def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):\n\ - \"\"\"${3:docstring for $1}\"\"\"\n\ - ${4:# TODO: write code...}\n\ -snippet deff\n\ - def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):\n\ - ${3:# TODO: write code...}\n\ -# New Method\n\ -snippet defs\n\ - def ${1:mname}(self, ${2:arg}):\n\ - ${3:# TODO: write code...}\n\ -# New Property\n\ -snippet property\n\ - def ${1:foo}():\n\ - doc = \"${2:The $1 property.}\"\n\ - def fget(self):\n\ - ${3:return self._$1}\n\ - def fset(self, value):\n\ - ${4:self._$1 = value}\n\ -# Ifs\n\ -snippet if\n\ - if ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -snippet el\n\ - else:\n\ - ${1:# TODO: write code...}\n\ -snippet ei\n\ - elif ${1:condition}:\n\ - ${2:# TODO: write code...}\n\ -# For\n\ -snippet for\n\ - for ${1:item} in ${2:items}:\n\ - ${3:# TODO: write code...}\n\ -# Encodes\n\ -snippet cutf8\n\ - # -*- coding: utf-8 -*-\n\ -snippet clatin1\n\ - # -*- coding: latin-1 -*-\n\ -snippet cascii\n\ - # -*- coding: ascii -*-\n\ -# Lambda\n\ -snippet ld\n\ - ${1:var} = lambda ${2:vars} : ${3:action}\n\ -snippet .\n\ - self.\n\ -snippet try Try/Except\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ -snippet try Try/Except/Else\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - else:\n\ - ${5:# TODO: write code...}\n\ -snippet try Try/Except/Finally\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - finally:\n\ - ${5:# TODO: write code...}\n\ -snippet try Try/Except/Else/Finally\n\ - try:\n\ - ${1:# TODO: write code...}\n\ - except ${2:Exception}, ${3:e}:\n\ - ${4:raise $3}\n\ - else:\n\ - ${5:# TODO: write code...}\n\ - finally:\n\ - ${6:# TODO: write code...}\n\ -# if __name__ == '__main__':\n\ -snippet ifmain\n\ - if __name__ == '__main__':\n\ - ${1:main()}\n\ -# __magic__\n\ -snippet _\n\ - __${1:init}__${2}\n\ -# python debugger (pdb)\n\ -snippet pdb\n\ - import pdb; pdb.set_trace()\n\ -# ipython debugger (ipdb)\n\ -snippet ipdb\n\ - import ipdb; ipdb.set_trace()\n\ -# ipython debugger (pdbbb)\n\ -snippet pdbbb\n\ - import pdbpp; pdbpp.set_trace()\n\ -snippet pprint\n\ - import pprint; pprint.pprint(${1})${2}\n\ -snippet \"\n\ - \"\"\"\n\ - ${1:doc}\n\ - \"\"\"\n\ -# test function/method\n\ -snippet test\n\ - def test_${1:description}(${2:self}):\n\ - ${3:# TODO: write code...}\n\ -# test case\n\ -snippet testcase\n\ - class ${1:ExampleCase}(unittest.TestCase):\n\ - \n\ - def test_${2:description}(self):\n\ - ${3:# TODO: write code...}\n\ -snippet fut\n\ - from __future__ import ${1}\n\ -#getopt\n\ -snippet getopt\n\ - try:\n\ - # Short option syntax: \"hv:\"\n\ - # Long option syntax: \"help\" or \"verbose=\"\n\ - opts, args = getopt.getopt(sys.argv[1:], \"${1:short_options}\", [${2:long_options}])\n\ - \n\ - except getopt.GetoptError, err:\n\ - # Print debug info\n\ - print str(err)\n\ - ${3:error_action}\n\ -\n\ - for option, argument in opts:\n\ - if option in (\"-h\", \"--help\"):\n\ - ${4}\n\ - elif option in (\"-v\", \"--verbose\"):\n\ - verbose = argument\n\ -"; -exports.scope = "python"; +define("ace/snippets/python.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet #!\n\t#!/usr/bin/env python\nsnippet imp\n\timport ${1:module}\nsnippet from\n\tfrom ${1:package} import ${2:module}\n# Module Docstring\nsnippet docs\n\t'''\n\tFile: ${1:FILENAME:file_name}\n\tAuthor: ${2:author}\n\tDescription: ${3}\n\t'''\nsnippet wh\n\twhile ${1:condition}:\n\t\t${2:# TODO: write code...}\n# dowh - does the same as do...while in other languages\nsnippet dowh\n\twhile True:\n\t\t${1:# TODO: write code...}\n\t\tif ${2:condition}:\n\t\t\tbreak\nsnippet with\n\twith ${1:expr} as ${2:var}:\n\t\t${3:# TODO: write code...}\n# New Class\nsnippet cl\n\tclass ${1:ClassName}(${2:object}):\n\t\t\"\"\"${3:docstring for $1}\"\"\"\n\t\tdef __init__(self, ${4:arg}):\n\t\t\t${5:super($1, self).__init__()}\n\t\t\tself.$4 = $4\n\t\t\t${6}\n# New Function\nsnippet def\n\tdef ${1:fname}(${2:`indent('.') ? 'self' : ''`}):\n\t\t\"\"\"${3:docstring for $1}\"\"\"\n\t\t${4:# TODO: write code...}\nsnippet deff\n\tdef ${1:fname}(${2:`indent('.') ? 'self' : ''`}):\n\t\t${3:# TODO: write code...}\n# New Method\nsnippet defs\n\tdef ${1:mname}(self, ${2:arg}):\n\t\t${3:# TODO: write code...}\n# New Property\nsnippet property\n\tdef ${1:foo}():\n\t\tdoc = \"${2:The $1 property.}\"\n\t\tdef fget(self):\n\t\t\t${3:return self._$1}\n\t\tdef fset(self, value):\n\t\t\t${4:self._$1 = value}\n# Ifs\nsnippet if\n\tif ${1:condition}:\n\t\t${2:# TODO: write code...}\nsnippet el\n\telse:\n\t\t${1:# TODO: write code...}\nsnippet ei\n\telif ${1:condition}:\n\t\t${2:# TODO: write code...}\n# For\nsnippet for\n\tfor ${1:item} in ${2:items}:\n\t\t${3:# TODO: write code...}\n# Encodes\nsnippet cutf8\n\t# -*- coding: utf-8 -*-\nsnippet clatin1\n\t# -*- coding: latin-1 -*-\nsnippet cascii\n\t# -*- coding: ascii -*-\n# Lambda\nsnippet ld\n\t${1:var} = lambda ${2:vars} : ${3:action}\nsnippet .\n\tself.\nsnippet try Try/Except\n\ttry:\n\t\t${1:# TODO: write code...}\n\texcept ${2:Exception}, ${3:e}:\n\t\t${4:raise $3}\nsnippet try Try/Except/Else\n\ttry:\n\t\t${1:# TODO: write code...}\n\texcept ${2:Exception}, ${3:e}:\n\t\t${4:raise $3}\n\telse:\n\t\t${5:# TODO: write code...}\nsnippet try Try/Except/Finally\n\ttry:\n\t\t${1:# TODO: write code...}\n\texcept ${2:Exception}, ${3:e}:\n\t\t${4:raise $3}\n\tfinally:\n\t\t${5:# TODO: write code...}\nsnippet try Try/Except/Else/Finally\n\ttry:\n\t\t${1:# TODO: write code...}\n\texcept ${2:Exception}, ${3:e}:\n\t\t${4:raise $3}\n\telse:\n\t\t${5:# TODO: write code...}\n\tfinally:\n\t\t${6:# TODO: write code...}\n# if __name__ == '__main__':\nsnippet ifmain\n\tif __name__ == '__main__':\n\t\t${1:main()}\n# __magic__\nsnippet _\n\t__${1:init}__${2}\n# python debugger (pdb)\nsnippet pdb\n\timport pdb; pdb.set_trace()\n# ipython debugger (ipdb)\nsnippet ipdb\n\timport ipdb; ipdb.set_trace()\n# ipython debugger (pdbbb)\nsnippet pdbbb\n\timport pdbpp; pdbpp.set_trace()\nsnippet pprint\n\timport pprint; pprint.pprint(${1})${2}\nsnippet \"\n\t\"\"\"\n\t${1:doc}\n\t\"\"\"\n# test function/method\nsnippet test\n\tdef test_${1:description}(${2:self}):\n\t\t${3:# TODO: write code...}\n# test case\nsnippet testcase\n\tclass ${1:ExampleCase}(unittest.TestCase):\n\t\t\n\t\tdef test_${2:description}(self):\n\t\t\t${3:# TODO: write code...}\nsnippet fut\n\tfrom __future__ import ${1}\n#getopt\nsnippet getopt\n\ttry:\n\t\t# Short option syntax: \"hv:\"\n\t\t# Long option syntax: \"help\" or \"verbose=\"\n\t\topts, args = getopt.getopt(sys.argv[1:], \"${1:short_options}\", [${2:long_options}])\n\t\n\texcept getopt.GetoptError, err:\n\t\t# Print debug info\n\t\tprint str(err)\n\t\t${3:error_action}\n\n\tfor option, argument in opts:\n\t\tif option in (\"-h\", \"--help\"):\n\t\t\t${4}\n\t\telif option in (\"-v\", \"--verbose\"):\n\t\t\tverbose = argument\n"; }); + +define("ace/snippets/python",["require","exports","module","ace/snippets/python.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./python.snippets"); +exports.scope = "python"; + +}); (function() { + window.require(["ace/snippets/python"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/qml.js b/vendor/assets/javascripts/ace/snippets/qml.js new file mode 100644 index 00000000..cb4f66ed --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/qml.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/qml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/r.js b/vendor/assets/javascripts/ace/snippets/r.js index 080739d8..9dc36fc9 100644 --- a/vendor/assets/javascripts/ace/snippets/r.js +++ b/vendor/assets/javascripts/ace/snippets/r.js @@ -1,128 +1,16 @@ -define("ace/snippets/r",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet #!\n\ - #!/usr/bin/env Rscript\n\ -\n\ -# includes\n\ -snippet lib\n\ - library(${1:package})\n\ -snippet req\n\ - require(${1:package})\n\ -snippet source\n\ - source('${1:file}')\n\ -\n\ -# conditionals\n\ -snippet if\n\ - if (${1:condition}) {\n\ - ${2:code}\n\ - }\n\ -snippet el\n\ - else {\n\ - ${1:code}\n\ - }\n\ -snippet ei\n\ - else if (${1:condition}) {\n\ - ${2:code}\n\ - }\n\ -\n\ -# functions\n\ -snippet fun\n\ - ${1:name} = function (${2:variables}) {\n\ - ${3:code}\n\ - }\n\ -snippet ret\n\ - return(${1:code})\n\ -\n\ -# dataframes, lists, etc\n\ -snippet df\n\ - ${1:name}[${2:rows}, ${3:cols}]\n\ -snippet c\n\ - c(${1:items})\n\ -snippet li\n\ - list(${1:items})\n\ -snippet mat\n\ - matrix(${1:data}, nrow=${2:rows}, ncol=${3:cols})\n\ -\n\ -# apply functions\n\ -snippet apply\n\ - apply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet lapply\n\ - lapply(${1:list}, ${2:function})\n\ -snippet sapply\n\ - sapply(${1:list}, ${2:function})\n\ -snippet vapply\n\ - vapply(${1:list}, ${2:function}, ${3:type})\n\ -snippet mapply\n\ - mapply(${1:function}, ${2:...})\n\ -snippet tapply\n\ - tapply(${1:vector}, ${2:index}, ${3:function})\n\ -snippet rapply\n\ - rapply(${1:list}, ${2:function})\n\ -\n\ -# plyr functions\n\ -snippet dd\n\ - ddply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet dl\n\ - dlply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet da\n\ - daply(${1:frame}, ${2:variables}, ${3:function})\n\ -snippet d_\n\ - d_ply(${1:frame}, ${2:variables}, ${3:function})\n\ -\n\ -snippet ad\n\ - adply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet al\n\ - alply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet aa\n\ - aaply(${1:array}, ${2:margin}, ${3:function})\n\ -snippet a_\n\ - a_ply(${1:array}, ${2:margin}, ${3:function})\n\ -\n\ -snippet ld\n\ - ldply(${1:list}, ${2:function})\n\ -snippet ll\n\ - llply(${1:list}, ${2:function})\n\ -snippet la\n\ - laply(${1:list}, ${2:function})\n\ -snippet l_\n\ - l_ply(${1:list}, ${2:function})\n\ -\n\ -snippet md\n\ - mdply(${1:matrix}, ${2:function})\n\ -snippet ml\n\ - mlply(${1:matrix}, ${2:function})\n\ -snippet ma\n\ - maply(${1:matrix}, ${2:function})\n\ -snippet m_\n\ - m_ply(${1:matrix}, ${2:function})\n\ -\n\ -# plot functions\n\ -snippet pl\n\ - plot(${1:x}, ${2:y})\n\ -snippet ggp\n\ - ggplot(${1:data}, aes(${2:aesthetics}))\n\ -snippet img\n\ - ${1:(jpeg,bmp,png,tiff)}(filename=\"${2:filename}\", width=${3}, height=${4}, unit=\"${5}\")\n\ - ${6:plot}\n\ - dev.off()\n\ -\n\ -# statistical test functions\n\ -snippet fis\n\ - fisher.test(${1:x}, ${2:y})\n\ -snippet chi\n\ - chisq.test(${1:x}, ${2:y})\n\ -snippet tt\n\ - t.test(${1:x}, ${2:y})\n\ -snippet wil\n\ - wilcox.test(${1:x}, ${2:y})\n\ -snippet cor\n\ - cor.test(${1:x}, ${2:y})\n\ -snippet fte\n\ - var.test(${1:x}, ${2:y})\n\ -snippet kvt \n\ - kv.test(${1:x}, ${2:y})\n\ -"; -exports.scope = "r"; +define("ace/snippets/r.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet #!\n\t#!/usr/bin/env Rscript\n\n# includes\nsnippet lib\n\tlibrary(${1:package})\nsnippet req\n\trequire(${1:package})\nsnippet source\n\tsource('${1:file}')\n\n# conditionals\nsnippet if\n\tif (${1:condition}) {\n\t\t${2:code}\n\t}\nsnippet el\n\telse {\n\t\t${1:code}\n\t}\nsnippet ei\n\telse if (${1:condition}) {\n\t\t${2:code}\n\t}\n\n# functions\nsnippet fun\n\t${1:name} = function (${2:variables}) {\n\t\t${3:code}\n\t}\nsnippet ret\n\treturn(${1:code})\n\n# dataframes, lists, etc\nsnippet df\n\t${1:name}[${2:rows}, ${3:cols}]\nsnippet c\n\tc(${1:items})\nsnippet li\n\tlist(${1:items})\nsnippet mat\n\tmatrix(${1:data}, nrow=${2:rows}, ncol=${3:cols})\n\n# apply functions\nsnippet apply\n\tapply(${1:array}, ${2:margin}, ${3:function})\nsnippet lapply\n\tlapply(${1:list}, ${2:function})\nsnippet sapply\n\tsapply(${1:list}, ${2:function})\nsnippet vapply\n\tvapply(${1:list}, ${2:function}, ${3:type})\nsnippet mapply\n\tmapply(${1:function}, ${2:...})\nsnippet tapply\n\ttapply(${1:vector}, ${2:index}, ${3:function})\nsnippet rapply\n\trapply(${1:list}, ${2:function})\n\n# plyr functions\nsnippet dd\n\tddply(${1:frame}, ${2:variables}, ${3:function})\nsnippet dl\n\tdlply(${1:frame}, ${2:variables}, ${3:function})\nsnippet da\n\tdaply(${1:frame}, ${2:variables}, ${3:function})\nsnippet d_\n\td_ply(${1:frame}, ${2:variables}, ${3:function})\n\nsnippet ad\n\tadply(${1:array}, ${2:margin}, ${3:function})\nsnippet al\n\talply(${1:array}, ${2:margin}, ${3:function})\nsnippet aa\n\taaply(${1:array}, ${2:margin}, ${3:function})\nsnippet a_\n\ta_ply(${1:array}, ${2:margin}, ${3:function})\n\nsnippet ld\n\tldply(${1:list}, ${2:function})\nsnippet ll\n\tllply(${1:list}, ${2:function})\nsnippet la\n\tlaply(${1:list}, ${2:function})\nsnippet l_\n\tl_ply(${1:list}, ${2:function})\n\nsnippet md\n\tmdply(${1:matrix}, ${2:function})\nsnippet ml\n\tmlply(${1:matrix}, ${2:function})\nsnippet ma\n\tmaply(${1:matrix}, ${2:function})\nsnippet m_\n\tm_ply(${1:matrix}, ${2:function})\n\n# plot functions\nsnippet pl\n\tplot(${1:x}, ${2:y})\nsnippet ggp\n\tggplot(${1:data}, aes(${2:aesthetics}))\nsnippet img\n\t${1:(jpeg,bmp,png,tiff)}(filename=\"${2:filename}\", width=${3}, height=${4}, unit=\"${5}\")\n\t${6:plot}\n\tdev.off()\n\n# statistical test functions\nsnippet fis\n\tfisher.test(${1:x}, ${2:y})\nsnippet chi\n\tchisq.test(${1:x}, ${2:y})\nsnippet tt\n\tt.test(${1:x}, ${2:y})\nsnippet wil\n\twilcox.test(${1:x}, ${2:y})\nsnippet cor\n\tcor.test(${1:x}, ${2:y})\nsnippet fte\n\tvar.test(${1:x}, ${2:y})\nsnippet kvt \n\tkv.test(${1:x}, ${2:y})\n"; }); + +define("ace/snippets/r",["require","exports","module","ace/snippets/r.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./r.snippets"); +exports.scope = "r"; + +}); (function() { + window.require(["ace/snippets/r"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/raku.js b/vendor/assets/javascripts/ace/snippets/raku.js new file mode 100644 index 00000000..8beaf95d --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/raku.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/raku"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/razor.js b/vendor/assets/javascripts/ace/snippets/razor.js index d7cc4363..730db4e9 100644 --- a/vendor/assets/javascripts/ace/snippets/razor.js +++ b/vendor/assets/javascripts/ace/snippets/razor.js @@ -1,10 +1,16 @@ -define("ace/snippets/razor",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet if\n\ -(${1} == ${2}) {\n\ - ${3}\n\ -}"; -exports.scope = "razor"; +define("ace/snippets/razor.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet if\n(${1} == ${2}) {\n\t${3}\n}"; }); + +define("ace/snippets/razor",["require","exports","module","ace/snippets/razor.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./razor.snippets"); +exports.scope = "razor"; + +}); (function() { + window.require(["ace/snippets/razor"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/rdoc.js b/vendor/assets/javascripts/ace/snippets/rdoc.js index ba41d285..e4845db4 100644 --- a/vendor/assets/javascripts/ace/snippets/rdoc.js +++ b/vendor/assets/javascripts/ace/snippets/rdoc.js @@ -1,7 +1,9 @@ -define("ace/snippets/rdoc",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "rdoc"; - -}); +; (function() { + window.require(["ace/snippets/rdoc"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/red.js b/vendor/assets/javascripts/ace/snippets/red.js index 14096795..80cbd1b5 100644 --- a/vendor/assets/javascripts/ace/snippets/red.js +++ b/vendor/assets/javascripts/ace/snippets/red.js @@ -1,7 +1,9 @@ -define("ace/snippets/red",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText = " "; -exports.scope = "red"; - -}); +; (function() { + window.require(["ace/snippets/red"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/redshift.js b/vendor/assets/javascripts/ace/snippets/redshift.js new file mode 100644 index 00000000..bedd1473 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/redshift.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/redshift"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/rhtml.js b/vendor/assets/javascripts/ace/snippets/rhtml.js index 3b8e6866..7eb8a5eb 100644 --- a/vendor/assets/javascripts/ace/snippets/rhtml.js +++ b/vendor/assets/javascripts/ace/snippets/rhtml.js @@ -1,7 +1,9 @@ -define("ace/snippets/rhtml",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "rhtml"; - -}); +; (function() { + window.require(["ace/snippets/rhtml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/robot.js b/vendor/assets/javascripts/ace/snippets/robot.js new file mode 100644 index 00000000..d860c5ea --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/robot.js @@ -0,0 +1,16 @@ +define("ace/snippets/robot.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# scope: robot\n### Sections\nsnippet settingssection\ndescription *** Settings *** section\n\t*** Settings ***\n\tLibrary ${1}\n\nsnippet keywordssection\ndescription *** Keywords *** section\n\t*** Keywords ***\n\t${1:Keyword Name}\n\t [Arguments] \\${${2:Example Arg 1}}\n\t\nsnippet testcasessection\ndescription *** Test Cases *** section\n\t*** Test Cases ***\n\t${1:First Test Case}\n\t ${2:Log Example Arg}\n\nsnippet variablessection\ndescription *** Variables *** section\n\t*** Variables ***\n\t\\${${1:Variable Name}}= ${2:Variable Value}\n\n### Helpful keywords\nsnippet testcase\ndescription A test case\n\t${1:Test Case Name}\n\t ${2:Log Example log message}\n\t\nsnippet keyword\ndescription A keyword\n\t${1:Example Keyword}\n\t [Arguments] \\${${2:Example Arg 1}}\n\n### Built Ins\nsnippet forinr\ndescription For In Range Loop\n\tFOR \\${${1:Index}} IN RANGE \\${${2:10}}\n\t Log \\${${1:Index}}\n\tEND\n\nsnippet forin\ndescription For In Loop\n\tFOR \\${${1:Item}} IN @{${2:List Variable}}\n\t Log \\${${1:Item}}\n\tEND\n\nsnippet if\ndescription If Statement\n\tIF ${1:condition}\n\t ${2:Do something}\n\tEND\n\nsnippet else\ndescription If Statement\n\tIF ${1:Condition}\n\t ${2:Do something}\n\tELSE\n\t ${3:Otherwise do this}\n\tEND\n\nsnippet elif\ndescription Else-If Statement\n\tIF ${1:Condition 1}\n\t ${2:Do something}\n\tELSE IF ${3:Condition 2}\n\t ${4:Do something else}\n\tEND\n"; + +}); + +define("ace/snippets/robot",["require","exports","module","ace/snippets/robot.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./robot.snippets"); +exports.scope = "robot"; + +}); (function() { + window.require(["ace/snippets/robot"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/rst.js b/vendor/assets/javascripts/ace/snippets/rst.js index e75294e1..fa0b10dd 100644 --- a/vendor/assets/javascripts/ace/snippets/rst.js +++ b/vendor/assets/javascripts/ace/snippets/rst.js @@ -1,29 +1,16 @@ -define("ace/snippets/rst",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# rst\n\ -\n\ -snippet :\n\ - :${1:field name}: ${2:field body}\n\ -snippet *\n\ - *${1:Emphasis}*\n\ -snippet **\n\ - **${1:Strong emphasis}**\n\ -snippet _\n\ - \\`${1:hyperlink-name}\\`_\n\ - .. _\\`$1\\`: ${2:link-block}\n\ -snippet =\n\ - ${1:Title}\n\ - =====${2:=}\n\ - ${3}\n\ -snippet -\n\ - ${1:Title}\n\ - -----${2:-}\n\ - ${3}\n\ -snippet cont:\n\ - .. contents::\n\ - \n\ -"; -exports.scope = "rst"; +define("ace/snippets/rst.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# rst\n\nsnippet :\n\t:${1:field name}: ${2:field body}\nsnippet *\n\t*${1:Emphasis}*\nsnippet **\n\t**${1:Strong emphasis}**\nsnippet _\n\t\\`${1:hyperlink-name}\\`_\n\t.. _\\`$1\\`: ${2:link-block}\nsnippet =\n\t${1:Title}\n\t=====${2:=}\n\t${3}\nsnippet -\n\t${1:Title}\n\t-----${2:-}\n\t${3}\nsnippet cont:\n\t.. contents::\n\t\n"; }); + +define("ace/snippets/rst",["require","exports","module","ace/snippets/rst.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./rst.snippets"); +exports.scope = "rst"; + +}); (function() { + window.require(["ace/snippets/rst"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/ruby.js b/vendor/assets/javascripts/ace/snippets/ruby.js index d6e21c32..28f7e16a 100644 --- a/vendor/assets/javascripts/ace/snippets/ruby.js +++ b/vendor/assets/javascripts/ace/snippets/ruby.js @@ -1,935 +1,16 @@ -define("ace/snippets/ruby",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "########################################\n\ -# Ruby snippets - for Rails, see below #\n\ -########################################\n\ -\n\ -# encoding for Ruby 1.9\n\ -snippet enc\n\ - # encoding: utf-8\n\ -\n\ -# #!/usr/bin/env ruby\n\ -snippet #!\n\ - #!/usr/bin/env ruby\n\ - # encoding: utf-8\n\ -\n\ -# New Block\n\ -snippet =b\n\ - =begin rdoc\n\ - ${1}\n\ - =end\n\ -snippet y\n\ - :yields: ${1:arguments}\n\ -snippet rb\n\ - #!/usr/bin/env ruby -wKU\n\ -snippet beg\n\ - begin\n\ - ${3}\n\ - rescue ${1:Exception} => ${2:e}\n\ - end\n\ -\n\ -snippet req require\n\ - require \"${1}\"${2}\n\ -snippet #\n\ - # =>\n\ -snippet end\n\ - __END__\n\ -snippet case\n\ - case ${1:object}\n\ - when ${2:condition}\n\ - ${3}\n\ - end\n\ -snippet when\n\ - when ${1:condition}\n\ - ${2}\n\ -snippet def\n\ - def ${1:method_name}\n\ - ${2}\n\ - end\n\ -snippet deft\n\ - def test_${1:case_name}\n\ - ${2}\n\ - end\n\ -snippet if\n\ - if ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet ife\n\ - if ${1:condition}\n\ - ${2}\n\ - else\n\ - ${3}\n\ - end\n\ -snippet elsif\n\ - elsif ${1:condition}\n\ - ${2}\n\ -snippet unless\n\ - unless ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet while\n\ - while ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet for\n\ - for ${1:e} in ${2:c}\n\ - ${3}\n\ - end\n\ -snippet until\n\ - until ${1:condition}\n\ - ${2}\n\ - end\n\ -snippet cla class .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - ${2}\n\ - end\n\ -snippet cla class .. initialize .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - def initialize(${2:args})\n\ - ${3}\n\ - end\n\ - end\n\ -snippet cla class .. < ParentClass .. initialize .. end\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} < ${2:ParentClass}\n\ - def initialize(${3:args})\n\ - ${4}\n\ - end\n\ - end\n\ -snippet cla ClassName = Struct .. do .. end\n\ - ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} = Struct.new(:${2:attr_names}) do\n\ - def ${3:method_name}\n\ - ${4}\n\ - end\n\ - end\n\ -snippet cla class BlankSlate .. initialize .. end\n\ - class ${1:BlankSlate}\n\ - instance_methods.each { |meth| undef_method(meth) unless meth =~ /\\A__/ }\n\ - end\n\ -snippet cla class << self .. end\n\ - class << ${1:self}\n\ - ${2}\n\ - end\n\ -# class .. < DelegateClass .. initialize .. end\n\ -snippet cla-\n\ - class ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} < DelegateClass(${2:ParentClass})\n\ - def initialize(${3:args})\n\ - super(${4:del_obj})\n\ -\n\ - ${5}\n\ - end\n\ - end\n\ -snippet mod module .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - ${2}\n\ - end\n\ -snippet mod module .. module_function .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - module_function\n\ -\n\ - ${2}\n\ - end\n\ -snippet mod module .. ClassMethods .. end\n\ - module ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\ - module ClassMethods\n\ - ${2}\n\ - end\n\ -\n\ - module InstanceMethods\n\ -\n\ - end\n\ -\n\ - def self.included(receiver)\n\ - receiver.extend ClassMethods\n\ - receiver.send :include, InstanceMethods\n\ - end\n\ - end\n\ -# attr_reader\n\ -snippet r\n\ - attr_reader :${1:attr_names}\n\ -# attr_writer\n\ -snippet w\n\ - attr_writer :${1:attr_names}\n\ -# attr_accessor\n\ -snippet rw\n\ - attr_accessor :${1:attr_names}\n\ -snippet atp\n\ - attr_protected :${1:attr_names}\n\ -snippet ata\n\ - attr_accessible :${1:attr_names}\n\ -# include Enumerable\n\ -snippet Enum\n\ - include Enumerable\n\ -\n\ - def each(&block)\n\ - ${1}\n\ - end\n\ -# include Comparable\n\ -snippet Comp\n\ - include Comparable\n\ -\n\ - def <=>(other)\n\ - ${1}\n\ - end\n\ -# extend Forwardable\n\ -snippet Forw-\n\ - extend Forwardable\n\ -# def self\n\ -snippet defs\n\ - def self.${1:class_method_name}\n\ - ${2}\n\ - end\n\ -# def method_missing\n\ -snippet defmm\n\ - def method_missing(meth, *args, &blk)\n\ - ${1}\n\ - end\n\ -snippet defd\n\ - def_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}\n\ -snippet defds\n\ - def_delegators :${1:@del_obj}, :${2:del_methods}\n\ -snippet am\n\ - alias_method :${1:new_name}, :${2:old_name}\n\ -snippet app\n\ - if __FILE__ == $PROGRAM_NAME\n\ - ${1}\n\ - end\n\ -# usage_if()\n\ -snippet usai\n\ - if ARGV.${1}\n\ - abort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\n\ - end\n\ -# usage_unless()\n\ -snippet usau\n\ - unless ARGV.${1}\n\ - abort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\n\ - end\n\ -snippet array\n\ - Array.new(${1:10}) { |${2:i}| ${3} }\n\ -snippet hash\n\ - Hash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }\n\ -snippet file File.foreach() { |line| .. }\n\ - File.foreach(${1:\"path/to/file\"}) { |${2:line}| ${3} }\n\ -snippet file File.read()\n\ - File.read(${1:\"path/to/file\"})${2}\n\ -snippet Dir Dir.global() { |file| .. }\n\ - Dir.glob(${1:\"dir/glob/*\"}) { |${2:file}| ${3} }\n\ -snippet Dir Dir[\"..\"]\n\ - Dir[${1:\"glob/**/*.rb\"}]${2}\n\ -snippet dir\n\ - Filename.dirname(__FILE__)\n\ -snippet deli\n\ - delete_if { |${1:e}| ${2} }\n\ -snippet fil\n\ - fill(${1:range}) { |${2:i}| ${3} }\n\ -# flatten_once()\n\ -snippet flao\n\ - inject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}\n\ -snippet zip\n\ - zip(${1:enums}) { |${2:row}| ${3} }\n\ -# downto(0) { |n| .. }\n\ -snippet dow\n\ - downto(${1:0}) { |${2:n}| ${3} }\n\ -snippet ste\n\ - step(${1:2}) { |${2:n}| ${3} }\n\ -snippet tim\n\ - times { |${1:n}| ${2} }\n\ -snippet upt\n\ - upto(${1:1.0/0.0}) { |${2:n}| ${3} }\n\ -snippet loo\n\ - loop { ${1} }\n\ -snippet ea\n\ - each { |${1:e}| ${2} }\n\ -snippet ead\n\ - each do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet eab\n\ - each_byte { |${1:byte}| ${2} }\n\ -snippet eac- each_char { |chr| .. }\n\ - each_char { |${1:chr}| ${2} }\n\ -snippet eac- each_cons(..) { |group| .. }\n\ - each_cons(${1:2}) { |${2:group}| ${3} }\n\ -snippet eai\n\ - each_index { |${1:i}| ${2} }\n\ -snippet eaid\n\ - each_index do |${1:i}|\n\ - ${2}\n\ - end\n\ -snippet eak\n\ - each_key { |${1:key}| ${2} }\n\ -snippet eakd\n\ - each_key do |${1:key}|\n\ - ${2}\n\ - end\n\ -snippet eal\n\ - each_line { |${1:line}| ${2} }\n\ -snippet eald\n\ - each_line do |${1:line}|\n\ - ${2}\n\ - end\n\ -snippet eap\n\ - each_pair { |${1:name}, ${2:val}| ${3} }\n\ -snippet eapd\n\ - each_pair do |${1:name}, ${2:val}|\n\ - ${3}\n\ - end\n\ -snippet eas-\n\ - each_slice(${1:2}) { |${2:group}| ${3} }\n\ -snippet easd-\n\ - each_slice(${1:2}) do |${2:group}|\n\ - ${3}\n\ - end\n\ -snippet eav\n\ - each_value { |${1:val}| ${2} }\n\ -snippet eavd\n\ - each_value do |${1:val}|\n\ - ${2}\n\ - end\n\ -snippet eawi\n\ - each_with_index { |${1:e}, ${2:i}| ${3} }\n\ -snippet eawid\n\ - each_with_index do |${1:e},${2:i}|\n\ - ${3}\n\ - end\n\ -snippet reve\n\ - reverse_each { |${1:e}| ${2} }\n\ -snippet reved\n\ - reverse_each do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet inj\n\ - inject(${1:init}) { |${2:mem}, ${3:var}| ${4} }\n\ -snippet injd\n\ - inject(${1:init}) do |${2:mem}, ${3:var}|\n\ - ${4}\n\ - end\n\ -snippet map\n\ - map { |${1:e}| ${2} }\n\ -snippet mapd\n\ - map do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet mapwi-\n\ - enum_with_index.map { |${1:e}, ${2:i}| ${3} }\n\ -snippet sor\n\ - sort { |a, b| ${1} }\n\ -snippet sorb\n\ - sort_by { |${1:e}| ${2} }\n\ -snippet ran\n\ - sort_by { rand }\n\ -snippet all\n\ - all? { |${1:e}| ${2} }\n\ -snippet any\n\ - any? { |${1:e}| ${2} }\n\ -snippet cl\n\ - classify { |${1:e}| ${2} }\n\ -snippet col\n\ - collect { |${1:e}| ${2} }\n\ -snippet cold\n\ - collect do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet det\n\ - detect { |${1:e}| ${2} }\n\ -snippet detd\n\ - detect do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet fet\n\ - fetch(${1:name}) { |${2:key}| ${3} }\n\ -snippet fin\n\ - find { |${1:e}| ${2} }\n\ -snippet find\n\ - find do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet fina\n\ - find_all { |${1:e}| ${2} }\n\ -snippet finad\n\ - find_all do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet gre\n\ - grep(${1:/pattern/}) { |${2:match}| ${3} }\n\ -snippet sub\n\ - ${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }\n\ -snippet sca\n\ - scan(${1:/pattern/}) { |${2:match}| ${3} }\n\ -snippet scad\n\ - scan(${1:/pattern/}) do |${2:match}|\n\ - ${3}\n\ - end\n\ -snippet max\n\ - max { |a, b| ${1} }\n\ -snippet min\n\ - min { |a, b| ${1} }\n\ -snippet par\n\ - partition { |${1:e}| ${2} }\n\ -snippet pard\n\ - partition do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet rej\n\ - reject { |${1:e}| ${2} }\n\ -snippet rejd\n\ - reject do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet sel\n\ - select { |${1:e}| ${2} }\n\ -snippet seld\n\ - select do |${1:e}|\n\ - ${2}\n\ - end\n\ -snippet lam\n\ - lambda { |${1:args}| ${2} }\n\ -snippet doo\n\ - do\n\ - ${1}\n\ - end\n\ -snippet dov\n\ - do |${1:variable}|\n\ - ${2}\n\ - end\n\ -snippet :\n\ - :${1:key} => ${2:\"value\"}${3}\n\ -snippet ope\n\ - open(${1:\"path/or/url/or/pipe\"}, \"${2:w}\") { |${3:io}| ${4} }\n\ -# path_from_here()\n\ -snippet fpath\n\ - File.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}\n\ -# unix_filter {}\n\ -snippet unif\n\ - ARGF.each_line${1} do |${2:line}|\n\ - ${3}\n\ - end\n\ -# option_parse {}\n\ -snippet optp\n\ - require \"optparse\"\n\ -\n\ - options = {${1:default => \"args\"}}\n\ -\n\ - ARGV.options do |opts|\n\ - opts.banner = \"Usage: #{File.basename($PROGRAM_NAME)}\n\ -snippet opt\n\ - opts.on( \"-${1:o}\", \"--${2:long-option-name}\", ${3:String},\n\ - \"${4:Option description.}\") do |${5:opt}|\n\ - ${6}\n\ - end\n\ -snippet tc\n\ - require \"test/unit\"\n\ -\n\ - require \"${1:library_file_name}\"\n\ -\n\ - class Test${2:$1} < Test::Unit::TestCase\n\ - def test_${3:case_name}\n\ - ${4}\n\ - end\n\ - end\n\ -snippet ts\n\ - require \"test/unit\"\n\ -\n\ - require \"tc_${1:test_case_file}\"\n\ - require \"tc_${2:test_case_file}\"${3}\n\ -snippet as\n\ - assert ${1:test}, \"${2:Failure message.}\"${3}\n\ -snippet ase\n\ - assert_equal ${1:expected}, ${2:actual}${3}\n\ -snippet asne\n\ - assert_not_equal ${1:unexpected}, ${2:actual}${3}\n\ -snippet asid\n\ - assert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4}\n\ -snippet asio\n\ - assert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3}\n\ -snippet asko\n\ - assert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3}\n\ -snippet asn\n\ - assert_nil ${1:instance}${2}\n\ -snippet asnn\n\ - assert_not_nil ${1:instance}${2}\n\ -snippet asm\n\ - assert_match /${1:expected_pattern}/, ${2:actual_string}${3}\n\ -snippet asnm\n\ - assert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3}\n\ -snippet aso\n\ - assert_operator ${1:left}, :${2:operator}, ${3:right}${4}\n\ -snippet asr\n\ - assert_raise ${1:Exception} { ${2} }\n\ -snippet asrd\n\ - assert_raise ${1:Exception} do\n\ - ${2}\n\ - end\n\ -snippet asnr\n\ - assert_nothing_raised ${1:Exception} { ${2} }\n\ -snippet asnrd\n\ - assert_nothing_raised ${1:Exception} do\n\ - ${2}\n\ - end\n\ -snippet asrt\n\ - assert_respond_to ${1:object}, :${2:method}${3}\n\ -snippet ass assert_same(..)\n\ - assert_same ${1:expected}, ${2:actual}${3}\n\ -snippet ass assert_send(..)\n\ - assert_send [${1:object}, :${2:message}, ${3:args}]${4}\n\ -snippet asns\n\ - assert_not_same ${1:unexpected}, ${2:actual}${3}\n\ -snippet ast\n\ - assert_throws :${1:expected} { ${2} }\n\ -snippet astd\n\ - assert_throws :${1:expected} do\n\ - ${2}\n\ - end\n\ -snippet asnt\n\ - assert_nothing_thrown { ${1} }\n\ -snippet asntd\n\ - assert_nothing_thrown do\n\ - ${1}\n\ - end\n\ -snippet fl\n\ - flunk \"${1:Failure message.}\"${2}\n\ -# Benchmark.bmbm do .. end\n\ -snippet bm-\n\ - TESTS = ${1:10_000}\n\ - Benchmark.bmbm do |results|\n\ - ${2}\n\ - end\n\ -snippet rep\n\ - results.report(\"${1:name}:\") { TESTS.times { ${2} }}\n\ -# Marshal.dump(.., file)\n\ -snippet Md\n\ - File.open(${1:\"path/to/file.dump\"}, \"wb\") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}\n\ -# Mashal.load(obj)\n\ -snippet Ml\n\ - File.open(${1:\"path/to/file.dump\"}, \"rb\") { |${2:file}| Marshal.load($2) }${3}\n\ -# deep_copy(..)\n\ -snippet deec\n\ - Marshal.load(Marshal.dump(${1:obj_to_copy}))${2}\n\ -snippet Pn-\n\ - PStore.new(${1:\"file_name.pstore\"})${2}\n\ -snippet tra\n\ - transaction(${1:true}) { ${2} }\n\ -# xmlread(..)\n\ -snippet xml-\n\ - REXML::Document.new(File.read(${1:\"path/to/file\"}))${2}\n\ -# xpath(..) { .. }\n\ -snippet xpa\n\ - elements.each(${1:\"//Xpath\"}) do |${2:node}|\n\ - ${3}\n\ - end\n\ -# class_from_name()\n\ -snippet clafn\n\ - split(\"::\").inject(Object) { |par, const| par.const_get(const) }\n\ -# singleton_class()\n\ -snippet sinc\n\ - class << self; self end\n\ -snippet nam\n\ - namespace :${1:`Filename()`} do\n\ - ${2}\n\ - end\n\ -snippet tas\n\ - desc \"${1:Task description}\"\n\ - task :${2:task_name => [:dependent, :tasks]} do\n\ - ${3}\n\ - end\n\ -# block\n\ -snippet b\n\ - { |${1:var}| ${2} }\n\ -snippet begin\n\ - begin\n\ - raise 'A test exception.'\n\ - rescue Exception => e\n\ - puts e.message\n\ - puts e.backtrace.inspect\n\ - else\n\ - # other exception\n\ - ensure\n\ - # always executed\n\ - end\n\ -\n\ -#debugging\n\ -snippet debug\n\ - require 'ruby-debug'; debugger; true;\n\ -snippet pry\n\ - require 'pry'; binding.pry\n\ -\n\ -#############################################\n\ -# Rails snippets - for pure Ruby, see above #\n\ -#############################################\n\ -snippet art\n\ - assert_redirected_to ${1::action => \"${2:index}\"}\n\ -snippet artnp\n\ - assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2})\n\ -snippet artnpp\n\ - assert_redirected_to ${1:parent}_${2:child}_path(${3:@$1})\n\ -snippet artp\n\ - assert_redirected_to ${1:model}_path(${2:@$1})\n\ -snippet artpp\n\ - assert_redirected_to ${1:model}s_path\n\ -snippet asd\n\ - assert_difference \"${1:Model}.${2:count}\", $1 do\n\ - ${3}\n\ - end\n\ -snippet asnd\n\ - assert_no_difference \"${1:Model}.${2:count}\" do\n\ - ${3}\n\ - end\n\ -snippet asre\n\ - assert_response :${1:success}, @response.body${2}\n\ -snippet asrj\n\ - assert_rjs :${1:replace}, \"${2:dom id}\"\n\ -snippet ass assert_select(..)\n\ - assert_select '${1:path}', :${2:text} => '${3:inner_html' ${4:do}\n\ -snippet bf\n\ - before_filter :${1:method}\n\ -snippet bt\n\ - belongs_to :${1:association}\n\ -snippet crw\n\ - cattr_accessor :${1:attr_names}\n\ -snippet defcreate\n\ - def create\n\ - @${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])\n\ -\n\ - respond_to do |wants|\n\ - if @$1.save\n\ - flash[:notice] = '$2 was successfully created.'\n\ - wants.html { redirect_to(@$1) }\n\ - wants.xml { render :xml => @$1, :status => :created, :location => @$1 }\n\ - else\n\ - wants.html { render :action => \"new\" }\n\ - wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n\ - end\n\ - end\n\ - end${3}\n\ -snippet defdestroy\n\ - def destroy\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ - @$1.destroy\n\ -\n\ - respond_to do |wants|\n\ - wants.html { redirect_to($1s_url) }\n\ - wants.xml { head :ok }\n\ - end\n\ - end${3}\n\ -snippet defedit\n\ - def edit\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ - end\n\ -snippet defindex\n\ - def index\n\ - @${1:model_class_name} = ${2:ModelClassName}.all\n\ -\n\ - respond_to do |wants|\n\ - wants.html # index.html.erb\n\ - wants.xml { render :xml => @$1s }\n\ - end\n\ - end${3}\n\ -snippet defnew\n\ - def new\n\ - @${1:model_class_name} = ${2:ModelClassName}.new\n\ -\n\ - respond_to do |wants|\n\ - wants.html # new.html.erb\n\ - wants.xml { render :xml => @$1 }\n\ - end\n\ - end${3}\n\ -snippet defshow\n\ - def show\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ -\n\ - respond_to do |wants|\n\ - wants.html # show.html.erb\n\ - wants.xml { render :xml => @$1 }\n\ - end\n\ - end${3}\n\ -snippet defupdate\n\ - def update\n\ - @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\ -\n\ - respond_to do |wants|\n\ - if @$1.update_attributes(params[:$1])\n\ - flash[:notice] = '$2 was successfully updated.'\n\ - wants.html { redirect_to(@$1) }\n\ - wants.xml { head :ok }\n\ - else\n\ - wants.html { render :action => \"edit\" }\n\ - wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n\ - end\n\ - end\n\ - end${3}\n\ -snippet flash\n\ - flash[:${1:notice}] = \"${2}\"\n\ -snippet habtm\n\ - has_and_belongs_to_many :${1:object}, :join_table => \"${2:table_name}\", :foreign_key => \"${3}_id\"${4}\n\ -snippet hm\n\ - has_many :${1:object}\n\ -snippet hmd\n\ - has_many :${1:other}s, :class_name => \"${2:$1}\", :foreign_key => \"${3:$1}_id\", :dependent => :destroy${4}\n\ -snippet hmt\n\ - has_many :${1:object}, :through => :${2:object}\n\ -snippet ho\n\ - has_one :${1:object}\n\ -snippet i18\n\ - I18n.t('${1:type.key}')${2}\n\ -snippet ist\n\ - <%= image_submit_tag(\"${1:agree.png}\", :id => \"${2:id}\"${3} %>\n\ -snippet log\n\ - Rails.logger.${1:debug} ${2}\n\ -snippet log2\n\ - RAILS_DEFAULT_LOGGER.${1:debug} ${2}\n\ -snippet logd\n\ - logger.debug { \"${1:message}\" }${2}\n\ -snippet loge\n\ - logger.error { \"${1:message}\" }${2}\n\ -snippet logf\n\ - logger.fatal { \"${1:message}\" }${2}\n\ -snippet logi\n\ - logger.info { \"${1:message}\" }${2}\n\ -snippet logw\n\ - logger.warn { \"${1:message}\" }${2}\n\ -snippet mapc\n\ - ${1:map}.${2:connect} '${3:controller/:action/:id}'\n\ -snippet mapca\n\ - ${1:map}.catch_all \"*${2:anything}\", :controller => \"${3:default}\", :action => \"${4:error}\"${5}\n\ -snippet mapr\n\ - ${1:map}.resource :${2:resource}\n\ -snippet maprs\n\ - ${1:map}.resources :${2:resource}\n\ -snippet mapwo\n\ - ${1:map}.with_options :${2:controller} => '${3:thing}' do |$3|\n\ - ${4}\n\ - end\n\ -snippet mbs\n\ - before_save :${1:method}\n\ -snippet mcht\n\ - change_table :${1:table_name} do |t|\n\ - ${2}\n\ - end\n\ -snippet mp\n\ - map(&:${1:id})\n\ -snippet mrw\n\ - mattr_accessor :${1:attr_names}\n\ -snippet oa\n\ - order(\"${1:field}\")\n\ -snippet od\n\ - order(\"${1:field} DESC\")\n\ -snippet pa\n\ - params[:${1:id}]${2}\n\ -snippet ra\n\ - render :action => \"${1:action}\"\n\ -snippet ral\n\ - render :action => \"${1:action}\", :layout => \"${2:layoutname}\"\n\ -snippet rest\n\ - respond_to do |wants|\n\ - wants.${1:html} { ${2} }\n\ - end\n\ -snippet rf\n\ - render :file => \"${1:filepath}\"\n\ -snippet rfu\n\ - render :file => \"${1:filepath}\", :use_full_path => ${2:false}\n\ -snippet ri\n\ - render :inline => \"${1:<%= 'hello' %>}\"\n\ -snippet ril\n\ - render :inline => \"${1:<%= 'hello' %>}\", :locals => { ${2::name} => \"${3:value}\"${4} }\n\ -snippet rit\n\ - render :inline => \"${1:<%= 'hello' %>}\", :type => ${2::rxml}\n\ -snippet rjson\n\ - render :json => ${1:text to render}\n\ -snippet rl\n\ - render :layout => \"${1:layoutname}\"\n\ -snippet rn\n\ - render :nothing => ${1:true}\n\ -snippet rns\n\ - render :nothing => ${1:true}, :status => ${2:401}\n\ -snippet rp\n\ - render :partial => \"${1:item}\"\n\ -snippet rpc\n\ - render :partial => \"${1:item}\", :collection => ${2:@$1s}\n\ -snippet rpl\n\ - render :partial => \"${1:item}\", :locals => { :${2:$1} => ${3:@$1}\n\ -snippet rpo\n\ - render :partial => \"${1:item}\", :object => ${2:@$1}\n\ -snippet rps\n\ - render :partial => \"${1:item}\", :status => ${2:500}\n\ -snippet rt\n\ - render :text => \"${1:text to render}\"\n\ -snippet rtl\n\ - render :text => \"${1:text to render}\", :layout => \"${2:layoutname}\"\n\ -snippet rtlt\n\ - render :text => \"${1:text to render}\", :layout => ${2:true}\n\ -snippet rts\n\ - render :text => \"${1:text to render}\", :status => ${2:401}\n\ -snippet ru\n\ - render :update do |${1:page}|\n\ - $1.${2}\n\ - end\n\ -snippet rxml\n\ - render :xml => ${1:text to render}\n\ -snippet sc\n\ - scope :${1:name}, :where(:@${2:field} => ${3:value})\n\ -snippet sl\n\ - scope :${1:name}, lambda do |${2:value}|\n\ - where(\"${3:field = ?}\", ${4:bind var})\n\ - end\n\ -snippet sha1\n\ - Digest::SHA1.hexdigest(${1:string})\n\ -snippet sweeper\n\ - class ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper\n\ - observe $1\n\ -\n\ - def after_save(${2:model_class_name})\n\ - expire_cache($2)\n\ - end\n\ -\n\ - def after_destroy($2)\n\ - expire_cache($2)\n\ - end\n\ -\n\ - def expire_cache($2)\n\ - expire_page\n\ - end\n\ - end\n\ -snippet tcb\n\ - t.boolean :${1:title}\n\ - ${2}\n\ -snippet tcbi\n\ - t.binary :${1:title}, :limit => ${2:2}.megabytes\n\ - ${3}\n\ -snippet tcd\n\ - t.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2}\n\ - ${4}\n\ -snippet tcda\n\ - t.date :${1:title}\n\ - ${2}\n\ -snippet tcdt\n\ - t.datetime :${1:title}\n\ - ${2}\n\ -snippet tcf\n\ - t.float :${1:title}\n\ - ${2}\n\ -snippet tch\n\ - t.change :${1:name}, :${2:string}, :${3:limit} => ${4:80}\n\ - ${5}\n\ -snippet tci\n\ - t.integer :${1:title}\n\ - ${2}\n\ -snippet tcl\n\ - t.integer :lock_version, :null => false, :default => 0\n\ - ${1}\n\ -snippet tcr\n\ - t.references :${1:taggable}, :polymorphic => { :default => '${2:Photo}' }\n\ - ${3}\n\ -snippet tcs\n\ - t.string :${1:title}\n\ - ${2}\n\ -snippet tct\n\ - t.text :${1:title}\n\ - ${2}\n\ -snippet tcti\n\ - t.time :${1:title}\n\ - ${2}\n\ -snippet tcts\n\ - t.timestamp :${1:title}\n\ - ${2}\n\ -snippet tctss\n\ - t.timestamps\n\ - ${1}\n\ -snippet va\n\ - validates_associated :${1:attribute}\n\ -snippet vao\n\ - validates_acceptance_of :${1:terms}\n\ -snippet vc\n\ - validates_confirmation_of :${1:attribute}\n\ -snippet ve\n\ - validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}\n\ -snippet vf\n\ - validates_format_of :${1:attribute}, :with => /${2:regex}/\n\ -snippet vi\n\ - validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })\n\ -snippet vl\n\ - validates_length_of :${1:attribute}, :within => ${2:3}..${3:20}\n\ -snippet vn\n\ - validates_numericality_of :${1:attribute}\n\ -snippet vpo\n\ - validates_presence_of :${1:attribute}\n\ -snippet vu\n\ - validates_uniqueness_of :${1:attribute}\n\ -snippet wants\n\ - wants.${1:js|xml|html} { ${2} }\n\ -snippet wc\n\ - where(${1:\"conditions\"}${2:, bind_var})\n\ -snippet wh\n\ - where(${1:field} => ${2:value})\n\ -snippet xdelete\n\ - xhr :delete, :${1:destroy}, :id => ${2:1}${3}\n\ -snippet xget\n\ - xhr :get, :${1:show}, :id => ${2:1}${3}\n\ -snippet xpost\n\ - xhr :post, :${1:create}, :${2:object} => { ${3} }\n\ -snippet xput\n\ - xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}\n\ -snippet test\n\ - test \"should ${1:do something}\" do\n\ - ${2}\n\ - end\n\ -#migrations\n\ -snippet mac\n\ - add_column :${1:table_name}, :${2:column_name}, :${3:data_type}\n\ -snippet mrc\n\ - remove_column :${1:table_name}, :${2:column_name}\n\ -snippet mrnc\n\ - rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}\n\ -snippet mcc\n\ - change_column :${1:table}, :${2:column}, :${3:type}\n\ -snippet mccc\n\ - t.column :${1:title}, :${2:string}\n\ -snippet mct\n\ - create_table :${1:table_name} do |t|\n\ - t.column :${2:name}, :${3:type}\n\ - end\n\ -snippet migration\n\ - class ${1:class_name} < ActiveRecord::Migration\n\ - def self.up\n\ - ${2}\n\ - end\n\ -\n\ - def self.down\n\ - end\n\ - end\n\ -\n\ -snippet trc\n\ - t.remove :${1:column}\n\ -snippet tre\n\ - t.rename :${1:old_column_name}, :${2:new_column_name}\n\ - ${3}\n\ -snippet tref\n\ - t.references :${1:model}\n\ -\n\ -#rspec\n\ -snippet it\n\ - it \"${1:spec_name}\" do\n\ - ${2}\n\ - end\n\ -snippet itp\n\ - it \"${1:spec_name}\"\n\ - ${2}\n\ -snippet desc\n\ - describe ${1:class_name} do\n\ - ${2}\n\ - end\n\ -snippet cont\n\ - context \"${1:message}\" do\n\ - ${2}\n\ - end\n\ -snippet bef\n\ - before :${1:each} do\n\ - ${2}\n\ - end\n\ -snippet aft\n\ - after :${1:each} do\n\ - ${2}\n\ - end\n\ -"; -exports.scope = "ruby"; +define("ace/snippets/ruby.snippets",["require","exports","module"], function(require, exports, module){module.exports = "########################################\n# Ruby snippets - for Rails, see below #\n########################################\n\n# encoding for Ruby 1.9\nsnippet enc\n\t# encoding: utf-8\n\n# #!/usr/bin/env ruby\nsnippet #!\n\t#!/usr/bin/env ruby\n\t# encoding: utf-8\n\n# New Block\nsnippet =b\n\t=begin rdoc\n\t\t${1}\n\t=end\nsnippet y\n\t:yields: ${1:arguments}\nsnippet rb\n\t#!/usr/bin/env ruby -wKU\nsnippet beg\n\tbegin\n\t\t${3}\n\trescue ${1:Exception} => ${2:e}\n\tend\n\nsnippet req require\n\trequire \"${1}\"${2}\nsnippet #\n\t# =>\nsnippet end\n\t__END__\nsnippet case\n\tcase ${1:object}\n\twhen ${2:condition}\n\t\t${3}\n\tend\nsnippet when\n\twhen ${1:condition}\n\t\t${2}\nsnippet def\n\tdef ${1:method_name}\n\t\t${2}\n\tend\nsnippet deft\n\tdef test_${1:case_name}\n\t\t${2}\n\tend\nsnippet if\n\tif ${1:condition}\n\t\t${2}\n\tend\nsnippet ife\n\tif ${1:condition}\n\t\t${2}\n\telse\n\t\t${3}\n\tend\nsnippet elsif\n\telsif ${1:condition}\n\t\t${2}\nsnippet unless\n\tunless ${1:condition}\n\t\t${2}\n\tend\nsnippet while\n\twhile ${1:condition}\n\t\t${2}\n\tend\nsnippet for\n\tfor ${1:e} in ${2:c}\n\t\t${3}\n\tend\nsnippet until\n\tuntil ${1:condition}\n\t\t${2}\n\tend\nsnippet cla class .. end\n\tclass ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\t\t${2}\n\tend\nsnippet cla class .. initialize .. end\n\tclass ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\t\tdef initialize(${2:args})\n\t\t\t${3}\n\t\tend\n\tend\nsnippet cla class .. < ParentClass .. initialize .. end\n\tclass ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} < ${2:ParentClass}\n\t\tdef initialize(${3:args})\n\t\t\t${4}\n\t\tend\n\tend\nsnippet cla ClassName = Struct .. do .. end\n\t${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} = Struct.new(:${2:attr_names}) do\n\t\tdef ${3:method_name}\n\t\t\t${4}\n\t\tend\n\tend\nsnippet cla class BlankSlate .. initialize .. end\n\tclass ${1:BlankSlate}\n\t\tinstance_methods.each { |meth| undef_method(meth) unless meth =~ /\\A__/ }\n\tend\nsnippet cla class << self .. end\n\tclass << ${1:self}\n\t\t${2}\n\tend\n# class .. < DelegateClass .. initialize .. end\nsnippet cla-\n\tclass ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`} < DelegateClass(${2:ParentClass})\n\t\tdef initialize(${3:args})\n\t\t\tsuper(${4:del_obj})\n\n\t\t\t${5}\n\t\tend\n\tend\nsnippet mod module .. end\n\tmodule ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\t\t${2}\n\tend\nsnippet mod module .. module_function .. end\n\tmodule ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\t\tmodule_function\n\n\t\t${2}\n\tend\nsnippet mod module .. ClassMethods .. end\n\tmodule ${1:`substitute(Filename(), '\\(_\\|^\\)\\(.\\)', '\\u\\2', 'g')`}\n\t\tmodule ClassMethods\n\t\t\t${2}\n\t\tend\n\n\t\tmodule InstanceMethods\n\n\t\tend\n\n\t\tdef self.included(receiver)\n\t\t\treceiver.extend ClassMethods\n\t\t\treceiver.send :include, InstanceMethods\n\t\tend\n\tend\n# attr_reader\nsnippet r\n\tattr_reader :${1:attr_names}\n# attr_writer\nsnippet w\n\tattr_writer :${1:attr_names}\n# attr_accessor\nsnippet rw\n\tattr_accessor :${1:attr_names}\nsnippet atp\n\tattr_protected :${1:attr_names}\nsnippet ata\n\tattr_accessible :${1:attr_names}\n# include Enumerable\nsnippet Enum\n\tinclude Enumerable\n\n\tdef each(&block)\n\t\t${1}\n\tend\n# include Comparable\nsnippet Comp\n\tinclude Comparable\n\n\tdef <=>(other)\n\t\t${1}\n\tend\n# extend Forwardable\nsnippet Forw-\n\textend Forwardable\n# def self\nsnippet defs\n\tdef self.${1:class_method_name}\n\t\t${2}\n\tend\n# def method_missing\nsnippet defmm\n\tdef method_missing(meth, *args, &blk)\n\t\t${1}\n\tend\nsnippet defd\n\tdef_delegator :${1:@del_obj}, :${2:del_meth}, :${3:new_name}\nsnippet defds\n\tdef_delegators :${1:@del_obj}, :${2:del_methods}\nsnippet am\n\talias_method :${1:new_name}, :${2:old_name}\nsnippet app\n\tif __FILE__ == $PROGRAM_NAME\n\t\t${1}\n\tend\n# usage_if()\nsnippet usai\n\tif ARGV.${1}\n\t\tabort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\n\tend\n# usage_unless()\nsnippet usau\n\tunless ARGV.${1}\n\t\tabort \"Usage: #{$PROGRAM_NAME} ${2:ARGS_GO_HERE}\"${3}\n\tend\nsnippet array\n\tArray.new(${1:10}) { |${2:i}| ${3} }\nsnippet hash\n\tHash.new { |${1:hash}, ${2:key}| $1[$2] = ${3} }\nsnippet file File.foreach() { |line| .. }\n\tFile.foreach(${1:\"path/to/file\"}) { |${2:line}| ${3} }\nsnippet file File.read()\n\tFile.read(${1:\"path/to/file\"})${2}\nsnippet Dir Dir.global() { |file| .. }\n\tDir.glob(${1:\"dir/glob/*\"}) { |${2:file}| ${3} }\nsnippet Dir Dir[\"..\"]\n\tDir[${1:\"glob/**/*.rb\"}]${2}\nsnippet dir\n\tFilename.dirname(__FILE__)\nsnippet deli\n\tdelete_if { |${1:e}| ${2} }\nsnippet fil\n\tfill(${1:range}) { |${2:i}| ${3} }\n# flatten_once()\nsnippet flao\n\tinject(Array.new) { |${1:arr}, ${2:a}| $1.push(*$2)}${3}\nsnippet zip\n\tzip(${1:enums}) { |${2:row}| ${3} }\n# downto(0) { |n| .. }\nsnippet dow\n\tdownto(${1:0}) { |${2:n}| ${3} }\nsnippet ste\n\tstep(${1:2}) { |${2:n}| ${3} }\nsnippet tim\n\ttimes { |${1:n}| ${2} }\nsnippet upt\n\tupto(${1:1.0/0.0}) { |${2:n}| ${3} }\nsnippet loo\n\tloop { ${1} }\nsnippet ea\n\teach { |${1:e}| ${2} }\nsnippet ead\n\teach do |${1:e}|\n\t\t${2}\n\tend\nsnippet eab\n\teach_byte { |${1:byte}| ${2} }\nsnippet eac- each_char { |chr| .. }\n\teach_char { |${1:chr}| ${2} }\nsnippet eac- each_cons(..) { |group| .. }\n\teach_cons(${1:2}) { |${2:group}| ${3} }\nsnippet eai\n\teach_index { |${1:i}| ${2} }\nsnippet eaid\n\teach_index do |${1:i}|\n\t\t${2}\n\tend\nsnippet eak\n\teach_key { |${1:key}| ${2} }\nsnippet eakd\n\teach_key do |${1:key}|\n\t\t${2}\n\tend\nsnippet eal\n\teach_line { |${1:line}| ${2} }\nsnippet eald\n\teach_line do |${1:line}|\n\t\t${2}\n\tend\nsnippet eap\n\teach_pair { |${1:name}, ${2:val}| ${3} }\nsnippet eapd\n\teach_pair do |${1:name}, ${2:val}|\n\t\t${3}\n\tend\nsnippet eas-\n\teach_slice(${1:2}) { |${2:group}| ${3} }\nsnippet easd-\n\teach_slice(${1:2}) do |${2:group}|\n\t\t${3}\n\tend\nsnippet eav\n\teach_value { |${1:val}| ${2} }\nsnippet eavd\n\teach_value do |${1:val}|\n\t\t${2}\n\tend\nsnippet eawi\n\teach_with_index { |${1:e}, ${2:i}| ${3} }\nsnippet eawid\n\teach_with_index do |${1:e},${2:i}|\n\t\t${3}\n\tend\nsnippet reve\n\treverse_each { |${1:e}| ${2} }\nsnippet reved\n\treverse_each do |${1:e}|\n\t\t${2}\n\tend\nsnippet inj\n\tinject(${1:init}) { |${2:mem}, ${3:var}| ${4} }\nsnippet injd\n\tinject(${1:init}) do |${2:mem}, ${3:var}|\n\t\t${4}\n\tend\nsnippet map\n\tmap { |${1:e}| ${2} }\nsnippet mapd\n\tmap do |${1:e}|\n\t\t${2}\n\tend\nsnippet mapwi-\n\tenum_with_index.map { |${1:e}, ${2:i}| ${3} }\nsnippet sor\n\tsort { |a, b| ${1} }\nsnippet sorb\n\tsort_by { |${1:e}| ${2} }\nsnippet ran\n\tsort_by { rand }\nsnippet all\n\tall? { |${1:e}| ${2} }\nsnippet any\n\tany? { |${1:e}| ${2} }\nsnippet cl\n\tclassify { |${1:e}| ${2} }\nsnippet col\n\tcollect { |${1:e}| ${2} }\nsnippet cold\n\tcollect do |${1:e}|\n\t\t${2}\n\tend\nsnippet det\n\tdetect { |${1:e}| ${2} }\nsnippet detd\n\tdetect do |${1:e}|\n\t\t${2}\n\tend\nsnippet fet\n\tfetch(${1:name}) { |${2:key}| ${3} }\nsnippet fin\n\tfind { |${1:e}| ${2} }\nsnippet find\n\tfind do |${1:e}|\n\t\t${2}\n\tend\nsnippet fina\n\tfind_all { |${1:e}| ${2} }\nsnippet finad\n\tfind_all do |${1:e}|\n\t\t${2}\n\tend\nsnippet gre\n\tgrep(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet sub\n\t${1:g}sub(${2:/pattern/}) { |${3:match}| ${4} }\nsnippet sca\n\tscan(${1:/pattern/}) { |${2:match}| ${3} }\nsnippet scad\n\tscan(${1:/pattern/}) do |${2:match}|\n\t\t${3}\n\tend\nsnippet max\n\tmax { |a, b| ${1} }\nsnippet min\n\tmin { |a, b| ${1} }\nsnippet par\n\tpartition { |${1:e}| ${2} }\nsnippet pard\n\tpartition do |${1:e}|\n\t\t${2}\n\tend\nsnippet rej\n\treject { |${1:e}| ${2} }\nsnippet rejd\n\treject do |${1:e}|\n\t\t${2}\n\tend\nsnippet sel\n\tselect { |${1:e}| ${2} }\nsnippet seld\n\tselect do |${1:e}|\n\t\t${2}\n\tend\nsnippet lam\n\tlambda { |${1:args}| ${2} }\nsnippet doo\n\tdo\n\t\t${1}\n\tend\nsnippet dov\n\tdo |${1:variable}|\n\t\t${2}\n\tend\nsnippet :\n\t:${1:key} => ${2:\"value\"}${3}\nsnippet ope\n\topen(${1:\"path/or/url/or/pipe\"}, \"${2:w}\") { |${3:io}| ${4} }\n# path_from_here()\nsnippet fpath\n\tFile.join(File.dirname(__FILE__), *%2[${1:rel path here}])${2}\n# unix_filter {}\nsnippet unif\n\tARGF.each_line${1} do |${2:line}|\n\t\t${3}\n\tend\n# option_parse {}\nsnippet optp\n\trequire \"optparse\"\n\n\toptions = {${1:default => \"args\"}}\n\n\tARGV.options do |opts|\n\t\topts.banner = \"Usage: #{File.basename($PROGRAM_NAME)}\nsnippet opt\n\topts.on( \"-${1:o}\", \"--${2:long-option-name}\", ${3:String},\n\t \"${4:Option description.}\") do |${5:opt}|\n\t\t${6}\n\tend\nsnippet tc\n\trequire \"test/unit\"\n\n\trequire \"${1:library_file_name}\"\n\n\tclass Test${2:$1} < Test::Unit::TestCase\n\t\tdef test_${3:case_name}\n\t\t\t${4}\n\t\tend\n\tend\nsnippet ts\n\trequire \"test/unit\"\n\n\trequire \"tc_${1:test_case_file}\"\n\trequire \"tc_${2:test_case_file}\"${3}\nsnippet as\n\tassert ${1:test}, \"${2:Failure message.}\"${3}\nsnippet ase\n\tassert_equal ${1:expected}, ${2:actual}${3}\nsnippet asne\n\tassert_not_equal ${1:unexpected}, ${2:actual}${3}\nsnippet asid\n\tassert_in_delta ${1:expected_float}, ${2:actual_float}, ${3:2 ** -20}${4}\nsnippet asio\n\tassert_instance_of ${1:ExpectedClass}, ${2:actual_instance}${3}\nsnippet asko\n\tassert_kind_of ${1:ExpectedKind}, ${2:actual_instance}${3}\nsnippet asn\n\tassert_nil ${1:instance}${2}\nsnippet asnn\n\tassert_not_nil ${1:instance}${2}\nsnippet asm\n\tassert_match /${1:expected_pattern}/, ${2:actual_string}${3}\nsnippet asnm\n\tassert_no_match /${1:unexpected_pattern}/, ${2:actual_string}${3}\nsnippet aso\n\tassert_operator ${1:left}, :${2:operator}, ${3:right}${4}\nsnippet asr\n\tassert_raise ${1:Exception} { ${2} }\nsnippet asrd\n\tassert_raise ${1:Exception} do\n\t\t${2}\n\tend\nsnippet asnr\n\tassert_nothing_raised ${1:Exception} { ${2} }\nsnippet asnrd\n\tassert_nothing_raised ${1:Exception} do\n\t\t${2}\n\tend\nsnippet asrt\n\tassert_respond_to ${1:object}, :${2:method}${3}\nsnippet ass assert_same(..)\n\tassert_same ${1:expected}, ${2:actual}${3}\nsnippet ass assert_send(..)\n\tassert_send [${1:object}, :${2:message}, ${3:args}]${4}\nsnippet asns\n\tassert_not_same ${1:unexpected}, ${2:actual}${3}\nsnippet ast\n\tassert_throws :${1:expected} { ${2} }\nsnippet astd\n\tassert_throws :${1:expected} do\n\t\t${2}\n\tend\nsnippet asnt\n\tassert_nothing_thrown { ${1} }\nsnippet asntd\n\tassert_nothing_thrown do\n\t\t${1}\n\tend\nsnippet fl\n\tflunk \"${1:Failure message.}\"${2}\n# Benchmark.bmbm do .. end\nsnippet bm-\n\tTESTS = ${1:10_000}\n\tBenchmark.bmbm do |results|\n\t\t${2}\n\tend\nsnippet rep\n\tresults.report(\"${1:name}:\") { TESTS.times { ${2} }}\n# Marshal.dump(.., file)\nsnippet Md\n\tFile.open(${1:\"path/to/file.dump\"}, \"wb\") { |${2:file}| Marshal.dump(${3:obj}, $2) }${4}\n# Mashal.load(obj)\nsnippet Ml\n\tFile.open(${1:\"path/to/file.dump\"}, \"rb\") { |${2:file}| Marshal.load($2) }${3}\n# deep_copy(..)\nsnippet deec\n\tMarshal.load(Marshal.dump(${1:obj_to_copy}))${2}\nsnippet Pn-\n\tPStore.new(${1:\"file_name.pstore\"})${2}\nsnippet tra\n\ttransaction(${1:true}) { ${2} }\n# xmlread(..)\nsnippet xml-\n\tREXML::Document.new(File.read(${1:\"path/to/file\"}))${2}\n# xpath(..) { .. }\nsnippet xpa\n\telements.each(${1:\"//Xpath\"}) do |${2:node}|\n\t\t${3}\n\tend\n# class_from_name()\nsnippet clafn\n\tsplit(\"::\").inject(Object) { |par, const| par.const_get(const) }\n# singleton_class()\nsnippet sinc\n\tclass << self; self end\nsnippet nam\n\tnamespace :${1:`Filename()`} do\n\t\t${2}\n\tend\nsnippet tas\n\tdesc \"${1:Task description}\"\n\ttask :${2:task_name => [:dependent, :tasks]} do\n\t\t${3}\n\tend\n# block\nsnippet b\n\t{ |${1:var}| ${2} }\nsnippet begin\n\tbegin\n\t\traise 'A test exception.'\n\trescue Exception => e\n\t\tputs e.message\n\t\tputs e.backtrace.inspect\n\telse\n\t\t# other exception\n\tensure\n\t\t# always executed\n\tend\n\n#debugging\nsnippet debug\n\trequire 'ruby-debug'; debugger; true;\nsnippet pry\n\trequire 'pry'; binding.pry\n\n#############################################\n# Rails snippets - for pure Ruby, see above #\n#############################################\nsnippet art\n\tassert_redirected_to ${1::action => \"${2:index}\"}\nsnippet artnp\n\tassert_redirected_to ${1:parent}_${2:child}_path(${3:@$1}, ${4:@$2})\nsnippet artnpp\n\tassert_redirected_to ${1:parent}_${2:child}_path(${3:@$1})\nsnippet artp\n\tassert_redirected_to ${1:model}_path(${2:@$1})\nsnippet artpp\n\tassert_redirected_to ${1:model}s_path\nsnippet asd\n\tassert_difference \"${1:Model}.${2:count}\", $1 do\n\t\t${3}\n\tend\nsnippet asnd\n\tassert_no_difference \"${1:Model}.${2:count}\" do\n\t\t${3}\n\tend\nsnippet asre\n\tassert_response :${1:success}, @response.body${2}\nsnippet asrj\n\tassert_rjs :${1:replace}, \"${2:dom id}\"\nsnippet ass assert_select(..)\n\tassert_select '${1:path}', :${2:text} => '${3:inner_html' ${4:do}\nsnippet bf\n\tbefore_filter :${1:method}\nsnippet bt\n\tbelongs_to :${1:association}\nsnippet crw\n\tcattr_accessor :${1:attr_names}\nsnippet defcreate\n\tdef create\n\t\t@${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])\n\n\t\trespond_to do |wants|\n\t\t\tif @$1.save\n\t\t\t\tflash[:notice] = '$2 was successfully created.'\n\t\t\t\twants.html { redirect_to(@$1) }\n\t\t\t\twants.xml { render :xml => @$1, :status => :created, :location => @$1 }\n\t\t\telse\n\t\t\t\twants.html { render :action => \"new\" }\n\t\t\t\twants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n\t\t\tend\n\t\tend\n\tend${3}\nsnippet defdestroy\n\tdef destroy\n\t\t@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\t\t@$1.destroy\n\n\t\trespond_to do |wants|\n\t\t\twants.html { redirect_to($1s_url) }\n\t\t\twants.xml { head :ok }\n\t\tend\n\tend${3}\nsnippet defedit\n\tdef edit\n\t\t@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\tend\nsnippet defindex\n\tdef index\n\t\t@${1:model_class_name} = ${2:ModelClassName}.all\n\n\t\trespond_to do |wants|\n\t\t\twants.html # index.html.erb\n\t\t\twants.xml { render :xml => @$1s }\n\t\tend\n\tend${3}\nsnippet defnew\n\tdef new\n\t\t@${1:model_class_name} = ${2:ModelClassName}.new\n\n\t\trespond_to do |wants|\n\t\t\twants.html # new.html.erb\n\t\t\twants.xml { render :xml => @$1 }\n\t\tend\n\tend${3}\nsnippet defshow\n\tdef show\n\t\t@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n\t\trespond_to do |wants|\n\t\t\twants.html # show.html.erb\n\t\t\twants.xml { render :xml => @$1 }\n\t\tend\n\tend${3}\nsnippet defupdate\n\tdef update\n\t\t@${1:model_class_name} = ${2:ModelClassName}.find(params[:id])\n\n\t\trespond_to do |wants|\n\t\t\tif @$1.update_attributes(params[:$1])\n\t\t\t\tflash[:notice] = '$2 was successfully updated.'\n\t\t\t\twants.html { redirect_to(@$1) }\n\t\t\t\twants.xml { head :ok }\n\t\t\telse\n\t\t\t\twants.html { render :action => \"edit\" }\n\t\t\t\twants.xml { render :xml => @$1.errors, :status => :unprocessable_entity }\n\t\t\tend\n\t\tend\n\tend${3}\nsnippet flash\n\tflash[:${1:notice}] = \"${2}\"\nsnippet habtm\n\thas_and_belongs_to_many :${1:object}, :join_table => \"${2:table_name}\", :foreign_key => \"${3}_id\"${4}\nsnippet hm\n\thas_many :${1:object}\nsnippet hmd\n\thas_many :${1:other}s, :class_name => \"${2:$1}\", :foreign_key => \"${3:$1}_id\", :dependent => :destroy${4}\nsnippet hmt\n\thas_many :${1:object}, :through => :${2:object}\nsnippet ho\n\thas_one :${1:object}\nsnippet i18\n\tI18n.t('${1:type.key}')${2}\nsnippet ist\n\t<%= image_submit_tag(\"${1:agree.png}\", :id => \"${2:id}\"${3} %>\nsnippet log\n\tRails.logger.${1:debug} ${2}\nsnippet log2\n\tRAILS_DEFAULT_LOGGER.${1:debug} ${2}\nsnippet logd\n\tlogger.debug { \"${1:message}\" }${2}\nsnippet loge\n\tlogger.error { \"${1:message}\" }${2}\nsnippet logf\n\tlogger.fatal { \"${1:message}\" }${2}\nsnippet logi\n\tlogger.info { \"${1:message}\" }${2}\nsnippet logw\n\tlogger.warn { \"${1:message}\" }${2}\nsnippet mapc\n\t${1:map}.${2:connect} '${3:controller/:action/:id}'\nsnippet mapca\n\t${1:map}.catch_all \"*${2:anything}\", :controller => \"${3:default}\", :action => \"${4:error}\"${5}\nsnippet mapr\n\t${1:map}.resource :${2:resource}\nsnippet maprs\n\t${1:map}.resources :${2:resource}\nsnippet mapwo\n\t${1:map}.with_options :${2:controller} => '${3:thing}' do |$3|\n\t\t${4}\n\tend\nsnippet mbs\n\tbefore_save :${1:method}\nsnippet mcht\n\tchange_table :${1:table_name} do |t|\n\t\t${2}\n\tend\nsnippet mp\n\tmap(&:${1:id})\nsnippet mrw\n\tmattr_accessor :${1:attr_names}\nsnippet oa\n\torder(\"${1:field}\")\nsnippet od\n\torder(\"${1:field} DESC\")\nsnippet pa\n\tparams[:${1:id}]${2}\nsnippet ra\n\trender :action => \"${1:action}\"\nsnippet ral\n\trender :action => \"${1:action}\", :layout => \"${2:layoutname}\"\nsnippet rest\n\trespond_to do |wants|\n\t\twants.${1:html} { ${2} }\n\tend\nsnippet rf\n\trender :file => \"${1:filepath}\"\nsnippet rfu\n\trender :file => \"${1:filepath}\", :use_full_path => ${2:false}\nsnippet ri\n\trender :inline => \"${1:<%= 'hello' %>}\"\nsnippet ril\n\trender :inline => \"${1:<%= 'hello' %>}\", :locals => { ${2::name} => \"${3:value}\"${4} }\nsnippet rit\n\trender :inline => \"${1:<%= 'hello' %>}\", :type => ${2::rxml}\nsnippet rjson\n\trender :json => ${1:text to render}\nsnippet rl\n\trender :layout => \"${1:layoutname}\"\nsnippet rn\n\trender :nothing => ${1:true}\nsnippet rns\n\trender :nothing => ${1:true}, :status => ${2:401}\nsnippet rp\n\trender :partial => \"${1:item}\"\nsnippet rpc\n\trender :partial => \"${1:item}\", :collection => ${2:@$1s}\nsnippet rpl\n\trender :partial => \"${1:item}\", :locals => { :${2:$1} => ${3:@$1}\nsnippet rpo\n\trender :partial => \"${1:item}\", :object => ${2:@$1}\nsnippet rps\n\trender :partial => \"${1:item}\", :status => ${2:500}\nsnippet rt\n\trender :text => \"${1:text to render}\"\nsnippet rtl\n\trender :text => \"${1:text to render}\", :layout => \"${2:layoutname}\"\nsnippet rtlt\n\trender :text => \"${1:text to render}\", :layout => ${2:true}\nsnippet rts\n\trender :text => \"${1:text to render}\", :status => ${2:401}\nsnippet ru\n\trender :update do |${1:page}|\n\t\t$1.${2}\n\tend\nsnippet rxml\n\trender :xml => ${1:text to render}\nsnippet sc\n\tscope :${1:name}, :where(:@${2:field} => ${3:value})\nsnippet sl\n\tscope :${1:name}, lambda do |${2:value}|\n\t\twhere(\"${3:field = ?}\", ${4:bind var})\n\tend\nsnippet sha1\n\tDigest::SHA1.hexdigest(${1:string})\nsnippet sweeper\n\tclass ${1:ModelClassName}Sweeper < ActionController::Caching::Sweeper\n\t\tobserve $1\n\n\t\tdef after_save(${2:model_class_name})\n\t\t\texpire_cache($2)\n\t\tend\n\n\t\tdef after_destroy($2)\n\t\t\texpire_cache($2)\n\t\tend\n\n\t\tdef expire_cache($2)\n\t\t\texpire_page\n\t\tend\n\tend\nsnippet tcb\n\tt.boolean :${1:title}\n\t${2}\nsnippet tcbi\n\tt.binary :${1:title}, :limit => ${2:2}.megabytes\n\t${3}\nsnippet tcd\n\tt.decimal :${1:title}, :precision => ${2:10}, :scale => ${3:2}\n\t${4}\nsnippet tcda\n\tt.date :${1:title}\n\t${2}\nsnippet tcdt\n\tt.datetime :${1:title}\n\t${2}\nsnippet tcf\n\tt.float :${1:title}\n\t${2}\nsnippet tch\n\tt.change :${1:name}, :${2:string}, :${3:limit} => ${4:80}\n\t${5}\nsnippet tci\n\tt.integer :${1:title}\n\t${2}\nsnippet tcl\n\tt.integer :lock_version, :null => false, :default => 0\n\t${1}\nsnippet tcr\n\tt.references :${1:taggable}, :polymorphic => { :default => '${2:Photo}' }\n\t${3}\nsnippet tcs\n\tt.string :${1:title}\n\t${2}\nsnippet tct\n\tt.text :${1:title}\n\t${2}\nsnippet tcti\n\tt.time :${1:title}\n\t${2}\nsnippet tcts\n\tt.timestamp :${1:title}\n\t${2}\nsnippet tctss\n\tt.timestamps\n\t${1}\nsnippet va\n\tvalidates_associated :${1:attribute}\nsnippet vao\n\tvalidates_acceptance_of :${1:terms}\nsnippet vc\n\tvalidates_confirmation_of :${1:attribute}\nsnippet ve\n\tvalidates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}\nsnippet vf\n\tvalidates_format_of :${1:attribute}, :with => /${2:regex}/\nsnippet vi\n\tvalidates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })\nsnippet vl\n\tvalidates_length_of :${1:attribute}, :within => ${2:3}..${3:20}\nsnippet vn\n\tvalidates_numericality_of :${1:attribute}\nsnippet vpo\n\tvalidates_presence_of :${1:attribute}\nsnippet vu\n\tvalidates_uniqueness_of :${1:attribute}\nsnippet wants\n\twants.${1:js|xml|html} { ${2} }\nsnippet wc\n\twhere(${1:\"conditions\"}${2:, bind_var})\nsnippet wh\n\twhere(${1:field} => ${2:value})\nsnippet xdelete\n\txhr :delete, :${1:destroy}, :id => ${2:1}${3}\nsnippet xget\n\txhr :get, :${1:show}, :id => ${2:1}${3}\nsnippet xpost\n\txhr :post, :${1:create}, :${2:object} => { ${3} }\nsnippet xput\n\txhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}\nsnippet test\n\ttest \"should ${1:do something}\" do\n\t\t${2}\n\tend\n#migrations\nsnippet mac\n\tadd_column :${1:table_name}, :${2:column_name}, :${3:data_type}\nsnippet mrc\n\tremove_column :${1:table_name}, :${2:column_name}\nsnippet mrnc\n\trename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}\nsnippet mcc\n\tchange_column :${1:table}, :${2:column}, :${3:type}\nsnippet mccc\n\tt.column :${1:title}, :${2:string}\nsnippet mct\n\tcreate_table :${1:table_name} do |t|\n\t\tt.column :${2:name}, :${3:type}\n\tend\nsnippet migration\n\tclass ${1:class_name} < ActiveRecord::Migration\n\t\tdef self.up\n\t\t\t${2}\n\t\tend\n\n\t\tdef self.down\n\t\tend\n\tend\n\nsnippet trc\n\tt.remove :${1:column}\nsnippet tre\n\tt.rename :${1:old_column_name}, :${2:new_column_name}\n\t${3}\nsnippet tref\n\tt.references :${1:model}\n\n#rspec\nsnippet it\n\tit \"${1:spec_name}\" do\n\t\t${2}\n\tend\nsnippet itp\n\tit \"${1:spec_name}\"\n\t${2}\nsnippet desc\n\tdescribe ${1:class_name} do\n\t\t${2}\n\tend\nsnippet cont\n\tcontext \"${1:message}\" do\n\t\t${2}\n\tend\nsnippet bef\n\tbefore :${1:each} do\n\t\t${2}\n\tend\nsnippet aft\n\tafter :${1:each} do\n\t\t${2}\n\tend\n"; }); + +define("ace/snippets/ruby",["require","exports","module","ace/snippets/ruby.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./ruby.snippets"); +exports.scope = "ruby"; + +}); (function() { + window.require(["ace/snippets/ruby"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/rust.js b/vendor/assets/javascripts/ace/snippets/rust.js index 4d14a2d3..63d42815 100644 --- a/vendor/assets/javascripts/ace/snippets/rust.js +++ b/vendor/assets/javascripts/ace/snippets/rust.js @@ -1,7 +1,9 @@ -define("ace/snippets/rust",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "rust"; - -}); +; (function() { + window.require(["ace/snippets/rust"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/sac.js b/vendor/assets/javascripts/ace/snippets/sac.js new file mode 100644 index 00000000..2b0773e8 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/sac.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/sac"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/sass.js b/vendor/assets/javascripts/ace/snippets/sass.js index 336c9b93..0a4de9b4 100644 --- a/vendor/assets/javascripts/ace/snippets/sass.js +++ b/vendor/assets/javascripts/ace/snippets/sass.js @@ -1,7 +1,9 @@ -define("ace/snippets/sass",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "sass"; - -}); +; (function() { + window.require(["ace/snippets/sass"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/scad.js b/vendor/assets/javascripts/ace/snippets/scad.js index 40449e8c..2fb08264 100644 --- a/vendor/assets/javascripts/ace/snippets/scad.js +++ b/vendor/assets/javascripts/ace/snippets/scad.js @@ -1,7 +1,9 @@ -define("ace/snippets/scad",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "scad"; - -}); +; (function() { + window.require(["ace/snippets/scad"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/scala.js b/vendor/assets/javascripts/ace/snippets/scala.js index 99c40576..adc0abbd 100644 --- a/vendor/assets/javascripts/ace/snippets/scala.js +++ b/vendor/assets/javascripts/ace/snippets/scala.js @@ -1,7 +1,9 @@ -define("ace/snippets/scala",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "scala"; - -}); +; (function() { + window.require(["ace/snippets/scala"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/scheme.js b/vendor/assets/javascripts/ace/snippets/scheme.js index 6d3dab8f..29c3d357 100644 --- a/vendor/assets/javascripts/ace/snippets/scheme.js +++ b/vendor/assets/javascripts/ace/snippets/scheme.js @@ -1,7 +1,9 @@ -define("ace/snippets/scheme",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "scheme"; - -}); +; (function() { + window.require(["ace/snippets/scheme"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/scrypt.js b/vendor/assets/javascripts/ace/snippets/scrypt.js new file mode 100644 index 00000000..2d0601a1 --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/scrypt.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/scrypt"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/scss.js b/vendor/assets/javascripts/ace/snippets/scss.js index 3dc9a063..6e808dea 100644 --- a/vendor/assets/javascripts/ace/snippets/scss.js +++ b/vendor/assets/javascripts/ace/snippets/scss.js @@ -1,7 +1,9 @@ -define("ace/snippets/scss",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "scss"; - -}); +; (function() { + window.require(["ace/snippets/scss"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/sh.js b/vendor/assets/javascripts/ace/snippets/sh.js index 436c1966..16fccf9c 100644 --- a/vendor/assets/javascripts/ace/snippets/sh.js +++ b/vendor/assets/javascripts/ace/snippets/sh.js @@ -1,90 +1,16 @@ -define("ace/snippets/sh",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Shebang. Executing bash via /usr/bin/env makes scripts more portable.\n\ -snippet #!\n\ - #!/usr/bin/env bash\n\ - \n\ -snippet if\n\ - if [[ ${1:condition} ]]; then\n\ - ${2:#statements}\n\ - fi\n\ -snippet elif\n\ - elif [[ ${1:condition} ]]; then\n\ - ${2:#statements}\n\ -snippet for\n\ - for (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n\ - ${3:#statements}\n\ - done\n\ -snippet fori\n\ - for ${1:needle} in ${2:haystack} ; do\n\ - ${3:#statements}\n\ - done\n\ -snippet wh\n\ - while [[ ${1:condition} ]]; do\n\ - ${2:#statements}\n\ - done\n\ -snippet until\n\ - until [[ ${1:condition} ]]; do\n\ - ${2:#statements}\n\ - done\n\ -snippet case\n\ - case ${1:word} in\n\ - ${2:pattern})\n\ - ${3};;\n\ - esac\n\ -snippet go \n\ - while getopts '${1:o}' ${2:opts} \n\ - do \n\ - case $$2 in\n\ - ${3:o0})\n\ - ${4:#staments};;\n\ - esac\n\ - done\n\ -# Set SCRIPT_DIR variable to directory script is located.\n\ -snippet sdir\n\ - SCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n\ -# getopt\n\ -snippet getopt\n\ - __ScriptVersion=\"${1:version}\"\n\ -\n\ - #=== FUNCTION ================================================================\n\ - # NAME: usage\n\ - # DESCRIPTION: Display usage information.\n\ - #===============================================================================\n\ - function usage ()\n\ - {\n\ - cat <<- EOT\n\ -\n\ - Usage : $${0:0} [options] [--] \n\ -\n\ - Options: \n\ - -h|help Display this message\n\ - -v|version Display script version\n\ -\n\ - EOT\n\ - } # ---------- end of function usage ----------\n\ -\n\ - #-----------------------------------------------------------------------\n\ - # Handle command line arguments\n\ - #-----------------------------------------------------------------------\n\ -\n\ - while getopts \":hv\" opt\n\ - do\n\ - case $opt in\n\ -\n\ - h|help ) usage; exit 0 ;;\n\ -\n\ - v|version ) echo \"$${0:0} -- Version $__ScriptVersion\"; exit 0 ;;\n\ -\n\ - \\? ) echo -e \"\\n Option does not exist : $OPTARG\\n\"\n\ - usage; exit 1 ;;\n\ -\n\ - esac # --- end of case ---\n\ - done\n\ - shift $(($OPTIND-1))\n\ -\n\ -"; -exports.scope = "sh"; +define("ace/snippets/sh.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Shebang. Executing bash via /usr/bin/env makes scripts more portable.\nsnippet #!\n\t#!/usr/bin/env bash\n\t\nsnippet if\n\tif [[ ${1:condition} ]]; then\n\t\t${2:#statements}\n\tfi\nsnippet elif\n\telif [[ ${1:condition} ]]; then\n\t\t${2:#statements}\nsnippet for\n\tfor (( ${2:i} = 0; $2 < ${1:count}; $2++ )); do\n\t\t${3:#statements}\n\tdone\nsnippet fori\n\tfor ${1:needle} in ${2:haystack} ; do\n\t\t${3:#statements}\n\tdone\nsnippet wh\n\twhile [[ ${1:condition} ]]; do\n\t\t${2:#statements}\n\tdone\nsnippet until\n\tuntil [[ ${1:condition} ]]; do\n\t\t${2:#statements}\n\tdone\nsnippet case\n\tcase ${1:word} in\n\t\t${2:pattern})\n\t\t\t${3};;\n\tesac\nsnippet go \n\twhile getopts '${1:o}' ${2:opts} \n\tdo \n\t\tcase $$2 in\n\t\t${3:o0})\n\t\t\t${4:#staments};;\n\t\tesac\n\tdone\n# Set SCRIPT_DIR variable to directory script is located.\nsnippet sdir\n\tSCRIPT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n# getopt\nsnippet getopt\n\t__ScriptVersion=\"${1:version}\"\n\n\t#=== FUNCTION ================================================================\n\t# NAME: usage\n\t# DESCRIPTION: Display usage information.\n\t#===============================================================================\n\tfunction usage ()\n\t{\n\t\t\tcat <<- EOT\n\n\t Usage : $${0:0} [options] [--] \n\n\t Options: \n\t -h|help Display this message\n\t -v|version Display script version\n\n\tEOT\n\t} # ---------- end of function usage ----------\n\n\t#-----------------------------------------------------------------------\n\t# Handle command line arguments\n\t#-----------------------------------------------------------------------\n\n\twhile getopts \":hv\" opt\n\tdo\n\t case $opt in\n\n\t\th|help ) usage; exit 0 ;;\n\n\t\tv|version ) echo \"$${0:0} -- Version $__ScriptVersion\"; exit 0 ;;\n\n\t\t\\? ) echo -e \"\\n Option does not exist : $OPTARG\\n\"\n\t\t\t usage; exit 1 ;;\n\n\t esac # --- end of case ---\n\tdone\n\tshift $(($OPTIND-1))\n\n"; }); + +define("ace/snippets/sh",["require","exports","module","ace/snippets/sh.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./sh.snippets"); +exports.scope = "sh"; + +}); (function() { + window.require(["ace/snippets/sh"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/sjs.js b/vendor/assets/javascripts/ace/snippets/sjs.js index e81ff84d..bc8c1872 100644 --- a/vendor/assets/javascripts/ace/snippets/sjs.js +++ b/vendor/assets/javascripts/ace/snippets/sjs.js @@ -1,7 +1,9 @@ -define("ace/snippets/sjs",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "sjs"; - -}); +; (function() { + window.require(["ace/snippets/sjs"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/slim.js b/vendor/assets/javascripts/ace/snippets/slim.js new file mode 100644 index 00000000..2fcd039a --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/slim.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/slim"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/smarty.js b/vendor/assets/javascripts/ace/snippets/smarty.js index 9f43a82b..3affd2ea 100644 --- a/vendor/assets/javascripts/ace/snippets/smarty.js +++ b/vendor/assets/javascripts/ace/snippets/smarty.js @@ -1,7 +1,9 @@ -define("ace/snippets/smarty",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "smarty"; - -}); +; (function() { + window.require(["ace/snippets/smarty"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/smithy.js b/vendor/assets/javascripts/ace/snippets/smithy.js new file mode 100644 index 00000000..4077f9ee --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/smithy.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/smithy"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/snippets.js b/vendor/assets/javascripts/ace/snippets/snippets.js index 2d5917e8..539aea6a 100644 --- a/vendor/assets/javascripts/ace/snippets/snippets.js +++ b/vendor/assets/javascripts/ace/snippets/snippets.js @@ -1,16 +1,16 @@ -define("ace/snippets/snippets",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# snippets for making snippets :)\n\ -snippet snip\n\ - snippet ${1:trigger}\n\ - ${2}\n\ -snippet msnip\n\ - snippet ${1:trigger} ${2:description}\n\ - ${3}\n\ -snippet v\n\ - {VISUAL}\n\ -"; -exports.scope = "snippets"; +define("ace/snippets/snippets.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# snippets for making snippets :)\nsnippet snip\n\tsnippet ${1:trigger}\n\t\t${2}\nsnippet msnip\n\tsnippet ${1:trigger} ${2:description}\n\t\t${3}\nsnippet v\n\t{VISUAL}\n"; }); + +define("ace/snippets/snippets",["require","exports","module","ace/snippets/snippets.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./snippets.snippets"); +exports.scope = "snippets"; + +}); (function() { + window.require(["ace/snippets/snippets"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/soy_template.js b/vendor/assets/javascripts/ace/snippets/soy_template.js index 487f2408..c7409658 100644 --- a/vendor/assets/javascripts/ace/snippets/soy_template.js +++ b/vendor/assets/javascripts/ace/snippets/soy_template.js @@ -1,7 +1,9 @@ -define("ace/snippets/soy_template",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "soy_template"; - -}); +; (function() { + window.require(["ace/snippets/soy_template"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/space.js b/vendor/assets/javascripts/ace/snippets/space.js index c97ec607..8f485977 100644 --- a/vendor/assets/javascripts/ace/snippets/space.js +++ b/vendor/assets/javascripts/ace/snippets/space.js @@ -1,7 +1,9 @@ -define("ace/snippets/space",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "space"; - -}); +; (function() { + window.require(["ace/snippets/space"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/sparql.js b/vendor/assets/javascripts/ace/snippets/sparql.js index 622fbdc5..fe60397e 100644 --- a/vendor/assets/javascripts/ace/snippets/sparql.js +++ b/vendor/assets/javascripts/ace/snippets/sparql.js @@ -1,7 +1,9 @@ -define("ace/snippets/sparql",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = ""; - -}); +; (function() { + window.require(["ace/snippets/sparql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/sql.js b/vendor/assets/javascripts/ace/snippets/sql.js index 7440ce44..4bf76325 100644 --- a/vendor/assets/javascripts/ace/snippets/sql.js +++ b/vendor/assets/javascripts/ace/snippets/sql.js @@ -1,33 +1,16 @@ -define("ace/snippets/sql",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet tbl\n\ - create table ${1:table} (\n\ - ${2:columns}\n\ - );\n\ -snippet col\n\ - ${1:name} ${2:type} ${3:default ''} ${4:not null}\n\ -snippet ccol\n\ - ${1:name} varchar2(${2:size}) ${3:default ''} ${4:not null}\n\ -snippet ncol\n\ - ${1:name} number ${3:default 0} ${4:not null}\n\ -snippet dcol\n\ - ${1:name} date ${3:default sysdate} ${4:not null}\n\ -snippet ind\n\ - create index ${3:$1_$2} on ${1:table}(${2:column});\n\ -snippet uind\n\ - create unique index ${1:name} on ${2:table}(${3:column});\n\ -snippet tblcom\n\ - comment on table ${1:table} is '${2:comment}';\n\ -snippet colcom\n\ - comment on column ${1:table}.${2:column} is '${3:comment}';\n\ -snippet addcol\n\ - alter table ${1:table} add (${2:column} ${3:type});\n\ -snippet seq\n\ - create sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\n\ -snippet s*\n\ - select * from ${1:table}\n\ -"; -exports.scope = "sql"; +define("ace/snippets/sql.snippets",["require","exports","module"], function(require, exports, module){module.exports = "snippet tbl\n\tcreate table ${1:table} (\n\t\t${2:columns}\n\t);\nsnippet col\n\t${1:name}\t${2:type}\t${3:default ''}\t${4:not null}\nsnippet ccol\n\t${1:name}\tvarchar2(${2:size})\t${3:default ''}\t${4:not null}\nsnippet ncol\n\t${1:name}\tnumber\t${3:default 0}\t${4:not null}\nsnippet dcol\n\t${1:name}\tdate\t${3:default sysdate}\t${4:not null}\nsnippet ind\n\tcreate index ${3:$1_$2} on ${1:table}(${2:column});\nsnippet uind\n\tcreate unique index ${1:name} on ${2:table}(${3:column});\nsnippet tblcom\n\tcomment on table ${1:table} is '${2:comment}';\nsnippet colcom\n\tcomment on column ${1:table}.${2:column} is '${3:comment}';\nsnippet addcol\n\talter table ${1:table} add (${2:column} ${3:type});\nsnippet seq\n\tcreate sequence ${1:name} start with ${2:1} increment by ${3:1} minvalue ${4:1};\nsnippet s*\n\tselect * from ${1:table}\n"; }); + +define("ace/snippets/sql",["require","exports","module","ace/snippets/sql.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./sql.snippets"); +exports.scope = "sql"; + +}); (function() { + window.require(["ace/snippets/sql"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/sqlserver.js b/vendor/assets/javascripts/ace/snippets/sqlserver.js index 133c6630..46205658 100644 --- a/vendor/assets/javascripts/ace/snippets/sqlserver.js +++ b/vendor/assets/javascripts/ace/snippets/sqlserver.js @@ -1,76 +1,16 @@ -define("ace/snippets/sqlserver",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# ISNULL\n\ -snippet isnull\n\ - ISNULL(${1:check_expression}, ${2:replacement_value})\n\ -# FORMAT\n\ -snippet format\n\ - FORMAT(${1:value}, ${2:format})\n\ -# CAST\n\ -snippet cast\n\ - CAST(${1:expression} AS ${2:data_type})\n\ -# CONVERT\n\ -snippet convert\n\ - CONVERT(${1:data_type}, ${2:expression})\n\ -# DATEPART\n\ -snippet datepart\n\ - DATEPART(${1:datepart}, ${2:date})\n\ -# DATEDIFF\n\ -snippet datediff\n\ - DATEDIFF(${1:datepart}, ${2:startdate}, ${3:enddate})\n\ -# DATEADD\n\ -snippet dateadd\n\ - DATEADD(${1:datepart}, ${2:number}, ${3:date})\n\ -# DATEFROMPARTS \n\ -snippet datefromparts\n\ - DATEFROMPARTS(${1:year}, ${2:month}, ${3:day})\n\ -# OBJECT_DEFINITION\n\ -snippet objectdef\n\ - SELECT OBJECT_DEFINITION(OBJECT_ID('${1:sys.server_permissions /*object name*/}'))\n\ -# STUFF XML\n\ -snippet stuffxml\n\ - STUFF((SELECT ', ' + ${1:ColumnName}\n\ - FROM ${2:TableName}\n\ - WHERE ${3:WhereClause}\n\ - FOR XML PATH('')), 1, 1, '') AS ${4:Alias}\n\ - ${5:/*https://msdn.microsoft.com/en-us/library/ms188043.aspx*/}\n\ -# Create Procedure\n\ -snippet createproc\n\ - -- =============================================\n\ - -- Author: ${1:Author}\n\ - -- Create date: ${2:Date}\n\ - -- Description: ${3:Description}\n\ - -- =============================================\n\ - CREATE PROCEDURE ${4:Procedure_Name}\n\ - ${5:/*Add the parameters for the stored procedure here*/}\n\ - AS\n\ - BEGIN\n\ - -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.\n\ - SET NOCOUNT ON;\n\ - \n\ - ${6:/*Add the T-SQL statements to compute the return value here*/}\n\ - \n\ - END\n\ - GO\n\ -# Create Scalar Function\n\ -snippet createfn\n\ - -- =============================================\n\ - -- Author: ${1:Author}\n\ - -- Create date: ${2:Date}\n\ - -- Description: ${3:Description}\n\ - -- =============================================\n\ - CREATE FUNCTION ${4:Scalar_Function_Name}\n\ - -- Add the parameters for the function here\n\ - RETURNS ${5:Function_Data_Type}\n\ - AS\n\ - BEGIN\n\ - DECLARE @Result ${5:Function_Data_Type}\n\ - \n\ - ${6:/*Add the T-SQL statements to compute the return value here*/}\n\ - \n\ - END\n\ - GO"; -exports.scope = "sqlserver"; +define("ace/snippets/sqlserver.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# ISNULL\nsnippet isnull\n\tISNULL(${1:check_expression}, ${2:replacement_value})\n# FORMAT\nsnippet format\n\tFORMAT(${1:value}, ${2:format})\n# CAST\nsnippet cast\n\tCAST(${1:expression} AS ${2:data_type})\n# CONVERT\nsnippet convert\n\tCONVERT(${1:data_type}, ${2:expression})\n# DATEPART\nsnippet datepart\n\tDATEPART(${1:datepart}, ${2:date})\n# DATEDIFF\nsnippet datediff\n\tDATEDIFF(${1:datepart}, ${2:startdate}, ${3:enddate})\n# DATEADD\nsnippet dateadd\n\tDATEADD(${1:datepart}, ${2:number}, ${3:date})\n# DATEFROMPARTS \nsnippet datefromparts\n\tDATEFROMPARTS(${1:year}, ${2:month}, ${3:day})\n# OBJECT_DEFINITION\nsnippet objectdef\n\tSELECT OBJECT_DEFINITION(OBJECT_ID('${1:sys.server_permissions /*object name*/}'))\n# STUFF XML\nsnippet stuffxml\n\tSTUFF((SELECT ', ' + ${1:ColumnName}\n\t\tFROM ${2:TableName}\n\t\tWHERE ${3:WhereClause}\n\t\tFOR XML PATH('')), 1, 1, '') AS ${4:Alias}\n\t${5:/*https://msdn.microsoft.com/en-us/library/ms188043.aspx*/}\n# Create Procedure\nsnippet createproc\n\t-- =============================================\n\t-- Author:\t\t${1:Author}\n\t-- Create date: ${2:Date}\n\t-- Description:\t${3:Description}\n\t-- =============================================\n\tCREATE PROCEDURE ${4:Procedure_Name}\n\t\t${5:/*Add the parameters for the stored procedure here*/}\n\tAS\n\tBEGIN\n\t\t-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.\n\t\tSET NOCOUNT ON;\n\t\t\n\t\t${6:/*Add the T-SQL statements to compute the return value here*/}\n\t\t\n\tEND\n\tGO\n# Create Scalar Function\nsnippet createfn\n\t-- =============================================\n\t-- Author:\t\t${1:Author}\n\t-- Create date: ${2:Date}\n\t-- Description:\t${3:Description}\n\t-- =============================================\n\tCREATE FUNCTION ${4:Scalar_Function_Name}\n\t\t-- Add the parameters for the function here\n\tRETURNS ${5:Function_Data_Type}\n\tAS\n\tBEGIN\n\t\tDECLARE @Result ${5:Function_Data_Type}\n\t\t\n\t\t${6:/*Add the T-SQL statements to compute the return value here*/}\n\t\t\n\tEND\n\tGO"; }); + +define("ace/snippets/sqlserver",["require","exports","module","ace/snippets/sqlserver.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./sqlserver.snippets"); +exports.scope = "sqlserver"; + +}); (function() { + window.require(["ace/snippets/sqlserver"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/stylus.js b/vendor/assets/javascripts/ace/snippets/stylus.js index 1a67e556..34f1d714 100644 --- a/vendor/assets/javascripts/ace/snippets/stylus.js +++ b/vendor/assets/javascripts/ace/snippets/stylus.js @@ -1,7 +1,9 @@ -define("ace/snippets/stylus",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "stylus"; - -}); +; (function() { + window.require(["ace/snippets/stylus"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/svg.js b/vendor/assets/javascripts/ace/snippets/svg.js index a1636910..1aa4a850 100644 --- a/vendor/assets/javascripts/ace/snippets/svg.js +++ b/vendor/assets/javascripts/ace/snippets/svg.js @@ -1,7 +1,9 @@ -define("ace/snippets/svg",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "svg"; - -}); +; (function() { + window.require(["ace/snippets/svg"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/swift.js b/vendor/assets/javascripts/ace/snippets/swift.js index d7aa6b8d..143e32b7 100644 --- a/vendor/assets/javascripts/ace/snippets/swift.js +++ b/vendor/assets/javascripts/ace/snippets/swift.js @@ -1,7 +1,9 @@ -define("ace/snippets/swift",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "swift"; - -}); +; (function() { + window.require(["ace/snippets/swift"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/swig.js b/vendor/assets/javascripts/ace/snippets/swig.js deleted file mode 100644 index 825e6b26..00000000 --- a/vendor/assets/javascripts/ace/snippets/swig.js +++ /dev/null @@ -1,7 +0,0 @@ -define("ace/snippets/swig",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText =undefined; -exports.scope = "swig"; - -}); diff --git a/vendor/assets/javascripts/ace/snippets/tcl.js b/vendor/assets/javascripts/ace/snippets/tcl.js index 9a266ad1..b16fa9cb 100644 --- a/vendor/assets/javascripts/ace/snippets/tcl.js +++ b/vendor/assets/javascripts/ace/snippets/tcl.js @@ -1,99 +1,16 @@ -define("ace/snippets/tcl",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# #!/usr/bin/env tclsh\n\ -snippet #!\n\ - #!/usr/bin/env tclsh\n\ - \n\ -# Process\n\ -snippet pro\n\ - proc ${1:function_name} {${2:args}} {\n\ - ${3:#body ...}\n\ - }\n\ -#xif\n\ -snippet xif\n\ - ${1:expr}? ${2:true} : ${3:false}\n\ -# Conditional\n\ -snippet if\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - }\n\ -# Conditional if..else\n\ -snippet ife\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - } else {\n\ - ${3:# else...}\n\ - }\n\ -# Conditional if..elsif..else\n\ -snippet ifee\n\ - if {${1}} {\n\ - ${2:# body...}\n\ - } elseif {${3}} {\n\ - ${4:# elsif...}\n\ - } else {\n\ - ${5:# else...}\n\ - }\n\ -# If catch then\n\ -snippet ifc\n\ - if { [catch {${1:#do something...}} ${2:err}] } {\n\ - ${3:# handle failure...}\n\ - }\n\ -# Catch\n\ -snippet catch\n\ - catch {${1}} ${2:err} ${3:options}\n\ -# While Loop\n\ -snippet wh\n\ - while {${1}} {\n\ - ${2:# body...}\n\ - }\n\ -# For Loop\n\ -snippet for\n\ - for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n\ - ${4:# body...}\n\ - }\n\ -# Foreach Loop\n\ -snippet fore\n\ - foreach ${1:x} {${2:#list}} {\n\ - ${3:# body...}\n\ - }\n\ -# after ms script...\n\ -snippet af\n\ - after ${1:ms} ${2:#do something}\n\ -# after cancel id\n\ -snippet afc\n\ - after cancel ${1:id or script}\n\ -# after idle\n\ -snippet afi\n\ - after idle ${1:script}\n\ -# after info id\n\ -snippet afin\n\ - after info ${1:id}\n\ -# Expr\n\ -snippet exp\n\ - expr {${1:#expression here}}\n\ -# Switch\n\ -snippet sw\n\ - switch ${1:var} {\n\ - ${3:pattern 1} {\n\ - ${4:#do something}\n\ - }\n\ - default {\n\ - ${2:#do something}\n\ - }\n\ - }\n\ -# Case\n\ -snippet ca\n\ - ${1:pattern} {\n\ - ${2:#do something}\n\ - }${3}\n\ -# Namespace eval\n\ -snippet ns\n\ - namespace eval ${1:path} {${2:#script...}}\n\ -# Namespace current\n\ -snippet nsc\n\ - namespace current\n\ -"; -exports.scope = "tcl"; +define("ace/snippets/tcl.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# #!/usr/bin/env tclsh\nsnippet #!\n\t#!/usr/bin/env tclsh\n\t\n# Process\nsnippet pro\n\tproc ${1:function_name} {${2:args}} {\n\t\t${3:#body ...}\n\t}\n#xif\nsnippet xif\n\t${1:expr}? ${2:true} : ${3:false}\n# Conditional\nsnippet if\n\tif {${1}} {\n\t\t${2:# body...}\n\t}\n# Conditional if..else\nsnippet ife\n\tif {${1}} {\n\t\t${2:# body...}\n\t} else {\n\t\t${3:# else...}\n\t}\n# Conditional if..elsif..else\nsnippet ifee\n\tif {${1}} {\n\t\t${2:# body...}\n\t} elseif {${3}} {\n\t\t${4:# elsif...}\n\t} else {\n\t\t${5:# else...}\n\t}\n# If catch then\nsnippet ifc\n\tif { [catch {${1:#do something...}} ${2:err}] } {\n\t\t${3:# handle failure...}\n\t}\n# Catch\nsnippet catch\n\tcatch {${1}} ${2:err} ${3:options}\n# While Loop\nsnippet wh\n\twhile {${1}} {\n\t\t${2:# body...}\n\t}\n# For Loop\nsnippet for\n\tfor {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {\n\t\t${4:# body...}\n\t}\n# Foreach Loop\nsnippet fore\n\tforeach ${1:x} {${2:#list}} {\n\t\t${3:# body...}\n\t}\n# after ms script...\nsnippet af\n\tafter ${1:ms} ${2:#do something}\n# after cancel id\nsnippet afc\n\tafter cancel ${1:id or script}\n# after idle\nsnippet afi\n\tafter idle ${1:script}\n# after info id\nsnippet afin\n\tafter info ${1:id}\n# Expr\nsnippet exp\n\texpr {${1:#expression here}}\n# Switch\nsnippet sw\n\tswitch ${1:var} {\n\t\t${3:pattern 1} {\n\t\t\t${4:#do something}\n\t\t}\n\t\tdefault {\n\t\t\t${2:#do something}\n\t\t}\n\t}\n# Case\nsnippet ca\n\t${1:pattern} {\n\t\t${2:#do something}\n\t}${3}\n# Namespace eval\nsnippet ns\n\tnamespace eval ${1:path} {${2:#script...}}\n# Namespace current\nsnippet nsc\n\tnamespace current\n"; }); + +define("ace/snippets/tcl",["require","exports","module","ace/snippets/tcl.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./tcl.snippets"); +exports.scope = "tcl"; + +}); (function() { + window.require(["ace/snippets/tcl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/terraform.js b/vendor/assets/javascripts/ace/snippets/terraform.js new file mode 100644 index 00000000..c9d8d31d --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/terraform.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/terraform"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/tex.js b/vendor/assets/javascripts/ace/snippets/tex.js index 7ee645a3..c34db42b 100644 --- a/vendor/assets/javascripts/ace/snippets/tex.js +++ b/vendor/assets/javascripts/ace/snippets/tex.js @@ -1,197 +1,16 @@ -define("ace/snippets/tex",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "#PREAMBLE\n\ -#newcommand\n\ -snippet nc\n\ - \\newcommand{\\${1:cmd}}[${2:opt}]{${3:realcmd}}${4}\n\ -#usepackage\n\ -snippet up\n\ - \\usepackage[${1:[options}]{${2:package}}\n\ -#newunicodechar\n\ -snippet nuc\n\ - \\newunicodechar{${1}}{${2:\\ensuremath}${3:tex-substitute}}}\n\ -#DeclareMathOperator\n\ -snippet dmo\n\ - \\DeclareMathOperator{${1}}{${2}}\n\ -\n\ -#DOCUMENT\n\ -# \\begin{}...\\end{}\n\ -snippet begin\n\ - \\begin{${1:env}}\n\ - ${2}\n\ - \\end{$1}\n\ -# Tabular\n\ -snippet tab\n\ - \\begin{${1:tabular}}{${2:c}}\n\ - ${3}\n\ - \\end{$1}\n\ -snippet thm\n\ - \\begin[${1:author}]{${2:thm}}\n\ - ${3}\n\ - \\end{$1}\n\ -snippet center\n\ - \\begin{center}\n\ - ${1}\n\ - \\end{center}\n\ -# Align(ed)\n\ -snippet ali\n\ - \\begin{align${1:ed}}\n\ - ${2}\n\ - \\end{align$1}\n\ -# Gather(ed)\n\ -snippet gat\n\ - \\begin{gather${1:ed}}\n\ - ${2}\n\ - \\end{gather$1}\n\ -# Equation\n\ -snippet eq\n\ - \\begin{equation}\n\ - ${1}\n\ - \\end{equation}\n\ -# Equation\n\ -snippet eq*\n\ - \\begin{equation*}\n\ - ${1}\n\ - \\end{equation*}\n\ -# Unnumbered Equation\n\ -snippet \\\n\ - \\[\n\ - ${1}\n\ - \\]\n\ -# Enumerate\n\ -snippet enum\n\ - \\begin{enumerate}\n\ - \\item ${1}\n\ - \\end{enumerate}\n\ -# Itemize\n\ -snippet itemize\n\ - \\begin{itemize}\n\ - \\item ${1}\n\ - \\end{itemize}\n\ -# Description\n\ -snippet desc\n\ - \\begin{description}\n\ - \\item[${1}] ${2}\n\ - \\end{description}\n\ -# Matrix\n\ -snippet mat\n\ - \\begin{${1:p/b/v/V/B/small}matrix}\n\ - ${2}\n\ - \\end{$1matrix}\n\ -# Cases\n\ -snippet cas\n\ - \\begin{cases}\n\ - ${1:equation}, &\\text{ if }${2:case}\\\\\n\ - ${3}\n\ - \\end{cases}\n\ -# Split\n\ -snippet spl\n\ - \\begin{split}\n\ - ${1}\n\ - \\end{split}\n\ -# Part\n\ -snippet part\n\ - \\part{${1:part name}} % (fold)\n\ - \\label{prt:${2:$1}}\n\ - ${3}\n\ - % part $2 (end)\n\ -# Chapter\n\ -snippet cha\n\ - \\chapter{${1:chapter name}}\n\ - \\label{cha:${2:$1}}\n\ - ${3}\n\ -# Section\n\ -snippet sec\n\ - \\section{${1:section name}}\n\ - \\label{sec:${2:$1}}\n\ - ${3}\n\ -# Sub Section\n\ -snippet sub\n\ - \\subsection{${1:subsection name}}\n\ - \\label{sub:${2:$1}}\n\ - ${3}\n\ -# Sub Sub Section\n\ -snippet subs\n\ - \\subsubsection{${1:subsubsection name}}\n\ - \\label{ssub:${2:$1}}\n\ - ${3}\n\ -# Paragraph\n\ -snippet par\n\ - \\paragraph{${1:paragraph name}}\n\ - \\label{par:${2:$1}}\n\ - ${3}\n\ -# Sub Paragraph\n\ -snippet subp\n\ - \\subparagraph{${1:subparagraph name}}\n\ - \\label{subp:${2:$1}}\n\ - ${3}\n\ -#References\n\ -snippet itd\n\ - \\item[${1:description}] ${2:item}\n\ -snippet figure\n\ - ${1:Figure}~\\ref{${2:fig:}}${3}\n\ -snippet table\n\ - ${1:Table}~\\ref{${2:tab:}}${3}\n\ -snippet listing\n\ - ${1:Listing}~\\ref{${2:list}}${3}\n\ -snippet section\n\ - ${1:Section}~\\ref{${2:sec:}}${3}\n\ -snippet page\n\ - ${1:page}~\\pageref{${2}}${3}\n\ -snippet index\n\ - \\index{${1:index}}${2}\n\ -#Citations\n\ -snippet cite\n\ - \\cite[${1}]{${2}}${3}\n\ -snippet fcite\n\ - \\footcite[${1}]{${2}}${3}\n\ -#Formating text: italic, bold, underline, small capital, emphase ..\n\ -snippet it\n\ - \\textit{${1:text}}\n\ -snippet bf\n\ - \\textbf{${1:text}}\n\ -snippet under\n\ - \\underline{${1:text}}\n\ -snippet emp\n\ - \\emph{${1:text}}\n\ -snippet sc\n\ - \\textsc{${1:text}}\n\ -#Choosing font\n\ -snippet sf\n\ - \\textsf{${1:text}}\n\ -snippet rm\n\ - \\textrm{${1:text}}\n\ -snippet tt\n\ - \\texttt{${1:text}}\n\ -#misc\n\ -snippet ft\n\ - \\footnote{${1:text}}\n\ -snippet fig\n\ - \\begin{figure}\n\ - \\begin{center}\n\ - \\includegraphics[scale=${1}]{Figures/${2}}\n\ - \\end{center}\n\ - \\caption{${3}}\n\ - \\label{fig:${4}}\n\ - \\end{figure}\n\ -snippet tikz\n\ - \\begin{figure}\n\ - \\begin{center}\n\ - \\begin{tikzpicture}[scale=${1:1}]\n\ - ${2}\n\ - \\end{tikzpicture}\n\ - \\end{center}\n\ - \\caption{${3}}\n\ - \\label{fig:${4}}\n\ - \\end{figure}\n\ -#math\n\ -snippet stackrel\n\ - \\stackrel{${1:above}}{${2:below}} ${3}\n\ -snippet frac\n\ - \\frac{${1:num}}{${2:denom}}\n\ -snippet sum\n\ - \\sum^{${1:n}}_{${2:i=1}}{${3}}"; -exports.scope = "tex"; +define("ace/snippets/tex.snippets",["require","exports","module"], function(require, exports, module){module.exports = "#PREAMBLE\n#newcommand\nsnippet nc\n\t\\newcommand{\\${1:cmd}}[${2:opt}]{${3:realcmd}}${4}\n#usepackage\nsnippet up\n\t\\usepackage[${1:[options}]{${2:package}}\n#newunicodechar\nsnippet nuc\n\t\\newunicodechar{${1}}{${2:\\ensuremath}${3:tex-substitute}}}\n#DeclareMathOperator\nsnippet dmo\n\t\\DeclareMathOperator{${1}}{${2}}\n\n#DOCUMENT\n# \\begin{}...\\end{}\nsnippet begin\n\t\\begin{${1:env}}\n\t\t${2}\n\t\\end{$1}\n# Tabular\nsnippet tab\n\t\\begin{${1:tabular}}{${2:c}}\n\t${3}\n\t\\end{$1}\nsnippet thm\n\t\\begin[${1:author}]{${2:thm}}\n\t${3}\n\t\\end{$1}\nsnippet center\n\t\\begin{center}\n\t\t${1}\n\t\\end{center}\n# Align(ed)\nsnippet ali\n\t\\begin{align${1:ed}}\n\t\t${2}\n\t\\end{align$1}\n# Gather(ed)\nsnippet gat\n\t\\begin{gather${1:ed}}\n\t\t${2}\n\t\\end{gather$1}\n# Equation\nsnippet eq\n\t\\begin{equation}\n\t\t${1}\n\t\\end{equation}\n# Equation\nsnippet eq*\n\t\\begin{equation*}\n\t\t${1}\n\t\\end{equation*}\n# Unnumbered Equation\nsnippet \\\n\t\\[\n\t\t${1}\n\t\\]\n# Enumerate\nsnippet enum\n\t\\begin{enumerate}\n\t\t\\item ${1}\n\t\\end{enumerate}\n# Itemize\nsnippet itemize\n\t\\begin{itemize}\n\t\t\\item ${1}\n\t\\end{itemize}\n# Description\nsnippet desc\n\t\\begin{description}\n\t\t\\item[${1}] ${2}\n\t\\end{description}\n# Matrix\nsnippet mat\n\t\\begin{${1:p/b/v/V/B/small}matrix}\n\t\t${2}\n\t\\end{$1matrix}\n# Cases\nsnippet cas\n\t\\begin{cases}\n\t\t${1:equation}, &\\text{ if }${2:case}\\\\\n\t\t${3}\n\t\\end{cases}\n# Split\nsnippet spl\n\t\\begin{split}\n\t\t${1}\n\t\\end{split}\n# Part\nsnippet part\n\t\\part{${1:part name}} % (fold)\n\t\\label{prt:${2:$1}}\n\t${3}\n\t% part $2 (end)\n# Chapter\nsnippet cha\n\t\\chapter{${1:chapter name}}\n\t\\label{cha:${2:$1}}\n\t${3}\n# Section\nsnippet sec\n\t\\section{${1:section name}}\n\t\\label{sec:${2:$1}}\n\t${3}\n# Sub Section\nsnippet sub\n\t\\subsection{${1:subsection name}}\n\t\\label{sub:${2:$1}}\n\t${3}\n# Sub Sub Section\nsnippet subs\n\t\\subsubsection{${1:subsubsection name}}\n\t\\label{ssub:${2:$1}}\n\t${3}\n# Paragraph\nsnippet par\n\t\\paragraph{${1:paragraph name}}\n\t\\label{par:${2:$1}}\n\t${3}\n# Sub Paragraph\nsnippet subp\n\t\\subparagraph{${1:subparagraph name}}\n\t\\label{subp:${2:$1}}\n\t${3}\n#References\nsnippet itd\n\t\\item[${1:description}] ${2:item}\nsnippet figure\n\t${1:Figure}~\\ref{${2:fig:}}${3}\nsnippet table\n\t${1:Table}~\\ref{${2:tab:}}${3}\nsnippet listing\n\t${1:Listing}~\\ref{${2:list}}${3}\nsnippet section\n\t${1:Section}~\\ref{${2:sec:}}${3}\nsnippet page\n\t${1:page}~\\pageref{${2}}${3}\nsnippet index\n\t\\index{${1:index}}${2}\n#Citations\nsnippet cite\n\t\\cite[${1}]{${2}}${3}\nsnippet fcite\n\t\\footcite[${1}]{${2}}${3}\n#Formating text: italic, bold, underline, small capital, emphase ..\nsnippet it\n\t\\textit{${1:text}}\nsnippet bf\n\t\\textbf{${1:text}}\nsnippet under\n\t\\underline{${1:text}}\nsnippet emp\n\t\\emph{${1:text}}\nsnippet sc\n\t\\textsc{${1:text}}\n#Choosing font\nsnippet sf\n\t\\textsf{${1:text}}\nsnippet rm\n\t\\textrm{${1:text}}\nsnippet tt\n\t\\texttt{${1:text}}\n#misc\nsnippet ft\n\t\\footnote{${1:text}}\nsnippet fig\n\t\\begin{figure}\n\t\\begin{center}\n\t \\includegraphics[scale=${1}]{Figures/${2}}\n\t\\end{center}\n\t\\caption{${3}}\n\t\\label{fig:${4}}\n\t\\end{figure}\nsnippet tikz\n\t\\begin{figure}\n\t\\begin{center}\n\t\\begin{tikzpicture}[scale=${1:1}]\n\t\t${2}\n\t\\end{tikzpicture}\n\t\\end{center}\n\t\\caption{${3}}\n\t\\label{fig:${4}}\n\t\\end{figure}\n#math\nsnippet stackrel\n\t\\stackrel{${1:above}}{${2:below}} ${3}\nsnippet frac\n\t\\frac{${1:num}}{${2:denom}}\nsnippet sum\n\t\\sum^{${1:n}}_{${2:i=1}}{${3}}"; }); + +define("ace/snippets/tex",["require","exports","module","ace/snippets/tex.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./tex.snippets"); +exports.scope = "tex"; + +}); (function() { + window.require(["ace/snippets/tex"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/text.js b/vendor/assets/javascripts/ace/snippets/text.js index 42530302..85b4d10e 100644 --- a/vendor/assets/javascripts/ace/snippets/text.js +++ b/vendor/assets/javascripts/ace/snippets/text.js @@ -1,7 +1,9 @@ -define("ace/snippets/text",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "text"; - -}); +; (function() { + window.require(["ace/snippets/text"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/textile.js b/vendor/assets/javascripts/ace/snippets/textile.js index 5fb5306a..d3ad7d18 100644 --- a/vendor/assets/javascripts/ace/snippets/textile.js +++ b/vendor/assets/javascripts/ace/snippets/textile.js @@ -1,37 +1,16 @@ -define("ace/snippets/textile",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "# Jekyll post header\n\ -snippet header\n\ - ---\n\ - title: ${1:title}\n\ - layout: post\n\ - date: ${2:date} ${3:hour:minute:second} -05:00\n\ - ---\n\ -\n\ -# Image\n\ -snippet img\n\ - !${1:url}(${2:title}):${3:link}!\n\ -\n\ -# Table\n\ -snippet |\n\ - |${1}|${2}\n\ -\n\ -# Link\n\ -snippet link\n\ - \"${1:link text}\":${2:url}\n\ -\n\ -# Acronym\n\ -snippet (\n\ - (${1:Expand acronym})${2}\n\ -\n\ -# Footnote\n\ -snippet fn\n\ - [${1:ref number}] ${3}\n\ -\n\ - fn$1. ${2:footnote}\n\ - \n\ -"; -exports.scope = "textile"; +define("ace/snippets/textile.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# Jekyll post header\nsnippet header\n\t---\n\ttitle: ${1:title}\n\tlayout: post\n\tdate: ${2:date} ${3:hour:minute:second} -05:00\n\t---\n\n# Image\nsnippet img\n\t!${1:url}(${2:title}):${3:link}!\n\n# Table\nsnippet |\n\t|${1}|${2}\n\n# Link\nsnippet link\n\t\"${1:link text}\":${2:url}\n\n# Acronym\nsnippet (\n\t(${1:Expand acronym})${2}\n\n# Footnote\nsnippet fn\n\t[${1:ref number}] ${3}\n\n\tfn$1. ${2:footnote}\n\t\n"; }); + +define("ace/snippets/textile",["require","exports","module","ace/snippets/textile.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./textile.snippets"); +exports.scope = "textile"; + +}); (function() { + window.require(["ace/snippets/textile"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/toml.js b/vendor/assets/javascripts/ace/snippets/toml.js index dfe8f6bd..e585672c 100644 --- a/vendor/assets/javascripts/ace/snippets/toml.js +++ b/vendor/assets/javascripts/ace/snippets/toml.js @@ -1,7 +1,9 @@ -define("ace/snippets/toml",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "toml"; - -}); +; (function() { + window.require(["ace/snippets/toml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/tsx.js b/vendor/assets/javascripts/ace/snippets/tsx.js index b78f629a..f0456fdd 100644 --- a/vendor/assets/javascripts/ace/snippets/tsx.js +++ b/vendor/assets/javascripts/ace/snippets/tsx.js @@ -1,7 +1,9 @@ -define("ace/snippets/tsx",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "tsx"; - -}); +; (function() { + window.require(["ace/snippets/tsx"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/turtle.js b/vendor/assets/javascripts/ace/snippets/turtle.js index c560e272..7e0a30ce 100644 --- a/vendor/assets/javascripts/ace/snippets/turtle.js +++ b/vendor/assets/javascripts/ace/snippets/turtle.js @@ -1,7 +1,9 @@ -define("ace/snippets/turtle",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = ""; - -}); +; (function() { + window.require(["ace/snippets/turtle"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/twig.js b/vendor/assets/javascripts/ace/snippets/twig.js index ec656eaf..2cec7aaa 100644 --- a/vendor/assets/javascripts/ace/snippets/twig.js +++ b/vendor/assets/javascripts/ace/snippets/twig.js @@ -1,7 +1,9 @@ -define("ace/snippets/twig",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "twig"; - -}); +; (function() { + window.require(["ace/snippets/twig"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/typescript.js b/vendor/assets/javascripts/ace/snippets/typescript.js index 144d3be7..27dc42bf 100644 --- a/vendor/assets/javascripts/ace/snippets/typescript.js +++ b/vendor/assets/javascripts/ace/snippets/typescript.js @@ -1,7 +1,9 @@ -define("ace/snippets/typescript",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "typescript"; - -}); +; (function() { + window.require(["ace/snippets/typescript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/vala.js b/vendor/assets/javascripts/ace/snippets/vala.js index 57f6627c..89c6d4ca 100644 --- a/vendor/assets/javascripts/ace/snippets/vala.js +++ b/vendor/assets/javascripts/ace/snippets/vala.js @@ -1,5 +1,4 @@ -define("ace/snippets/vala",["require","exports","module"], function(require, exports, module) { -"use strict"; +define("ace/snippets/vala",["require","exports","module"], function(require, exports, module){"use strict"; exports.snippets = [ { "content": "case ${1:condition}:\n\t$0\n\tbreak;\n", @@ -190,4 +189,11 @@ exports.snippets = [ ]; exports.scope = ""; -}); +}); (function() { + window.require(["ace/snippets/vala"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/vbscript.js b/vendor/assets/javascripts/ace/snippets/vbscript.js index 02b94ce5..637e5191 100644 --- a/vendor/assets/javascripts/ace/snippets/vbscript.js +++ b/vendor/assets/javascripts/ace/snippets/vbscript.js @@ -1,7 +1,9 @@ -define("ace/snippets/vbscript",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "vbscript"; - -}); +; (function() { + window.require(["ace/snippets/vbscript"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/velocity.js b/vendor/assets/javascripts/ace/snippets/velocity.js index ad945bd4..9a09ce62 100644 --- a/vendor/assets/javascripts/ace/snippets/velocity.js +++ b/vendor/assets/javascripts/ace/snippets/velocity.js @@ -1,36 +1,17 @@ -define("ace/snippets/velocity",["require","exports","module"], function(require, exports, module) { -"use strict"; +define("ace/snippets/velocity.snippets",["require","exports","module"], function(require, exports, module){module.exports = "# macro\nsnippet #macro\n\t#macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n\t\t${3:## macro code}\n\t#end\n# foreach\nsnippet #foreach\n\t#foreach ( ${1:\\$item} in ${2:\\$collection} )\n\t\t${3:## foreach code}\n\t#end\n# if\nsnippet #if\n\t#if ( ${1:true} )\n\t\t${0}\n\t#end\n# if ... else\nsnippet #ife\n\t#if ( ${1:true} )\n\t\t${2}\n\t#else\n\t\t${0}\n\t#end\n#import\nsnippet #import\n\t#import ( \"${1:path/to/velocity/format}\" )\n# set\nsnippet #set\n\t#set ( $${1:var} = ${0} )\n"; -exports.snippetText = "# macro\n\ -snippet #macro\n\ - #macro ( ${1:macroName} ${2:\\$var1, [\\$var2, ...]} )\n\ - ${3:## macro code}\n\ - #end\n\ -# foreach\n\ -snippet #foreach\n\ - #foreach ( ${1:\\$item} in ${2:\\$collection} )\n\ - ${3:## foreach code}\n\ - #end\n\ -# if\n\ -snippet #if\n\ - #if ( ${1:true} )\n\ - ${0}\n\ - #end\n\ -# if ... else\n\ -snippet #ife\n\ - #if ( ${1:true} )\n\ - ${2}\n\ - #else\n\ - ${0}\n\ - #end\n\ -#import\n\ -snippet #import\n\ - #import ( \"${1:path/to/velocity/format}\" )\n\ -# set\n\ -snippet #set\n\ - #set ( $${1:var} = ${0} )\n\ -"; +}); + +define("ace/snippets/velocity",["require","exports","module","ace/snippets/velocity.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./velocity.snippets"); exports.scope = "velocity"; exports.includeScopes = ["html", "javascript", "css"]; -}); +}); (function() { + window.require(["ace/snippets/velocity"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/verilog.js b/vendor/assets/javascripts/ace/snippets/verilog.js index fa3db8ed..d824e846 100644 --- a/vendor/assets/javascripts/ace/snippets/verilog.js +++ b/vendor/assets/javascripts/ace/snippets/verilog.js @@ -1,7 +1,9 @@ -define("ace/snippets/verilog",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "verilog"; - -}); +; (function() { + window.require(["ace/snippets/verilog"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/vhdl.js b/vendor/assets/javascripts/ace/snippets/vhdl.js index e06d2cff..015c2fbf 100644 --- a/vendor/assets/javascripts/ace/snippets/vhdl.js +++ b/vendor/assets/javascripts/ace/snippets/vhdl.js @@ -1,7 +1,9 @@ -define("ace/snippets/vhdl",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "vhdl"; - -}); +; (function() { + window.require(["ace/snippets/vhdl"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/visualforce.js b/vendor/assets/javascripts/ace/snippets/visualforce.js new file mode 100644 index 00000000..135cf6bd --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/visualforce.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/visualforce"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/wollok.js b/vendor/assets/javascripts/ace/snippets/wollok.js index a859c6ef..08818125 100644 --- a/vendor/assets/javascripts/ace/snippets/wollok.js +++ b/vendor/assets/javascripts/ace/snippets/wollok.js @@ -1,91 +1,16 @@ -define("ace/snippets/wollok",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "##\n\ -## Basic Java packages and import\n\ -snippet im\n\ - import\n\ -snippet w.l\n\ - wollok.lang\n\ -snippet w.i\n\ - wollok.lib\n\ -\n\ -## Class and object\n\ -snippet cl\n\ - class ${1:`Filename(\"\", \"untitled\")`} ${2}\n\ -snippet obj\n\ - object ${1:`Filename(\"\", \"untitled\")`} ${2:inherits Parent}${3}\n\ -snippet te\n\ - test ${1:`Filename(\"\", \"untitled\")`}\n\ -\n\ -##\n\ -## Enhancements\n\ -snippet inh\n\ - inherits\n\ -\n\ -##\n\ -## Comments\n\ -snippet /*\n\ - /*\n\ - * ${1}\n\ - */\n\ -\n\ -##\n\ -## Control Statements\n\ -snippet el\n\ - else\n\ -snippet if\n\ - if (${1}) ${2}\n\ -\n\ -##\n\ -## Create a Method\n\ -snippet m\n\ - method ${1:method}(${2}) ${5}\n\ -\n\ -## \n\ -## Tests\n\ -snippet as\n\ - assert.equals(${1:expected}, ${2:actual})\n\ -\n\ -##\n\ -## Exceptions\n\ -snippet ca\n\ - catch ${1:e} : (${2:Exception} ) ${3}\n\ -snippet thr\n\ - throw\n\ -snippet try\n\ - try {\n\ - ${3}\n\ - } catch ${1:e} : ${2:Exception} {\n\ - }\n\ -\n\ -##\n\ -## Javadocs\n\ -snippet /**\n\ - /**\n\ - * ${1}\n\ - */\n\ -\n\ -##\n\ -## Print Methods\n\ -snippet print\n\ - console.println(\"${1:Message}\")\n\ -\n\ -##\n\ -## Setter and Getter Methods\n\ -snippet set\n\ - method set${1:}(${2:}) {\n\ - $1 = $2\n\ - }\n\ -snippet get\n\ - method get${1:}() {\n\ - return ${1:};\n\ - }\n\ -\n\ -##\n\ -## Terminate Methods or Loops\n\ -snippet re\n\ - return"; -exports.scope = "wollok"; +define("ace/snippets/wollok.snippets",["require","exports","module"], function(require, exports, module){module.exports = "##\n## Basic Java packages and import\nsnippet im\n\timport\nsnippet w.l\n\twollok.lang\nsnippet w.i\n\twollok.lib\n\n## Class and object\nsnippet cl\n\tclass ${1:`Filename(\"\", \"untitled\")`} ${2}\nsnippet obj\n\tobject ${1:`Filename(\"\", \"untitled\")`} ${2:inherits Parent}${3}\nsnippet te\n\ttest ${1:`Filename(\"\", \"untitled\")`}\n\n##\n## Enhancements\nsnippet inh\n\tinherits\n\n##\n## Comments\nsnippet /*\n\t/*\n\t * ${1}\n\t */\n\n##\n## Control Statements\nsnippet el\n\telse\nsnippet if\n\tif (${1}) ${2}\n\n##\n## Create a Method\nsnippet m\n\tmethod ${1:method}(${2}) ${5}\n\n## \n## Tests\nsnippet as\n\tassert.equals(${1:expected}, ${2:actual})\n\n##\n## Exceptions\nsnippet ca\n\tcatch ${1:e} : (${2:Exception} ) ${3}\nsnippet thr\n\tthrow\nsnippet try\n\ttry {\n\t\t${3}\n\t} catch ${1:e} : ${2:Exception} {\n\t}\n\n##\n## Javadocs\nsnippet /**\n\t/**\n\t * ${1}\n\t */\n\n##\n## Print Methods\nsnippet print\n\tconsole.println(\"${1:Message}\")\n\n##\n## Setter and Getter Methods\nsnippet set\n\tmethod set${1:}(${2:}) {\n\t\t$1 = $2\n\t}\nsnippet get\n\tmethod get${1:}() {\n\t\treturn ${1:};\n\t}\n\n##\n## Terminate Methods or Loops\nsnippet re\n\treturn"; }); + +define("ace/snippets/wollok",["require","exports","module","ace/snippets/wollok.snippets"], function(require, exports, module){"use strict"; +exports.snippetText = require("./wollok.snippets"); +exports.scope = "wollok"; + +}); (function() { + window.require(["ace/snippets/wollok"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/xml.js b/vendor/assets/javascripts/ace/snippets/xml.js index de14ce01..927c6659 100644 --- a/vendor/assets/javascripts/ace/snippets/xml.js +++ b/vendor/assets/javascripts/ace/snippets/xml.js @@ -1,7 +1,9 @@ -define("ace/snippets/xml",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "xml"; - -}); +; (function() { + window.require(["ace/snippets/xml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/xquery.js b/vendor/assets/javascripts/ace/snippets/xquery.js index c45681fd..28584e29 100644 --- a/vendor/assets/javascripts/ace/snippets/xquery.js +++ b/vendor/assets/javascripts/ace/snippets/xquery.js @@ -1,68 +1,78 @@ -define("ace/snippets/xquery",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.snippetText = "snippet for\n\ - for $${1:item} in ${2:expr}\n\ +define("ace/snippets/xquery.snippets",["require","exports","module"], function(require, exports, module) {module.exports = 'snippet for\n\ + for \$\${1:item} in \${2:expr}\n\ snippet return\n\ - return ${1:expr}\n\ + return \${1:expr}\n\ snippet import\n\ - import module namespace ${1:ns} = \"${2:http://www.example.com/}\";\n\ + import module namespace \${1:ns} = "\${2:http://www.example.com/}";\n\ snippet some\n\ - some $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ + some \$\${1:varname} in \${2:expr} satisfies \${3:expr}\n\ snippet every\n\ - every $${1:varname} in ${2:expr} satisfies ${3:expr}\n\ + every \$\${1:varname} in \${2:expr} satisfies \${3:expr}\n\ snippet if\n\ - if(${1:true}) then ${2:expr} else ${3:true}\n\ + if(\${1:true}) then \${2:expr} else \${3:true}\n\ snippet switch\n\ - switch(${1:\"foo\"})\n\ - case ${2:\"foo\"}\n\ - return ${3:true}\n\ - default return ${4:false}\n\ + switch(\${1:"foo"})\n\ + case \${2:"foo"}\n\ + return \${3:true}\n\ + default return \${4:false}\n\ snippet try\n\ - try { ${1:expr} } catch ${2:*} { ${3:expr} }\n\ + try { \${1:expr} } catch \${2:*} { \${3:expr} }\n\ snippet tumbling\n\ - for tumbling window $${1:varname} in ${2:expr}\n\ - start at $${3:start} when ${4:expr}\n\ - end at $${5:end} when ${6:expr}\n\ - return ${7:expr}\n\ + for tumbling window \$\${1:varname} in \${2:expr}\n\ + start at \$\${3:start} when \${4:expr}\n\ + end at \$\${5:end} when \${6:expr}\n\ + return \${7:expr}\n\ snippet sliding\n\ - for sliding window $${1:varname} in ${2:expr}\n\ - start at $${3:start} when ${4:expr}\n\ - end at $${5:end} when ${6:expr}\n\ - return ${7:expr}\n\ + for sliding window \$\${1:varname} in \${2:expr}\n\ + start at \$\${3:start} when \${4:expr}\n\ + end at \$\${5:end} when \${6:expr}\n\ + return \${7:expr}\n\ snippet let\n\ - let $${1:varname} := ${2:expr}\n\ + let \$\${1:varname} := \${2:expr}\n\ snippet group\n\ - group by $${1:varname} := ${2:expr}\n\ + group by \$\${1:varname} := \${2:expr}\n\ snippet order\n\ - order by ${1:expr} ${2:descending}\n\ + order by \${1:expr} \${2:descending}\n\ snippet stable\n\ - stable order by ${1:expr}\n\ + stable order by \${1:expr}\n\ snippet count\n\ - count $${1:varname}\n\ + count \$\${1:varname}\n\ snippet ordered\n\ - ordered { ${1:expr} }\n\ + ordered { \${1:expr} }\n\ snippet unordered\n\ - unordered { ${1:expr} }\n\ + unordered { \${1:expr} }\n\ snippet treat \n\ - treat as ${1:expr}\n\ + treat as \${1:expr}\n\ snippet castable\n\ - castable as ${1:atomicType}\n\ + castable as \${1:atomicType}\n\ snippet cast\n\ - cast as ${1:atomicType}\n\ + cast as \${1:atomicType}\n\ snippet typeswitch\n\ - typeswitch(${1:expr})\n\ - case ${2:type} return ${3:expr}\n\ - default return ${4:expr}\n\ + typeswitch(\${1:expr})\n\ + case \${2:type} return \${3:expr}\n\ + default return \${4:expr}\n\ snippet var\n\ - declare variable $${1:varname} := ${2:expr};\n\ + declare variable \$\${1:varname} := \${2:expr};\n\ snippet fn\n\ - declare function ${1:ns}:${2:name}(){\n\ - ${3:expr}\n\ + declare function \${1:ns}:\${2:name}(){\n\ + \${3:expr}\n\ };\n\ snippet module\n\ - module namespace ${1:ns} = \"${2:http://www.example.com}\";\n\ -"; -exports.scope = "xquery"; + module namespace \${1:ns} = "\${2:http://www.example.com}";\n\ +'; }); + +define("ace/snippets/xquery",["require","exports","module","ace/snippets/xquery.snippets"], function(require, exports, module) {"use strict"; + +exports.snippetText = require("./xquery.snippets"); +exports.scope = "xquery"; + +}); (function() { + window.require(["ace/snippets/xquery"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/yaml.js b/vendor/assets/javascripts/ace/snippets/yaml.js index f3f31fee..13a274dc 100644 --- a/vendor/assets/javascripts/ace/snippets/yaml.js +++ b/vendor/assets/javascripts/ace/snippets/yaml.js @@ -1,7 +1,9 @@ -define("ace/snippets/yaml",["require","exports","module"], function(require, exports, module) { -"use strict"; -exports.snippetText =undefined; -exports.scope = "yaml"; - -}); +; (function() { + window.require(["ace/snippets/yaml"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/zeek.js b/vendor/assets/javascripts/ace/snippets/zeek.js new file mode 100644 index 00000000..a1fc7cdf --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/zeek.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/zeek"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/snippets/zig.js b/vendor/assets/javascripts/ace/snippets/zig.js new file mode 100644 index 00000000..7aec99be --- /dev/null +++ b/vendor/assets/javascripts/ace/snippets/zig.js @@ -0,0 +1,9 @@ + +; (function() { + window.require(["ace/snippets/zig"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-ambiance.js b/vendor/assets/javascripts/ace/theme-ambiance.js index 7f71e01a..7ed8808b 100644 --- a/vendor/assets/javascripts/ace/theme-ambiance.js +++ b/vendor/assets/javascripts/ace/theme-ambiance.js @@ -1,182 +1,18 @@ -define("ace/theme/ambiance",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-ambiance"; -exports.cssText = ".ace-ambiance .ace_gutter {\ -background-color: #3d3d3d;\ -background-image: -moz-linear-gradient(left, #3D3D3D, #333);\ -background-image: -ms-linear-gradient(left, #3D3D3D, #333);\ -background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#3D3D3D), to(#333));\ -background-image: -webkit-linear-gradient(left, #3D3D3D, #333);\ -background-image: -o-linear-gradient(left, #3D3D3D, #333);\ -background-image: linear-gradient(left, #3D3D3D, #333);\ -background-repeat: repeat-x;\ -border-right: 1px solid #4d4d4d;\ -text-shadow: 0px 1px 1px #4d4d4d;\ -color: #222;\ -}\ -.ace-ambiance .ace_gutter-layer {\ -background: repeat left top;\ -}\ -.ace-ambiance .ace_gutter-active-line {\ -background-color: #3F3F3F;\ -}\ -.ace-ambiance .ace_fold-widget {\ -text-align: center;\ -}\ -.ace-ambiance .ace_fold-widget:hover {\ -color: #777;\ -}\ -.ace-ambiance .ace_fold-widget.ace_start,\ -.ace-ambiance .ace_fold-widget.ace_end,\ -.ace-ambiance .ace_fold-widget.ace_closed{\ -background: none;\ -border: none;\ -box-shadow: none;\ -}\ -.ace-ambiance .ace_fold-widget.ace_start:after {\ -content: '▾'\ -}\ -.ace-ambiance .ace_fold-widget.ace_end:after {\ -content: '▴'\ -}\ -.ace-ambiance .ace_fold-widget.ace_closed:after {\ -content: '‣'\ -}\ -.ace-ambiance .ace_print-margin {\ -border-left: 1px dotted #2D2D2D;\ -right: 0;\ -background: #262626;\ -}\ -.ace-ambiance .ace_scroller {\ --webkit-box-shadow: inset 0 0 10px black;\ --moz-box-shadow: inset 0 0 10px black;\ --o-box-shadow: inset 0 0 10px black;\ -box-shadow: inset 0 0 10px black;\ -}\ -.ace-ambiance {\ -color: #E6E1DC;\ -background-color: #202020;\ -}\ -.ace-ambiance .ace_cursor {\ -border-left: 1px solid #7991E8;\ -}\ -.ace-ambiance .ace_overwrite-cursors .ace_cursor {\ -border: 1px solid #FFE300;\ -background: #766B13;\ -}\ -.ace-ambiance.normal-mode .ace_cursor-layer {\ -z-index: 0;\ -}\ -.ace-ambiance .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20);\ -}\ -.ace-ambiance .ace_marker-layer .ace_selected-word {\ -border-radius: 4px;\ -border: 8px solid #3f475d;\ -box-shadow: 0 0 4px black;\ -}\ -.ace-ambiance .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-ambiance .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25);\ -}\ -.ace-ambiance .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031);\ -}\ -.ace-ambiance .ace_invisible {\ -color: #333;\ -}\ -.ace-ambiance .ace_paren {\ -color: #24C2C7;\ -}\ -.ace-ambiance .ace_keyword {\ -color: #cda869;\ -}\ -.ace-ambiance .ace_keyword.ace_operator {\ -color: #fa8d6a;\ -}\ -.ace-ambiance .ace_punctuation.ace_operator {\ -color: #fa8d6a;\ -}\ -.ace-ambiance .ace_identifier {\ -}\ -.ace-ambiance .ace-statement {\ -color: #cda869;\ -}\ -.ace-ambiance .ace_constant {\ -color: #CF7EA9;\ -}\ -.ace-ambiance .ace_constant.ace_language {\ -color: #CF7EA9;\ -}\ -.ace-ambiance .ace_constant.ace_library {\ -}\ -.ace-ambiance .ace_constant.ace_numeric {\ -color: #78CF8A;\ -}\ -.ace-ambiance .ace_invalid {\ -text-decoration: underline;\ -}\ -.ace-ambiance .ace_invalid.ace_illegal {\ -color:#F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75);\ -}\ -.ace-ambiance .ace_invalid,\ -.ace-ambiance .ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1;\ -}\ -.ace-ambiance .ace_support {\ -color: #9B859D;\ -}\ -.ace-ambiance .ace_support.ace_function {\ -color: #DAD085;\ -}\ -.ace-ambiance .ace_function.ace_buildin {\ -color: #9b859d;\ -}\ -.ace-ambiance .ace_string {\ -color: #8f9d6a;\ -}\ -.ace-ambiance .ace_string.ace_regexp {\ -color: #DAD085;\ -}\ -.ace-ambiance .ace_comment {\ -font-style: italic;\ -color: #555;\ -}\ -.ace-ambiance .ace_comment.ace_doc {\ -}\ -.ace-ambiance .ace_comment.ace_doc.ace_tag {\ -color: #666;\ -font-style: normal;\ -}\ -.ace-ambiance .ace_definition,\ -.ace-ambiance .ace_type {\ -color: #aac6e3;\ -}\ -.ace-ambiance .ace_variable {\ -color: #9999cc;\ -}\ -.ace-ambiance .ace_variable.ace_language {\ -color: #9b859d;\ -}\ -.ace-ambiance .ace_xml-pe {\ -color: #494949;\ -}\ -.ace-ambiance .ace_gutter-layer,\ -.ace-ambiance .ace_text-layer {\ -background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");\ -}\ -.ace-ambiance .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); +define("ace/theme/ambiance-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-ambiance .ace_gutter {\n background-color: #3d3d3d;\n background-image: linear-gradient(left, #3D3D3D, #333);\n background-repeat: repeat-x;\n border-right: 1px solid #4d4d4d;\n text-shadow: 0px 1px 1px #4d4d4d;\n color: #222;\n}\n\n.ace-ambiance .ace_gutter-layer {\n background: repeat left top;\n}\n\n.ace-ambiance .ace_gutter-active-line {\n background-color: #3F3F3F;\n}\n\n.ace-ambiance .ace_fold-widget {\n text-align: center;\n}\n\n.ace-ambiance .ace_fold-widget:hover {\n color: #777;\n}\n\n.ace-ambiance .ace_fold-widget.ace_start,\n.ace-ambiance .ace_fold-widget.ace_end,\n.ace-ambiance .ace_fold-widget.ace_closed{\n background: none !important;\n border: none;\n box-shadow: none;\n}\n\n.ace-ambiance .ace_fold-widget.ace_start:after {\n content: '\u25BE'\n}\n\n.ace-ambiance .ace_fold-widget.ace_end:after {\n content: '\u25B4'\n}\n\n.ace-ambiance .ace_fold-widget.ace_closed:after {\n content: '\u2023'\n}\n\n.ace-ambiance .ace_print-margin {\n border-left: 1px dotted #2D2D2D;\n right: 0;\n background: #262626;\n}\n\n.ace-ambiance .ace_scroller {\n -webkit-box-shadow: inset 0 0 10px black;\n -moz-box-shadow: inset 0 0 10px black;\n -o-box-shadow: inset 0 0 10px black;\n box-shadow: inset 0 0 10px black;\n}\n\n.ace-ambiance {\n color: #E6E1DC;\n background-color: #202020;\n}\n\n.ace-ambiance .ace_cursor {\n border-left: 1px solid #7991E8;\n}\n\n.ace-ambiance .ace_overwrite-cursors .ace_cursor {\n border: 1px solid #FFE300;\n background: #766B13;\n}\n\n.ace-ambiance.normal-mode .ace_cursor-layer {\n z-index: 0;\n}\n \n.ace-ambiance .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20);\n}\n\n.ace-ambiance .ace_marker-layer .ace_selected-word {\n border-radius: 4px;\n border: 8px solid #3f475d;\n box-shadow: 0 0 4px black;\n}\n\n.ace-ambiance .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174);\n}\n\n.ace-ambiance .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.25);\n}\n\n.ace-ambiance .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.031);\n}\n\n.ace-ambiance .ace_invisible {\n color: #333;\n}\n\n.ace-ambiance .ace_paren {\n color: #24C2C7;\n}\n\n.ace-ambiance .ace_keyword {\n color: #cda869;\n}\n\n.ace-ambiance .ace_keyword.ace_operator {\n color: #fa8d6a;\n}\n\n.ace-ambiance .ace_punctuation.ace_operator {\n color: #fa8d6a;\n}\n\n.ace-ambiance .ace_identifier {\n}\n\n.ace-ambiance .ace-statement {\n color: #cda869;\n}\n\n.ace-ambiance .ace_constant {\n color: #CF7EA9;\n}\n\n.ace-ambiance .ace_constant.ace_language {\n color: #CF7EA9;\n}\n\n.ace-ambiance .ace_constant.ace_library {\n \n}\n\n.ace-ambiance .ace_constant.ace_numeric {\n color: #78CF8A;\n}\n\n.ace-ambiance .ace_invalid {\n text-decoration: underline;\n}\n\n.ace-ambiance .ace_invalid.ace_illegal {\n color:#F8F8F8;\n background-color: rgba(86, 45, 86, 0.75);\n}\n\n.ace-ambiance .ace_invalid,\n.ace-ambiance .ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #D2A8A1;\n}\n\n.ace-ambiance .ace_support {\n color: #9B859D;\n}\n\n.ace-ambiance .ace_support.ace_function {\n color: #DAD085;\n}\n\n.ace-ambiance .ace_function.ace_buildin {\n color: #9b859d;\n}\n\n.ace-ambiance .ace_string {\n color: #8f9d6a;\n}\n\n.ace-ambiance .ace_string.ace_regexp {\n color: #DAD085;\n}\n\n.ace-ambiance .ace_comment {\n font-style: italic;\n color: #555;\n}\n\n.ace-ambiance .ace_comment.ace_doc {\n}\n\n.ace-ambiance .ace_comment.ace_doc.ace_tag {\n color: #666;\n font-style: normal;\n}\n\n.ace-ambiance .ace_definition,\n.ace-ambiance .ace_type {\n color: #aac6e3;\n}\n\n.ace-ambiance .ace_variable {\n color: #9999cc;\n}\n\n.ace-ambiance .ace_variable.ace_language {\n color: #9b859d;\n}\n\n.ace-ambiance .ace_xml-pe {\n color: #494949;\n}\n\n.ace-ambiance .ace_gutter-layer,\n.ace-ambiance .ace_text-layer {\n background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC\");\n}\n\n.ace-ambiance .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\n}\n\n.ace-ambiance .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; }); + +define("ace/theme/ambiance",["require","exports","module","ace/theme/ambiance-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-ambiance"; +exports.cssText = require("./ambiance-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/ambiance"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-chaos.js b/vendor/assets/javascripts/ace/theme-chaos.js index 2f5ff56d..7fb2e05e 100644 --- a/vendor/assets/javascripts/ace/theme-chaos.js +++ b/vendor/assets/javascripts/ace/theme-chaos.js @@ -1,156 +1,18 @@ -define("ace/theme/chaos",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-chaos"; -exports.cssText = ".ace-chaos .ace_gutter {\ -background: #141414;\ -color: #595959;\ -border-right: 1px solid #282828;\ -}\ -.ace-chaos .ace_gutter-cell.ace_warning {\ -background-image: none;\ -background: #FC0;\ -border-left: none;\ -padding-left: 0;\ -color: #000;\ -}\ -.ace-chaos .ace_gutter-cell.ace_error {\ -background-position: -6px center;\ -background-image: none;\ -background: #F10;\ -border-left: none;\ -padding-left: 0;\ -color: #000;\ -}\ -.ace-chaos .ace_print-margin {\ -border-left: 1px solid #555;\ -right: 0;\ -background: #1D1D1D;\ -}\ -.ace-chaos {\ -background-color: #161616;\ -color: #E6E1DC;\ -}\ -.ace-chaos .ace_cursor {\ -border-left: 2px solid #FFFFFF;\ -}\ -.ace-chaos .ace_cursor.ace_overwrite {\ -border-left: 0px;\ -border-bottom: 1px solid #FFFFFF;\ -}\ -.ace-chaos .ace_marker-layer .ace_selection {\ -background: #494836;\ -}\ -.ace-chaos .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-chaos .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #FCE94F;\ -}\ -.ace-chaos .ace_marker-layer .ace_active-line {\ -background: #333;\ -}\ -.ace-chaos .ace_gutter-active-line {\ -background-color: #222;\ -}\ -.ace-chaos .ace_invisible {\ -color: #404040;\ -}\ -.ace-chaos .ace_keyword {\ -color:#00698F;\ -}\ -.ace-chaos .ace_keyword.ace_operator {\ -color:#FF308F;\ -}\ -.ace-chaos .ace_constant {\ -color:#1EDAFB;\ -}\ -.ace-chaos .ace_constant.ace_language {\ -color:#FDC251;\ -}\ -.ace-chaos .ace_constant.ace_library {\ -color:#8DFF0A;\ -}\ -.ace-chaos .ace_constant.ace_numeric {\ -color:#58C554;\ -}\ -.ace-chaos .ace_invalid {\ -color:#FFFFFF;\ -background-color:#990000;\ -}\ -.ace-chaos .ace_invalid.ace_deprecated {\ -color:#FFFFFF;\ -background-color:#990000;\ -}\ -.ace-chaos .ace_support {\ -color: #999;\ -}\ -.ace-chaos .ace_support.ace_function {\ -color:#00AEEF;\ -}\ -.ace-chaos .ace_function {\ -color:#00AEEF;\ -}\ -.ace-chaos .ace_string {\ -color:#58C554;\ -}\ -.ace-chaos .ace_comment {\ -color:#555;\ -font-style:italic;\ -padding-bottom: 0px;\ -}\ -.ace-chaos .ace_variable {\ -color:#997744;\ -}\ -.ace-chaos .ace_meta.ace_tag {\ -color:#BE53E6;\ -}\ -.ace-chaos .ace_entity.ace_other.ace_attribute-name {\ -color:#FFFF89;\ -}\ -.ace-chaos .ace_markup.ace_underline {\ -text-decoration: underline;\ -}\ -.ace-chaos .ace_fold-widget {\ -text-align: center;\ -}\ -.ace-chaos .ace_fold-widget:hover {\ -color: #777;\ -}\ -.ace-chaos .ace_fold-widget.ace_start,\ -.ace-chaos .ace_fold-widget.ace_end,\ -.ace-chaos .ace_fold-widget.ace_closed{\ -background: none;\ -border: none;\ -box-shadow: none;\ -}\ -.ace-chaos .ace_fold-widget.ace_start:after {\ -content: '▾'\ -}\ -.ace-chaos .ace_fold-widget.ace_end:after {\ -content: '▴'\ -}\ -.ace-chaos .ace_fold-widget.ace_closed:after {\ -content: '‣'\ -}\ -.ace-chaos .ace_indent-guide {\ -border-right:1px dotted #333;\ -margin-right:-1px;\ -}\ -.ace-chaos .ace_fold { \ -background: #222; \ -border-radius: 3px; \ -color: #7AF; \ -border: none; \ -}\ -.ace-chaos .ace_fold:hover {\ -background: #CCC; \ -color: #000;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); +define("ace/theme/chaos-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-chaos .ace_gutter {\n background: #141414;\n color: #595959;\n border-right: 1px solid #282828;\n}\n.ace-chaos .ace_gutter-cell.ace_warning {\n background-image: none;\n background: #FC0;\n border-left: none;\n padding-left: 0;\n color: #000;\n}\n.ace-chaos .ace_gutter-cell.ace_error {\n background-position: -6px center;\n background-image: none;\n background: #F10;\n border-left: none;\n padding-left: 0;\n color: #000;\n}\n.ace-chaos .ace_print-margin {\n border-left: 1px solid #555;\n right: 0;\n background: #1D1D1D;\n}\n.ace-chaos {\n background-color: #161616;\n color: #E6E1DC;\n}\n\n.ace-chaos .ace_cursor {\n border-left: 2px solid #FFFFFF;\n}\n.ace-chaos .ace_cursor.ace_overwrite {\n border-left: 0px;\n border-bottom: 1px solid #FFFFFF;\n}\n.ace-chaos .ace_marker-layer .ace_selection {\n background: #494836;\n}\n.ace-chaos .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174);\n}\n.ace-chaos .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #FCE94F;\n}\n.ace-chaos .ace_marker-layer .ace_active-line {\n background: #333;\n}\n.ace-chaos .ace_gutter-active-line {\n background-color: #222;\n}\n.ace-chaos .ace_invisible {\n color: #404040;\n}\n.ace-chaos .ace_keyword {\n color:#00698F;\n}\n.ace-chaos .ace_keyword.ace_operator {\n color:#FF308F;\n}\n.ace-chaos .ace_constant {\n color:#1EDAFB;\n}\n.ace-chaos .ace_constant.ace_language {\n color:#FDC251;\n}\n.ace-chaos .ace_constant.ace_library {\n color:#8DFF0A;\n}\n.ace-chaos .ace_constant.ace_numeric {\n color:#58C554;\n}\n.ace-chaos .ace_invalid {\n color:#FFFFFF;\n background-color:#990000;\n}\n.ace-chaos .ace_invalid.ace_deprecated {\n color:#FFFFFF;\n background-color:#990000;\n}\n.ace-chaos .ace_support {\n color: #999;\n}\n.ace-chaos .ace_support.ace_function {\n color:#00AEEF;\n}\n.ace-chaos .ace_function {\n color:#00AEEF;\n}\n.ace-chaos .ace_string {\n color:#58C554;\n}\n.ace-chaos .ace_comment {\n color:#555;\n font-style:italic;\n padding-bottom: 0px;\n}\n.ace-chaos .ace_variable {\n color:#997744;\n}\n.ace-chaos .ace_meta.ace_tag {\n color:#BE53E6;\n}\n.ace-chaos .ace_entity.ace_other.ace_attribute-name {\n color:#FFFF89;\n}\n.ace-chaos .ace_markup.ace_underline {\n text-decoration: underline;\n}\n.ace-chaos .ace_fold-widget {\n text-align: center;\n}\n\n.ace-chaos .ace_fold-widget:hover {\n color: #777;\n}\n\n.ace-chaos .ace_fold-widget.ace_start,\n.ace-chaos .ace_fold-widget.ace_end,\n.ace-chaos .ace_fold-widget.ace_closed{\n background: none !important;\n border: none;\n box-shadow: none;\n}\n\n.ace-chaos .ace_fold-widget.ace_start:after {\n content: '\u25BE'\n}\n\n.ace-chaos .ace_fold-widget.ace_end:after {\n content: '\u25B4'\n}\n\n.ace-chaos .ace_fold-widget.ace_closed:after {\n content: '\u2023'\n}\n\n.ace-chaos .ace_indent-guide {\n border-right:1px dotted #333333;\n margin-right:-1px;\n}\n\n.ace-chaos .ace_indent-guide-active {\n border-right:1px dotted #afafaf;\n margin-right:-1px;\n}\n\n.ace-chaos .ace_fold { \n background: #222; \n border-radius: 3px; \n color: #7AF; \n border: none; \n}\n.ace-chaos .ace_fold:hover {\n background: #CCC; \n color: #000;\n}\n"; }); + +define("ace/theme/chaos",["require","exports","module","ace/theme/chaos-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-chaos"; +exports.cssText = require("./chaos-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/chaos"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-chrome.js b/vendor/assets/javascripts/ace/theme-chrome.js index 3b3b6cf7..fdff3ba6 100644 --- a/vendor/assets/javascripts/ace/theme-chrome.js +++ b/vendor/assets/javascripts/ace/theme-chrome.js @@ -1,128 +1,18 @@ -define("ace/theme/chrome",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/chrome-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-chrome .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow : hidden;\n}\n\n.ace-chrome .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-chrome {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-chrome .ace_cursor {\n color: black;\n}\n\n.ace-chrome .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-chrome .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-chrome .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-chrome .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-chrome .ace_fold {\n}\n\n.ace-chrome .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-chrome .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-chrome .ace_support.ace_type,\n.ace-chrome .ace_support.ace_class\n.ace-chrome .ace_support.ace_other {\n color: rgb(109, 121, 222);\n}\n\n.ace-chrome .ace_variable.ace_parameter {\n font-style:italic;\n color:#FD971F;\n}\n.ace-chrome .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-chrome .ace_comment {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc {\n color: #236e24;\n}\n\n.ace-chrome .ace_comment.ace_doc.ace_tag {\n color: #236e24;\n}\n\n.ace-chrome .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-chrome .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-chrome .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-chrome .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-chrome .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-chrome .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-chrome .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-chrome .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-chrome .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-chrome .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-chrome .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-chrome .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-chrome .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-chrome .ace_storage,\n.ace-chrome .ace_keyword,\n.ace-chrome .ace_meta.ace_tag {\n color: rgb(147, 15, 128);\n}\n\n.ace-chrome .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-chrome .ace_string {\n color: #1A1AA6;\n}\n\n.ace-chrome .ace_entity.ace_other.ace_attribute-name {\n color: #994409;\n}\n\n.ace-chrome .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n \n.ace-chrome .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; -exports.isDark = false; -exports.cssClass = "ace-chrome"; -exports.cssText = ".ace-chrome .ace_gutter {\ -background: #ebebeb;\ -color: #333;\ -overflow : hidden;\ -}\ -.ace-chrome .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-chrome {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-chrome .ace_cursor {\ -color: black;\ -}\ -.ace-chrome .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-chrome .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-chrome .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-chrome .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-chrome .ace_invalid {\ -background-color: rgb(153, 0, 0);\ -color: white;\ -}\ -.ace-chrome .ace_fold {\ -}\ -.ace-chrome .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-chrome .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-chrome .ace_support.ace_type,\ -.ace-chrome .ace_support.ace_class\ -.ace-chrome .ace_support.ace_other {\ -color: rgb(109, 121, 222);\ -}\ -.ace-chrome .ace_variable.ace_parameter {\ -font-style:italic;\ -color:#FD971F;\ -}\ -.ace-chrome .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-chrome .ace_comment {\ -color: #236e24;\ -}\ -.ace-chrome .ace_comment.ace_doc {\ -color: #236e24;\ -}\ -.ace-chrome .ace_comment.ace_doc.ace_tag {\ -color: #236e24;\ -}\ -.ace-chrome .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-chrome .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-chrome .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-chrome .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-chrome .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-chrome .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-chrome .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-chrome .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-chrome .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-chrome .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-chrome .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-chrome .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-chrome .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-chrome .ace_storage,\ -.ace-chrome .ace_keyword,\ -.ace-chrome .ace_meta.ace_tag {\ -color: rgb(147, 15, 128);\ -}\ -.ace-chrome .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-chrome .ace_string {\ -color: #1A1AA6;\ -}\ -.ace-chrome .ace_entity.ace_other.ace_attribute-name {\ -color: #994409;\ -}\ -.ace-chrome .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/chrome",["require","exports","module","ace/theme/chrome-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-chrome"; +exports.cssText = require("./chrome-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/chrome"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-cloud9_day.js b/vendor/assets/javascripts/ace/theme-cloud9_day.js new file mode 100644 index 00000000..2c897847 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-cloud9_day.js @@ -0,0 +1,19 @@ +define("ace/theme/cloud9_day-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-cloud9-day .ace_gutter {\n background: #ECECEC;\n color: #333;\n}\n\n.ace-cloud9-day .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-cloud9-day .ace_fold {\n background-color: #6B72E6;\n}\n\n.ace-cloud9-day {\n background-color: #FBFBFB;\n color: black;\n}\n\n.ace-cloud9-day .ace_cursor {\n color: black;\n}\n\n.ace-cloud9-day .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-cloud9-day .ace_storage,\n.ace-cloud9-day .ace_keyword {\n color: rgb(24, 122, 234);\n}\n\n.ace-cloud9-day .ace_constant {\n color: rgb(197, 6, 11);\n}\n\n.ace-cloud9-day .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-cloud9-day .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-cloud9-day .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-cloud9-day .ace_invalid {\n background-color: rgba(255, 0, 0, 0.1);\n color: red;\n}\n\n.ace-cloud9-day .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-cloud9-day .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-cloud9-day .ace_support.ace_type,\n.ace-cloud9-day .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-cloud9-day .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-cloud9-day .ace_string {\n color: rgb(3, 106, 7);\n}\n\n.ace-cloud9-day .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-cloud9-day .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-cloud9-day .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-cloud9-day .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-cloud9-day .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-cloud9-day .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-cloud9-day .ace_entity.ace_name.ace_function {\n color: #0000A2;\n}\n\n\n.ace-cloud9-day .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-cloud9-day .ace_list {\n color: rgb(185, 6, 144);\n}\n\n.ace-cloud9-day .ace_meta.ace_tag {\n color: rgb(0, 22, 142);\n}\n\n.ace-cloud9-day .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-cloud9-day.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_step {\n background: rgb(247, 237, 137);\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_stack {\n background: #BAE0A0;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-cloud9-day .ace_gutter-active-line {\n background-color: #E5E5E5;\n}\n\n.ace-cloud9-day .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-cloud9-day .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-cloud9-day .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; + +}); + +define("ace/theme/cloud9_day",["require","exports","module","ace/theme/cloud9_day-css","ace/lib/dom"], function(require, exports, module){"use strict"; +exports.isDark = false; +exports.cssClass = "ace-cloud9-day"; +exports.cssText = require("./cloud9_day-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); (function() { + window.require(["ace/theme/cloud9_day"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-cloud9_night.js b/vendor/assets/javascripts/ace/theme-cloud9_night.js new file mode 100644 index 00000000..27581bf1 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-cloud9_night.js @@ -0,0 +1,18 @@ +define("ace/theme/cloud9_night-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-cloud9-night .ace_gutter {\n background: #303130;\n color: #eee\n}\n\n.ace-cloud9-night .ace_print-margin {\n width: 1px;\n background: #222\n}\n\n.ace-cloud9-night {\n background-color: #181818;\n color: #EBEBEB\n}\n\n.ace-cloud9-night .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-cloud9-night.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #000000;\n border-radius: 2px\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #888888\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_highlight {\n border: 1px solid rgb(110, 119, 0);\n border-bottom: 0;\n box-shadow: inset 0 -1px rgb(110, 119, 0);\n margin: -1px 0 0 -1px;\n background: rgba(255, 235, 0, 0.1);\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_active-line {\n background: #292929\n}\n\n.ace-cloud9-night .ace_gutter-active-line {\n background-color: #3D3D3D\n}\n\n.ace-cloud9-night .ace_stack {\n background-color: rgb(66, 90, 44)\n}\n\n.ace-cloud9-night .ace_marker-layer .ace_selected-word {\n border: 1px solid #888888\n}\n\n.ace-cloud9-night .ace_invisible {\n color: #343434\n}\n\n.ace-cloud9-night .ace_keyword,\n.ace-cloud9-night .ace_meta,\n.ace-cloud9-night .ace_storage,\n.ace-cloud9-night .ace_storage.ace_type,\n.ace-cloud9-night .ace_support.ace_type {\n color: #C397D8\n}\n\n.ace-cloud9-night .ace_keyword.ace_operator {\n color: #70C0B1\n}\n\n.ace-cloud9-night .ace_constant.ace_character,\n.ace-cloud9-night .ace_constant.ace_language,\n.ace-cloud9-night .ace_constant.ace_numeric,\n.ace-cloud9-night .ace_keyword.ace_other.ace_unit,\n.ace-cloud9-night .ace_support.ace_constant,\n.ace-cloud9-night .ace_variable.ace_parameter {\n color: #E78C45\n}\n\n.ace-cloud9-night .ace_constant.ace_other {\n color: #EEEEEE\n}\n\n.ace-cloud9-night .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-cloud9-night .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-cloud9-night .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-cloud9-night .ace_entity.ace_name.ace_function,\n.ace-cloud9-night .ace_support.ace_function,\n.ace-cloud9-night .ace_variable:not(.ace_parameter),\n.ace-cloud9-night .ace_constant:not(.ace_numeric) {\n color: #7AA6DA\n}\n\n.ace-cloud9-night .ace_support.ace_class,\n.ace-cloud9-night .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-cloud9-night .ace_heading,\n.ace-cloud9-night .ace_markup.ace_heading,\n.ace-cloud9-night .ace_string {\n color: #B9CA4A\n}\n\n.ace-cloud9-night .ace_entity.ace_name.ace_tag,\n.ace-cloud9-night .ace_entity.ace_other.ace_attribute-name,\n.ace-cloud9-night .ace_meta.ace_tag,\n.ace-cloud9-night .ace_string.ace_regexp,\n.ace-cloud9-night .ace_variable {\n color: #D54E53\n}\n\n.ace-cloud9-night .ace_comment {\n color: #969896\n}\n\n.ace-cloud9-night .ace_c9searchresults.ace_keyword {\n color: #C2C280;\n}\n\n.ace-cloud9-night .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-cloud9-night .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +define("ace/theme/cloud9_night",["require","exports","module","ace/theme/cloud9_night-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-cloud9-night"; +exports.cssText = require("./cloud9_night-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); (function() { + window.require(["ace/theme/cloud9_night"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-cloud9_night_low_color.js b/vendor/assets/javascripts/ace/theme-cloud9_night_low_color.js new file mode 100644 index 00000000..30821734 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-cloud9_night_low_color.js @@ -0,0 +1,18 @@ +define("ace/theme/cloud9_night_low_color-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-cloud9-night-low-color .ace_gutter {\n background: #303130;\n color: #eee\n}\n\n.ace-cloud9-night-low-color .ace_print-margin {\n width: 1px;\n background: #222\n}\n\n.ace-cloud9-night-low-color {\n background-color: #181818;\n color: #EBEBEB\n}\n\n.ace-cloud9-night-low-color .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-cloud9-night-low-color.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #000000;\n border-radius: 2px\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #888888\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_highlight {\n border: 1px solid rgb(110, 119, 0);\n border-bottom: 0;\n box-shadow: inset 0 -1px rgb(110, 119, 0);\n margin: -1px 0 0 -1px;\n background: rgba(255, 235, 0, 0.1);\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_active-line {\n background: #292929\n}\n\n.ace-cloud9-night-low-color .ace_gutter-active-line {\n background-color: #3D3D3D\n}\n\n.ace-cloud9-night-low-color .ace_stack {\n background-color: rgb(66, 90, 44)\n}\n\n.ace-cloud9-night-low-color .ace_marker-layer .ace_selected-word {\n border: 1px solid #888888\n}\n\n.ace-cloud9-night-low-color .ace_invisible {\n color: #343434\n}\n\n.ace-cloud9-night-low-color .ace_keyword,\n.ace-cloud9-night-low-color .ace_meta,\n.ace-cloud9-night-low-color .ace_storage {\n color: #C397D8\n}\n\n.ace-cloud9-night-low-color .ace_keyword.ace_operator {\n color: #70C0B1\n}\n\n.ace-cloud9-night-low-color .ace_constant.ace_character,\n.ace-cloud9-night-low-color .ace_constant.ace_language,\n.ace-cloud9-night-low-color .ace_constant.ace_numeric,\n.ace-cloud9-night-low-color .ace_keyword.ace_other.ace_unit {\n color: #DAA637\n}\n\n.ace-cloud9-night-low-color .ace_constant.ace_other {\n color: #EEEEEE\n}\n\n.ace-cloud9-night-low-color .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-cloud9-night-low-color .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-cloud9-night-low-color .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-cloud9-night-low-color .ace_entity.ace_name.ace_function,\n.ace-cloud9-night-low-color .ace_support.ace_function,\n.ace-cloud9-night-low-color .ace_variable:not(.ace_parameter),\n.ace-cloud9-night-low-color .ace_constant:not(.ace_numeric) {\n color: #7AA6DA\n}\n\n.ace-cloud9-night-low-color .ace_support.ace_class,\n.ace-cloud9-night-low-color .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-cloud9-night-low-color .ace_heading,\n.ace-cloud9-night-low-color .ace_markup.ace_heading,\n.ace-cloud9-night-low-color .ace_string {\n color: #B9CA4A\n}\n\n.ace-cloud9-night-low-color .ace_comment {\n color: #969896\n}\n\n.ace-cloud9-night-low-color .ace_c9searchresults.ace_keyword {\n color: #C2C280;\n}\n\n.ace-cloud9-night-low-color .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-cloud9-night-low-color .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +define("ace/theme/cloud9_night_low_color",["require","exports","module","ace/theme/cloud9_night_low_color-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-cloud9-night-low-color"; +exports.cssText = require("./cloud9_night_low_color-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); (function() { + window.require(["ace/theme/cloud9_night_low_color"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-cloud_editor.js b/vendor/assets/javascripts/ace/theme-cloud_editor.js new file mode 100644 index 00000000..7afa881f --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-cloud_editor.js @@ -0,0 +1,18 @@ +define("ace/theme/cloud_editor-css",["require","exports","module"], function(require, exports, module){module.exports = "\n.ace-cloud_editor .ace_gutter {\n background: #ffffff;\n color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_tooltip-marker-error.ace_tooltip-marker {\n background-color: #d13212;\n}\n.ace-cloud_editor .ace_tooltip-marker-warning.ace_tooltip-marker {\n background-color: #906806;\n}\n\n.ace-cloud_editor .ace_print-margin {\n width: 1px;\n background: #697077;\n}\n\n.ace-cloud_editor {\n background-color: #ffffff;\n color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_cursor {\n color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_selection {\n background: #bfceff;\n}\n\n.ace-cloud_editor.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #ffffff;\n border-radius: 2px;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_step {\n background: #697077;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_bracket {\n margin: 0 0 0 -1px;\n border: 1px solid #697077;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_active-line {\n box-sizing: border-box;\n border-top: 1px solid #9191ac;\n border-bottom: 1px solid #9191ac;\n}\n\n.ace-cloud_editor .ace_gutter-cell_svg-icons {\n box-sizing: border-box;\n border-top: 1px solid #ffffff;\n border-bottom: 1px solid #ffffff;\n}\n\n.ace-cloud_editor .ace_gutter-active-line {\n background-repeat: no-repeat;\n box-sizing: border-box;\n border-top: 1px solid #9191ac;\n border-bottom: 1px solid #9191ac;\n}\n\n.ace-cloud_editor .ace_marker-layer .ace_selected-word {\n border: 1px solid #bfceff;\n}\n\n.ace-cloud_editor .ace_fold {\n background-color: #2963d6;\n border-color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_keyword {\n color: #9749d1;\n}\n\n.ace-cloud_editor .ace_meta.ace_tag {\n color: #d1000a;\n}\n\n.ace-cloud_editor .ace_constant {\n color: #a26202;\n}\n\n.ace-cloud_editor .ace_constant.ace_numeric {\n color: #a26202;\n}\n\n.ace-cloud_editor .ace_constant.ace_character.ace_escape {\n color: #d91792;\n}\n\n.ace-cloud_editor .ace_support.ace_function {\n color: #2963d6;\n}\n\n.ace-cloud_editor .ace_support.ace_class {\n color: #a26202;\n}\n\n.ace-cloud_editor .ace_storage {\n color: #9749d1;\n}\n\n.ace-cloud_editor .ace_invalid.ace_illegal {\n color: #ffffff;\n background-color: #d1000a;\n}\n\n.ace-cloud_editor .ace_invalid.ace_deprecated {\n color: #ffffff;\n background-color: #a26202;\n}\n\n.ace-cloud_editor .ace_string {\n color: #218000;\n}\n\n.ace-cloud_editor .ace_string.ace_regexp {\n color: #218000;\n}\n\n.ace-cloud_editor .ace_comment,\n.ace-cloud_editor .ace_ghost_text {\n color: #697077;\n opacity: 1;\n}\n\n.ace-cloud_editor .ace_variable {\n color: #d1000a;\n}\n\n.ace-cloud_editor .ace_meta.ace_selector {\n color: #9749d1;\n}\n\n.ace-cloud_editor .ace_entity.ace_other.ace_attribute-name {\n color: #a26202;\n}\n\n.ace-cloud_editor .ace_entity.ace_name.ace_function {\n color: #2963d6;\n}\n\n.ace-cloud_editor .ace_entity.ace_name.ace_tag {\n color: #d1000a;\n}\n\n.ace-cloud_editor .ace_heading {\n color: #2963d6;\n}\n\n.ace-cloud_editor .ace_xml-pe {\n color: #a26202;\n}\n.ace-cloud_editor .ace_doctype {\n color: #d1000a;\n}\n\n.ace-cloud_editor .ace_tooltip {\n background-color: #ffffff;\n color: #3a3a42;\n}\n\n.ace-cloud_editor .ace_icon_svg.ace_error,\n.ace-cloud_editor .ace_icon_svg.ace_error_fold {\n background-color: #d13212;\n}\n.ace-cloud_editor .ace_icon_svg.ace_warning,\n.ace-cloud_editor .ace_icon_svg.ace_warning_fold {\n background-color: #906806;\n}\n.ace-cloud_editor .ace_icon_svg.ace_info {\n background-color: #0073bb;\n}\n.ace-cloud_editor .ace_highlight-marker {\n background: none;\n border: #2963d6 1px solid;\n}\n.ace-cloud_editor .ace_tooltip.ace_hover-tooltip:focus > div {\n outline: 1px solid #0073bb;\n}\n.ace-cloud_editor .ace_snippet-marker {\n background-color: #CED6E0;\n border: 0;\n}\n\n.ace-cloud_editor.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #f2f3f3;\n border: #0F68AE 1.5px solid;\n}\n.ace-cloud_editor.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #16191f;\n background: #f2f3f3;\n}\n.ace-cloud_editor.ace_editor.ace_autocomplete .ace_completion-meta {\n color: #545b64;\n}\n.ace-cloud_editor.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #0F68AE;\n}\n.ace-cloud_editor.ace_editor.ace_autocomplete {\n box-shadow: 0 1px 1px 0 #001c244d, 1px 1px 1px 0 #001c2426, -1px 1px 1px 0 #001c2426;\n line-height: 1.5;\n border: 1px solid #eaeded;\n background: #ffffff;\n color: #16191f;\n}\n\n"; + +}); + +define("ace/theme/cloud_editor",["require","exports","module","ace/theme/cloud_editor-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-cloud_editor"; +exports.cssText = require("./cloud_editor-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/cloud_editor"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-cloud_editor_dark.js b/vendor/assets/javascripts/ace/theme-cloud_editor_dark.js new file mode 100644 index 00000000..6eb1e774 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-cloud_editor_dark.js @@ -0,0 +1,18 @@ +define("ace/theme/cloud_editor_dark-css",["require","exports","module"], function(require, exports, module){module.exports = "\n.ace-cloud_editor_dark .ace_gutter {\n background: #282c34;\n color: #8e96a9;\n}\n\n.ace-cloud_editor_dark.ace_dark .ace_tooltip-marker-error.ace_tooltip-marker {\n background-color: #ff5d64;\n}\n.ace-cloud_editor_dark.ace_dark .ace_tooltip-marker-warning.ace_tooltip-marker {\n background-color: #e0ca57;\n}\n\n.ace-cloud_editor_dark .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-cloud_editor_dark {\n background-color: #282c34;\n color: #dcdfe4;\n}\n\n.ace-cloud_editor_dark .ace_cursor {\n color: #66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_selection {\n background: #213a70;\n}\n\n.ace-cloud_editor_dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #8e96a9;\n border-radius: 2px;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_step {\n background: #6fb342;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_bracket {\n margin: 0 0 0 -1px;\n border: 1px solid #e8e8e8;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_active-line {\n box-sizing: border-box;\n border-top: 1px solid #75777a;\n border-bottom: 1px solid #75777a;\n}\n\n.ace-cloud_editor_dark .ace_gutter-cell_svg-icons {\n box-sizing: border-box;\n border-top: 1px solid #282c34;\n border-bottom: 1px solid #282c34;\n}\n\n.ace-cloud_editor_dark .ace_gutter-active-line {\n background-repeat: no-repeat;\n box-sizing: border-box;\n border-top: 1px solid #75777a;\n border-bottom: 1px solid #75777a;\n}\n\n.ace-cloud_editor_dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #282c34;\n}\n\n.ace-cloud_editor_dark .ace_fold {\n background-color: #66b2f0;\n border-color: #dcdfe4;\n}\n\n.ace-cloud_editor_dark .ace_keyword {\n color: #c674dc;\n}\n\n.ace-cloud_editor_dark .ace_constant {\n color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_constant.ace_numeric {\n color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_constant.ace_character.ace_escape {\n color: #71ccc7;\n}\n\n.ace-cloud_editor_dark .ace_support.ace_function {\n color: #66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_support.ace_class {\n color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_storage {\n color: #c674dc;\n}\n\n.ace-cloud_editor_dark .ace_invalid.ace_illegal {\n color: #dcdfe4;\n background-color: #e96a71;\n}\n\n.ace-cloud_editor_dark .ace_invalid.ace_deprecated {\n color: #dcdfe4;\n background-color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_string {\n color: #6fb342;\n}\n\n.ace-cloud_editor_dark .ace_string.ace_regexp {\n color: #6fb342;\n}\n\n.ace-cloud_editor_dark .ace_comment,\n.ace-cloud_editor_dark .ace_ghost_text {\n color: #b5bac0;\n opacity: 1;\n}\n\n.ace-cloud_editor_dark .ace_variable {\n color: #e96a71;\n}\n\n.ace-cloud_editor_dark .ace_meta.ace_selector {\n color: #c674dc;\n}\n\n.ace-cloud_editor_dark .ace_entity.ace_other.ace_attribute-name {\n color: #e5c383;\n}\n\n.ace-cloud_editor_dark .ace_entity.ace_name.ace_function {\n color: #66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_entity.ace_name.ace_tag {\n color: #e96a71;\n}\n.ace-cloud_editor_dark .ace_heading {\n color: #66b2f0;\n}\n\n.ace-cloud_editor_dark .ace_xml-pe {\n color: #e5c383;\n}\n.ace-cloud_editor_dark .ace_doctype {\n color: #e96a71;\n}\n\n.ace-cloud_editor_dark .ace_entity.ace_name.ace_tag,\n.ace-cloud_editor_dark .ace_entity.ace_other.ace_attribute-name,\n.ace-cloud_editor_dark .ace_meta.ace_tag,\n.ace-cloud_editor_dark .ace_string.ace_regexp,\n.ace-cloud_editor_dark .ace_variable {\n color: #e96a71;\n}\n\n.ace-cloud_editor_dark .ace_tooltip {\n background-color: #282c34;\n color: #dcdfe4;\n}\n\n.ace-cloud_editor_dark .ace_icon_svg.ace_error,\n.ace-cloud_editor_dark .ace_icon_svg.ace_error_fold {\n background-color: #ff5d64;\n}\n.ace-cloud_editor_dark .ace_icon_svg.ace_warning,\n.ace-cloud_editor_dark .ace_icon_svg.ace_warning_fold {\n background-color: #e0ca57;\n}\n.ace-cloud_editor_dark .ace_icon_svg.ace_info {\n background-color: #44b9d6;\n}\n.ace-cloud_editor_dark .ace_highlight-marker {\n background: none;\n border: #66b2f0 1px solid;\n}\n.ace-cloud_editor_dark .ace_tooltip.ace_hover-tooltip:focus > div {\n outline: 1px solid #44b9d6;\n}\n.ace-cloud_editor_dark .ace_snippet-marker {\n background-color: #434650;\n border: 0;\n}\n\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line {\n background-color: #272A30;\n border: #299FBC 1.5px solid;\n}\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete .ace_line-hover {\n border: 1px solid #d5dbdb;\n background: #272A30;\n}\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete .ace_completion-meta {\n color: #ACB8B9;\n}\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{\n color: #2AA0BC;\n}\n.ace-cloud_editor_dark.ace_dark.ace_editor.ace_autocomplete {\n box-shadow: 0 1px 1px 0 #001c244d, 1px 1px 1px 0 #001c2426, -1px 1px 1px 0 #001c2426;\n line-height: 1.5;\n border: 1px solid #2a2e33;\n background: #050506;\n color: #ffffff;\n}\n\n"; + +}); + +define("ace/theme/cloud_editor_dark",["require","exports","module","ace/theme/cloud_editor_dark-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-cloud_editor_dark"; +exports.cssText = require("./cloud_editor_dark-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/cloud_editor_dark"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-clouds.js b/vendor/assets/javascripts/ace/theme-clouds.js index 0afddfcc..0adc9cf0 100644 --- a/vendor/assets/javascripts/ace/theme-clouds.js +++ b/vendor/assets/javascripts/ace/theme-clouds.js @@ -1,95 +1,18 @@ -define("ace/theme/clouds",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/clouds-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-clouds .ace_gutter {\n background: #ebebeb;\n color: #333\n}\n\n.ace-clouds .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-clouds {\n background-color: #FFFFFF;\n color: #000000\n}\n\n.ace-clouds .ace_cursor {\n color: #000000\n}\n\n.ace-clouds .ace_marker-layer .ace_selection {\n background: #BDD5FC\n}\n\n.ace-clouds.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-clouds .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-clouds .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #BFBFBF\n}\n\n.ace-clouds .ace_marker-layer .ace_active-line {\n background: #FFFBD1\n}\n\n.ace-clouds .ace_gutter-active-line {\n background-color : #dcdcdc\n}\n\n.ace-clouds .ace_marker-layer .ace_selected-word {\n border: 1px solid #BDD5FC\n}\n\n.ace-clouds .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-clouds .ace_keyword,\n.ace-clouds .ace_meta,\n.ace-clouds .ace_support.ace_constant.ace_property-value {\n color: #AF956F\n}\n\n.ace-clouds .ace_keyword.ace_operator {\n color: #484848\n}\n\n.ace-clouds .ace_keyword.ace_other.ace_unit {\n color: #96DC5F\n}\n\n.ace-clouds .ace_constant.ace_language {\n color: #39946A\n}\n\n.ace-clouds .ace_constant.ace_numeric {\n color: #46A609\n}\n\n.ace-clouds .ace_constant.ace_character.ace_entity {\n color: #BF78CC\n}\n\n.ace-clouds .ace_invalid {\n background-color: #FF002A\n}\n\n.ace-clouds .ace_fold {\n background-color: #AF956F;\n border-color: #000000\n}\n\n.ace-clouds .ace_storage,\n.ace-clouds .ace_support.ace_class,\n.ace-clouds .ace_support.ace_function,\n.ace-clouds .ace_support.ace_other,\n.ace-clouds .ace_support.ace_type {\n color: #C52727\n}\n\n.ace-clouds .ace_string {\n color: #5D90CD\n}\n\n.ace-clouds .ace_comment {\n color: #BCC8BA\n}\n\n.ace-clouds .ace_entity.ace_name.ace_tag,\n.ace-clouds .ace_entity.ace_other.ace_attribute-name {\n color: #606060\n}\n\n.ace-clouds .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\n}\n\n.ace-clouds .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.isDark = false; -exports.cssClass = "ace-clouds"; -exports.cssText = ".ace-clouds .ace_gutter {\ -background: #ebebeb;\ -color: #333\ -}\ -.ace-clouds .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-clouds {\ -background-color: #FFFFFF;\ -color: #000000\ -}\ -.ace-clouds .ace_cursor {\ -color: #000000\ -}\ -.ace-clouds .ace_marker-layer .ace_selection {\ -background: #BDD5FC\ -}\ -.ace-clouds.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -}\ -.ace-clouds .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-clouds .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-clouds .ace_marker-layer .ace_active-line {\ -background: #FFFBD1\ -}\ -.ace-clouds .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-clouds .ace_marker-layer .ace_selected-word {\ -border: 1px solid #BDD5FC\ -}\ -.ace-clouds .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-clouds .ace_keyword,\ -.ace-clouds .ace_meta,\ -.ace-clouds .ace_support.ace_constant.ace_property-value {\ -color: #AF956F\ -}\ -.ace-clouds .ace_keyword.ace_operator {\ -color: #484848\ -}\ -.ace-clouds .ace_keyword.ace_other.ace_unit {\ -color: #96DC5F\ -}\ -.ace-clouds .ace_constant.ace_language {\ -color: #39946A\ -}\ -.ace-clouds .ace_constant.ace_numeric {\ -color: #46A609\ -}\ -.ace-clouds .ace_constant.ace_character.ace_entity {\ -color: #BF78CC\ -}\ -.ace-clouds .ace_invalid {\ -background-color: #FF002A\ -}\ -.ace-clouds .ace_fold {\ -background-color: #AF956F;\ -border-color: #000000\ -}\ -.ace-clouds .ace_storage,\ -.ace-clouds .ace_support.ace_class,\ -.ace-clouds .ace_support.ace_function,\ -.ace-clouds .ace_support.ace_other,\ -.ace-clouds .ace_support.ace_type {\ -color: #C52727\ -}\ -.ace-clouds .ace_string {\ -color: #5D90CD\ -}\ -.ace-clouds .ace_comment {\ -color: #BCC8BA\ -}\ -.ace-clouds .ace_entity.ace_name.ace_tag,\ -.ace-clouds .ace_entity.ace_other.ace_attribute-name {\ -color: #606060\ -}\ -.ace-clouds .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/clouds",["require","exports","module","ace/theme/clouds-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-clouds"; +exports.cssText = require("./clouds-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/clouds"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-clouds_midnight.js b/vendor/assets/javascripts/ace/theme-clouds_midnight.js index 6d439f5f..08739da0 100644 --- a/vendor/assets/javascripts/ace/theme-clouds_midnight.js +++ b/vendor/assets/javascripts/ace/theme-clouds_midnight.js @@ -1,96 +1,18 @@ -define("ace/theme/clouds_midnight",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/clouds_midnight-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-clouds-midnight .ace_gutter {\n background: #232323;\n color: #929292\n}\n\n.ace-clouds-midnight .ace_print-margin {\n width: 1px;\n background: #232323\n}\n\n.ace-clouds-midnight {\n background-color: #191919;\n color: #929292\n}\n\n.ace-clouds-midnight .ace_cursor {\n color: #7DA5DC\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_selection {\n background: #000000\n}\n\n.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #191919;\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #BFBFBF\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_active-line {\n background: rgba(215, 215, 215, 0.031)\n}\n\n.ace-clouds-midnight .ace_gutter-active-line {\n background-color: rgba(215, 215, 215, 0.031)\n}\n\n.ace-clouds-midnight .ace_marker-layer .ace_selected-word {\n border: 1px solid #000000\n}\n\n.ace-clouds-midnight .ace_invisible {\n color: #666\n}\n\n.ace-clouds-midnight .ace_keyword,\n.ace-clouds-midnight .ace_meta,\n.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {\n color: #927C5D\n}\n\n.ace-clouds-midnight .ace_keyword.ace_operator {\n color: #4B4B4B\n}\n\n.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {\n color: #366F1A\n}\n\n.ace-clouds-midnight .ace_constant.ace_language {\n color: #39946A\n}\n\n.ace-clouds-midnight .ace_constant.ace_numeric {\n color: #46A609\n}\n\n.ace-clouds-midnight .ace_constant.ace_character.ace_entity {\n color: #A165AC\n}\n\n.ace-clouds-midnight .ace_invalid {\n color: #FFFFFF;\n background-color: #E92E2E\n}\n\n.ace-clouds-midnight .ace_fold {\n background-color: #927C5D;\n border-color: #929292\n}\n\n.ace-clouds-midnight .ace_storage,\n.ace-clouds-midnight .ace_support.ace_class,\n.ace-clouds-midnight .ace_support.ace_function,\n.ace-clouds-midnight .ace_support.ace_other,\n.ace-clouds-midnight .ace_support.ace_type {\n color: #E92E2E\n}\n\n.ace-clouds-midnight .ace_string {\n color: #5D90CD\n}\n\n.ace-clouds-midnight .ace_comment {\n color: #3C403B\n}\n\n.ace-clouds-midnight .ace_entity.ace_name.ace_tag,\n.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {\n color: #606060\n}\n\n.ace-clouds-midnight .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-clouds-midnight .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-clouds-midnight"; -exports.cssText = ".ace-clouds-midnight .ace_gutter {\ -background: #232323;\ -color: #929292\ -}\ -.ace-clouds-midnight .ace_print-margin {\ -width: 1px;\ -background: #232323\ -}\ -.ace-clouds-midnight {\ -background-color: #191919;\ -color: #929292\ -}\ -.ace-clouds-midnight .ace_cursor {\ -color: #7DA5DC\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_selection {\ -background: #000000\ -}\ -.ace-clouds-midnight.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #191919;\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_active-line {\ -background: rgba(215, 215, 215, 0.031)\ -}\ -.ace-clouds-midnight .ace_gutter-active-line {\ -background-color: rgba(215, 215, 215, 0.031)\ -}\ -.ace-clouds-midnight .ace_marker-layer .ace_selected-word {\ -border: 1px solid #000000\ -}\ -.ace-clouds-midnight .ace_invisible {\ -color: #666\ -}\ -.ace-clouds-midnight .ace_keyword,\ -.ace-clouds-midnight .ace_meta,\ -.ace-clouds-midnight .ace_support.ace_constant.ace_property-value {\ -color: #927C5D\ -}\ -.ace-clouds-midnight .ace_keyword.ace_operator {\ -color: #4B4B4B\ -}\ -.ace-clouds-midnight .ace_keyword.ace_other.ace_unit {\ -color: #366F1A\ -}\ -.ace-clouds-midnight .ace_constant.ace_language {\ -color: #39946A\ -}\ -.ace-clouds-midnight .ace_constant.ace_numeric {\ -color: #46A609\ -}\ -.ace-clouds-midnight .ace_constant.ace_character.ace_entity {\ -color: #A165AC\ -}\ -.ace-clouds-midnight .ace_invalid {\ -color: #FFFFFF;\ -background-color: #E92E2E\ -}\ -.ace-clouds-midnight .ace_fold {\ -background-color: #927C5D;\ -border-color: #929292\ -}\ -.ace-clouds-midnight .ace_storage,\ -.ace-clouds-midnight .ace_support.ace_class,\ -.ace-clouds-midnight .ace_support.ace_function,\ -.ace-clouds-midnight .ace_support.ace_other,\ -.ace-clouds-midnight .ace_support.ace_type {\ -color: #E92E2E\ -}\ -.ace-clouds-midnight .ace_string {\ -color: #5D90CD\ -}\ -.ace-clouds-midnight .ace_comment {\ -color: #3C403B\ -}\ -.ace-clouds-midnight .ace_entity.ace_name.ace_tag,\ -.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name {\ -color: #606060\ -}\ -.ace-clouds-midnight .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/clouds_midnight",["require","exports","module","ace/theme/clouds_midnight-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-clouds-midnight"; +exports.cssText = require("./clouds_midnight-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/clouds_midnight"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-cobalt.js b/vendor/assets/javascripts/ace/theme-cobalt.js index e013de5d..53697f67 100644 --- a/vendor/assets/javascripts/ace/theme-cobalt.js +++ b/vendor/assets/javascripts/ace/theme-cobalt.js @@ -1,113 +1,18 @@ -define("ace/theme/cobalt",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/cobalt-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-cobalt .ace_gutter {\n background: #011e3a;\n color: rgb(128,145,160)\n}\n\n.ace-cobalt .ace_print-margin {\n width: 1px;\n background: #555555\n}\n\n.ace-cobalt {\n background-color: #002240;\n color: #FFFFFF\n}\n\n.ace-cobalt .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-cobalt .ace_marker-layer .ace_selection {\n background: rgba(179, 101, 57, 0.75)\n}\n\n.ace-cobalt.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002240;\n}\n\n.ace-cobalt .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-cobalt .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.15)\n}\n\n.ace-cobalt .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.35)\n}\n\n.ace-cobalt .ace_gutter-active-line {\n background-color: rgba(0, 0, 0, 0.35)\n}\n\n.ace-cobalt .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(179, 101, 57, 0.75)\n}\n\n.ace-cobalt .ace_invisible {\n color: rgba(255, 255, 255, 0.15)\n}\n\n.ace-cobalt .ace_keyword,\n.ace-cobalt .ace_meta {\n color: #FF9D00\n}\n\n.ace-cobalt .ace_constant,\n.ace-cobalt .ace_constant.ace_character,\n.ace-cobalt .ace_constant.ace_character.ace_escape,\n.ace-cobalt .ace_constant.ace_other {\n color: #FF628C\n}\n\n.ace-cobalt .ace_invalid {\n color: #F8F8F8;\n background-color: #800F00\n}\n\n.ace-cobalt .ace_support {\n color: #80FFBB\n}\n\n.ace-cobalt .ace_support.ace_constant {\n color: #EB939A\n}\n\n.ace-cobalt .ace_fold {\n background-color: #FF9D00;\n border-color: #FFFFFF\n}\n\n.ace-cobalt .ace_support.ace_function {\n color: #FFB054\n}\n\n.ace-cobalt .ace_storage {\n color: #FFEE80\n}\n\n.ace-cobalt .ace_entity {\n color: #FFDD00\n}\n\n.ace-cobalt .ace_string {\n color: #3AD900\n}\n\n.ace-cobalt .ace_string.ace_regexp {\n color: #80FFC2\n}\n\n.ace-cobalt .ace_comment {\n font-style: italic;\n color: #0088FF\n}\n\n.ace-cobalt .ace_heading,\n.ace-cobalt .ace_markup.ace_heading {\n color: #C8E4FD;\n background-color: #001221\n}\n\n.ace-cobalt .ace_list,\n.ace-cobalt .ace_markup.ace_list {\n background-color: #130D26\n}\n\n.ace-cobalt .ace_variable {\n color: #CCCCCC\n}\n\n.ace-cobalt .ace_variable.ace_language {\n color: #FF80E1\n}\n\n.ace-cobalt .ace_meta.ace_tag {\n color: #9EFFFF\n}\n\n.ace-cobalt .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-cobalt .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-cobalt"; -exports.cssText = ".ace-cobalt .ace_gutter {\ -background: #011e3a;\ -color: rgb(128,145,160)\ -}\ -.ace-cobalt .ace_print-margin {\ -width: 1px;\ -background: #555555\ -}\ -.ace-cobalt {\ -background-color: #002240;\ -color: #FFFFFF\ -}\ -.ace-cobalt .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-cobalt .ace_marker-layer .ace_selection {\ -background: rgba(179, 101, 57, 0.75)\ -}\ -.ace-cobalt.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002240;\ -}\ -.ace-cobalt .ace_marker-layer .ace_step {\ -background: rgb(127, 111, 19)\ -}\ -.ace-cobalt .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.15)\ -}\ -.ace-cobalt .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.35)\ -}\ -.ace-cobalt .ace_gutter-active-line {\ -background-color: rgba(0, 0, 0, 0.35)\ -}\ -.ace-cobalt .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(179, 101, 57, 0.75)\ -}\ -.ace-cobalt .ace_invisible {\ -color: rgba(255, 255, 255, 0.15)\ -}\ -.ace-cobalt .ace_keyword,\ -.ace-cobalt .ace_meta {\ -color: #FF9D00\ -}\ -.ace-cobalt .ace_constant,\ -.ace-cobalt .ace_constant.ace_character,\ -.ace-cobalt .ace_constant.ace_character.ace_escape,\ -.ace-cobalt .ace_constant.ace_other {\ -color: #FF628C\ -}\ -.ace-cobalt .ace_invalid {\ -color: #F8F8F8;\ -background-color: #800F00\ -}\ -.ace-cobalt .ace_support {\ -color: #80FFBB\ -}\ -.ace-cobalt .ace_support.ace_constant {\ -color: #EB939A\ -}\ -.ace-cobalt .ace_fold {\ -background-color: #FF9D00;\ -border-color: #FFFFFF\ -}\ -.ace-cobalt .ace_support.ace_function {\ -color: #FFB054\ -}\ -.ace-cobalt .ace_storage {\ -color: #FFEE80\ -}\ -.ace-cobalt .ace_entity {\ -color: #FFDD00\ -}\ -.ace-cobalt .ace_string {\ -color: #3AD900\ -}\ -.ace-cobalt .ace_string.ace_regexp {\ -color: #80FFC2\ -}\ -.ace-cobalt .ace_comment {\ -font-style: italic;\ -color: #0088FF\ -}\ -.ace-cobalt .ace_heading,\ -.ace-cobalt .ace_markup.ace_heading {\ -color: #C8E4FD;\ -background-color: #001221\ -}\ -.ace-cobalt .ace_list,\ -.ace-cobalt .ace_markup.ace_list {\ -background-color: #130D26\ -}\ -.ace-cobalt .ace_variable {\ -color: #CCCCCC\ -}\ -.ace-cobalt .ace_variable.ace_language {\ -color: #FF80E1\ -}\ -.ace-cobalt .ace_meta.ace_tag {\ -color: #9EFFFF\ -}\ -.ace-cobalt .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHCLSvkPAAP3AgSDTRd4AAAAAElFTkSuQmCC) right repeat-y\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/cobalt",["require","exports","module","ace/theme/cobalt-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-cobalt"; +exports.cssText = require("./cobalt-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/cobalt"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-crimson_editor.js b/vendor/assets/javascripts/ace/theme-crimson_editor.js index a71cf6a4..93d240f7 100644 --- a/vendor/assets/javascripts/ace/theme-crimson_editor.js +++ b/vendor/assets/javascripts/ace/theme-crimson_editor.js @@ -1,118 +1,18 @@ -define("ace/theme/crimson_editor",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -exports.isDark = false; -exports.cssText = ".ace-crimson-editor .ace_gutter {\ -background: #ebebeb;\ -color: #333;\ -overflow : hidden;\ -}\ -.ace-crimson-editor .ace_gutter-layer {\ -width: 100%;\ -text-align: right;\ -}\ -.ace-crimson-editor .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-crimson-editor {\ -background-color: #FFFFFF;\ -color: rgb(64, 64, 64);\ -}\ -.ace-crimson-editor .ace_cursor {\ -color: black;\ -}\ -.ace-crimson-editor .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-crimson-editor .ace_identifier {\ -color: black;\ -}\ -.ace-crimson-editor .ace_keyword {\ -color: blue;\ -}\ -.ace-crimson-editor .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-crimson-editor .ace_constant.ace_language {\ -color: rgb(255, 156, 0);\ -}\ -.ace-crimson-editor .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-crimson-editor .ace_invalid {\ -text-decoration: line-through;\ -color: rgb(224, 0, 0);\ -}\ -.ace-crimson-editor .ace_fold {\ -}\ -.ace-crimson-editor .ace_support.ace_function {\ -color: rgb(192, 0, 0);\ -}\ -.ace-crimson-editor .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-crimson-editor .ace_support.ace_type,\ -.ace-crimson-editor .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-crimson-editor .ace_keyword.ace_operator {\ -color: rgb(49, 132, 149);\ -}\ -.ace-crimson-editor .ace_string {\ -color: rgb(128, 0, 128);\ -}\ -.ace-crimson-editor .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-crimson-editor .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-crimson-editor .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-crimson-editor .ace_constant.ace_numeric {\ -color: rgb(0, 0, 64);\ -}\ -.ace-crimson-editor .ace_variable {\ -color: rgb(0, 64, 128);\ -}\ -.ace-crimson-editor .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_active-line {\ -background: rgb(232, 242, 254);\ -}\ -.ace-crimson-editor .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-crimson-editor .ace_meta.ace_tag {\ -color:rgb(28, 2, 255);\ -}\ -.ace-crimson-editor .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-crimson-editor .ace_string.ace_regex {\ -color: rgb(192, 0, 192);\ -}\ -.ace-crimson-editor .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; +define("ace/theme/crimson_editor-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-crimson-editor .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow : hidden;\n}\n\n.ace-crimson-editor .ace_gutter-layer {\n width: 100%;\n text-align: right;\n}\n\n.ace-crimson-editor .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-crimson-editor {\n background-color: #FFFFFF;\n color: rgb(64, 64, 64);\n}\n\n.ace-crimson-editor .ace_cursor {\n color: black;\n}\n\n.ace-crimson-editor .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-crimson-editor .ace_identifier {\n color: black;\n}\n\n.ace-crimson-editor .ace_keyword {\n color: blue;\n}\n\n.ace-crimson-editor .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-crimson-editor .ace_constant.ace_language {\n color: rgb(255, 156, 0);\n}\n\n.ace-crimson-editor .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-crimson-editor .ace_invalid {\n text-decoration: line-through;\n color: rgb(224, 0, 0);\n}\n\n.ace-crimson-editor .ace_fold {\n}\n\n.ace-crimson-editor .ace_support.ace_function {\n color: rgb(192, 0, 0);\n}\n\n.ace-crimson-editor .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-crimson-editor .ace_support.ace_type,\n.ace-crimson-editor .ace_support.ace_class {\n color: rgb(109, 121, 222);\n}\n\n.ace-crimson-editor .ace_keyword.ace_operator {\n color: rgb(49, 132, 149);\n}\n\n.ace-crimson-editor .ace_string {\n color: rgb(128, 0, 128);\n}\n\n.ace-crimson-editor .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-crimson-editor .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-crimson-editor .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-crimson-editor .ace_constant.ace_numeric {\n color: rgb(0, 0, 64);\n}\n\n.ace-crimson-editor .ace_variable {\n color: rgb(0, 64, 128);\n}\n\n.ace-crimson-editor .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_active-line {\n background: rgb(232, 242, 254);\n}\n\n.ace-crimson-editor .ace_gutter-active-line {\n background-color : #dcdcdc;\n}\n\n.ace-crimson-editor .ace_meta.ace_tag {\n color:rgb(28, 2, 255);\n}\n\n.ace-crimson-editor .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-crimson-editor .ace_string.ace_regex {\n color: rgb(192, 0, 192);\n}\n\n.ace-crimson-editor .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-crimson-editor .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.cssClass = "ace-crimson-editor"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/crimson_editor",["require","exports","module","ace/theme/crimson_editor-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssText = require("./crimson_editor-css"); +exports.cssClass = "ace-crimson-editor"; +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/crimson_editor"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-dawn.js b/vendor/assets/javascripts/ace/theme-dawn.js index ffbc2b86..46817fe1 100644 --- a/vendor/assets/javascripts/ace/theme-dawn.js +++ b/vendor/assets/javascripts/ace/theme-dawn.js @@ -1,108 +1,18 @@ -define("ace/theme/dawn",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/dawn-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-dawn .ace_gutter {\n background: #ebebeb;\n color: #333\n}\n\n.ace-dawn .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-dawn {\n background-color: #F9F9F9;\n color: #080808\n}\n\n.ace-dawn .ace_cursor {\n color: #000000\n}\n\n.ace-dawn .ace_marker-layer .ace_selection {\n background: rgba(39, 95, 255, 0.30)\n}\n\n.ace-dawn.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #F9F9F9;\n}\n\n.ace-dawn .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-dawn .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(75, 75, 126, 0.50)\n}\n\n.ace-dawn .ace_marker-layer .ace_active-line {\n background: rgba(36, 99, 180, 0.12)\n}\n\n.ace-dawn .ace_gutter-active-line {\n background-color : #dcdcdc\n}\n\n.ace-dawn .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(39, 95, 255, 0.30)\n}\n\n.ace-dawn .ace_invisible {\n color: rgba(75, 75, 126, 0.50)\n}\n\n.ace-dawn .ace_keyword,\n.ace-dawn .ace_meta {\n color: #794938\n}\n\n.ace-dawn .ace_constant,\n.ace-dawn .ace_constant.ace_character,\n.ace-dawn .ace_constant.ace_character.ace_escape,\n.ace-dawn .ace_constant.ace_other {\n color: #811F24\n}\n\n.ace-dawn .ace_invalid.ace_illegal {\n text-decoration: underline;\n font-style: italic;\n color: #F8F8F8;\n background-color: #B52A1D\n}\n\n.ace-dawn .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #B52A1D\n}\n\n.ace-dawn .ace_support {\n color: #691C97\n}\n\n.ace-dawn .ace_support.ace_constant {\n color: #B4371F\n}\n\n.ace-dawn .ace_fold {\n background-color: #794938;\n border-color: #080808\n}\n\n.ace-dawn .ace_list,\n.ace-dawn .ace_markup.ace_list,\n.ace-dawn .ace_support.ace_function {\n color: #693A17\n}\n\n.ace-dawn .ace_storage {\n font-style: italic;\n color: #A71D5D\n}\n\n.ace-dawn .ace_string {\n color: #0B6125\n}\n\n.ace-dawn .ace_string.ace_regexp {\n color: #CF5628\n}\n\n.ace-dawn .ace_comment {\n font-style: italic;\n color: #5A525F\n}\n\n.ace-dawn .ace_heading,\n.ace-dawn .ace_markup.ace_heading {\n color: #19356D\n}\n\n.ace-dawn .ace_variable {\n color: #234A97\n}\n\n.ace-dawn .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-dawn .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.isDark = false; -exports.cssClass = "ace-dawn"; -exports.cssText = ".ace-dawn .ace_gutter {\ -background: #ebebeb;\ -color: #333\ -}\ -.ace-dawn .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-dawn {\ -background-color: #F9F9F9;\ -color: #080808\ -}\ -.ace-dawn .ace_cursor {\ -color: #000000\ -}\ -.ace-dawn .ace_marker-layer .ace_selection {\ -background: rgba(39, 95, 255, 0.30)\ -}\ -.ace-dawn.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #F9F9F9;\ -}\ -.ace-dawn .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-dawn .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(75, 75, 126, 0.50)\ -}\ -.ace-dawn .ace_marker-layer .ace_active-line {\ -background: rgba(36, 99, 180, 0.12)\ -}\ -.ace-dawn .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-dawn .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(39, 95, 255, 0.30)\ -}\ -.ace-dawn .ace_invisible {\ -color: rgba(75, 75, 126, 0.50)\ -}\ -.ace-dawn .ace_keyword,\ -.ace-dawn .ace_meta {\ -color: #794938\ -}\ -.ace-dawn .ace_constant,\ -.ace-dawn .ace_constant.ace_character,\ -.ace-dawn .ace_constant.ace_character.ace_escape,\ -.ace-dawn .ace_constant.ace_other {\ -color: #811F24\ -}\ -.ace-dawn .ace_invalid.ace_illegal {\ -text-decoration: underline;\ -font-style: italic;\ -color: #F8F8F8;\ -background-color: #B52A1D\ -}\ -.ace-dawn .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #B52A1D\ -}\ -.ace-dawn .ace_support {\ -color: #691C97\ -}\ -.ace-dawn .ace_support.ace_constant {\ -color: #B4371F\ -}\ -.ace-dawn .ace_fold {\ -background-color: #794938;\ -border-color: #080808\ -}\ -.ace-dawn .ace_list,\ -.ace-dawn .ace_markup.ace_list,\ -.ace-dawn .ace_support.ace_function {\ -color: #693A17\ -}\ -.ace-dawn .ace_storage {\ -font-style: italic;\ -color: #A71D5D\ -}\ -.ace-dawn .ace_string {\ -color: #0B6125\ -}\ -.ace-dawn .ace_string.ace_regexp {\ -color: #CF5628\ -}\ -.ace-dawn .ace_comment {\ -font-style: italic;\ -color: #5A525F\ -}\ -.ace-dawn .ace_heading,\ -.ace-dawn .ace_markup.ace_heading {\ -color: #19356D\ -}\ -.ace-dawn .ace_variable {\ -color: #234A97\ -}\ -.ace-dawn .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLh/5+x/AAizA4hxNNsZAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/dawn",["require","exports","module","ace/theme/dawn-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-dawn"; +exports.cssText = require("./dawn-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/dawn"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-dracula.js b/vendor/assets/javascripts/ace/theme-dracula.js index c1ac363b..e1e2f143 100644 --- a/vendor/assets/javascripts/ace/theme-dracula.js +++ b/vendor/assets/javascripts/ace/theme-dracula.js @@ -1,121 +1,19 @@ -define("ace/theme/dracula",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/dracula-css",["require","exports","module"], function(require, exports, module){module.exports = "/*\n * Copyright \u00A9 2017 Zeno Rocha \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \u201CSoftware\u201D), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \u201CAS IS\u201D, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n.ace-dracula .ace_gutter {\n background: #282a36;\n color: rgb(144,145,148)\n}\n\n.ace-dracula .ace_print-margin {\n width: 1px;\n background: #44475a\n}\n\n.ace-dracula {\n background-color: #282a36;\n color: #f8f8f2\n}\n\n.ace-dracula .ace_cursor {\n color: #f8f8f0\n}\n\n.ace-dracula .ace_marker-layer .ace_selection {\n background: #44475a\n}\n\n.ace-dracula.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #282a36;\n border-radius: 2px\n}\n\n.ace-dracula .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-dracula .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #a29709\n}\n\n.ace-dracula .ace_marker-layer .ace_active-line {\n background: #44475a\n}\n\n.ace-dracula .ace_gutter-active-line {\n background-color: #44475a\n}\n\n.ace-dracula .ace_marker-layer .ace_selected-word {\n box-shadow: 0px 0px 0px 1px #a29709;\n border-radius: 3px;\n}\n\n.ace-dracula .ace_fold {\n background-color: #50fa7b;\n border-color: #f8f8f2\n}\n\n.ace-dracula .ace_keyword {\n color: #ff79c6\n}\n\n.ace-dracula .ace_constant.ace_language {\n color: #bd93f9\n}\n\n.ace-dracula .ace_constant.ace_numeric {\n color: #bd93f9\n}\n\n.ace-dracula .ace_constant.ace_character {\n color: #bd93f9\n}\n\n.ace-dracula .ace_constant.ace_character.ace_escape {\n color: #ff79c6\n}\n\n.ace-dracula .ace_constant.ace_other {\n color: #bd93f9\n}\n\n.ace-dracula .ace_support.ace_function {\n color: #8be9fd\n}\n\n.ace-dracula .ace_support.ace_constant {\n color: #6be5fd\n}\n\n.ace-dracula .ace_support.ace_class {\n font-style: italic;\n color: #66d9ef\n}\n\n.ace-dracula .ace_support.ace_type {\n font-style: italic;\n color: #66d9ef\n}\n\n.ace-dracula .ace_storage {\n color: #ff79c6\n}\n\n.ace-dracula .ace_storage.ace_type {\n font-style: italic;\n color: #8be9fd\n}\n\n.ace-dracula .ace_invalid {\n color: #F8F8F0;\n background-color: #ff79c6\n}\n\n.ace-dracula .ace_invalid.ace_deprecated {\n color: #F8F8F0;\n background-color: #bd93f9\n}\n\n.ace-dracula .ace_string {\n color: #f1fa8c\n}\n\n.ace-dracula .ace_comment {\n color: #6272a4\n}\n\n.ace-dracula .ace_variable {\n color: #50fa7b\n}\n\n.ace-dracula .ace_variable.ace_parameter {\n font-style: italic;\n color: #ffb86c\n}\n\n.ace-dracula .ace_entity.ace_other.ace_attribute-name {\n color: #50fa7b\n}\n\n.ace-dracula .ace_entity.ace_name.ace_function {\n color: #50fa7b\n}\n\n.ace-dracula .ace_entity.ace_name.ace_tag {\n color: #ff79c6\n}\n.ace-dracula .ace_invisible {\n color: #626680;\n}\n\n.ace-dracula .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-dracula .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACAQMAAACjTyRkAAAABlBMVEUAAADCwsK76u2xAAAAAXRSTlMAQObYZgAAAAxJREFUCNdjYGBoAAAAhACBGFbxzQAAAABJRU5ErkJggg==\") right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-dracula"; -exports.cssText = "\ -ace-dracula .ace_gutter {\ -background: #282a36;\ -color: rgb(144,145,148)\ -}\ -.ace-dracula .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-dracula {\ -background-color: #282a36;\ -color: #f8f8f2\ -}\ -.ace-dracula .ace_cursor {\ -color: #f8f8f0\ -}\ -.ace-dracula .ace_marker-layer .ace_selection {\ -background: #44475a\ -}\ -.ace-dracula.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #282a36;\ -border-radius: 2px\ -}\ -.ace-dracula .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-dracula .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #3B3A32\ -}\ -.ace-dracula .ace_marker-layer .ace_active-line {\ -background: #44475a\ -}\ -.ace-dracula .ace_gutter-active-line {\ -background-color: #44475a\ -}\ -.ace-dracula .ace_marker-layer .ace_selected-word {\ -border: 1px solid #44475a\ -}\ -.ace-dracula .ace_fold {\ -background-color: #50fa7b;\ -border-color: #f8f8f2\ -}\ -.ace-dracula .ace_keyword {\ -color: #ff79c6\ -}\ -.ace-dracula .ace_constant.ace_language {\ -color: #bd93f9\ -}\ -.ace-dracula .ace_constant.ace_numeric {\ -color: #bd93f9\ -}\ -.ace-dracula .ace_constant.ace_character {\ -color: #bd93f9\ -}\ -.ace-dracula .ace_constant.ace_character.ace_escape {\ -color: #ff79c6\ -}\ -.ace-dracula .ace_constant.ace_other {\ -color: #bd93f9\ -}\ -.ace-dracula .ace_support.ace_function {\ -color: #8be9fd\ -}\ -.ace-dracula .ace_support.ace_constant {\ -color: #6be5fd\ -}\ -.ace-dracula .ace_support.ace_class {\ -font-style: italic;\ -color: #66d9ef\ -}\ -.ace-dracula .ace_support.ace_type {\ -font-style: italic;\ -color: #66d9ef\ -}\ -.ace-dracula .ace_storage {\ -color: #ff79c6\ -}\ -.ace-dracula .ace_storage.ace_type {\ -font-style: italic;\ -color: #8be9fd\ -}\ -.ace-dracula .ace_invalid {\ -color: #F8F8F0;\ -background-color: #ff79c6\ -}\ -.ace-dracula .ace_invalid.ace_deprecated {\ -color: #F8F8F0;\ -background-color: #bd93f9\ -}\ -.ace-dracula .ace_string {\ -color: #f1fa8c\ -}\ -.ace-dracula .ace_comment {\ -color: #6272a4\ -}\ -.ace-dracula .ace_variable {\ -color: #50fa7b\ -}\ -.ace-dracula .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #ffb86c\ -}\ -.ace-dracula .ace_entity.ace_other.ace_attribute-name {\ -color: #50fa7b\ -}\ -.ace-dracula .ace_entity.ace_name.ace_function {\ -color: #50fa7b\ -}\ -.ace-dracula .ace_entity.ace_name.ace_tag {\ -color: #ff79c6\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/dracula",["require","exports","module","ace/theme/dracula-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-dracula"; +exports.cssText = require("./dracula-css"); +exports.$selectionColorConflict = true; +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/dracula"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-dreamweaver.js b/vendor/assets/javascripts/ace/theme-dreamweaver.js index ea347bcc..1e4c5c80 100644 --- a/vendor/assets/javascripts/ace/theme-dreamweaver.js +++ b/vendor/assets/javascripts/ace/theme-dreamweaver.js @@ -1,141 +1,18 @@ -define("ace/theme/dreamweaver",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -exports.isDark = false; -exports.cssClass = "ace-dreamweaver"; -exports.cssText = ".ace-dreamweaver .ace_gutter {\ -background: #e8e8e8;\ -color: #333;\ -}\ -.ace-dreamweaver .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-dreamweaver {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-dreamweaver .ace_fold {\ -background-color: #757AD8;\ -}\ -.ace-dreamweaver .ace_cursor {\ -color: black;\ -}\ -.ace-dreamweaver .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-dreamweaver .ace_storage,\ -.ace-dreamweaver .ace_keyword {\ -color: blue;\ -}\ -.ace-dreamweaver .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-dreamweaver .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-dreamweaver .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-dreamweaver .ace_invalid {\ -background-color: rgb(153, 0, 0);\ -color: white;\ -}\ -.ace-dreamweaver .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-dreamweaver .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-dreamweaver .ace_support.ace_type,\ -.ace-dreamweaver .ace_support.ace_class {\ -color: #009;\ -}\ -.ace-dreamweaver .ace_support.ace_php_tag {\ -color: #f00;\ -}\ -.ace-dreamweaver .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-dreamweaver .ace_string {\ -color: #00F;\ -}\ -.ace-dreamweaver .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-dreamweaver .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-dreamweaver .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-dreamweaver .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-dreamweaver .ace_variable {\ -color: #06F\ -}\ -.ace-dreamweaver .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-dreamweaver .ace_entity.ace_name.ace_function {\ -color: #00F;\ -}\ -.ace-dreamweaver .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-dreamweaver .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-dreamweaver .ace_gutter-active-line {\ -background-color : #DCDCDC;\ -}\ -.ace-dreamweaver .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-dreamweaver .ace_meta.ace_tag {\ -color:#009;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {\ -color:#060;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_form {\ -color:#F90;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_image {\ -color:#909;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_script {\ -color:#900;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_style {\ -color:#909;\ -}\ -.ace-dreamweaver .ace_meta.ace_tag.ace_table {\ -color:#099;\ -}\ -.ace-dreamweaver .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-dreamweaver .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; +define("ace/theme/dreamweaver-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-dreamweaver .ace_gutter {\n background: #e8e8e8;\n color: #333;\n}\n\n.ace-dreamweaver .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-dreamweaver {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-dreamweaver .ace_fold {\n background-color: #757AD8;\n}\n\n.ace-dreamweaver .ace_cursor {\n color: black;\n}\n \n.ace-dreamweaver .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-dreamweaver .ace_storage,\n.ace-dreamweaver .ace_keyword {\n color: blue;\n}\n\n.ace-dreamweaver .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-dreamweaver .ace_constant.ace_language {\n color: rgb(88, 92, 246);\n}\n\n.ace-dreamweaver .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-dreamweaver .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-dreamweaver .ace_support.ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-dreamweaver .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-dreamweaver .ace_support.ace_type,\n.ace-dreamweaver .ace_support.ace_class {\n color: #009;\n}\n\n.ace-dreamweaver .ace_support.ace_php_tag {\n color: #f00;\n}\n\n.ace-dreamweaver .ace_keyword.ace_operator {\n color: rgb(104, 118, 135);\n}\n\n.ace-dreamweaver .ace_string {\n color: #00F;\n}\n\n.ace-dreamweaver .ace_comment {\n color: rgb(76, 136, 107);\n}\n\n.ace-dreamweaver .ace_comment.ace_doc {\n color: rgb(0, 102, 255);\n}\n\n.ace-dreamweaver .ace_comment.ace_doc.ace_tag {\n color: rgb(128, 159, 191);\n}\n\n.ace-dreamweaver .ace_constant.ace_numeric {\n color: rgb(0, 0, 205);\n}\n\n.ace-dreamweaver .ace_variable {\n color: #06F\n}\n\n.ace-dreamweaver .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-dreamweaver .ace_entity.ace_name.ace_function {\n color: #00F;\n}\n\n\n.ace-dreamweaver .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-dreamweaver .ace_list {\n color:rgb(185, 6, 144);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-dreamweaver .ace_gutter-active-line {\n background-color : #DCDCDC;\n}\n\n.ace-dreamweaver .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-dreamweaver .ace_meta.ace_tag {\n color:#009;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_anchor {\n color:#060;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_form {\n color:#F90;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_image {\n color:#909;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_script {\n color:#900;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_style {\n color:#909;\n}\n\n.ace-dreamweaver .ace_meta.ace_tag.ace_table {\n color:#099;\n}\n\n.ace-dreamweaver .ace_string.ace_regex {\n color: rgb(255, 0, 0)\n}\n\n.ace-dreamweaver .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-dreamweaver .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/dreamweaver",["require","exports","module","ace/theme/dreamweaver-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-dreamweaver"; +exports.cssText = require("./dreamweaver-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/dreamweaver"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-eclipse.js b/vendor/assets/javascripts/ace/theme-eclipse.js index 2ad2b9fa..1163cb30 100644 --- a/vendor/assets/javascripts/ace/theme-eclipse.js +++ b/vendor/assets/javascripts/ace/theme-eclipse.js @@ -1,98 +1,19 @@ -define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; +define("ace/theme/eclipse-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-eclipse .ace_gutter {\n background: #ebebeb;\n border-right: 1px solid rgb(159, 159, 159);\n color: rgb(136, 136, 136);\n}\n\n.ace-eclipse .ace_print-margin {\n width: 1px;\n background: #ebebeb;\n}\n\n.ace-eclipse {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-eclipse .ace_fold {\n background-color: rgb(60, 76, 114);\n}\n\n.ace-eclipse .ace_cursor {\n color: black;\n}\n\n.ace-eclipse .ace_storage,\n.ace-eclipse .ace_keyword,\n.ace-eclipse .ace_variable {\n color: rgb(127, 0, 85);\n}\n\n.ace-eclipse .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-eclipse .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-eclipse .ace_function {\n color: rgb(60, 76, 114);\n}\n\n.ace-eclipse .ace_string {\n color: rgb(42, 0, 255);\n}\n\n.ace-eclipse .ace_comment {\n color: rgb(113, 150, 130);\n}\n\n.ace-eclipse .ace_comment.ace_doc {\n color: rgb(63, 95, 191);\n}\n\n.ace-eclipse .ace_comment.ace_doc.ace_tag {\n color: rgb(127, 159, 191);\n}\n\n.ace-eclipse .ace_constant.ace_numeric {\n color: darkblue;\n}\n\n.ace-eclipse .ace_tag {\n color: rgb(25, 118, 116);\n}\n\n.ace-eclipse .ace_type {\n color: rgb(127, 0, 127);\n}\n\n.ace-eclipse .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-eclipse .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-eclipse .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-eclipse .ace_meta.ace_tag {\n color:rgb(25, 118, 116);\n}\n\n.ace-eclipse .ace_invisible {\n color: #ddd;\n}\n\n.ace-eclipse .ace_entity.ace_other.ace_attribute-name {\n color:rgb(127, 0, 127);\n}\n.ace-eclipse .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0);\n}\n\n.ace-eclipse .ace_active-line {\n background: rgb(232, 242, 254);\n}\n\n.ace-eclipse .ace_gutter-active-line {\n background-color : #DADADA;\n}\n\n.ace-eclipse .ace_marker-layer .ace_selected-word {\n border: 1px solid rgb(181, 213, 255);\n}\n\n.ace-eclipse .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-eclipse .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.isDark = false; -exports.cssText = ".ace-eclipse .ace_gutter {\ -background: #ebebeb;\ -border-right: 1px solid rgb(159, 159, 159);\ -color: rgb(136, 136, 136);\ -}\ -.ace-eclipse .ace_print-margin {\ -width: 1px;\ -background: #ebebeb;\ -}\ -.ace-eclipse {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-eclipse .ace_fold {\ -background-color: rgb(60, 76, 114);\ -}\ -.ace-eclipse .ace_cursor {\ -color: black;\ -}\ -.ace-eclipse .ace_storage,\ -.ace-eclipse .ace_keyword,\ -.ace-eclipse .ace_variable {\ -color: rgb(127, 0, 85);\ -}\ -.ace-eclipse .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-eclipse .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-eclipse .ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-eclipse .ace_string {\ -color: rgb(42, 0, 255);\ -}\ -.ace-eclipse .ace_comment {\ -color: rgb(113, 150, 130);\ -}\ -.ace-eclipse .ace_comment.ace_doc {\ -color: rgb(63, 95, 191);\ -}\ -.ace-eclipse .ace_comment.ace_doc.ace_tag {\ -color: rgb(127, 159, 191);\ -}\ -.ace-eclipse .ace_constant.ace_numeric {\ -color: darkblue;\ -}\ -.ace-eclipse .ace_tag {\ -color: rgb(25, 118, 116);\ -}\ -.ace-eclipse .ace_type {\ -color: rgb(127, 0, 127);\ -}\ -.ace-eclipse .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-eclipse .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-eclipse .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-eclipse .ace_meta.ace_tag {\ -color:rgb(25, 118, 116);\ -}\ -.ace-eclipse .ace_invisible {\ -color: #ddd;\ -}\ -.ace-eclipse .ace_entity.ace_other.ace_attribute-name {\ -color:rgb(127, 0, 127);\ -}\ -.ace-eclipse .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0);\ -}\ -.ace-eclipse .ace_active-line {\ -background: rgb(232, 242, 254);\ -}\ -.ace-eclipse .ace_gutter-active-line {\ -background-color : #DADADA;\ -}\ -.ace-eclipse .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgb(181, 213, 255);\ -}\ -.ace-eclipse .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - -exports.cssClass = "ace-eclipse"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/eclipse",["require","exports","module","ace/theme/eclipse-css","ace/lib/dom"], function(require, exports, module){"use strict"; +exports.isDark = false; +exports.cssText = require("./eclipse-css"); +exports.cssClass = "ace-eclipse"; +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/eclipse"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-github.js b/vendor/assets/javascripts/ace/theme-github.js index b2cf5daf..80bffa3a 100644 --- a/vendor/assets/javascripts/ace/theme-github.js +++ b/vendor/assets/javascripts/ace/theme-github.js @@ -1,103 +1,18 @@ -define("ace/theme/github",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/github-css",["require","exports","module"], function(require, exports, module){module.exports = "/* CSS style content from github's default pygments highlighter template.\n Cursor and selection styles from textmate.css. */\n.ace-github .ace_gutter {\n background: #e8e8e8;\n color: #AAA;\n}\n\n.ace-github {\n background: #fff;\n color: #000;\n}\n\n.ace-github .ace_keyword {\n font-weight: bold;\n}\n\n.ace-github .ace_string {\n color: #D14;\n}\n\n.ace-github .ace_variable.ace_class {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_numeric {\n color: #099;\n}\n\n.ace-github .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github .ace_support.ace_function {\n color: #0086B3;\n}\n\n.ace-github .ace_comment {\n color: #998;\n font-style: italic;\n}\n\n.ace-github .ace_variable.ace_language {\n color: #0086B3;\n}\n\n.ace-github .ace_paren {\n font-weight: bold;\n}\n\n.ace-github .ace_boolean {\n font-weight: bold;\n}\n\n.ace-github .ace_string.ace_regexp {\n color: #009926;\n font-weight: normal;\n}\n\n.ace-github .ace_variable.ace_instance {\n color: teal;\n}\n\n.ace-github .ace_constant.ace_language {\n font-weight: bold;\n}\n\n.ace-github .ace_cursor {\n color: black;\n}\n\n.ace-github.ace_focus .ace_marker-layer .ace_active-line {\n background: rgb(255, 255, 204);\n}\n.ace-github .ace_marker-layer .ace_active-line {\n background: rgb(245, 245, 245);\n}\n\n.ace-github .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-github.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px white;\n}\n/* bold keywords cause cursor issues for some fonts */\n/* this disables bold style for editor and keeps for static highlighter */\n.ace-github.ace_nobold .ace_line > span {\n font-weight: normal !important;\n}\n\n.ace-github .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-github .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-github .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-github .ace_gutter-active-line {\n background-color : rgba(0, 0, 0, 0.07);\n}\n\n.ace-github .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-github .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-github .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-github .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-github .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; -exports.isDark = false; -exports.cssClass = "ace-github"; -exports.cssText = "\ -.ace-github .ace_gutter {\ -background: #e8e8e8;\ -color: #AAA;\ -}\ -.ace-github {\ -background: #fff;\ -color: #000;\ -}\ -.ace-github .ace_keyword {\ -font-weight: bold;\ -}\ -.ace-github .ace_string {\ -color: #D14;\ -}\ -.ace-github .ace_variable.ace_class {\ -color: teal;\ -}\ -.ace-github .ace_constant.ace_numeric {\ -color: #099;\ -}\ -.ace-github .ace_constant.ace_buildin {\ -color: #0086B3;\ -}\ -.ace-github .ace_support.ace_function {\ -color: #0086B3;\ -}\ -.ace-github .ace_comment {\ -color: #998;\ -font-style: italic;\ -}\ -.ace-github .ace_variable.ace_language {\ -color: #0086B3;\ -}\ -.ace-github .ace_paren {\ -font-weight: bold;\ -}\ -.ace-github .ace_boolean {\ -font-weight: bold;\ -}\ -.ace-github .ace_string.ace_regexp {\ -color: #009926;\ -font-weight: normal;\ -}\ -.ace-github .ace_variable.ace_instance {\ -color: teal;\ -}\ -.ace-github .ace_constant.ace_language {\ -font-weight: bold;\ -}\ -.ace-github .ace_cursor {\ -color: black;\ -}\ -.ace-github.ace_focus .ace_marker-layer .ace_active-line {\ -background: rgb(255, 255, 204);\ -}\ -.ace-github .ace_marker-layer .ace_active-line {\ -background: rgb(245, 245, 245);\ -}\ -.ace-github .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-github.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -}\ -.ace-github.ace_nobold .ace_line > span {\ -font-weight: normal !important;\ -}\ -.ace-github .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-github .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-github .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-github .ace_gutter-active-line {\ -background-color : rgba(0, 0, 0, 0.07);\ -}\ -.ace-github .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-github .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-github .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-github .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}"; - - var dom = require("../lib/dom"); - dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/github",["require","exports","module","ace/theme/github-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-github"; +exports.cssText = require("./github-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/github"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-github_dark.js b/vendor/assets/javascripts/ace/theme-github_dark.js new file mode 100644 index 00000000..10f739d7 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-github_dark.js @@ -0,0 +1,18 @@ +define("ace/theme/github_dark-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-github-dark .ace_gutter {\n background: #24292e;\n color: #7388b5\n}\n\n.ace-github-dark .ace_print-margin {\n width: 1px;\n background: #00204b\n}\n\n.ace-github-dark {\n background-color: #24292e;\n color: #FFFFFF\n}\n\n.ace-github-dark .ace_constant.ace_other,\n.ace-github-dark .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-github-dark .ace_marker-layer .ace_selection {\n background: #003F8E\n}\n\n.ace-github-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #24292e;\n}\n\n.ace-github-dark .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-github-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404F7D\n}\n\n.ace-github-dark .ace_marker-layer .ace_active-line {\n background: #00346E\n}\n\n.ace-github-dark .ace_gutter-active-line {\n background-color: #24292e\n}\n\n.ace-github-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #003F8E\n}\n\n.ace-github-dark .ace_invisible {\n color: #404F7D\n}\n\n.ace-github-dark .ace_keyword,\n.ace-github-dark .ace_meta,\n.ace-github-dark .ace_storage,\n.ace-github-dark .ace_storage.ace_type,\n.ace-github-dark .ace_support.ace_type {\n color: #ff7b72\n}\n\n.ace-github-dark .ace_keyword.ace_operator {\n color: #79c0ff\n}\n\n.ace-github-dark .ace_constant.ace_character,\n.ace-github-dark .ace_constant.ace_language,\n.ace-github-dark .ace_constant.ace_numeric,\n.ace-github-dark .ace_keyword.ace_other.ace_unit,\n.ace-github-dark .ace_support.ace_constant,\n.ace-github-dark .ace_variable.ace_parameter {\n color: #FFC58F\n}\n\n.ace-github-dark .ace_invalid {\n color: #FFFFFF;\n background-color: #F99DA5\n}\n\n.ace-github-dark .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #ff7b72\n}\n\n.ace-github-dark .ace_fold {\n background-color: #BBDAFF;\n border-color: #FFFFFF\n}\n\n.ace-github-dark .ace_entity.ace_name.ace_function,\n.ace-github-dark .ace_support.ace_function,\n.ace-github-dark .ace_variable {\n color: #BBDAFF\n}\n\n.ace-github-dark .ace_support.ace_class,\n.ace-github-dark .ace_support.ace_type {\n color: #FFEEAD\n}\n\n.ace-github-dark .ace_heading,\n.ace-github-dark .ace_markup.ace_heading,\n.ace-github-dark .ace_string {\n color: #9fcef6\n}\n\n.ace-github-dark .ace_entity.ace_name.ace_tag,\n.ace-github-dark .ace_entity.ace_other.ace_attribute-name,\n.ace-github-dark .ace_meta.ace_tag,\n.ace-github-dark .ace_string.ace_regexp,\n.ace-github-dark .ace_variable {\n color: #FF9DA4\n}\n\n.ace-github-dark .ace_comment {\n color: #7285B7\n}\n\n.ace-github-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-github-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n\n.ace-github-dark .ace_constant.ace_buildin {\n color: #0086B3;\n}\n\n.ace-github-dark .ace_variable.ace_language {\n color: #ffffff;\n}\n "; + +}); + +define("ace/theme/github_dark",["require","exports","module","ace/theme/github_dark-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-github-dark"; +exports.cssText = require("./github_dark-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/github_dark"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-gob.js b/vendor/assets/javascripts/ace/theme-gob.js index 2614dae2..ae5e4c00 100644 --- a/vendor/assets/javascripts/ace/theme-gob.js +++ b/vendor/assets/javascripts/ace/theme-gob.js @@ -1,112 +1,18 @@ -define("ace/theme/gob",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/gob-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-gob .ace_gutter {\n background: #0B1818;\n color: #03EE03\n}\n\n.ace-gob .ace_print-margin {\n width: 1px;\n background: #131313\n}\n\n.ace-gob {\n background-color: #0B0B0B;\n color: #00FF00\n}\n\n.ace-gob .ace_cursor {\n border-color: rgba(16, 248, 255, 0.90);\n background-color: rgba(16, 240, 248, 0.70);\n opacity: 0.4;\n}\n\n.ace-gob .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20)\n}\n\n.ace-gob.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #141414;\n}\n\n.ace-gob .ace_marker-layer .ace_step {\n background: rgb(16, 128, 0)\n}\n\n.ace-gob .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(64, 255, 255, 0.25)\n}\n\n.ace-gob .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.04)\n}\n\n.ace-gob .ace_gutter-active-line {\n background-color: rgba(255, 255, 255, 0.04)\n}\n\n.ace-gob .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(192, 240, 255, 0.20)\n}\n\n.ace-gob .ace_invisible {\n color: rgba(255, 255, 255, 0.25)\n}\n\n.ace-gob .ace_keyword,\n.ace-gob .ace_meta {\n color: #10D8E8\n}\n\n.ace-gob .ace_constant,\n.ace-gob .ace_constant.ace_character,\n.ace-gob .ace_constant.ace_character.ace_escape,\n.ace-gob .ace_constant.ace_other,\n.ace-gob .ace_heading,\n.ace-gob .ace_markup.ace_heading,\n.ace-gob .ace_support.ace_constant {\n color: #10F0A0\n}\n\n.ace-gob .ace_invalid.ace_illegal {\n color: #F8F8F8;\n background-color: rgba(86, 45, 86, 0.75)\n}\n\n.ace-gob .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #20F8C0\n}\n\n.ace-gob .ace_support {\n color: #20E8B0\n}\n\n.ace-gob .ace_fold {\n background-color: #50B8B8;\n border-color: #70F8F8\n}\n\n.ace-gob .ace_support.ace_function {\n color: #00F800\n}\n\n.ace-gob .ace_list,\n.ace-gob .ace_markup.ace_list,\n.ace-gob .ace_storage {\n color: #10FF98\n}\n\n.ace-gob .ace_entity.ace_name.ace_function,\n.ace-gob .ace_meta.ace_tag,\n.ace-gob .ace_variable {\n color: #00F868\n}\n\n.ace-gob .ace_string {\n color: #10F060\n}\n\n.ace-gob .ace_string.ace_regexp {\n color: #20F090;\n}\n\n.ace-gob .ace_comment {\n font-style: italic;\n color: #00E060;\n}\n\n.ace-gob .ace_variable {\n color: #00F888;\n}\n\n.ace-gob .ace_xml-pe {\n color: #488858;\n}\n\n.ace-gob .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-gob .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-gob"; -exports.cssText = ".ace-gob .ace_gutter {\ -background: #0B1818;\ -color: #03EE03\ -}\ -.ace-gob .ace_print-margin {\ -width: 1px;\ -background: #131313\ -}\ -.ace-gob {\ -background-color: #0B0B0B;\ -color: #00FF00\ -}\ -.ace-gob .ace_cursor {\ -border-color: rgba(16, 248, 255, 0.90);\ -background-color: rgba(16, 240, 248, 0.70);\ -opacity: 0.4;\ -}\ -.ace-gob .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20)\ -}\ -.ace-gob.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #141414;\ -}\ -.ace-gob .ace_marker-layer .ace_step {\ -background: rgb(16, 128, 0)\ -}\ -.ace-gob .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(64, 255, 255, 0.25)\ -}\ -.ace-gob .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.04)\ -}\ -.ace-gob .ace_gutter-active-line {\ -background-color: rgba(255, 255, 255, 0.04)\ -}\ -.ace-gob .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(192, 240, 255, 0.20)\ -}\ -.ace-gob .ace_invisible {\ -color: rgba(255, 255, 255, 0.25)\ -}\ -.ace-gob .ace_keyword,\ -.ace-gob .ace_meta {\ -color: #10D8E8\ -}\ -.ace-gob .ace_constant,\ -.ace-gob .ace_constant.ace_character,\ -.ace-gob .ace_constant.ace_character.ace_escape,\ -.ace-gob .ace_constant.ace_other,\ -.ace-gob .ace_heading,\ -.ace-gob .ace_markup.ace_heading,\ -.ace-gob .ace_support.ace_constant {\ -color: #10F0A0\ -}\ -.ace-gob .ace_invalid.ace_illegal {\ -color: #F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75)\ -}\ -.ace-gob .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #20F8C0\ -}\ -.ace-gob .ace_support {\ -color: #20E8B0\ -}\ -.ace-gob .ace_fold {\ -background-color: #50B8B8;\ -border-color: #70F8F8\ -}\ -.ace-gob .ace_support.ace_function {\ -color: #00F800\ -}\ -.ace-gob .ace_list,\ -.ace-gob .ace_markup.ace_list,\ -.ace-gob .ace_storage {\ -color: #10FF98\ -}\ -.ace-gob .ace_entity.ace_name.ace_function,\ -.ace-gob .ace_meta.ace_tag,\ -.ace-gob .ace_variable {\ -color: #00F868\ -}\ -.ace-gob .ace_string {\ -color: #10F060\ -}\ -.ace-gob .ace_string.ace_regexp {\ -color: #20F090;\ -}\ -.ace-gob .ace_comment {\ -font-style: italic;\ -color: #00E060;\ -}\ -.ace-gob .ace_variable {\ -color: #00F888;\ -}\ -.ace-gob .ace_xml-pe {\ -color: #488858;\ -}\ -.ace-gob .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/gob",["require","exports","module","ace/theme/gob-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-gob"; +exports.cssText = require("./gob-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/gob"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-gruvbox.js b/vendor/assets/javascripts/ace/theme-gruvbox.js index 2c54443f..edd4ede9 100644 --- a/vendor/assets/javascripts/ace/theme-gruvbox.js +++ b/vendor/assets/javascripts/ace/theme-gruvbox.js @@ -1,82 +1,18 @@ -define("ace/theme/gruvbox",["require","exports","module","ace/lib/dom"], function(require, exports, module) { - -exports.isDark = true; -exports.cssClass = "ace-gruvbox"; -exports.cssText = ".ace-gruvbox .ace_gutter-active-line {\ -background-color: #3C3836;\ -}\ -.ace-gruvbox {\ -color: #EBDAB4;\ -background-color: #1D2021;\ -}\ -.ace-gruvbox .ace_invisible {\ -color: #504945;\ -}\ -.ace-gruvbox .ace_marker-layer .ace_selection {\ -background: rgba(179, 101, 57, 0.75)\ -}\ -.ace-gruvbox.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002240;\ -}\ -.ace-gruvbox .ace_keyword {\ -color: #8ec07c;\ -}\ -.ace-gruvbox .ace_comment {\ -font-style: italic;\ -color: #928375;\ -}\ -.ace-gruvbox .ace-statement {\ -color: red;\ -}\ -.ace-gruvbox .ace_variable {\ -color: #84A598;\ -}\ -.ace-gruvbox .ace_variable.ace_language {\ -color: #D2879B;\ -}\ -.ace-gruvbox .ace_constant {\ -color: #C2859A;\ -}\ -.ace-gruvbox .ace_constant.ace_language {\ -color: #C2859A;\ -}\ -.ace-gruvbox .ace_constant.ace_numeric {\ -color: #C2859A;\ -}\ -.ace-gruvbox .ace_string {\ -color: #B8BA37;\ -}\ -.ace-gruvbox .ace_support {\ -color: #F9BC41;\ -}\ -.ace-gruvbox .ace_support.ace_function {\ -color: #F84B3C;\ -}\ -.ace-gruvbox .ace_storage {\ -color: #8FBF7F;\ -}\ -.ace-gruvbox .ace_keyword.ace_operator {\ -color: #EBDAB4;\ -}\ -.ace-gruvbox .ace_punctuation.ace_operator {\ -color: yellow;\ -}\ -.ace-gruvbox .ace_marker-layer .ace_active-line {\ -background: #3C3836;\ -}\ -.ace-gruvbox .ace_marker-layer .ace_selected-word {\ -border-radius: 4px;\ -border: 8px solid #3f475d;\ -}\ -.ace-gruvbox .ace_print-margin {\ -width: 5px;\ -background: #3C3836;\ -}\ -.ace-gruvbox .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); +define("ace/theme/gruvbox-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-gruvbox .ace_gutter-active-line {\n background-color: #3C3836;\n}\n\n.ace-gruvbox {\n color: #EBDAB4;\n background-color: #1D2021;\n}\n\n.ace-gruvbox .ace_invisible {\n color: #504945;\n}\n\n.ace-gruvbox .ace_marker-layer .ace_selection {\n background: rgba(179, 101, 57, 0.75)\n}\n\n.ace-gruvbox.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002240;\n}\n\n.ace-gruvbox .ace_keyword {\n color: #8ec07c;\n}\n\n.ace-gruvbox .ace_comment {\n font-style: italic;\n color: #928375;\n}\n\n.ace-gruvbox .ace-statement {\n color: red;\n}\n\n.ace-gruvbox .ace_variable {\n color: #84A598;\n}\n\n.ace-gruvbox .ace_variable.ace_language {\n color: #D2879B;\n}\n\n.ace-gruvbox .ace_constant {\n color: #C2859A;\n}\n\n.ace-gruvbox .ace_constant.ace_language {\n color: #C2859A;\n}\n\n.ace-gruvbox .ace_constant.ace_numeric {\n color: #C2859A;\n}\n\n.ace-gruvbox .ace_string {\n color: #B8BA37;\n}\n\n.ace-gruvbox .ace_support {\n color: #F9BC41;\n}\n\n.ace-gruvbox .ace_support.ace_function {\n color: #F84B3C;\n}\n\n.ace-gruvbox .ace_storage {\n color: #8FBF7F;\n}\n\n.ace-gruvbox .ace_keyword.ace_operator {\n color: #EBDAB4;\n}\n\n.ace-gruvbox .ace_punctuation.ace_operator {\n color: yellow;\n}\n\n.ace-gruvbox .ace_marker-layer .ace_active-line {\n background: #3C3836;\n}\n\n.ace-gruvbox .ace_marker-layer .ace_selected-word {\n border-radius: 4px;\n border: 8px solid #3f475d;\n}\n\n.ace-gruvbox .ace_print-margin {\n width: 5px;\n background: #3C3836;\n}\n\n.ace-gruvbox .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQUFD4z6Crq/sfAAuYAuYl+7lfAAAAAElFTkSuQmCC\") right repeat-y;\n}\n\n.ace-gruvbox .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; }); + +define("ace/theme/gruvbox",["require","exports","module","ace/theme/gruvbox-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-gruvbox"; +exports.cssText = require("./gruvbox-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/gruvbox"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-gruvbox_dark_hard.js b/vendor/assets/javascripts/ace/theme-gruvbox_dark_hard.js new file mode 100644 index 00000000..b23695f8 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-gruvbox_dark_hard.js @@ -0,0 +1,18 @@ +define("ace/theme/gruvbox_dark_hard-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-gruvbox-dark-hard .ace_gutter {\n background: #1d2021;\n color: rgb(132,126,106)\n}\n\n.ace-gruvbox-dark-hard .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-gruvbox-dark-hard {\n background-color: #1d2021;\n color: rgba(235, 219, 178, 0.50)\n}\n\n.ace-gruvbox-dark-hard .ace_cursor {\n color: #a89984\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_selection {\n background: #3c3836\n}\n\n.ace-gruvbox-dark-hard.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #1d2021;\n border-radius: 2px\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(235, 219, 178, 0.15)\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_active-line {\n background: #3c3836\n}\n\n.ace-gruvbox-dark-hard .ace_gutter-active-line {\n background-color: #3c3836\n}\n\n.ace-gruvbox-dark-hard .ace_marker-layer .ace_selected-word {\n border: 1px solid #3c3836\n}\n\n.ace-gruvbox-dark-hard .ace_fold {\n background-color: #b8bb26;\n border-color: rgba(235, 219, 178, 0.50)\n}\n\n.ace-gruvbox-dark-hard .ace_keyword {\n color: #fb4934\n}\n\n.ace-gruvbox-dark-hard .ace_keyword.ace_operator {\n color: #8ec07c\n}\n\n.ace-gruvbox-dark-hard .ace_keyword.ace_other.ace_unit {\n color: #b16286\n}\n\n.ace-gruvbox-dark-hard .ace_constant {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_constant.ace_numeric {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_constant.ace_character.ace_escape {\n color: #fb4934\n}\n\n.ace-gruvbox-dark-hard .ace_constant.ace_other {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_function {\n color: #8ec07c\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_constant {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_constant.ace_property-value {\n color: #f9f5d7\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_class {\n color: #fabd2f\n}\n\n.ace-gruvbox-dark-hard .ace_support.ace_type {\n color: #fabd2f\n}\n\n.ace-gruvbox-dark-hard .ace_storage {\n color: #fb4934\n}\n\n.ace-gruvbox-dark-hard .ace_invalid {\n color: #f9f5d7;\n background-color: #fb4934\n}\n\n.ace-gruvbox-dark-hard .ace_string {\n color: #b8bb26\n}\n\n.ace-gruvbox-dark-hard .ace_string.ace_regexp {\n color: #b8bb26\n}\n\n.ace-gruvbox-dark-hard .ace_comment {\n font-style: italic;\n color: #928374\n}\n\n.ace-gruvbox-dark-hard .ace_variable {\n color: #83a598\n}\n\n.ace-gruvbox-dark-hard .ace_variable.ace_language {\n color: #d3869b\n}\n\n.ace-gruvbox-dark-hard .ace_variable.ace_parameter {\n color: #f9f5d7\n}\n\n.ace-gruvbox-dark-hard .ace_meta.ace_tag {\n color: #f9f5d7\n}\n\n.ace-gruvbox-dark-hard .ace_entity.ace_other.ace_attribute-name {\n color: #fabd2f\n}\n\n.ace-gruvbox-dark-hard .ace_entity.ace_name.ace_function {\n color: #b8bb26\n}\n\n.ace-gruvbox-dark-hard .ace_entity.ace_name.ace_tag {\n color: #83a598\n}\n\n.ace-gruvbox-dark-hard .ace_markup.ace_heading {\n color: #b8bb26\n}\n\n.ace-gruvbox-dark-hard .ace_markup.ace_list {\n color: #83a598\n}\n\n.ace-gruvbox-dark-hard .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +define("ace/theme/gruvbox_dark_hard",["require","exports","module","ace/theme/gruvbox_dark_hard-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-gruvbox-dark-hard"; +exports.cssText = require("./gruvbox_dark_hard-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); (function() { + window.require(["ace/theme/gruvbox_dark_hard"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-gruvbox_light_hard.js b/vendor/assets/javascripts/ace/theme-gruvbox_light_hard.js new file mode 100644 index 00000000..cb1dc920 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-gruvbox_light_hard.js @@ -0,0 +1,18 @@ +define("ace/theme/gruvbox_light_hard-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-gruvbox-light-hard .ace_gutter {\n background: #f9f5d7;\n color: rgb(155,151,135)\n}\n\n.ace-gruvbox-light-hard .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-gruvbox-light-hard {\n background-color: #f9f5d7;\n color: rgba(60, 56, 54, 0.50)\n}\n\n.ace-gruvbox-light-hard .ace_cursor {\n color: #7c6f64\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_selection {\n background: #ebdbb2\n}\n\n.ace-gruvbox-light-hard.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #f9f5d7;\n border-radius: 2px\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(60, 56, 54, 0.15)\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_active-line {\n background: #ebdbb2\n}\n\n.ace-gruvbox-light-hard .ace_gutter-active-line {\n background-color: #ebdbb2\n}\n\n.ace-gruvbox-light-hard .ace_marker-layer .ace_selected-word {\n border: 1px solid #ebdbb2\n}\n\n.ace-gruvbox-light-hard .ace_fold {\n background-color: #79740e;\n border-color: rgba(60, 56, 54, 0.50)\n}\n\n.ace-gruvbox-light-hard .ace_keyword {\n color: #9d0006\n}\n\n.ace-gruvbox-light-hard .ace_keyword.ace_operator {\n color: #427b58\n}\n\n.ace-gruvbox-light-hard .ace_keyword.ace_other.ace_unit {\n color: #b16286\n}\n\n.ace-gruvbox-light-hard .ace_constant {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_constant.ace_numeric {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_constant.ace_character.ace_escape {\n color: #9d0006\n}\n\n.ace-gruvbox-light-hard .ace_constant.ace_other {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_function {\n color: #427b58\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_constant {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_constant.ace_property-value {\n color: #1d2021\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_class {\n color: #b57614\n}\n\n.ace-gruvbox-light-hard .ace_support.ace_type {\n color: #b57614\n}\n\n.ace-gruvbox-light-hard .ace_storage {\n color: #9d0006\n}\n\n.ace-gruvbox-light-hard .ace_invalid {\n color: #1d2021;\n background-color: #9d0006\n}\n\n.ace-gruvbox-light-hard .ace_string {\n color: #79740e\n}\n\n.ace-gruvbox-light-hard .ace_string.ace_regexp {\n color: #79740e\n}\n\n.ace-gruvbox-light-hard .ace_comment {\n font-style: italic;\n color: #928374\n}\n\n.ace-gruvbox-light-hard .ace_variable {\n color: #076678\n}\n\n.ace-gruvbox-light-hard .ace_variable.ace_language {\n color: #8f3f71\n}\n\n.ace-gruvbox-light-hard .ace_variable.ace_parameter {\n color: #1d2021\n}\n\n.ace-gruvbox-light-hard .ace_meta.ace_tag {\n color: #1d2021\n}\n\n.ace-gruvbox-light-hard .ace_entity.ace_other.ace_attribute-name {\n color: #b57614\n}\n\n.ace-gruvbox-light-hard .ace_entity.ace_name.ace_function {\n color: #79740e\n}\n\n.ace-gruvbox-light-hard .ace_entity.ace_name.ace_tag {\n color: #076678\n}\n\n.ace-gruvbox-light-hard .ace_markup.ace_heading {\n color: #79740e\n}\n\n.ace-gruvbox-light-hard .ace_markup.ace_list {\n color: #076678\n}\n\n.ace-gruvbox-light-hard .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-gruvbox-light-hard .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; + +}); + +define("ace/theme/gruvbox_light_hard",["require","exports","module","ace/theme/gruvbox_light_hard-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-gruvbox-light-hard"; +exports.cssText = require("./gruvbox_light_hard-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass); + +}); (function() { + window.require(["ace/theme/gruvbox_light_hard"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-idle_fingers.js b/vendor/assets/javascripts/ace/theme-idle_fingers.js index 221cca14..ab8a311d 100644 --- a/vendor/assets/javascripts/ace/theme-idle_fingers.js +++ b/vendor/assets/javascripts/ace/theme-idle_fingers.js @@ -1,96 +1,18 @@ -define("ace/theme/idle_fingers",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/idle_fingers-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-idle-fingers .ace_gutter {\n background: #3b3b3b;\n color: rgb(153,153,153)\n}\n\n.ace-idle-fingers .ace_print-margin {\n width: 1px;\n background: #3b3b3b\n}\n\n.ace-idle-fingers {\n background-color: #323232;\n color: #FFFFFF\n}\n\n.ace-idle-fingers .ace_cursor {\n color: #91FF00\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_selection {\n background: rgba(90, 100, 126, 0.88)\n}\n\n.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #323232;\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_active-line {\n background: #353637\n}\n\n.ace-idle-fingers .ace_gutter-active-line {\n background-color: #353637\n}\n\n.ace-idle-fingers .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(90, 100, 126, 0.88)\n}\n\n.ace-idle-fingers .ace_invisible {\n color: #404040\n}\n\n.ace-idle-fingers .ace_keyword,\n.ace-idle-fingers .ace_meta {\n color: #CC7833\n}\n\n.ace-idle-fingers .ace_constant,\n.ace-idle-fingers .ace_constant.ace_character,\n.ace-idle-fingers .ace_constant.ace_character.ace_escape,\n.ace-idle-fingers .ace_constant.ace_other,\n.ace-idle-fingers .ace_support.ace_constant {\n color: #6C99BB\n}\n\n.ace-idle-fingers .ace_invalid {\n color: #FFFFFF;\n background-color: #FF0000\n}\n\n.ace-idle-fingers .ace_fold {\n background-color: #CC7833;\n border-color: #FFFFFF\n}\n\n.ace-idle-fingers .ace_support.ace_function {\n color: #B83426\n}\n\n.ace-idle-fingers .ace_variable.ace_parameter {\n font-style: italic\n}\n\n.ace-idle-fingers .ace_string {\n color: #A5C261\n}\n\n.ace-idle-fingers .ace_string.ace_regexp {\n color: #CCCC33\n}\n\n.ace-idle-fingers .ace_comment {\n font-style: italic;\n color: #BC9458\n}\n\n.ace-idle-fingers .ace_meta.ace_tag {\n color: #FFE5BB\n}\n\n.ace-idle-fingers .ace_entity.ace_name {\n color: #FFC66D\n}\n\n.ace-idle-fingers .ace_collab.ace_user1 {\n color: #323232;\n background-color: #FFF980\n}\n\n.ace-idle-fingers .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-idle-fingers .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-idle-fingers"; -exports.cssText = ".ace-idle-fingers .ace_gutter {\ -background: #3b3b3b;\ -color: rgb(153,153,153)\ -}\ -.ace-idle-fingers .ace_print-margin {\ -width: 1px;\ -background: #3b3b3b\ -}\ -.ace-idle-fingers {\ -background-color: #323232;\ -color: #FFFFFF\ -}\ -.ace-idle-fingers .ace_cursor {\ -color: #91FF00\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_selection {\ -background: rgba(90, 100, 126, 0.88)\ -}\ -.ace-idle-fingers.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #323232;\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_active-line {\ -background: #353637\ -}\ -.ace-idle-fingers .ace_gutter-active-line {\ -background-color: #353637\ -}\ -.ace-idle-fingers .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(90, 100, 126, 0.88)\ -}\ -.ace-idle-fingers .ace_invisible {\ -color: #404040\ -}\ -.ace-idle-fingers .ace_keyword,\ -.ace-idle-fingers .ace_meta {\ -color: #CC7833\ -}\ -.ace-idle-fingers .ace_constant,\ -.ace-idle-fingers .ace_constant.ace_character,\ -.ace-idle-fingers .ace_constant.ace_character.ace_escape,\ -.ace-idle-fingers .ace_constant.ace_other,\ -.ace-idle-fingers .ace_support.ace_constant {\ -color: #6C99BB\ -}\ -.ace-idle-fingers .ace_invalid {\ -color: #FFFFFF;\ -background-color: #FF0000\ -}\ -.ace-idle-fingers .ace_fold {\ -background-color: #CC7833;\ -border-color: #FFFFFF\ -}\ -.ace-idle-fingers .ace_support.ace_function {\ -color: #B83426\ -}\ -.ace-idle-fingers .ace_variable.ace_parameter {\ -font-style: italic\ -}\ -.ace-idle-fingers .ace_string {\ -color: #A5C261\ -}\ -.ace-idle-fingers .ace_string.ace_regexp {\ -color: #CCCC33\ -}\ -.ace-idle-fingers .ace_comment {\ -font-style: italic;\ -color: #BC9458\ -}\ -.ace-idle-fingers .ace_meta.ace_tag {\ -color: #FFE5BB\ -}\ -.ace-idle-fingers .ace_entity.ace_name {\ -color: #FFC66D\ -}\ -.ace-idle-fingers .ace_collab.ace_user1 {\ -color: #323232;\ -background-color: #FFF980\ -}\ -.ace-idle-fingers .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMwMjLyZYiPj/8PAAreAwAI1+g0AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/idle_fingers",["require","exports","module","ace/theme/idle_fingers-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-idle-fingers"; +exports.cssText = require("./idle_fingers-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/idle_fingers"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-iplastic.js b/vendor/assets/javascripts/ace/theme-iplastic.js index 774a0977..799f643d 100644 --- a/vendor/assets/javascripts/ace/theme-iplastic.js +++ b/vendor/assets/javascripts/ace/theme-iplastic.js @@ -1,121 +1,18 @@ -define("ace/theme/iplastic",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/iplastic-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-iplastic .ace_gutter {\n background: #dddddd;\n color: #666666\n}\n\n.ace-iplastic .ace_print-margin {\n width: 1px;\n background: #bbbbbb\n}\n\n.ace-iplastic {\n background-color: #eeeeee;\n color: #333333\n}\n\n.ace-iplastic .ace_cursor {\n color: #333\n}\n\n.ace-iplastic .ace_marker-layer .ace_selection {\n background: #BAD6FD;\n}\n\n.ace-iplastic.ace_multiselect .ace_selection.ace_start {\n border-radius: 4px\n}\n\n.ace-iplastic .ace_marker-layer .ace_step {\n background: #444444\n}\n\n.ace-iplastic .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #49483E;\n background: #FFF799\n}\n\n.ace-iplastic .ace_marker-layer .ace_active-line {\n background: #e5e5e5\n}\n\n.ace-iplastic .ace_gutter-active-line {\n background-color: #eeeeee\n}\n\n.ace-iplastic .ace_marker-layer .ace_selected-word {\n border: 1px solid #555555;\n border-radius:4px\n}\n\n.ace-iplastic .ace_invisible {\n color: #999999\n}\n\n.ace-iplastic .ace_entity.ace_name.ace_tag,\n.ace-iplastic .ace_keyword,\n.ace-iplastic .ace_meta.ace_tag,\n.ace-iplastic .ace_storage {\n color: #0000FF\n}\n\n.ace-iplastic .ace_punctuation,\n.ace-iplastic .ace_punctuation.ace_tag {\n color: #000\n}\n\n.ace-iplastic .ace_constant {\n color: #333333;\n font-weight: 700\n}\n\n.ace-iplastic .ace_constant.ace_character,\n.ace-iplastic .ace_constant.ace_language,\n.ace-iplastic .ace_constant.ace_numeric,\n.ace-iplastic .ace_constant.ace_other {\n color: #0066FF;\n font-weight: 700\n}\n\n.ace-iplastic .ace_constant.ace_numeric{\n font-weight: 100\n}\n\n.ace-iplastic .ace_invalid {\n color: #F8F8F0;\n background-color: #F92672\n}\n\n.ace-iplastic .ace_invalid.ace_deprecated {\n color: #F8F8F0;\n background-color: #AE81FF\n}\n\n.ace-iplastic .ace_support.ace_constant,\n.ace-iplastic .ace_support.ace_function {\n color: #333333;\n font-weight: 700\n}\n\n.ace-iplastic .ace_fold {\n background-color: #464646;\n border-color: #F8F8F2\n}\n\n.ace-iplastic .ace_storage.ace_type,\n.ace-iplastic .ace_support.ace_class,\n.ace-iplastic .ace_support.ace_type {\n color: #3333fc;\n font-weight: 700\n}\n\n.ace-iplastic .ace_entity.ace_name.ace_function,\n.ace-iplastic .ace_entity.ace_other,\n.ace-iplastic .ace_entity.ace_other.ace_attribute-name,\n.ace-iplastic .ace_variable {\n color: #3366cc;\n font-style: italic\n}\n\n.ace-iplastic .ace_variable.ace_parameter {\n font-style: italic;\n color: #2469E0\n}\n\n.ace-iplastic .ace_string {\n color: #a55f03\n}\n\n.ace-iplastic .ace_comment {\n color: #777777;\n font-style: italic\n}\n\n.ace-iplastic .ace_fold-widget {\n background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==);\n}\n\n.ace-iplastic .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABlJREFUeNpi+P//PwMzMzPzfwAAAAD//wMAGRsECSML/RIAAAAASUVORK5CYII=) right repeat-y\n}\n\n.ace-iplastic .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; -exports.isDark = false; -exports.cssClass = "ace-iplastic"; -exports.cssText = ".ace-iplastic .ace_gutter {\ -background: #dddddd;\ -color: #666666\ -}\ -.ace-iplastic .ace_print-margin {\ -width: 1px;\ -background: #bbbbbb\ -}\ -.ace-iplastic {\ -background-color: #eeeeee;\ -color: #333333\ -}\ -.ace-iplastic .ace_cursor {\ -color: #333\ -}\ -.ace-iplastic .ace_marker-layer .ace_selection {\ -background: #BAD6FD;\ -}\ -.ace-iplastic.ace_multiselect .ace_selection.ace_start {\ -border-radius: 4px\ -}\ -.ace-iplastic .ace_marker-layer .ace_step {\ -background: #444444\ -}\ -.ace-iplastic .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #49483E;\ -background: #FFF799\ -}\ -.ace-iplastic .ace_marker-layer .ace_active-line {\ -background: #e5e5e5\ -}\ -.ace-iplastic .ace_gutter-active-line {\ -background-color: #eeeeee\ -}\ -.ace-iplastic .ace_marker-layer .ace_selected-word {\ -border: 1px solid #555555;\ -border-radius:4px\ -}\ -.ace-iplastic .ace_invisible {\ -color: #999999\ -}\ -.ace-iplastic .ace_entity.ace_name.ace_tag,\ -.ace-iplastic .ace_keyword,\ -.ace-iplastic .ace_meta.ace_tag,\ -.ace-iplastic .ace_storage {\ -color: #0000FF\ -}\ -.ace-iplastic .ace_punctuation,\ -.ace-iplastic .ace_punctuation.ace_tag {\ -color: #000\ -}\ -.ace-iplastic .ace_constant {\ -color: #333333;\ -font-weight: 700\ -}\ -.ace-iplastic .ace_constant.ace_character,\ -.ace-iplastic .ace_constant.ace_language,\ -.ace-iplastic .ace_constant.ace_numeric,\ -.ace-iplastic .ace_constant.ace_other {\ -color: #0066FF;\ -font-weight: 700\ -}\ -.ace-iplastic .ace_constant.ace_numeric{\ -font-weight: 100\ -}\ -.ace-iplastic .ace_invalid {\ -color: #F8F8F0;\ -background-color: #F92672\ -}\ -.ace-iplastic .ace_invalid.ace_deprecated {\ -color: #F8F8F0;\ -background-color: #AE81FF\ -}\ -.ace-iplastic .ace_support.ace_constant,\ -.ace-iplastic .ace_support.ace_function {\ -color: #333333;\ -font-weight: 700\ -}\ -.ace-iplastic .ace_fold {\ -background-color: #464646;\ -border-color: #F8F8F2\ -}\ -.ace-iplastic .ace_storage.ace_type,\ -.ace-iplastic .ace_support.ace_class,\ -.ace-iplastic .ace_support.ace_type {\ -color: #3333fc;\ -font-weight: 700\ -}\ -.ace-iplastic .ace_entity.ace_name.ace_function,\ -.ace-iplastic .ace_entity.ace_other,\ -.ace-iplastic .ace_entity.ace_other.ace_attribute-name,\ -.ace-iplastic .ace_variable {\ -color: #3366cc;\ -font-style: italic\ -}\ -.ace-iplastic .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #2469E0\ -}\ -.ace-iplastic .ace_string {\ -color: #a55f03\ -}\ -.ace-iplastic .ace_comment {\ -color: #777777;\ -font-style: italic\ -}\ -.ace-iplastic .ace_fold-widget {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==);\ -}\ -.ace-iplastic .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAABlJREFUeNpi+P//PwMzMzPzfwAAAAD//wMAGRsECSML/RIAAAAASUVORK5CYII=) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/iplastic",["require","exports","module","ace/theme/iplastic-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-iplastic"; +exports.cssText = require("./iplastic-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/iplastic"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-katzenmilch.js b/vendor/assets/javascripts/ace/theme-katzenmilch.js index cb4f8730..2e79430c 100644 --- a/vendor/assets/javascripts/ace/theme-katzenmilch.js +++ b/vendor/assets/javascripts/ace/theme-katzenmilch.js @@ -1,121 +1,18 @@ -define("ace/theme/katzenmilch",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/katzenmilch-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-katzenmilch .ace_gutter,\n/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: ) */\n\n.ace-katzenmilch .ace_gutter {\n background: #e8e8e8;\n color: #333\n}\n\n.ace-katzenmilch .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-katzenmilch {\n background-color: #f3f2f3;\n color: rgba(15, 0, 9, 1.0)\n}\n\n.ace-katzenmilch .ace_cursor {\n border-left: 2px solid #100011\n}\n\n.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {\n border-left: 0px;\n border-bottom: 1px solid #100011\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_selection {\n background: rgba(100, 5, 208, 0.27)\n}\n\n.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #f3f2f3;\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(0, 0, 0, 0.33);\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_active-line {\n background: rgb(232, 242, 254)\n}\n\n.ace-katzenmilch .ace_gutter-active-line {\n background-color: rgb(232, 242, 254)\n}\n\n.ace-katzenmilch .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(100, 5, 208, 0.27)\n}\n\n.ace-katzenmilch .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-katzenmilch .ace_fold {\n background-color: rgba(2, 95, 73, 0.97);\n border-color: rgba(15, 0, 9, 1.0)\n}\n\n.ace-katzenmilch .ace_keyword {\n color: #674Aa8;\n rbackground-color: rgba(163, 170, 216, 0.055)\n}\n\n.ace-katzenmilch .ace_constant.ace_language {\n color: #7D7e52;\n rbackground-color: rgba(189, 190, 130, 0.059)\n}\n\n.ace-katzenmilch .ace_constant.ace_numeric {\n color: rgba(79, 130, 123, 0.93);\n rbackground-color: rgba(119, 194, 187, 0.059)\n}\n\n.ace-katzenmilch .ace_constant.ace_character,\n.ace-katzenmilch .ace_constant.ace_other {\n color: rgba(2, 95, 105, 1.0);\n rbackground-color: rgba(127, 34, 153, 0.063)\n}\n\n.ace-katzenmilch .ace_support.ace_function {\n color: #9D7e62;\n rbackground-color: rgba(189, 190, 130, 0.039)\n}\n\n.ace-katzenmilch .ace_support.ace_class {\n color: rgba(239, 106, 167, 1.0);\n rbackground-color: rgba(239, 106, 167, 0.063)\n}\n\n.ace-katzenmilch .ace_storage {\n color: rgba(123, 92, 191, 1.0);\n rbackground-color: rgba(139, 93, 223, 0.051)\n}\n\n.ace-katzenmilch .ace_invalid {\n color: #DFDFD5;\n rbackground-color: #CC1B27\n}\n\n.ace-katzenmilch .ace_string {\n color: #5a5f9b;\n rbackground-color: rgba(170, 175, 219, 0.035)\n}\n\n.ace-katzenmilch .ace_comment {\n font-style: italic;\n color: rgba(64, 79, 80, 0.67);\n rbackground-color: rgba(95, 15, 255, 0.0078)\n}\n\n.ace-katzenmilch .ace_entity.ace_name.ace_function,\n.ace-katzenmilch .ace_variable {\n color: rgba(2, 95, 73, 0.97);\n rbackground-color: rgba(34, 255, 73, 0.12)\n}\n\n.ace-katzenmilch .ace_variable.ace_language {\n color: #316fcf;\n rbackground-color: rgba(58, 175, 255, 0.039)\n}\n\n.ace-katzenmilch .ace_variable.ace_parameter {\n font-style: italic;\n color: rgba(51, 150, 159, 0.87);\n rbackground-color: rgba(5, 214, 249, 0.043)\n}\n\n.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {\n color: rgba(73, 70, 194, 0.93);\n rbackground-color: rgba(73, 134, 194, 0.035)\n}\n\n.ace-katzenmilch .ace_entity.ace_name.ace_tag {\n color: #3976a2;\n rbackground-color: rgba(73, 166, 210, 0.039)\n}\n\n.ace-katzenmilch .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-katzenmilch .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n}\n"; -exports.isDark = false; -exports.cssClass = "ace-katzenmilch"; -exports.cssText = ".ace-katzenmilch .ace_gutter,\ -.ace-katzenmilch .ace_gutter {\ -background: #e8e8e8;\ -color: #333\ -}\ -.ace-katzenmilch .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-katzenmilch {\ -background-color: #f3f2f3;\ -color: rgba(15, 0, 9, 1.0)\ -}\ -.ace-katzenmilch .ace_cursor {\ -border-left: 2px solid #100011\ -}\ -.ace-katzenmilch .ace_overwrite-cursors .ace_cursor {\ -border-left: 0px;\ -border-bottom: 1px solid #100011\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_selection {\ -background: rgba(100, 5, 208, 0.27)\ -}\ -.ace-katzenmilch.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #f3f2f3;\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(0, 0, 0, 0.33);\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_active-line {\ -background: rgb(232, 242, 254)\ -}\ -.ace-katzenmilch .ace_gutter-active-line {\ -background-color: rgb(232, 242, 254)\ -}\ -.ace-katzenmilch .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(100, 5, 208, 0.27)\ -}\ -.ace-katzenmilch .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-katzenmilch .ace_fold {\ -background-color: rgba(2, 95, 73, 0.97);\ -border-color: rgba(15, 0, 9, 1.0)\ -}\ -.ace-katzenmilch .ace_keyword {\ -color: #674Aa8;\ -rbackground-color: rgba(163, 170, 216, 0.055)\ -}\ -.ace-katzenmilch .ace_constant.ace_language {\ -color: #7D7e52;\ -rbackground-color: rgba(189, 190, 130, 0.059)\ -}\ -.ace-katzenmilch .ace_constant.ace_numeric {\ -color: rgba(79, 130, 123, 0.93);\ -rbackground-color: rgba(119, 194, 187, 0.059)\ -}\ -.ace-katzenmilch .ace_constant.ace_character,\ -.ace-katzenmilch .ace_constant.ace_other {\ -color: rgba(2, 95, 105, 1.0);\ -rbackground-color: rgba(127, 34, 153, 0.063)\ -}\ -.ace-katzenmilch .ace_support.ace_function {\ -color: #9D7e62;\ -rbackground-color: rgba(189, 190, 130, 0.039)\ -}\ -.ace-katzenmilch .ace_support.ace_class {\ -color: rgba(239, 106, 167, 1.0);\ -rbackground-color: rgba(239, 106, 167, 0.063)\ -}\ -.ace-katzenmilch .ace_storage {\ -color: rgba(123, 92, 191, 1.0);\ -rbackground-color: rgba(139, 93, 223, 0.051)\ -}\ -.ace-katzenmilch .ace_invalid {\ -color: #DFDFD5;\ -rbackground-color: #CC1B27\ -}\ -.ace-katzenmilch .ace_string {\ -color: #5a5f9b;\ -rbackground-color: rgba(170, 175, 219, 0.035)\ -}\ -.ace-katzenmilch .ace_comment {\ -font-style: italic;\ -color: rgba(64, 79, 80, 0.67);\ -rbackground-color: rgba(95, 15, 255, 0.0078)\ -}\ -.ace-katzenmilch .ace_entity.ace_name.ace_function,\ -.ace-katzenmilch .ace_variable {\ -color: rgba(2, 95, 73, 0.97);\ -rbackground-color: rgba(34, 255, 73, 0.12)\ -}\ -.ace-katzenmilch .ace_variable.ace_language {\ -color: #316fcf;\ -rbackground-color: rgba(58, 175, 255, 0.039)\ -}\ -.ace-katzenmilch .ace_variable.ace_parameter {\ -font-style: italic;\ -color: rgba(51, 150, 159, 0.87);\ -rbackground-color: rgba(5, 214, 249, 0.043)\ -}\ -.ace-katzenmilch .ace_entity.ace_other.ace_attribute-name {\ -color: rgba(73, 70, 194, 0.93);\ -rbackground-color: rgba(73, 134, 194, 0.035)\ -}\ -.ace-katzenmilch .ace_entity.ace_name.ace_tag {\ -color: #3976a2;\ -rbackground-color: rgba(73, 166, 210, 0.039)\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/katzenmilch",["require","exports","module","ace/theme/katzenmilch-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-katzenmilch"; +exports.cssText = require("./katzenmilch-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/katzenmilch"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-kr_theme.js b/vendor/assets/javascripts/ace/theme-kr_theme.js index 8cf914ec..0b704276 100644 --- a/vendor/assets/javascripts/ace/theme-kr_theme.js +++ b/vendor/assets/javascripts/ace/theme-kr_theme.js @@ -1,104 +1,18 @@ -define("ace/theme/kr_theme",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/kr_theme-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-kr-theme .ace_gutter {\n background: #1c1917;\n color: #FCFFE0\n}\n\n.ace-kr-theme .ace_print-margin {\n width: 1px;\n background: #1c1917\n}\n\n.ace-kr-theme {\n background-color: #0B0A09;\n color: #FCFFE0\n}\n\n.ace-kr-theme .ace_cursor {\n color: #FF9900\n}\n\n.ace-kr-theme .ace_marker-layer .ace_selection {\n background: rgba(170, 0, 255, 0.45)\n}\n\n.ace-kr-theme.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #0B0A09;\n}\n\n.ace-kr-theme .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-kr-theme .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 177, 111, 0.32)\n}\n\n.ace-kr-theme .ace_marker-layer .ace_active-line {\n background: #38403D\n}\n\n.ace-kr-theme .ace_gutter-active-line {\n background-color : #38403D\n}\n\n.ace-kr-theme .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(170, 0, 255, 0.45)\n}\n\n.ace-kr-theme .ace_invisible {\n color: rgba(255, 177, 111, 0.32)\n}\n\n.ace-kr-theme .ace_keyword,\n.ace-kr-theme .ace_meta {\n color: #949C8B\n}\n\n.ace-kr-theme .ace_constant,\n.ace-kr-theme .ace_constant.ace_character,\n.ace-kr-theme .ace_constant.ace_character.ace_escape,\n.ace-kr-theme .ace_constant.ace_other {\n color: rgba(210, 117, 24, 0.76)\n}\n\n.ace-kr-theme .ace_invalid {\n color: #F8F8F8;\n background-color: #A41300\n}\n\n.ace-kr-theme .ace_support {\n color: #9FC28A\n}\n\n.ace-kr-theme .ace_support.ace_constant {\n color: #C27E66\n}\n\n.ace-kr-theme .ace_fold {\n background-color: #949C8B;\n border-color: #FCFFE0\n}\n\n.ace-kr-theme .ace_support.ace_function {\n color: #85873A\n}\n\n.ace-kr-theme .ace_storage {\n color: #FFEE80\n}\n\n.ace-kr-theme .ace_string {\n color: rgba(164, 161, 181, 0.8)\n}\n\n.ace-kr-theme .ace_string.ace_regexp {\n color: rgba(125, 255, 192, 0.65)\n}\n\n.ace-kr-theme .ace_comment {\n font-style: italic;\n color: #706D5B\n}\n\n.ace-kr-theme .ace_variable {\n color: #D1A796\n}\n\n.ace-kr-theme .ace_list,\n.ace-kr-theme .ace_markup.ace_list {\n background-color: #0F0040\n}\n\n.ace-kr-theme .ace_variable.ace_language {\n color: #FF80E1\n}\n\n.ace-kr-theme .ace_meta.ace_tag {\n color: #BABD9C\n}\n\n.ace-kr-theme .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-kr-theme .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-kr-theme"; -exports.cssText = ".ace-kr-theme .ace_gutter {\ -background: #1c1917;\ -color: #FCFFE0\ -}\ -.ace-kr-theme .ace_print-margin {\ -width: 1px;\ -background: #1c1917\ -}\ -.ace-kr-theme {\ -background-color: #0B0A09;\ -color: #FCFFE0\ -}\ -.ace-kr-theme .ace_cursor {\ -color: #FF9900\ -}\ -.ace-kr-theme .ace_marker-layer .ace_selection {\ -background: rgba(170, 0, 255, 0.45)\ -}\ -.ace-kr-theme.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #0B0A09;\ -}\ -.ace-kr-theme .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-kr-theme .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 177, 111, 0.32)\ -}\ -.ace-kr-theme .ace_marker-layer .ace_active-line {\ -background: #38403D\ -}\ -.ace-kr-theme .ace_gutter-active-line {\ -background-color : #38403D\ -}\ -.ace-kr-theme .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(170, 0, 255, 0.45)\ -}\ -.ace-kr-theme .ace_invisible {\ -color: rgba(255, 177, 111, 0.32)\ -}\ -.ace-kr-theme .ace_keyword,\ -.ace-kr-theme .ace_meta {\ -color: #949C8B\ -}\ -.ace-kr-theme .ace_constant,\ -.ace-kr-theme .ace_constant.ace_character,\ -.ace-kr-theme .ace_constant.ace_character.ace_escape,\ -.ace-kr-theme .ace_constant.ace_other {\ -color: rgba(210, 117, 24, 0.76)\ -}\ -.ace-kr-theme .ace_invalid {\ -color: #F8F8F8;\ -background-color: #A41300\ -}\ -.ace-kr-theme .ace_support {\ -color: #9FC28A\ -}\ -.ace-kr-theme .ace_support.ace_constant {\ -color: #C27E66\ -}\ -.ace-kr-theme .ace_fold {\ -background-color: #949C8B;\ -border-color: #FCFFE0\ -}\ -.ace-kr-theme .ace_support.ace_function {\ -color: #85873A\ -}\ -.ace-kr-theme .ace_storage {\ -color: #FFEE80\ -}\ -.ace-kr-theme .ace_string {\ -color: rgba(164, 161, 181, 0.8)\ -}\ -.ace-kr-theme .ace_string.ace_regexp {\ -color: rgba(125, 255, 192, 0.65)\ -}\ -.ace-kr-theme .ace_comment {\ -font-style: italic;\ -color: #706D5B\ -}\ -.ace-kr-theme .ace_variable {\ -color: #D1A796\ -}\ -.ace-kr-theme .ace_list,\ -.ace-kr-theme .ace_markup.ace_list {\ -background-color: #0F0040\ -}\ -.ace-kr-theme .ace_variable.ace_language {\ -color: #FF80E1\ -}\ -.ace-kr-theme .ace_meta.ace_tag {\ -color: #BABD9C\ -}\ -.ace-kr-theme .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/kr_theme",["require","exports","module","ace/theme/kr_theme-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-kr-theme"; +exports.cssText = require("./kr_theme-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/kr_theme"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-kuroir.js b/vendor/assets/javascripts/ace/theme-kuroir.js index 49d5b00d..58f911b6 100644 --- a/vendor/assets/javascripts/ace/theme-kuroir.js +++ b/vendor/assets/javascripts/ace/theme-kuroir.js @@ -1,61 +1,18 @@ -define("ace/theme/kuroir",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/kuroir-css",["require","exports","module"], function(require, exports, module){module.exports = "/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: 467560D0-6ACE-4409-82FD-4791420837AC) */\n\n.ace-kuroir .ace_gutter {\n background: #e8e8e8;\n color: #333;\n}\n\n.ace-kuroir .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-kuroir {\n background-color: #E8E9E8;\n color: #363636;\n}\n\n.ace-kuroir .ace_cursor {\n color: #202020;\n}\n\n.ace-kuroir .ace_marker-layer .ace_selection {\n background: rgba(245, 170, 0, 0.57);\n}\n\n.ace-kuroir.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #E8E9E8;\n}\n\n.ace-kuroir .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174);\n}\n\n.ace-kuroir .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(0, 0, 0, 0.29);\n}\n\n.ace-kuroir .ace_marker-layer .ace_active-line {\n background: rgba(203, 220, 47, 0.22);\n}\n\n.ace-kuroir .ace_gutter-active-line {\n background-color: rgba(203, 220, 47, 0.22);\n}\n\n.ace-kuroir .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(245, 170, 0, 0.57);\n}\n\n.ace-kuroir .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-kuroir .ace_fold {\n border-color: #363636;\n}\n\n\n\n\n\n.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;\nbackground-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;\nfont-style:italic;\ncolor:#FD1732;\nbackground-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;\nbackground-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);\nbackground-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;\nbackground-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}\n\n.ace-kuroir .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-kuroir .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.isDark = false; -exports.cssClass = "ace-kuroir"; -exports.cssText = "\ -.ace-kuroir .ace_gutter {\ -background: #e8e8e8;\ -color: #333;\ -}\ -.ace-kuroir .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-kuroir {\ -background-color: #E8E9E8;\ -color: #363636;\ -}\ -.ace-kuroir .ace_cursor {\ -color: #202020;\ -}\ -.ace-kuroir .ace_marker-layer .ace_selection {\ -background: rgba(245, 170, 0, 0.57);\ -}\ -.ace-kuroir.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #E8E9E8;\ -}\ -.ace-kuroir .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174);\ -}\ -.ace-kuroir .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(0, 0, 0, 0.29);\ -}\ -.ace-kuroir .ace_marker-layer .ace_active-line {\ -background: rgba(203, 220, 47, 0.22);\ -}\ -.ace-kuroir .ace_gutter-active-line {\ -background-color: rgba(203, 220, 47, 0.22);\ -}\ -.ace-kuroir .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(245, 170, 0, 0.57);\ -}\ -.ace-kuroir .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-kuroir .ace_fold {\ -border-color: #363636;\ -}\ -.ace-kuroir .ace_constant{color:#CD6839;}.ace-kuroir .ace_constant.ace_numeric{color:#9A5925;}.ace-kuroir .ace_support{color:#104E8B;}.ace-kuroir .ace_support.ace_function{color:#005273;}.ace-kuroir .ace_support.ace_constant{color:#CF6A4C;}.ace-kuroir .ace_storage{color:#A52A2A;}.ace-kuroir .ace_invalid.ace_illegal{color:#FD1224;\ -background-color:rgba(255, 6, 0, 0.15);}.ace-kuroir .ace_invalid.ace_deprecated{text-decoration:underline;\ -font-style:italic;\ -color:#FD1732;\ -background-color:#E8E9E8;}.ace-kuroir .ace_string{color:#639300;}.ace-kuroir .ace_string.ace_regexp{color:#417E00;\ -background-color:#C9D4BE;}.ace-kuroir .ace_comment{color:rgba(148, 148, 148, 0.91);\ -background-color:rgba(220, 220, 220, 0.56);}.ace-kuroir .ace_variable{color:#009ACD;}.ace-kuroir .ace_meta.ace_tag{color:#005273;}.ace-kuroir .ace_markup.ace_heading{color:#B8012D;\ -background-color:rgba(191, 97, 51, 0.051);}.ace-kuroir .ace_markup.ace_list{color:#8F5B26;}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/kuroir",["require","exports","module","ace/theme/kuroir-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-kuroir"; +exports.cssText = require("./kuroir-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/kuroir"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-merbivore.js b/vendor/assets/javascripts/ace/theme-merbivore.js index 37f4d136..bb95938b 100644 --- a/vendor/assets/javascripts/ace/theme-merbivore.js +++ b/vendor/assets/javascripts/ace/theme-merbivore.js @@ -1,95 +1,18 @@ -define("ace/theme/merbivore",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/merbivore-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-merbivore .ace_gutter {\n background: #202020;\n color: #E6E1DC\n}\n\n.ace-merbivore .ace_print-margin {\n width: 1px;\n background: #555651\n}\n\n.ace-merbivore {\n background-color: #161616;\n color: #E6E1DC\n}\n\n.ace-merbivore .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-merbivore .ace_marker-layer .ace_selection {\n background: #454545\n}\n\n.ace-merbivore.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #161616;\n}\n\n.ace-merbivore .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-merbivore .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-merbivore .ace_marker-layer .ace_active-line {\n background: #333435\n}\n\n.ace-merbivore .ace_gutter-active-line {\n background-color: #333435\n}\n\n.ace-merbivore .ace_marker-layer .ace_selected-word {\n border: 1px solid #454545\n}\n\n.ace-merbivore .ace_invisible {\n color: #404040\n}\n\n.ace-merbivore .ace_entity.ace_name.ace_tag,\n.ace-merbivore .ace_keyword,\n.ace-merbivore .ace_meta,\n.ace-merbivore .ace_meta.ace_tag,\n.ace-merbivore .ace_storage,\n.ace-merbivore .ace_support.ace_function {\n color: #FC6F09\n}\n\n.ace-merbivore .ace_constant,\n.ace-merbivore .ace_constant.ace_character,\n.ace-merbivore .ace_constant.ace_character.ace_escape,\n.ace-merbivore .ace_constant.ace_other,\n.ace-merbivore .ace_support.ace_type {\n color: #1EDAFB\n}\n\n.ace-merbivore .ace_constant.ace_character.ace_escape {\n color: #519F50\n}\n\n.ace-merbivore .ace_constant.ace_language {\n color: #FDC251\n}\n\n.ace-merbivore .ace_constant.ace_library,\n.ace-merbivore .ace_string,\n.ace-merbivore .ace_support.ace_constant {\n color: #8DFF0A\n}\n\n.ace-merbivore .ace_constant.ace_numeric {\n color: #58C554\n}\n\n.ace-merbivore .ace_invalid {\n color: #FFFFFF;\n background-color: #990000\n}\n\n.ace-merbivore .ace_fold {\n background-color: #FC6F09;\n border-color: #E6E1DC\n}\n\n.ace-merbivore .ace_comment {\n font-style: italic;\n color: #AD2EA4\n}\n\n.ace-merbivore .ace_entity.ace_other.ace_attribute-name {\n color: #FFFF89\n}\n\n.ace-merbivore .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-merbivore .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-merbivore"; -exports.cssText = ".ace-merbivore .ace_gutter {\ -background: #202020;\ -color: #E6E1DC\ -}\ -.ace-merbivore .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-merbivore {\ -background-color: #161616;\ -color: #E6E1DC\ -}\ -.ace-merbivore .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-merbivore .ace_marker-layer .ace_selection {\ -background: #454545\ -}\ -.ace-merbivore.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #161616;\ -}\ -.ace-merbivore .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-merbivore .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-merbivore .ace_marker-layer .ace_active-line {\ -background: #333435\ -}\ -.ace-merbivore .ace_gutter-active-line {\ -background-color: #333435\ -}\ -.ace-merbivore .ace_marker-layer .ace_selected-word {\ -border: 1px solid #454545\ -}\ -.ace-merbivore .ace_invisible {\ -color: #404040\ -}\ -.ace-merbivore .ace_entity.ace_name.ace_tag,\ -.ace-merbivore .ace_keyword,\ -.ace-merbivore .ace_meta,\ -.ace-merbivore .ace_meta.ace_tag,\ -.ace-merbivore .ace_storage,\ -.ace-merbivore .ace_support.ace_function {\ -color: #FC6F09\ -}\ -.ace-merbivore .ace_constant,\ -.ace-merbivore .ace_constant.ace_character,\ -.ace-merbivore .ace_constant.ace_character.ace_escape,\ -.ace-merbivore .ace_constant.ace_other,\ -.ace-merbivore .ace_support.ace_type {\ -color: #1EDAFB\ -}\ -.ace-merbivore .ace_constant.ace_character.ace_escape {\ -color: #519F50\ -}\ -.ace-merbivore .ace_constant.ace_language {\ -color: #FDC251\ -}\ -.ace-merbivore .ace_constant.ace_library,\ -.ace-merbivore .ace_string,\ -.ace-merbivore .ace_support.ace_constant {\ -color: #8DFF0A\ -}\ -.ace-merbivore .ace_constant.ace_numeric {\ -color: #58C554\ -}\ -.ace-merbivore .ace_invalid {\ -color: #FFFFFF;\ -background-color: #990000\ -}\ -.ace-merbivore .ace_fold {\ -background-color: #FC6F09;\ -border-color: #E6E1DC\ -}\ -.ace-merbivore .ace_comment {\ -font-style: italic;\ -color: #AD2EA4\ -}\ -.ace-merbivore .ace_entity.ace_other.ace_attribute-name {\ -color: #FFFF89\ -}\ -.ace-merbivore .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQFxf3ZXB1df0PAAdsAmERTkEHAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/merbivore",["require","exports","module","ace/theme/merbivore-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-merbivore"; +exports.cssText = require("./merbivore-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/merbivore"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-merbivore_soft.js b/vendor/assets/javascripts/ace/theme-merbivore_soft.js index e7e398cf..c6294518 100644 --- a/vendor/assets/javascripts/ace/theme-merbivore_soft.js +++ b/vendor/assets/javascripts/ace/theme-merbivore_soft.js @@ -1,96 +1,18 @@ -define("ace/theme/merbivore_soft",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/merbivore_soft-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-merbivore-soft .ace_gutter {\n background: #262424;\n color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_print-margin {\n width: 1px;\n background: #262424\n}\n\n.ace-merbivore-soft {\n background-color: #1C1C1C;\n color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_selection {\n background: #494949\n}\n\n.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #1C1C1C;\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_active-line {\n background: #333435\n}\n\n.ace-merbivore-soft .ace_gutter-active-line {\n background-color: #333435\n}\n\n.ace-merbivore-soft .ace_marker-layer .ace_selected-word {\n border: 1px solid #494949\n}\n\n.ace-merbivore-soft .ace_invisible {\n color: #404040\n}\n\n.ace-merbivore-soft .ace_entity.ace_name.ace_tag,\n.ace-merbivore-soft .ace_keyword,\n.ace-merbivore-soft .ace_meta,\n.ace-merbivore-soft .ace_meta.ace_tag,\n.ace-merbivore-soft .ace_storage {\n color: #FC803A\n}\n\n.ace-merbivore-soft .ace_constant,\n.ace-merbivore-soft .ace_constant.ace_character,\n.ace-merbivore-soft .ace_constant.ace_character.ace_escape,\n.ace-merbivore-soft .ace_constant.ace_other,\n.ace-merbivore-soft .ace_support.ace_type {\n color: #68C1D8\n}\n\n.ace-merbivore-soft .ace_constant.ace_character.ace_escape {\n color: #B3E5B4\n}\n\n.ace-merbivore-soft .ace_constant.ace_language {\n color: #E1C582\n}\n\n.ace-merbivore-soft .ace_constant.ace_library,\n.ace-merbivore-soft .ace_string,\n.ace-merbivore-soft .ace_support.ace_constant {\n color: #8EC65F\n}\n\n.ace-merbivore-soft .ace_constant.ace_numeric {\n color: #7FC578\n}\n\n.ace-merbivore-soft .ace_invalid,\n.ace-merbivore-soft .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #FE3838\n}\n\n.ace-merbivore-soft .ace_fold {\n background-color: #FC803A;\n border-color: #E6E1DC\n}\n\n.ace-merbivore-soft .ace_comment,\n.ace-merbivore-soft .ace_meta {\n font-style: italic;\n color: #AC4BB8\n}\n\n.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {\n color: #EAF1A3\n}\n\n.ace-merbivore-soft .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-merbivore-soft .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-merbivore-soft"; -exports.cssText = ".ace-merbivore-soft .ace_gutter {\ -background: #262424;\ -color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_print-margin {\ -width: 1px;\ -background: #262424\ -}\ -.ace-merbivore-soft {\ -background-color: #1C1C1C;\ -color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_selection {\ -background: #494949\ -}\ -.ace-merbivore-soft.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #1C1C1C;\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_active-line {\ -background: #333435\ -}\ -.ace-merbivore-soft .ace_gutter-active-line {\ -background-color: #333435\ -}\ -.ace-merbivore-soft .ace_marker-layer .ace_selected-word {\ -border: 1px solid #494949\ -}\ -.ace-merbivore-soft .ace_invisible {\ -color: #404040\ -}\ -.ace-merbivore-soft .ace_entity.ace_name.ace_tag,\ -.ace-merbivore-soft .ace_keyword,\ -.ace-merbivore-soft .ace_meta,\ -.ace-merbivore-soft .ace_meta.ace_tag,\ -.ace-merbivore-soft .ace_storage {\ -color: #FC803A\ -}\ -.ace-merbivore-soft .ace_constant,\ -.ace-merbivore-soft .ace_constant.ace_character,\ -.ace-merbivore-soft .ace_constant.ace_character.ace_escape,\ -.ace-merbivore-soft .ace_constant.ace_other,\ -.ace-merbivore-soft .ace_support.ace_type {\ -color: #68C1D8\ -}\ -.ace-merbivore-soft .ace_constant.ace_character.ace_escape {\ -color: #B3E5B4\ -}\ -.ace-merbivore-soft .ace_constant.ace_language {\ -color: #E1C582\ -}\ -.ace-merbivore-soft .ace_constant.ace_library,\ -.ace-merbivore-soft .ace_string,\ -.ace-merbivore-soft .ace_support.ace_constant {\ -color: #8EC65F\ -}\ -.ace-merbivore-soft .ace_constant.ace_numeric {\ -color: #7FC578\ -}\ -.ace-merbivore-soft .ace_invalid,\ -.ace-merbivore-soft .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #FE3838\ -}\ -.ace-merbivore-soft .ace_fold {\ -background-color: #FC803A;\ -border-color: #E6E1DC\ -}\ -.ace-merbivore-soft .ace_comment,\ -.ace-merbivore-soft .ace_meta {\ -font-style: italic;\ -color: #AC4BB8\ -}\ -.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name {\ -color: #EAF1A3\ -}\ -.ace-merbivore-soft .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWOQkpLyZfD09PwPAAfYAnaStpHRAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/merbivore_soft",["require","exports","module","ace/theme/merbivore_soft-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-merbivore-soft"; +exports.cssText = require("./merbivore_soft-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/merbivore_soft"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-mono_industrial.js b/vendor/assets/javascripts/ace/theme-mono_industrial.js index 4d1d93ad..d5d5fc3a 100644 --- a/vendor/assets/javascripts/ace/theme-mono_industrial.js +++ b/vendor/assets/javascripts/ace/theme-mono_industrial.js @@ -1,107 +1,18 @@ -define("ace/theme/mono_industrial",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/mono_industrial-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-mono-industrial .ace_gutter {\n background: #1d2521;\n color: #C5C9C9\n}\n\n.ace-mono-industrial .ace_print-margin {\n width: 1px;\n background: #555651\n}\n\n.ace-mono-industrial {\n background-color: #222C28;\n color: #FFFFFF\n}\n\n.ace-mono-industrial .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_selection {\n background: rgba(145, 153, 148, 0.40)\n}\n\n.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #222C28;\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(102, 108, 104, 0.50)\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_active-line {\n background: rgba(12, 13, 12, 0.25)\n}\n\n.ace-mono-industrial .ace_gutter-active-line {\n background-color: rgba(12, 13, 12, 0.25)\n}\n\n.ace-mono-industrial .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(145, 153, 148, 0.40)\n}\n\n.ace-mono-industrial .ace_invisible {\n color: rgba(102, 108, 104, 0.50)\n}\n\n.ace-mono-industrial .ace_string {\n background-color: #151C19;\n color: #FFFFFF\n}\n\n.ace-mono-industrial .ace_keyword,\n.ace-mono-industrial .ace_meta {\n color: #A39E64\n}\n\n.ace-mono-industrial .ace_constant,\n.ace-mono-industrial .ace_constant.ace_character,\n.ace-mono-industrial .ace_constant.ace_character.ace_escape,\n.ace-mono-industrial .ace_constant.ace_numeric,\n.ace-mono-industrial .ace_constant.ace_other {\n color: #E98800\n}\n\n.ace-mono-industrial .ace_entity.ace_name.ace_function,\n.ace-mono-industrial .ace_keyword.ace_operator,\n.ace-mono-industrial .ace_variable {\n color: #A8B3AB\n}\n\n.ace-mono-industrial .ace_invalid {\n color: #FFFFFF;\n background-color: rgba(153, 0, 0, 0.68)\n}\n\n.ace-mono-industrial .ace_support.ace_constant {\n color: #C87500\n}\n\n.ace-mono-industrial .ace_fold {\n background-color: #A8B3AB;\n border-color: #FFFFFF\n}\n\n.ace-mono-industrial .ace_support.ace_function {\n color: #588E60\n}\n\n.ace-mono-industrial .ace_entity.ace_name,\n.ace-mono-industrial .ace_support.ace_class,\n.ace-mono-industrial .ace_support.ace_type {\n color: #5778B6\n}\n\n.ace-mono-industrial .ace_storage {\n color: #C23B00\n}\n\n.ace-mono-industrial .ace_variable.ace_language,\n.ace-mono-industrial .ace_variable.ace_parameter {\n color: #648BD2\n}\n\n.ace-mono-industrial .ace_comment {\n color: #666C68;\n background-color: #151C19\n}\n\n.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {\n color: #909993\n}\n\n.ace-mono-industrial .ace_entity.ace_name.ace_tag {\n color: #A65EFF\n}\n\n.ace-mono-industrial .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-mono-industrial .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-mono-industrial"; -exports.cssText = ".ace-mono-industrial .ace_gutter {\ -background: #1d2521;\ -color: #C5C9C9\ -}\ -.ace-mono-industrial .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-mono-industrial {\ -background-color: #222C28;\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_selection {\ -background: rgba(145, 153, 148, 0.40)\ -}\ -.ace-mono-industrial.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #222C28;\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(102, 108, 104, 0.50)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_active-line {\ -background: rgba(12, 13, 12, 0.25)\ -}\ -.ace-mono-industrial .ace_gutter-active-line {\ -background-color: rgba(12, 13, 12, 0.25)\ -}\ -.ace-mono-industrial .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(145, 153, 148, 0.40)\ -}\ -.ace-mono-industrial .ace_invisible {\ -color: rgba(102, 108, 104, 0.50)\ -}\ -.ace-mono-industrial .ace_string {\ -background-color: #151C19;\ -color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_keyword,\ -.ace-mono-industrial .ace_meta {\ -color: #A39E64\ -}\ -.ace-mono-industrial .ace_constant,\ -.ace-mono-industrial .ace_constant.ace_character,\ -.ace-mono-industrial .ace_constant.ace_character.ace_escape,\ -.ace-mono-industrial .ace_constant.ace_numeric,\ -.ace-mono-industrial .ace_constant.ace_other {\ -color: #E98800\ -}\ -.ace-mono-industrial .ace_entity.ace_name.ace_function,\ -.ace-mono-industrial .ace_keyword.ace_operator,\ -.ace-mono-industrial .ace_variable {\ -color: #A8B3AB\ -}\ -.ace-mono-industrial .ace_invalid {\ -color: #FFFFFF;\ -background-color: rgba(153, 0, 0, 0.68)\ -}\ -.ace-mono-industrial .ace_support.ace_constant {\ -color: #C87500\ -}\ -.ace-mono-industrial .ace_fold {\ -background-color: #A8B3AB;\ -border-color: #FFFFFF\ -}\ -.ace-mono-industrial .ace_support.ace_function {\ -color: #588E60\ -}\ -.ace-mono-industrial .ace_entity.ace_name,\ -.ace-mono-industrial .ace_support.ace_class,\ -.ace-mono-industrial .ace_support.ace_type {\ -color: #5778B6\ -}\ -.ace-mono-industrial .ace_storage {\ -color: #C23B00\ -}\ -.ace-mono-industrial .ace_variable.ace_language,\ -.ace-mono-industrial .ace_variable.ace_parameter {\ -color: #648BD2\ -}\ -.ace-mono-industrial .ace_comment {\ -color: #666C68;\ -background-color: #151C19\ -}\ -.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name {\ -color: #909993\ -}\ -.ace-mono-industrial .ace_entity.ace_name.ace_tag {\ -color: #A65EFF\ -}\ -.ace-mono-industrial .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNQ1NbwZfALD/4PAAlTArlEC4r/AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/mono_industrial",["require","exports","module","ace/theme/mono_industrial-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-mono-industrial"; +exports.cssText = require("./mono_industrial-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/mono_industrial"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-monokai.js b/vendor/assets/javascripts/ace/theme-monokai.js index b2f9df67..e918f803 100644 --- a/vendor/assets/javascripts/ace/theme-monokai.js +++ b/vendor/assets/javascripts/ace/theme-monokai.js @@ -1,105 +1,18 @@ -define("ace/theme/monokai",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/monokai-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-monokai .ace_gutter {\n background: #2F3129;\n color: #8F908A\n}\n\n.ace-monokai .ace_print-margin {\n width: 1px;\n background: #555651\n}\n\n.ace-monokai {\n background-color: #272822;\n color: #F8F8F2\n}\n\n.ace-monokai .ace_cursor {\n color: #F8F8F0\n}\n\n.ace-monokai .ace_marker-layer .ace_selection {\n background: #49483E\n}\n\n.ace-monokai.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #272822;\n}\n\n.ace-monokai .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-monokai .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #49483E\n}\n\n.ace-monokai .ace_marker-layer .ace_active-line {\n background: #202020\n}\n\n.ace-monokai .ace_gutter-active-line {\n background-color: #272727\n}\n\n.ace-monokai .ace_marker-layer .ace_selected-word {\n border: 1px solid #49483E\n}\n\n.ace-monokai .ace_invisible {\n color: #52524d\n}\n\n.ace-monokai .ace_entity.ace_name.ace_tag,\n.ace-monokai .ace_keyword,\n.ace-monokai .ace_meta.ace_tag,\n.ace-monokai .ace_storage {\n color: #F92672\n}\n\n.ace-monokai .ace_punctuation,\n.ace-monokai .ace_punctuation.ace_tag {\n color: #fff\n}\n\n.ace-monokai .ace_constant.ace_character,\n.ace-monokai .ace_constant.ace_language,\n.ace-monokai .ace_constant.ace_numeric,\n.ace-monokai .ace_constant.ace_other {\n color: #AE81FF\n}\n\n.ace-monokai .ace_invalid {\n color: #F8F8F0;\n background-color: #F92672\n}\n\n.ace-monokai .ace_invalid.ace_deprecated {\n color: #F8F8F0;\n background-color: #AE81FF\n}\n\n.ace-monokai .ace_support.ace_constant,\n.ace-monokai .ace_support.ace_function {\n color: #66D9EF\n}\n\n.ace-monokai .ace_fold {\n background-color: #A6E22E;\n border-color: #F8F8F2\n}\n\n.ace-monokai .ace_storage.ace_type,\n.ace-monokai .ace_support.ace_class,\n.ace-monokai .ace_support.ace_type {\n font-style: italic;\n color: #66D9EF\n}\n\n.ace-monokai .ace_entity.ace_name.ace_function,\n.ace-monokai .ace_entity.ace_other,\n.ace-monokai .ace_entity.ace_other.ace_attribute-name,\n.ace-monokai .ace_variable {\n color: #A6E22E\n}\n\n.ace-monokai .ace_variable.ace_parameter {\n font-style: italic;\n color: #FD971F\n}\n\n.ace-monokai .ace_string {\n color: #E6DB74\n}\n\n.ace-monokai .ace_comment {\n color: #75715E\n}\n\n.ace-monokai .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-monokai .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-monokai"; -exports.cssText = ".ace-monokai .ace_gutter {\ -background: #2F3129;\ -color: #8F908A\ -}\ -.ace-monokai .ace_print-margin {\ -width: 1px;\ -background: #555651\ -}\ -.ace-monokai {\ -background-color: #272822;\ -color: #F8F8F2\ -}\ -.ace-monokai .ace_cursor {\ -color: #F8F8F0\ -}\ -.ace-monokai .ace_marker-layer .ace_selection {\ -background: #49483E\ -}\ -.ace-monokai.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #272822;\ -}\ -.ace-monokai .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-monokai .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #49483E\ -}\ -.ace-monokai .ace_marker-layer .ace_active-line {\ -background: #202020\ -}\ -.ace-monokai .ace_gutter-active-line {\ -background-color: #272727\ -}\ -.ace-monokai .ace_marker-layer .ace_selected-word {\ -border: 1px solid #49483E\ -}\ -.ace-monokai .ace_invisible {\ -color: #52524d\ -}\ -.ace-monokai .ace_entity.ace_name.ace_tag,\ -.ace-monokai .ace_keyword,\ -.ace-monokai .ace_meta.ace_tag,\ -.ace-monokai .ace_storage {\ -color: #F92672\ -}\ -.ace-monokai .ace_punctuation,\ -.ace-monokai .ace_punctuation.ace_tag {\ -color: #fff\ -}\ -.ace-monokai .ace_constant.ace_character,\ -.ace-monokai .ace_constant.ace_language,\ -.ace-monokai .ace_constant.ace_numeric,\ -.ace-monokai .ace_constant.ace_other {\ -color: #AE81FF\ -}\ -.ace-monokai .ace_invalid {\ -color: #F8F8F0;\ -background-color: #F92672\ -}\ -.ace-monokai .ace_invalid.ace_deprecated {\ -color: #F8F8F0;\ -background-color: #AE81FF\ -}\ -.ace-monokai .ace_support.ace_constant,\ -.ace-monokai .ace_support.ace_function {\ -color: #66D9EF\ -}\ -.ace-monokai .ace_fold {\ -background-color: #A6E22E;\ -border-color: #F8F8F2\ -}\ -.ace-monokai .ace_storage.ace_type,\ -.ace-monokai .ace_support.ace_class,\ -.ace-monokai .ace_support.ace_type {\ -font-style: italic;\ -color: #66D9EF\ -}\ -.ace-monokai .ace_entity.ace_name.ace_function,\ -.ace-monokai .ace_entity.ace_other,\ -.ace-monokai .ace_entity.ace_other.ace_attribute-name,\ -.ace-monokai .ace_variable {\ -color: #A6E22E\ -}\ -.ace-monokai .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #FD971F\ -}\ -.ace-monokai .ace_string {\ -color: #E6DB74\ -}\ -.ace-monokai .ace_comment {\ -color: #75715E\ -}\ -.ace-monokai .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/monokai",["require","exports","module","ace/theme/monokai-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-monokai"; +exports.cssText = require("./monokai-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/monokai"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-nord_dark.js b/vendor/assets/javascripts/ace/theme-nord_dark.js new file mode 100644 index 00000000..bc862713 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-nord_dark.js @@ -0,0 +1,19 @@ +define("ace/theme/nord_dark-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-nord-dark .ace_gutter {\n color: #616e88;\n}\n\n.ace-nord-dark .ace_print-margin {\n width: 1px;\n background: #4c566a;\n}\n\n.ace-nord-dark {\n background-color: #2e3440;\n color: #d8dee9;\n}\n\n.ace-nord-dark .ace_entity.ace_other.ace_attribute-name,\n.ace-nord-dark .ace_storage {\n color: #d8dee9;\n}\n\n.ace-nord-dark .ace_cursor {\n color: #d8dee9;\n}\n\n.ace-nord-dark .ace_string.ace_regexp {\n color: #bf616a;\n}\n\n.ace-nord-dark .ace_marker-layer .ace_active-line {\n background: #434c5ecc;\n}\n.ace-nord-dark .ace_marker-layer .ace_selection {\n background: #434c5ecc;\n}\n\n.ace-nord-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #2e3440;\n}\n\n.ace-nord-dark .ace_marker-layer .ace_step {\n background: #ebcb8b;\n}\n\n.ace-nord-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #88c0d066;\n}\n\n.ace-nord-dark .ace_gutter-active-line {\n background-color: #434c5ecc;\n}\n\n.ace-nord-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #88c0d066;\n}\n\n.ace-nord-dark .ace_invisible {\n color: #4c566a;\n}\n\n.ace-nord-dark .ace_keyword,\n.ace-nord-dark .ace_meta,\n.ace-nord-dark .ace_support.ace_class,\n.ace-nord-dark .ace_support.ace_type {\n color: #81a1c1;\n}\n\n.ace-nord-dark .ace_constant.ace_character,\n.ace-nord-dark .ace_constant.ace_other {\n color: #d8dee9;\n}\n\n.ace-nord-dark .ace_constant.ace_language {\n color: #5e81ac;\n}\n\n.ace-nord-dark .ace_constant.ace_escape {\n color: #ebcB8b;\n}\n\n.ace-nord-dark .ace_constant.ace_numeric {\n color: #b48ead;\n}\n\n.ace-nord-dark .ace_fold {\n background-color: #4c566a;\n border-color: #d8dee9;\n}\n\n.ace-nord-dark .ace_entity.ace_name.ace_function,\n.ace-nord-dark .ace_entity.ace_name.ace_tag,\n.ace-nord-dark .ace_support.ace_function,\n.ace-nord-dark .ace_variable,\n.ace-nord-dark .ace_variable.ace_language {\n color: #8fbcbb;\n}\n\n.ace-nord-dark .ace_string {\n color: #a3be8c;\n}\n\n.ace-nord-dark .ace_comment {\n color: #616e88;\n}\n\n.ace-nord-dark .ace_indent-guide {\n box-shadow: inset -1px 0 0 0 #434c5eb3;\n}\n\n.ace-nord-dark .ace_indent-guide-active {\n box-shadow: inset -1px 0 0 0 #8395b8b3;\n}\n"; + +}); + +define("ace/theme/nord_dark",["require","exports","module","ace/theme/nord_dark-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-nord-dark"; +exports.cssText = require("./nord_dark-css"); +exports.$selectionColorConflict = true; +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/nord_dark"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-one_dark.js b/vendor/assets/javascripts/ace/theme-one_dark.js new file mode 100644 index 00000000..760ce482 --- /dev/null +++ b/vendor/assets/javascripts/ace/theme-one_dark.js @@ -0,0 +1,18 @@ +define("ace/theme/one_dark-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-one-dark .ace_gutter {\n background: #282c34;\n color: #6a6f7a\n}\n\n.ace-one-dark .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-one-dark {\n background-color: #282c34;\n color: #abb2bf\n}\n\n.ace-one-dark .ace_cursor {\n color: #528bff\n}\n\n.ace-one-dark .ace_marker-layer .ace_selection {\n background: #3d4350\n}\n\n.ace-one-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0 #282c34;\n border-radius: 2px\n}\n\n.ace-one-dark .ace_marker-layer .ace_step {\n background: #c6dbae\n}\n\n.ace-one-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #747369\n}\n\n.ace-one-dark .ace_marker-layer .ace_active-line {\n background: rgba(76, 87, 103, .19)\n}\n\n.ace-one-dark .ace_gutter-active-line {\n background-color: rgba(76, 87, 103, .19)\n}\n\n.ace-one-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #3d4350\n}\n\n.ace-one-dark .ace_fold {\n background-color: #61afef;\n border-color: #abb2bf\n}\n\n.ace-one-dark .ace_keyword {\n color: #c678dd\n}\n\n.ace-one-dark .ace_keyword.ace_operator {\n color: #c678dd\n}\n\n.ace-one-dark .ace_keyword.ace_other.ace_unit {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_language {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_numeric {\n color: #d19a66\n}\n\n.ace-one-dark .ace_constant.ace_character {\n color: #56b6c2\n}\n\n.ace-one-dark .ace_constant.ace_other {\n color: #56b6c2\n}\n\n.ace-one-dark .ace_support.ace_function {\n color: #61afef\n}\n\n.ace-one-dark .ace_support.ace_constant {\n color: #d19a66\n}\n\n.ace-one-dark .ace_support.ace_class {\n color: #e5c07b\n}\n\n.ace-one-dark .ace_support.ace_type {\n color: #e5c07b\n}\n\n.ace-one-dark .ace_storage {\n color: #c678dd\n}\n\n.ace-one-dark .ace_storage.ace_type {\n color: #c678dd\n}\n\n.ace-one-dark .ace_invalid {\n color: #fff;\n background-color: #f2777a\n}\n\n.ace-one-dark .ace_invalid.ace_deprecated {\n color: #272b33;\n background-color: #d27b53\n}\n\n.ace-one-dark .ace_string {\n color: #98c379\n}\n\n.ace-one-dark .ace_string.ace_regexp {\n color: #e06c75\n}\n\n.ace-one-dark .ace_comment {\n font-style: italic;\n color: #5c6370\n}\n\n.ace-one-dark .ace_variable {\n color: #e06c75\n}\n\n.ace-one-dark .ace_variable.ace_parameter {\n color: #d19a66\n}\n\n.ace-one-dark .ace_meta.ace_tag {\n color: #e06c75\n}\n\n.ace-one-dark .ace_entity.ace_other.ace_attribute-name {\n color: #e06c75\n}\n\n.ace-one-dark .ace_entity.ace_name.ace_function {\n color: #61afef\n}\n\n.ace-one-dark .ace_entity.ace_name.ace_tag {\n color: #e06c75\n}\n\n.ace-one-dark .ace_markup.ace_heading {\n color: #98c379\n}\n\n.ace-one-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-one-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; + +}); + +define("ace/theme/one_dark",["require","exports","module","ace/theme/one_dark-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-one-dark"; +exports.cssText = require("./one_dark-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/one_dark"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-pastel_on_dark.js b/vendor/assets/javascripts/ace/theme-pastel_on_dark.js index 7348aeb2..277e427b 100644 --- a/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +++ b/vendor/assets/javascripts/ace/theme-pastel_on_dark.js @@ -1,108 +1,18 @@ -define("ace/theme/pastel_on_dark",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/pastel_on_dark-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-pastel-on-dark .ace_gutter {\n background: #353030;\n color: #8F938F\n}\n\n.ace-pastel-on-dark .ace_print-margin {\n width: 1px;\n background: #353030\n}\n\n.ace-pastel-on-dark {\n background-color: #2C2828;\n color: #8F938F\n}\n\n.ace-pastel-on-dark .ace_cursor {\n color: #A7A7A7\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20)\n}\n\n.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #2C2828;\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.25)\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.031)\n}\n\n.ace-pastel-on-dark .ace_gutter-active-line {\n background-color: rgba(255, 255, 255, 0.031)\n}\n\n.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(221, 240, 255, 0.20)\n}\n\n.ace-pastel-on-dark .ace_invisible {\n color: rgba(255, 255, 255, 0.25)\n}\n\n.ace-pastel-on-dark .ace_keyword,\n.ace-pastel-on-dark .ace_meta {\n color: #757aD8\n}\n\n.ace-pastel-on-dark .ace_constant,\n.ace-pastel-on-dark .ace_constant.ace_character,\n.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,\n.ace-pastel-on-dark .ace_constant.ace_other {\n color: #4FB7C5\n}\n\n.ace-pastel-on-dark .ace_keyword.ace_operator {\n color: #797878\n}\n\n.ace-pastel-on-dark .ace_constant.ace_character {\n color: #AFA472\n}\n\n.ace-pastel-on-dark .ace_constant.ace_language {\n color: #DE8E30\n}\n\n.ace-pastel-on-dark .ace_constant.ace_numeric {\n color: #CCCCCC\n}\n\n.ace-pastel-on-dark .ace_invalid,\n.ace-pastel-on-dark .ace_invalid.ace_illegal {\n color: #F8F8F8;\n background-color: rgba(86, 45, 86, 0.75)\n}\n\n.ace-pastel-on-dark .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #D2A8A1\n}\n\n.ace-pastel-on-dark .ace_fold {\n background-color: #757aD8;\n border-color: #8F938F\n}\n\n.ace-pastel-on-dark .ace_support.ace_function {\n color: #AEB2F8\n}\n\n.ace-pastel-on-dark .ace_string {\n color: #66A968\n}\n\n.ace-pastel-on-dark .ace_string.ace_regexp {\n color: #E9C062\n}\n\n.ace-pastel-on-dark .ace_comment {\n color: #A6C6FF\n}\n\n.ace-pastel-on-dark .ace_variable {\n color: #BEBF55\n}\n\n.ace-pastel-on-dark .ace_variable.ace_language {\n color: #C1C144\n}\n\n.ace-pastel-on-dark .ace_xml-pe {\n color: #494949\n}\n\n.ace-pastel-on-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-pastel-on-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-pastel-on-dark"; -exports.cssText = ".ace-pastel-on-dark .ace_gutter {\ -background: #353030;\ -color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_print-margin {\ -width: 1px;\ -background: #353030\ -}\ -.ace-pastel-on-dark {\ -background-color: #2C2828;\ -color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_cursor {\ -color: #A7A7A7\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20)\ -}\ -.ace-pastel-on-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #2C2828;\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031)\ -}\ -.ace-pastel-on-dark .ace_gutter-active-line {\ -background-color: rgba(255, 255, 255, 0.031)\ -}\ -.ace-pastel-on-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(221, 240, 255, 0.20)\ -}\ -.ace-pastel-on-dark .ace_invisible {\ -color: rgba(255, 255, 255, 0.25)\ -}\ -.ace-pastel-on-dark .ace_keyword,\ -.ace-pastel-on-dark .ace_meta {\ -color: #757aD8\ -}\ -.ace-pastel-on-dark .ace_constant,\ -.ace-pastel-on-dark .ace_constant.ace_character,\ -.ace-pastel-on-dark .ace_constant.ace_character.ace_escape,\ -.ace-pastel-on-dark .ace_constant.ace_other {\ -color: #4FB7C5\ -}\ -.ace-pastel-on-dark .ace_keyword.ace_operator {\ -color: #797878\ -}\ -.ace-pastel-on-dark .ace_constant.ace_character {\ -color: #AFA472\ -}\ -.ace-pastel-on-dark .ace_constant.ace_language {\ -color: #DE8E30\ -}\ -.ace-pastel-on-dark .ace_constant.ace_numeric {\ -color: #CCCCCC\ -}\ -.ace-pastel-on-dark .ace_invalid,\ -.ace-pastel-on-dark .ace_invalid.ace_illegal {\ -color: #F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75)\ -}\ -.ace-pastel-on-dark .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1\ -}\ -.ace-pastel-on-dark .ace_fold {\ -background-color: #757aD8;\ -border-color: #8F938F\ -}\ -.ace-pastel-on-dark .ace_support.ace_function {\ -color: #AEB2F8\ -}\ -.ace-pastel-on-dark .ace_string {\ -color: #66A968\ -}\ -.ace-pastel-on-dark .ace_string.ace_regexp {\ -color: #E9C062\ -}\ -.ace-pastel-on-dark .ace_comment {\ -color: #A6C6FF\ -}\ -.ace-pastel-on-dark .ace_variable {\ -color: #BEBF55\ -}\ -.ace-pastel-on-dark .ace_variable.ace_language {\ -color: #C1C144\ -}\ -.ace-pastel-on-dark .ace_xml-pe {\ -color: #494949\ -}\ -.ace-pastel-on-dark .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYIiPj/8PAARgAh2NTMh8AAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/pastel_on_dark",["require","exports","module","ace/theme/pastel_on_dark-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-pastel-on-dark"; +exports.cssText = require("./pastel_on_dark-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/pastel_on_dark"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-solarized_dark.js b/vendor/assets/javascripts/ace/theme-solarized_dark.js index 6052e88e..5109518f 100644 --- a/vendor/assets/javascripts/ace/theme-solarized_dark.js +++ b/vendor/assets/javascripts/ace/theme-solarized_dark.js @@ -1,88 +1,18 @@ -define("ace/theme/solarized_dark",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/solarized_dark-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-solarized-dark .ace_gutter {\n background: #01313f;\n color: #d0edf7\n}\n\n.ace-solarized-dark .ace_print-margin {\n width: 1px;\n background: #33555E\n}\n\n.ace-solarized-dark {\n background-color: #002B36;\n color: #839496\n}\n\n.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,\n.ace-solarized-dark .ace_storage {\n color: #839496\n}\n\n.ace-solarized-dark .ace_cursor,\n.ace-solarized-dark .ace_string.ace_regexp {\n color: #D30102\n}\n\n.ace-solarized-dark .ace_marker-layer .ace_active-line,\n.ace-solarized-dark .ace_marker-layer .ace_selection {\n background: rgba(255, 255, 255, 0.1)\n}\n\n.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002B36;\n}\n\n.ace-solarized-dark .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-solarized-dark .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(147, 161, 161, 0.50)\n}\n\n.ace-solarized-dark .ace_gutter-active-line {\n background-color: #0d3440\n}\n\n.ace-solarized-dark .ace_marker-layer .ace_selected-word {\n border: 1px solid #073642\n}\n\n.ace-solarized-dark .ace_invisible {\n color: rgba(147, 161, 161, 0.50)\n}\n\n.ace-solarized-dark .ace_keyword,\n.ace-solarized-dark .ace_meta,\n.ace-solarized-dark .ace_support.ace_class,\n.ace-solarized-dark .ace_support.ace_type {\n color: #859900\n}\n\n.ace-solarized-dark .ace_constant.ace_character,\n.ace-solarized-dark .ace_constant.ace_other {\n color: #CB4B16\n}\n\n.ace-solarized-dark .ace_constant.ace_language {\n color: #B58900\n}\n\n.ace-solarized-dark .ace_constant.ace_numeric {\n color: #D33682\n}\n\n.ace-solarized-dark .ace_fold {\n background-color: #268BD2;\n border-color: #93A1A1\n}\n\n.ace-solarized-dark .ace_entity.ace_name.ace_function,\n.ace-solarized-dark .ace_entity.ace_name.ace_tag,\n.ace-solarized-dark .ace_support.ace_function,\n.ace-solarized-dark .ace_variable,\n.ace-solarized-dark .ace_variable.ace_language {\n color: #268BD2\n}\n\n.ace-solarized-dark .ace_string {\n color: #2AA198\n}\n\n.ace-solarized-dark .ace_comment {\n font-style: italic;\n color: #657B83\n}\n\n.ace-solarized-dark .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-solarized-dark .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-solarized-dark"; -exports.cssText = ".ace-solarized-dark .ace_gutter {\ -background: #01313f;\ -color: #d0edf7\ -}\ -.ace-solarized-dark .ace_print-margin {\ -width: 1px;\ -background: #33555E\ -}\ -.ace-solarized-dark {\ -background-color: #002B36;\ -color: #93A1A1\ -}\ -.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name,\ -.ace-solarized-dark .ace_storage {\ -color: #93A1A1\ -}\ -.ace-solarized-dark .ace_cursor,\ -.ace-solarized-dark .ace_string.ace_regexp {\ -color: #D30102\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_active-line,\ -.ace-solarized-dark .ace_marker-layer .ace_selection {\ -background: rgba(255, 255, 255, 0.1)\ -}\ -.ace-solarized-dark.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002B36;\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-dark .ace_gutter-active-line {\ -background-color: #0d3440\ -}\ -.ace-solarized-dark .ace_marker-layer .ace_selected-word {\ -border: 1px solid #073642\ -}\ -.ace-solarized-dark .ace_invisible {\ -color: rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-dark .ace_keyword,\ -.ace-solarized-dark .ace_meta,\ -.ace-solarized-dark .ace_support.ace_class,\ -.ace-solarized-dark .ace_support.ace_type {\ -color: #859900\ -}\ -.ace-solarized-dark .ace_constant.ace_character,\ -.ace-solarized-dark .ace_constant.ace_other {\ -color: #CB4B16\ -}\ -.ace-solarized-dark .ace_constant.ace_language {\ -color: #B58900\ -}\ -.ace-solarized-dark .ace_constant.ace_numeric {\ -color: #D33682\ -}\ -.ace-solarized-dark .ace_fold {\ -background-color: #268BD2;\ -border-color: #93A1A1\ -}\ -.ace-solarized-dark .ace_entity.ace_name.ace_function,\ -.ace-solarized-dark .ace_entity.ace_name.ace_tag,\ -.ace-solarized-dark .ace_support.ace_function,\ -.ace-solarized-dark .ace_variable,\ -.ace-solarized-dark .ace_variable.ace_language {\ -color: #268BD2\ -}\ -.ace-solarized-dark .ace_string {\ -color: #2AA198\ -}\ -.ace-solarized-dark .ace_comment {\ -font-style: italic;\ -color: #657B83\ -}\ -.ace-solarized-dark .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNg0Db1ZVCxc/sPAAd4AlUHlLenAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/solarized_dark",["require","exports","module","ace/theme/solarized_dark-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-solarized-dark"; +exports.cssText = require("./solarized_dark-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/solarized_dark"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-solarized_light.js b/vendor/assets/javascripts/ace/theme-solarized_light.js index aa70c775..be6c2872 100644 --- a/vendor/assets/javascripts/ace/theme-solarized_light.js +++ b/vendor/assets/javascripts/ace/theme-solarized_light.js @@ -1,91 +1,18 @@ -define("ace/theme/solarized_light",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/solarized_light-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-solarized-light .ace_gutter {\n background: #fbf1d3;\n color: #333\n}\n\n.ace-solarized-light .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-solarized-light {\n background-color: #FDF6E3;\n color: #586E75\n}\n\n.ace-solarized-light .ace_cursor {\n color: #000000\n}\n\n.ace-solarized-light .ace_marker-layer .ace_selection {\n background: rgba(7, 54, 67, 0.09)\n}\n\n.ace-solarized-light.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FDF6E3;\n}\n\n.ace-solarized-light .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-solarized-light .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(147, 161, 161, 0.50)\n}\n\n.ace-solarized-light .ace_marker-layer .ace_active-line {\n background: #EEE8D5\n}\n\n.ace-solarized-light .ace_gutter-active-line {\n background-color : #EDE5C1\n}\n\n.ace-solarized-light .ace_marker-layer .ace_selected-word {\n border: 1px solid #7f9390\n}\n\n.ace-solarized-light .ace_invisible {\n color: rgba(147, 161, 161, 0.50)\n}\n\n.ace-solarized-light .ace_keyword,\n.ace-solarized-light .ace_meta,\n.ace-solarized-light .ace_support.ace_class,\n.ace-solarized-light .ace_support.ace_type {\n color: #859900\n}\n\n.ace-solarized-light .ace_constant.ace_character,\n.ace-solarized-light .ace_constant.ace_other {\n color: #CB4B16\n}\n\n.ace-solarized-light .ace_constant.ace_language {\n color: #B58900\n}\n\n.ace-solarized-light .ace_constant.ace_numeric {\n color: #D33682\n}\n\n.ace-solarized-light .ace_fold {\n background-color: #268BD2;\n border-color: #586E75\n}\n\n.ace-solarized-light .ace_entity.ace_name.ace_function,\n.ace-solarized-light .ace_entity.ace_name.ace_tag,\n.ace-solarized-light .ace_support.ace_function,\n.ace-solarized-light .ace_variable,\n.ace-solarized-light .ace_variable.ace_language {\n color: #268BD2\n}\n\n.ace-solarized-light .ace_storage {\n color: #073642\n}\n\n.ace-solarized-light .ace_string {\n color: #2AA198\n}\n\n.ace-solarized-light .ace_string.ace_regexp {\n color: #D30102\n}\n\n.ace-solarized-light .ace_comment,\n.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {\n color: #93A1A1\n}\n\n.ace-solarized-light .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-solarized-light .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.isDark = false; -exports.cssClass = "ace-solarized-light"; -exports.cssText = ".ace-solarized-light .ace_gutter {\ -background: #fbf1d3;\ -color: #333\ -}\ -.ace-solarized-light .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-solarized-light {\ -background-color: #FDF6E3;\ -color: #586E75\ -}\ -.ace-solarized-light .ace_cursor {\ -color: #000000\ -}\ -.ace-solarized-light .ace_marker-layer .ace_selection {\ -background: rgba(7, 54, 67, 0.09)\ -}\ -.ace-solarized-light.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FDF6E3;\ -}\ -.ace-solarized-light .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-solarized-light .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-light .ace_marker-layer .ace_active-line {\ -background: #EEE8D5\ -}\ -.ace-solarized-light .ace_gutter-active-line {\ -background-color : #EDE5C1\ -}\ -.ace-solarized-light .ace_marker-layer .ace_selected-word {\ -border: 1px solid #073642\ -}\ -.ace-solarized-light .ace_invisible {\ -color: rgba(147, 161, 161, 0.50)\ -}\ -.ace-solarized-light .ace_keyword,\ -.ace-solarized-light .ace_meta,\ -.ace-solarized-light .ace_support.ace_class,\ -.ace-solarized-light .ace_support.ace_type {\ -color: #859900\ -}\ -.ace-solarized-light .ace_constant.ace_character,\ -.ace-solarized-light .ace_constant.ace_other {\ -color: #CB4B16\ -}\ -.ace-solarized-light .ace_constant.ace_language {\ -color: #B58900\ -}\ -.ace-solarized-light .ace_constant.ace_numeric {\ -color: #D33682\ -}\ -.ace-solarized-light .ace_fold {\ -background-color: #268BD2;\ -border-color: #586E75\ -}\ -.ace-solarized-light .ace_entity.ace_name.ace_function,\ -.ace-solarized-light .ace_entity.ace_name.ace_tag,\ -.ace-solarized-light .ace_support.ace_function,\ -.ace-solarized-light .ace_variable,\ -.ace-solarized-light .ace_variable.ace_language {\ -color: #268BD2\ -}\ -.ace-solarized-light .ace_storage {\ -color: #073642\ -}\ -.ace-solarized-light .ace_string {\ -color: #2AA198\ -}\ -.ace-solarized-light .ace_string.ace_regexp {\ -color: #D30102\ -}\ -.ace-solarized-light .ace_comment,\ -.ace-solarized-light .ace_entity.ace_other.ace_attribute-name {\ -color: #93A1A1\ -}\ -.ace-solarized-light .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHjy8NJ/AAjgA5fzQUmBAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/solarized_light",["require","exports","module","ace/theme/solarized_light-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-solarized-light"; +exports.cssText = require("./solarized_light-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/solarized_light"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-sqlserver.js b/vendor/assets/javascripts/ace/theme-sqlserver.js index 5c1b36e0..d5f1e4fc 100644 --- a/vendor/assets/javascripts/ace/theme-sqlserver.js +++ b/vendor/assets/javascripts/ace/theme-sqlserver.js @@ -1,138 +1,18 @@ -define("ace/theme/sqlserver",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/sqlserver-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-sqlserver .ace_gutter {\n background: #ebebeb;\n color: #333;\n overflow: hidden;\n}\n\n.ace-sqlserver .ace_print-margin {\n width: 1px;\n background: #e8e8e8;\n}\n\n.ace-sqlserver {\n background-color: #FFFFFF;\n color: black;\n}\n\n.ace-sqlserver .ace_identifier {\n color: black;\n}\n\n.ace-sqlserver .ace_keyword {\n color: #0000FF;\n}\n\n.ace-sqlserver .ace_numeric {\n color: black;\n}\n\n.ace-sqlserver .ace_storage {\n color: #11B7BE;\n}\n\n.ace-sqlserver .ace_keyword.ace_operator,\n.ace-sqlserver .ace_lparen,\n.ace-sqlserver .ace_rparen,\n.ace-sqlserver .ace_punctuation {\n color: #808080;\n}\n\n.ace-sqlserver .ace_set.ace_statement {\n color: #0000FF;\n text-decoration: underline;\n}\n\n.ace-sqlserver .ace_cursor {\n color: black;\n}\n\n.ace-sqlserver .ace_invisible {\n color: rgb(191, 191, 191);\n}\n\n.ace-sqlserver .ace_constant.ace_buildin {\n color: rgb(88, 72, 246);\n}\n\n.ace-sqlserver .ace_constant.ace_language {\n color: #979797;\n}\n\n.ace-sqlserver .ace_constant.ace_library {\n color: rgb(6, 150, 14);\n}\n\n.ace-sqlserver .ace_invalid {\n background-color: rgb(153, 0, 0);\n color: white;\n}\n\n.ace-sqlserver .ace_support.ace_function {\n color: #FF00FF;\n}\n\n.ace-sqlserver .ace_support.ace_constant {\n color: rgb(6, 150, 14);\n}\n\n.ace-sqlserver .ace_class {\n color: #008080;\n}\n\n.ace-sqlserver .ace_support.ace_other {\n color: #6D79DE;\n}\n\n.ace-sqlserver .ace_variable.ace_parameter {\n font-style: italic;\n color: #FD971F;\n}\n\n.ace-sqlserver .ace_comment {\n color: #008000;\n}\n\n.ace-sqlserver .ace_constant.ace_numeric {\n color: black;\n}\n\n.ace-sqlserver .ace_variable {\n color: rgb(49, 132, 149);\n}\n\n.ace-sqlserver .ace_xml-pe {\n color: rgb(104, 104, 91);\n}\n\n.ace-sqlserver .ace_support.ace_storedprocedure {\n color: #800000;\n}\n\n.ace-sqlserver .ace_heading {\n color: rgb(12, 7, 255);\n}\n\n.ace-sqlserver .ace_list {\n color: rgb(185, 6, 144);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_selection {\n background: rgb(181, 213, 255);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_step {\n background: rgb(252, 255, 0);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_stack {\n background: rgb(164, 229, 101);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgb(192, 192, 192);\n}\n\n.ace-sqlserver .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.07);\n}\n\n.ace-sqlserver .ace_gutter-active-line {\n background-color: #dcdcdc;\n}\n\n.ace-sqlserver .ace_marker-layer .ace_selected-word {\n background: rgb(250, 250, 255);\n border: 1px solid rgb(200, 200, 250);\n}\n\n.ace-sqlserver .ace_meta.ace_tag {\n color: #0000FF;\n}\n\n.ace-sqlserver .ace_string.ace_regex {\n color: #FF0000;\n}\n\n.ace-sqlserver .ace_string {\n color: #FF0000;\n}\n\n.ace-sqlserver .ace_entity.ace_other.ace_attribute-name {\n color: #994409;\n}\n\n.ace-sqlserver .ace_indent-guide {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\n}\n\n.ace-sqlserver .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.isDark = false; -exports.cssClass = "ace-sqlserver"; -exports.cssText = ".ace-sqlserver .ace_gutter {\ -background: #ebebeb;\ -color: #333;\ -overflow: hidden;\ -}\ -.ace-sqlserver .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-sqlserver {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-sqlserver .ace_identifier {\ -color: black;\ -}\ -.ace-sqlserver .ace_keyword {\ -color: #0000FF;\ -}\ -.ace-sqlserver .ace_numeric {\ -color: black;\ -}\ -.ace-sqlserver .ace_storage {\ -color: #11B7BE;\ -}\ -.ace-sqlserver .ace_keyword.ace_operator,\ -.ace-sqlserver .ace_lparen,\ -.ace-sqlserver .ace_rparen,\ -.ace-sqlserver .ace_punctuation {\ -color: #808080;\ -}\ -.ace-sqlserver .ace_set.ace_statement {\ -color: #0000FF;\ -text-decoration: underline;\ -}\ -.ace-sqlserver .ace_cursor {\ -color: black;\ -}\ -.ace-sqlserver .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-sqlserver .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-sqlserver .ace_constant.ace_language {\ -color: #979797;\ -}\ -.ace-sqlserver .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-sqlserver .ace_invalid {\ -background-color: rgb(153, 0, 0);\ -color: white;\ -}\ -.ace-sqlserver .ace_support.ace_function {\ -color: #FF00FF;\ -}\ -.ace-sqlserver .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-sqlserver .ace_class {\ -color: #008080;\ -}\ -.ace-sqlserver .ace_support.ace_other {\ -color: #6D79DE;\ -}\ -.ace-sqlserver .ace_variable.ace_parameter {\ -font-style: italic;\ -color: #FD971F;\ -}\ -.ace-sqlserver .ace_comment {\ -color: #008000;\ -}\ -.ace-sqlserver .ace_constant.ace_numeric {\ -color: black;\ -}\ -.ace-sqlserver .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-sqlserver .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-sqlserver .ace_support.ace_storedprocedure {\ -color: #800000;\ -}\ -.ace-sqlserver .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-sqlserver .ace_list {\ -color: rgb(185, 6, 144);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-sqlserver .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-sqlserver .ace_gutter-active-line {\ -background-color: #dcdcdc;\ -}\ -.ace-sqlserver .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-sqlserver .ace_meta.ace_tag {\ -color: #0000FF;\ -}\ -.ace-sqlserver .ace_string.ace_regex {\ -color: #FF0000;\ -}\ -.ace-sqlserver .ace_string {\ -color: #FF0000;\ -}\ -.ace-sqlserver .ace_entity.ace_other.ace_attribute-name {\ -color: #994409;\ -}\ -.ace-sqlserver .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/sqlserver",["require","exports","module","ace/theme/sqlserver-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-sqlserver"; +exports.cssText = require("./sqlserver-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/sqlserver"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-terminal.js b/vendor/assets/javascripts/ace/theme-terminal.js index 76379d46..1aa6c895 100644 --- a/vendor/assets/javascripts/ace/theme-terminal.js +++ b/vendor/assets/javascripts/ace/theme-terminal.js @@ -1,114 +1,18 @@ -define("ace/theme/terminal",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/terminal-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-terminal-theme .ace_gutter {\n background: #1a0005;\n color: steelblue\n}\n\n.ace-terminal-theme .ace_print-margin {\n width: 1px;\n background: #1a1a1a\n}\n\n.ace-terminal-theme {\n background-color: black;\n color: #DEDEDE\n}\n\n.ace-terminal-theme .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px black;\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_step {\n background: rgb(0, 0, 0)\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_bracket {\n background: #090;\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_bracket-start {\n background: #090;\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {\n margin: -1px 0 0 -1px;\n border: 1px solid #900\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_active-line {\n background: #2A2A2A\n}\n\n.ace-terminal-theme .ace_gutter-active-line {\n background-color: #2A112A\n}\n\n.ace-terminal-theme .ace_marker-layer .ace_selected-word {\n border: 1px solid #424242\n}\n\n.ace-terminal-theme .ace_invisible {\n color: #343434\n}\n\n.ace-terminal-theme .ace_keyword,\n.ace-terminal-theme .ace_meta,\n.ace-terminal-theme .ace_storage,\n.ace-terminal-theme .ace_storage.ace_type,\n.ace-terminal-theme .ace_support.ace_type {\n color: tomato\n}\n\n.ace-terminal-theme .ace_keyword.ace_operator {\n color: deeppink\n}\n\n.ace-terminal-theme .ace_constant.ace_character,\n.ace-terminal-theme .ace_constant.ace_language,\n.ace-terminal-theme .ace_constant.ace_numeric,\n.ace-terminal-theme .ace_keyword.ace_other.ace_unit,\n.ace-terminal-theme .ace_support.ace_constant,\n.ace-terminal-theme .ace_variable.ace_parameter {\n color: #E78C45\n}\n\n.ace-terminal-theme .ace_constant.ace_other {\n color: gold\n}\n\n.ace-terminal-theme .ace_invalid {\n color: yellow;\n background-color: red\n}\n\n.ace-terminal-theme .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-terminal-theme .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-terminal-theme .ace_entity.ace_name.ace_function,\n.ace-terminal-theme .ace_support.ace_function,\n.ace-terminal-theme .ace_variable {\n color: #7AA6DA\n}\n\n.ace-terminal-theme .ace_support.ace_class,\n.ace-terminal-theme .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-terminal-theme .ace_heading,\n.ace-terminal-theme .ace_string {\n color: #B9CA4A\n}\n\n.ace-terminal-theme .ace_entity.ace_name.ace_tag,\n.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,\n.ace-terminal-theme .ace_meta.ace_tag,\n.ace-terminal-theme .ace_string.ace_regexp,\n.ace-terminal-theme .ace_variable {\n color: #D54E53\n}\n\n.ace-terminal-theme .ace_comment {\n color: orangered\n}\n\n.ace-terminal-theme .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;\n}\n\n.ace-terminal-theme .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-terminal-theme"; -exports.cssText = ".ace-terminal-theme .ace_gutter {\ -background: #1a0005;\ -color: steelblue\ -}\ -.ace-terminal-theme .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-terminal-theme {\ -background-color: black;\ -color: #DEDEDE\ -}\ -.ace-terminal-theme .ace_cursor {\ -color: #9F9F9F\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_selection {\ -background: #424242\ -}\ -.ace-terminal-theme.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px black;\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_step {\ -background: rgb(0, 0, 0)\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket {\ -background: #090;\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket-start {\ -background: #090;\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #900\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_active-line {\ -background: #2A2A2A\ -}\ -.ace-terminal-theme .ace_gutter-active-line {\ -background-color: #2A112A\ -}\ -.ace-terminal-theme .ace_marker-layer .ace_selected-word {\ -border: 1px solid #424242\ -}\ -.ace-terminal-theme .ace_invisible {\ -color: #343434\ -}\ -.ace-terminal-theme .ace_keyword,\ -.ace-terminal-theme .ace_meta,\ -.ace-terminal-theme .ace_storage,\ -.ace-terminal-theme .ace_storage.ace_type,\ -.ace-terminal-theme .ace_support.ace_type {\ -color: tomato\ -}\ -.ace-terminal-theme .ace_keyword.ace_operator {\ -color: deeppink\ -}\ -.ace-terminal-theme .ace_constant.ace_character,\ -.ace-terminal-theme .ace_constant.ace_language,\ -.ace-terminal-theme .ace_constant.ace_numeric,\ -.ace-terminal-theme .ace_keyword.ace_other.ace_unit,\ -.ace-terminal-theme .ace_support.ace_constant,\ -.ace-terminal-theme .ace_variable.ace_parameter {\ -color: #E78C45\ -}\ -.ace-terminal-theme .ace_constant.ace_other {\ -color: gold\ -}\ -.ace-terminal-theme .ace_invalid {\ -color: yellow;\ -background-color: red\ -}\ -.ace-terminal-theme .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-terminal-theme .ace_fold {\ -background-color: #7AA6DA;\ -border-color: #DEDEDE\ -}\ -.ace-terminal-theme .ace_entity.ace_name.ace_function,\ -.ace-terminal-theme .ace_support.ace_function,\ -.ace-terminal-theme .ace_variable {\ -color: #7AA6DA\ -}\ -.ace-terminal-theme .ace_support.ace_class,\ -.ace-terminal-theme .ace_support.ace_type {\ -color: #E7C547\ -}\ -.ace-terminal-theme .ace_heading,\ -.ace-terminal-theme .ace_string {\ -color: #B9CA4A\ -}\ -.ace-terminal-theme .ace_entity.ace_name.ace_tag,\ -.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,\ -.ace-terminal-theme .ace_meta.ace_tag,\ -.ace-terminal-theme .ace_string.ace_regexp,\ -.ace-terminal-theme .ace_variable {\ -color: #D54E53\ -}\ -.ace-terminal-theme .ace_comment {\ -color: orangered\ -}\ -.ace-terminal-theme .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y;\ -}\ -"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/terminal",["require","exports","module","ace/theme/terminal-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-terminal-theme"; +exports.cssText = require("./terminal-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/terminal"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-textmate.js b/vendor/assets/javascripts/ace/theme-textmate.js index b1d1a99a..524b4329 100644 --- a/vendor/assets/javascripts/ace/theme-textmate.js +++ b/vendor/assets/javascripts/ace/theme-textmate.js @@ -1,129 +1,16 @@ -define("ace/theme/textmate",["require","exports","module","ace/lib/dom"], function(require, exports, module) { -"use strict"; - +define("ace/theme/textmate",["require","exports","module","ace/theme/textmate-css","ace/lib/dom"], function(require, exports, module){"use strict"; exports.isDark = false; exports.cssClass = "ace-tm"; -exports.cssText = ".ace-tm .ace_gutter {\ -background: #f0f0f0;\ -color: #333;\ -}\ -.ace-tm .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8;\ -}\ -.ace-tm .ace_fold {\ -background-color: #6B72E6;\ -}\ -.ace-tm {\ -background-color: #FFFFFF;\ -color: black;\ -}\ -.ace-tm .ace_cursor {\ -color: black;\ -}\ -.ace-tm .ace_invisible {\ -color: rgb(191, 191, 191);\ -}\ -.ace-tm .ace_storage,\ -.ace-tm .ace_keyword {\ -color: blue;\ -}\ -.ace-tm .ace_constant {\ -color: rgb(197, 6, 11);\ -}\ -.ace-tm .ace_constant.ace_buildin {\ -color: rgb(88, 72, 246);\ -}\ -.ace-tm .ace_constant.ace_language {\ -color: rgb(88, 92, 246);\ -}\ -.ace-tm .ace_constant.ace_library {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_invalid {\ -background-color: rgba(255, 0, 0, 0.1);\ -color: red;\ -}\ -.ace-tm .ace_support.ace_function {\ -color: rgb(60, 76, 114);\ -}\ -.ace-tm .ace_support.ace_constant {\ -color: rgb(6, 150, 14);\ -}\ -.ace-tm .ace_support.ace_type,\ -.ace-tm .ace_support.ace_class {\ -color: rgb(109, 121, 222);\ -}\ -.ace-tm .ace_keyword.ace_operator {\ -color: rgb(104, 118, 135);\ -}\ -.ace-tm .ace_string {\ -color: rgb(3, 106, 7);\ -}\ -.ace-tm .ace_comment {\ -color: rgb(76, 136, 107);\ -}\ -.ace-tm .ace_comment.ace_doc {\ -color: rgb(0, 102, 255);\ -}\ -.ace-tm .ace_comment.ace_doc.ace_tag {\ -color: rgb(128, 159, 191);\ -}\ -.ace-tm .ace_constant.ace_numeric {\ -color: rgb(0, 0, 205);\ -}\ -.ace-tm .ace_variable {\ -color: rgb(49, 132, 149);\ -}\ -.ace-tm .ace_xml-pe {\ -color: rgb(104, 104, 91);\ -}\ -.ace-tm .ace_entity.ace_name.ace_function {\ -color: #0000A2;\ -}\ -.ace-tm .ace_heading {\ -color: rgb(12, 7, 255);\ -}\ -.ace-tm .ace_list {\ -color:rgb(185, 6, 144);\ -}\ -.ace-tm .ace_meta.ace_tag {\ -color:rgb(0, 22, 142);\ -}\ -.ace-tm .ace_string.ace_regex {\ -color: rgb(255, 0, 0)\ -}\ -.ace-tm .ace_marker-layer .ace_selection {\ -background: rgb(181, 213, 255);\ -}\ -.ace-tm.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px white;\ -}\ -.ace-tm .ace_marker-layer .ace_step {\ -background: rgb(252, 255, 0);\ -}\ -.ace-tm .ace_marker-layer .ace_stack {\ -background: rgb(164, 229, 101);\ -}\ -.ace-tm .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgb(192, 192, 192);\ -}\ -.ace-tm .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.07);\ -}\ -.ace-tm .ace_gutter-active-line {\ -background-color : #dcdcdc;\ -}\ -.ace-tm .ace_marker-layer .ace_selected-word {\ -background: rgb(250, 250, 255);\ -border: 1px solid rgb(200, 200, 250);\ -}\ -.ace-tm .ace_indent-guide {\ -background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\") right repeat-y;\ -}\ -"; - +exports.cssText = require("./textmate-css"); +exports.$id = "ace/theme/textmate"; var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); -}); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/textmate"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-tomorrow.js b/vendor/assets/javascripts/ace/theme-tomorrow.js index 91adb577..d0d1b80a 100644 --- a/vendor/assets/javascripts/ace/theme-tomorrow.js +++ b/vendor/assets/javascripts/ace/theme-tomorrow.js @@ -1,108 +1,18 @@ -define("ace/theme/tomorrow",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/tomorrow-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tomorrow .ace_gutter {\n background: #f6f6f6;\n color: #4D4D4C\n}\n\n.ace-tomorrow .ace_print-margin {\n width: 1px;\n background: #f6f6f6\n}\n\n.ace-tomorrow {\n background-color: #FFFFFF;\n color: #4D4D4C\n}\n\n.ace-tomorrow .ace_cursor {\n color: #AEAFAD\n}\n\n.ace-tomorrow .ace_marker-layer .ace_selection {\n background: #D6D6D6\n}\n\n.ace-tomorrow.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-tomorrow .ace_marker-layer .ace_step {\n background: rgb(255, 255, 0)\n}\n\n.ace-tomorrow .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #D1D1D1\n}\n\n.ace-tomorrow .ace_marker-layer .ace_active-line {\n background: #EFEFEF\n}\n\n.ace-tomorrow .ace_gutter-active-line {\n background-color : #dcdcdc\n}\n\n.ace-tomorrow .ace_marker-layer .ace_selected-word {\n border: 1px solid #D6D6D6\n}\n\n.ace-tomorrow .ace_invisible {\n color: #D1D1D1\n}\n\n.ace-tomorrow .ace_keyword,\n.ace-tomorrow .ace_meta,\n.ace-tomorrow .ace_storage,\n.ace-tomorrow .ace_storage.ace_type,\n.ace-tomorrow .ace_support.ace_type {\n color: #8959A8\n}\n\n.ace-tomorrow .ace_keyword.ace_operator {\n color: #3E999F\n}\n\n.ace-tomorrow .ace_constant.ace_character,\n.ace-tomorrow .ace_constant.ace_language,\n.ace-tomorrow .ace_constant.ace_numeric,\n.ace-tomorrow .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow .ace_support.ace_constant,\n.ace-tomorrow .ace_variable.ace_parameter {\n color: #F5871F\n}\n\n.ace-tomorrow .ace_constant.ace_other {\n color: #666969\n}\n\n.ace-tomorrow .ace_invalid {\n color: #FFFFFF;\n background-color: #C82829\n}\n\n.ace-tomorrow .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #8959A8\n}\n\n.ace-tomorrow .ace_fold {\n background-color: #4271AE;\n border-color: #4D4D4C\n}\n\n.ace-tomorrow .ace_entity.ace_name.ace_function,\n.ace-tomorrow .ace_support.ace_function,\n.ace-tomorrow .ace_variable {\n color: #4271AE\n}\n\n.ace-tomorrow .ace_support.ace_class,\n.ace-tomorrow .ace_support.ace_type {\n color: #C99E00\n}\n\n.ace-tomorrow .ace_heading,\n.ace-tomorrow .ace_markup.ace_heading,\n.ace-tomorrow .ace_string {\n color: #718C00\n}\n\n.ace-tomorrow .ace_entity.ace_name.ace_tag,\n.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow .ace_meta.ace_tag,\n.ace-tomorrow .ace_string.ace_regexp,\n.ace-tomorrow .ace_variable {\n color: #C82829\n}\n\n.ace-tomorrow .ace_comment {\n color: #8E908C\n}\n\n.ace-tomorrow .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y\n}\n\n.ace-tomorrow .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.isDark = false; -exports.cssClass = "ace-tomorrow"; -exports.cssText = ".ace-tomorrow .ace_gutter {\ -background: #f6f6f6;\ -color: #4D4D4C\ -}\ -.ace-tomorrow .ace_print-margin {\ -width: 1px;\ -background: #f6f6f6\ -}\ -.ace-tomorrow {\ -background-color: #FFFFFF;\ -color: #4D4D4C\ -}\ -.ace-tomorrow .ace_cursor {\ -color: #AEAFAD\ -}\ -.ace-tomorrow .ace_marker-layer .ace_selection {\ -background: #D6D6D6\ -}\ -.ace-tomorrow.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -}\ -.ace-tomorrow .ace_marker-layer .ace_step {\ -background: rgb(255, 255, 0)\ -}\ -.ace-tomorrow .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #D1D1D1\ -}\ -.ace-tomorrow .ace_marker-layer .ace_active-line {\ -background: #EFEFEF\ -}\ -.ace-tomorrow .ace_gutter-active-line {\ -background-color : #dcdcdc\ -}\ -.ace-tomorrow .ace_marker-layer .ace_selected-word {\ -border: 1px solid #D6D6D6\ -}\ -.ace-tomorrow .ace_invisible {\ -color: #D1D1D1\ -}\ -.ace-tomorrow .ace_keyword,\ -.ace-tomorrow .ace_meta,\ -.ace-tomorrow .ace_storage,\ -.ace-tomorrow .ace_storage.ace_type,\ -.ace-tomorrow .ace_support.ace_type {\ -color: #8959A8\ -}\ -.ace-tomorrow .ace_keyword.ace_operator {\ -color: #3E999F\ -}\ -.ace-tomorrow .ace_constant.ace_character,\ -.ace-tomorrow .ace_constant.ace_language,\ -.ace-tomorrow .ace_constant.ace_numeric,\ -.ace-tomorrow .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow .ace_support.ace_constant,\ -.ace-tomorrow .ace_variable.ace_parameter {\ -color: #F5871F\ -}\ -.ace-tomorrow .ace_constant.ace_other {\ -color: #666969\ -}\ -.ace-tomorrow .ace_invalid {\ -color: #FFFFFF;\ -background-color: #C82829\ -}\ -.ace-tomorrow .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #8959A8\ -}\ -.ace-tomorrow .ace_fold {\ -background-color: #4271AE;\ -border-color: #4D4D4C\ -}\ -.ace-tomorrow .ace_entity.ace_name.ace_function,\ -.ace-tomorrow .ace_support.ace_function,\ -.ace-tomorrow .ace_variable {\ -color: #4271AE\ -}\ -.ace-tomorrow .ace_support.ace_class,\ -.ace-tomorrow .ace_support.ace_type {\ -color: #C99E00\ -}\ -.ace-tomorrow .ace_heading,\ -.ace-tomorrow .ace_markup.ace_heading,\ -.ace-tomorrow .ace_string {\ -color: #718C00\ -}\ -.ace-tomorrow .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow .ace_meta.ace_tag,\ -.ace-tomorrow .ace_string.ace_regexp,\ -.ace-tomorrow .ace_variable {\ -color: #C82829\ -}\ -.ace-tomorrow .ace_comment {\ -color: #8E908C\ -}\ -.ace-tomorrow .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bdu3f/BwAlfgctduB85QAAAABJRU5ErkJggg==) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/tomorrow",["require","exports","module","ace/theme/tomorrow-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-tomorrow"; +exports.cssText = require("./tomorrow-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/tomorrow"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-tomorrow_night.js b/vendor/assets/javascripts/ace/theme-tomorrow_night.js index abfa8759..79844040 100644 --- a/vendor/assets/javascripts/ace/theme-tomorrow_night.js +++ b/vendor/assets/javascripts/ace/theme-tomorrow_night.js @@ -1,108 +1,18 @@ -define("ace/theme/tomorrow_night",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/tomorrow_night-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tomorrow-night .ace_gutter {\n background: #25282c;\n color: #C5C8C6\n}\n\n.ace-tomorrow-night .ace_print-margin {\n width: 1px;\n background: #25282c\n}\n\n.ace-tomorrow-night {\n background-color: #1D1F21;\n color: #C5C8C6\n}\n\n.ace-tomorrow-night .ace_cursor {\n color: #AEAFAD\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_selection {\n background: #373B41\n}\n\n.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #1D1F21;\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #4B4E55\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_active-line {\n background: #282A2E\n}\n\n.ace-tomorrow-night .ace_gutter-active-line {\n background-color: #282A2E\n}\n\n.ace-tomorrow-night .ace_marker-layer .ace_selected-word {\n border: 1px solid #373B41\n}\n\n.ace-tomorrow-night .ace_invisible {\n color: #4B4E55\n}\n\n.ace-tomorrow-night .ace_keyword,\n.ace-tomorrow-night .ace_meta,\n.ace-tomorrow-night .ace_storage,\n.ace-tomorrow-night .ace_storage.ace_type,\n.ace-tomorrow-night .ace_support.ace_type {\n color: #B294BB\n}\n\n.ace-tomorrow-night .ace_keyword.ace_operator {\n color: #8ABEB7\n}\n\n.ace-tomorrow-night .ace_constant.ace_character,\n.ace-tomorrow-night .ace_constant.ace_language,\n.ace-tomorrow-night .ace_constant.ace_numeric,\n.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night .ace_support.ace_constant,\n.ace-tomorrow-night .ace_variable.ace_parameter {\n color: #DE935F\n}\n\n.ace-tomorrow-night .ace_constant.ace_other {\n color: #CED1CF\n}\n\n.ace-tomorrow-night .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-tomorrow-night .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-tomorrow-night .ace_fold {\n background-color: #81A2BE;\n border-color: #C5C8C6\n}\n\n.ace-tomorrow-night .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night .ace_support.ace_function,\n.ace-tomorrow-night .ace_variable {\n color: #81A2BE\n}\n\n.ace-tomorrow-night .ace_support.ace_class,\n.ace-tomorrow-night .ace_support.ace_type {\n color: #F0C674\n}\n\n.ace-tomorrow-night .ace_heading,\n.ace-tomorrow-night .ace_markup.ace_heading,\n.ace-tomorrow-night .ace_string {\n color: #B5BD68\n}\n\n.ace-tomorrow-night .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night .ace_meta.ace_tag,\n.ace-tomorrow-night .ace_string.ace_regexp,\n.ace-tomorrow-night .ace_variable {\n color: #CC6666\n}\n\n.ace-tomorrow-night .ace_comment {\n color: #969896\n}\n\n.ace-tomorrow-night .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night"; -exports.cssText = ".ace-tomorrow-night .ace_gutter {\ -background: #25282c;\ -color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_print-margin {\ -width: 1px;\ -background: #25282c\ -}\ -.ace-tomorrow-night {\ -background-color: #1D1F21;\ -color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_cursor {\ -color: #AEAFAD\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_selection {\ -background: #373B41\ -}\ -.ace-tomorrow-night.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #1D1F21;\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #4B4E55\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_active-line {\ -background: #282A2E\ -}\ -.ace-tomorrow-night .ace_gutter-active-line {\ -background-color: #282A2E\ -}\ -.ace-tomorrow-night .ace_marker-layer .ace_selected-word {\ -border: 1px solid #373B41\ -}\ -.ace-tomorrow-night .ace_invisible {\ -color: #4B4E55\ -}\ -.ace-tomorrow-night .ace_keyword,\ -.ace-tomorrow-night .ace_meta,\ -.ace-tomorrow-night .ace_storage,\ -.ace-tomorrow-night .ace_storage.ace_type,\ -.ace-tomorrow-night .ace_support.ace_type {\ -color: #B294BB\ -}\ -.ace-tomorrow-night .ace_keyword.ace_operator {\ -color: #8ABEB7\ -}\ -.ace-tomorrow-night .ace_constant.ace_character,\ -.ace-tomorrow-night .ace_constant.ace_language,\ -.ace-tomorrow-night .ace_constant.ace_numeric,\ -.ace-tomorrow-night .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night .ace_support.ace_constant,\ -.ace-tomorrow-night .ace_variable.ace_parameter {\ -color: #DE935F\ -}\ -.ace-tomorrow-night .ace_constant.ace_other {\ -color: #CED1CF\ -}\ -.ace-tomorrow-night .ace_invalid {\ -color: #CED2CF;\ -background-color: #DF5F5F\ -}\ -.ace-tomorrow-night .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-tomorrow-night .ace_fold {\ -background-color: #81A2BE;\ -border-color: #C5C8C6\ -}\ -.ace-tomorrow-night .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night .ace_support.ace_function,\ -.ace-tomorrow-night .ace_variable {\ -color: #81A2BE\ -}\ -.ace-tomorrow-night .ace_support.ace_class,\ -.ace-tomorrow-night .ace_support.ace_type {\ -color: #F0C674\ -}\ -.ace-tomorrow-night .ace_heading,\ -.ace-tomorrow-night .ace_markup.ace_heading,\ -.ace-tomorrow-night .ace_string {\ -color: #B5BD68\ -}\ -.ace-tomorrow-night .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night .ace_meta.ace_tag,\ -.ace-tomorrow-night .ace_string.ace_regexp,\ -.ace-tomorrow-night .ace_variable {\ -color: #CC6666\ -}\ -.ace-tomorrow-night .ace_comment {\ -color: #969896\ -}\ -.ace-tomorrow-night .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/tomorrow_night",["require","exports","module","ace/theme/tomorrow_night-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-tomorrow-night"; +exports.cssText = require("./tomorrow_night-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/tomorrow_night"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js b/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js index 03f3af1b..dd466962 100644 --- a/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +++ b/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js @@ -1,106 +1,18 @@ -define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/tomorrow_night_blue-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tomorrow-night-blue .ace_gutter {\n background: #00204b;\n color: #7388b5\n}\n\n.ace-tomorrow-night-blue .ace_print-margin {\n width: 1px;\n background: #00204b\n}\n\n.ace-tomorrow-night-blue {\n background-color: #002451;\n color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_constant.ace_other,\n.ace-tomorrow-night-blue .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {\n background: #003F8E\n}\n\n.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #002451;\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_step {\n background: rgb(127, 111, 19)\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404F7D\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {\n background: #00346E\n}\n\n.ace-tomorrow-night-blue .ace_gutter-active-line {\n background-color: #022040\n}\n\n.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {\n border: 1px solid #003F8E\n}\n\n.ace-tomorrow-night-blue .ace_invisible {\n color: #404F7D\n}\n\n.ace-tomorrow-night-blue .ace_keyword,\n.ace-tomorrow-night-blue .ace_meta,\n.ace-tomorrow-night-blue .ace_storage,\n.ace-tomorrow-night-blue .ace_storage.ace_type,\n.ace-tomorrow-night-blue .ace_support.ace_type {\n color: #EBBBFF\n}\n\n.ace-tomorrow-night-blue .ace_keyword.ace_operator {\n color: #99FFFF\n}\n\n.ace-tomorrow-night-blue .ace_constant.ace_character,\n.ace-tomorrow-night-blue .ace_constant.ace_language,\n.ace-tomorrow-night-blue .ace_constant.ace_numeric,\n.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night-blue .ace_support.ace_constant,\n.ace-tomorrow-night-blue .ace_variable.ace_parameter {\n color: #FFC58F\n}\n\n.ace-tomorrow-night-blue .ace_invalid {\n color: #FFFFFF;\n background-color: #F99DA5\n}\n\n.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {\n color: #FFFFFF;\n background-color: #EBBBFF\n}\n\n.ace-tomorrow-night-blue .ace_fold {\n background-color: #BBDAFF;\n border-color: #FFFFFF\n}\n\n.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night-blue .ace_support.ace_function,\n.ace-tomorrow-night-blue .ace_variable {\n color: #BBDAFF\n}\n\n.ace-tomorrow-night-blue .ace_support.ace_class,\n.ace-tomorrow-night-blue .ace_support.ace_type {\n color: #FFEEAD\n}\n\n.ace-tomorrow-night-blue .ace_heading,\n.ace-tomorrow-night-blue .ace_markup.ace_heading,\n.ace-tomorrow-night-blue .ace_string {\n color: #D1F1A9\n}\n\n.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night-blue .ace_meta.ace_tag,\n.ace-tomorrow-night-blue .ace_string.ace_regexp,\n.ace-tomorrow-night-blue .ace_variable {\n color: #FF9DA4\n}\n\n.ace-tomorrow-night-blue .ace_comment {\n color: #7285B7\n}\n\n.ace-tomorrow-night-blue .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night-blue .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-blue"; -exports.cssText = ".ace-tomorrow-night-blue .ace_gutter {\ -background: #00204b;\ -color: #7388b5\ -}\ -.ace-tomorrow-night-blue .ace_print-margin {\ -width: 1px;\ -background: #00204b\ -}\ -.ace-tomorrow-night-blue {\ -background-color: #002451;\ -color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_constant.ace_other,\ -.ace-tomorrow-night-blue .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_selection {\ -background: #003F8E\ -}\ -.ace-tomorrow-night-blue.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #002451;\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_step {\ -background: rgb(127, 111, 19)\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404F7D\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_active-line {\ -background: #00346E\ -}\ -.ace-tomorrow-night-blue .ace_gutter-active-line {\ -background-color: #022040\ -}\ -.ace-tomorrow-night-blue .ace_marker-layer .ace_selected-word {\ -border: 1px solid #003F8E\ -}\ -.ace-tomorrow-night-blue .ace_invisible {\ -color: #404F7D\ -}\ -.ace-tomorrow-night-blue .ace_keyword,\ -.ace-tomorrow-night-blue .ace_meta,\ -.ace-tomorrow-night-blue .ace_storage,\ -.ace-tomorrow-night-blue .ace_storage.ace_type,\ -.ace-tomorrow-night-blue .ace_support.ace_type {\ -color: #EBBBFF\ -}\ -.ace-tomorrow-night-blue .ace_keyword.ace_operator {\ -color: #99FFFF\ -}\ -.ace-tomorrow-night-blue .ace_constant.ace_character,\ -.ace-tomorrow-night-blue .ace_constant.ace_language,\ -.ace-tomorrow-night-blue .ace_constant.ace_numeric,\ -.ace-tomorrow-night-blue .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-blue .ace_support.ace_constant,\ -.ace-tomorrow-night-blue .ace_variable.ace_parameter {\ -color: #FFC58F\ -}\ -.ace-tomorrow-night-blue .ace_invalid {\ -color: #FFFFFF;\ -background-color: #F99DA5\ -}\ -.ace-tomorrow-night-blue .ace_invalid.ace_deprecated {\ -color: #FFFFFF;\ -background-color: #EBBBFF\ -}\ -.ace-tomorrow-night-blue .ace_fold {\ -background-color: #BBDAFF;\ -border-color: #FFFFFF\ -}\ -.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-blue .ace_support.ace_function,\ -.ace-tomorrow-night-blue .ace_variable {\ -color: #BBDAFF\ -}\ -.ace-tomorrow-night-blue .ace_support.ace_class,\ -.ace-tomorrow-night-blue .ace_support.ace_type {\ -color: #FFEEAD\ -}\ -.ace-tomorrow-night-blue .ace_heading,\ -.ace-tomorrow-night-blue .ace_markup.ace_heading,\ -.ace-tomorrow-night-blue .ace_string {\ -color: #D1F1A9\ -}\ -.ace-tomorrow-night-blue .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-blue .ace_meta.ace_tag,\ -.ace-tomorrow-night-blue .ace_string.ace_regexp,\ -.ace-tomorrow-night-blue .ace_variable {\ -color: #FF9DA4\ -}\ -.ace-tomorrow-night-blue .ace_comment {\ -color: #7285B7\ -}\ -.ace-tomorrow-night-blue .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYJDzqfwPAANXAeNsiA+ZAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/theme/tomorrow_night_blue-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-tomorrow-night-blue"; +exports.cssText = require("./tomorrow_night_blue-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/tomorrow_night_blue"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js b/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js index ed2d0686..1ce857a3 100644 --- a/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +++ b/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js @@ -1,121 +1,18 @@ -define("ace/theme/tomorrow_night_bright",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/tomorrow_night_bright-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tomorrow-night-bright .ace_gutter {\n background: #1a1a1a;\n color: #DEDEDE\n}\n\n.ace-tomorrow-night-bright .ace_print-margin {\n width: 1px;\n background: #1a1a1a\n}\n\n.ace-tomorrow-night-bright {\n background-color: #000000;\n color: #DEDEDE\n}\n\n.ace-tomorrow-night-bright .ace_cursor {\n color: #9F9F9F\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {\n background: #424242\n}\n\n.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #000000;\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #888888\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight {\n border: 1px solid rgb(110, 119, 0);\n border-bottom: 0;\n box-shadow: inset 0 -1px rgb(110, 119, 0);\n margin: -1px 0 0 -1px;\n background: rgba(255, 235, 0, 0.1)\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {\n background: #2A2A2A\n}\n\n.ace-tomorrow-night-bright .ace_gutter-active-line {\n background-color: #2A2A2A\n}\n\n.ace-tomorrow-night-bright .ace_stack {\n background-color: rgb(66, 90, 44)\n}\n\n.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {\n border: 1px solid #888888\n}\n\n.ace-tomorrow-night-bright .ace_invisible {\n color: #343434\n}\n\n.ace-tomorrow-night-bright .ace_keyword,\n.ace-tomorrow-night-bright .ace_meta,\n.ace-tomorrow-night-bright .ace_storage,\n.ace-tomorrow-night-bright .ace_storage.ace_type,\n.ace-tomorrow-night-bright .ace_support.ace_type {\n color: #C397D8\n}\n\n.ace-tomorrow-night-bright .ace_keyword.ace_operator {\n color: #70C0B1\n}\n\n.ace-tomorrow-night-bright .ace_constant.ace_character,\n.ace-tomorrow-night-bright .ace_constant.ace_language,\n.ace-tomorrow-night-bright .ace_constant.ace_numeric,\n.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night-bright .ace_support.ace_constant,\n.ace-tomorrow-night-bright .ace_variable.ace_parameter {\n color: #E78C45\n}\n\n.ace-tomorrow-night-bright .ace_constant.ace_other {\n color: #EEEEEE\n}\n\n.ace-tomorrow-night-bright .ace_invalid {\n color: #CED2CF;\n background-color: #DF5F5F\n}\n\n.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {\n color: #CED2CF;\n background-color: #B798BF\n}\n\n.ace-tomorrow-night-bright .ace_fold {\n background-color: #7AA6DA;\n border-color: #DEDEDE\n}\n\n.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night-bright .ace_support.ace_function,\n.ace-tomorrow-night-bright .ace_variable {\n color: #7AA6DA\n}\n\n.ace-tomorrow-night-bright .ace_support.ace_class,\n.ace-tomorrow-night-bright .ace_support.ace_type {\n color: #E7C547\n}\n\n.ace-tomorrow-night-bright .ace_heading,\n.ace-tomorrow-night-bright .ace_markup.ace_heading,\n.ace-tomorrow-night-bright .ace_string {\n color: #B9CA4A\n}\n\n.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night-bright .ace_meta.ace_tag,\n.ace-tomorrow-night-bright .ace_string.ace_regexp,\n.ace-tomorrow-night-bright .ace_variable {\n color: #D54E53\n}\n\n.ace-tomorrow-night-bright .ace_comment {\n color: #969896\n}\n\n.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword {\n color: #C2C280\n}\n\n.ace-tomorrow-night-bright .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night-bright .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-bright"; -exports.cssText = ".ace-tomorrow-night-bright .ace_gutter {\ -background: #1a1a1a;\ -color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-tomorrow-night-bright {\ -background-color: #000000;\ -color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_cursor {\ -color: #9F9F9F\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_selection {\ -background: #424242\ -}\ -.ace-tomorrow-night-bright.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #000000;\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #888888\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_highlight {\ -border: 1px solid rgb(110, 119, 0);\ -border-bottom: 0;\ -box-shadow: inset 0 -1px rgb(110, 119, 0);\ -margin: -1px 0 0 -1px;\ -background: rgba(255, 235, 0, 0.1)\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_active-line {\ -background: #2A2A2A\ -}\ -.ace-tomorrow-night-bright .ace_gutter-active-line {\ -background-color: #2A2A2A\ -}\ -.ace-tomorrow-night-bright .ace_stack {\ -background-color: rgb(66, 90, 44)\ -}\ -.ace-tomorrow-night-bright .ace_marker-layer .ace_selected-word {\ -border: 1px solid #888888\ -}\ -.ace-tomorrow-night-bright .ace_invisible {\ -color: #343434\ -}\ -.ace-tomorrow-night-bright .ace_keyword,\ -.ace-tomorrow-night-bright .ace_meta,\ -.ace-tomorrow-night-bright .ace_storage,\ -.ace-tomorrow-night-bright .ace_storage.ace_type,\ -.ace-tomorrow-night-bright .ace_support.ace_type {\ -color: #C397D8\ -}\ -.ace-tomorrow-night-bright .ace_keyword.ace_operator {\ -color: #70C0B1\ -}\ -.ace-tomorrow-night-bright .ace_constant.ace_character,\ -.ace-tomorrow-night-bright .ace_constant.ace_language,\ -.ace-tomorrow-night-bright .ace_constant.ace_numeric,\ -.ace-tomorrow-night-bright .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-bright .ace_support.ace_constant,\ -.ace-tomorrow-night-bright .ace_variable.ace_parameter {\ -color: #E78C45\ -}\ -.ace-tomorrow-night-bright .ace_constant.ace_other {\ -color: #EEEEEE\ -}\ -.ace-tomorrow-night-bright .ace_invalid {\ -color: #CED2CF;\ -background-color: #DF5F5F\ -}\ -.ace-tomorrow-night-bright .ace_invalid.ace_deprecated {\ -color: #CED2CF;\ -background-color: #B798BF\ -}\ -.ace-tomorrow-night-bright .ace_fold {\ -background-color: #7AA6DA;\ -border-color: #DEDEDE\ -}\ -.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-bright .ace_support.ace_function,\ -.ace-tomorrow-night-bright .ace_variable {\ -color: #7AA6DA\ -}\ -.ace-tomorrow-night-bright .ace_support.ace_class,\ -.ace-tomorrow-night-bright .ace_support.ace_type {\ -color: #E7C547\ -}\ -.ace-tomorrow-night-bright .ace_heading,\ -.ace-tomorrow-night-bright .ace_markup.ace_heading,\ -.ace-tomorrow-night-bright .ace_string {\ -color: #B9CA4A\ -}\ -.ace-tomorrow-night-bright .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-bright .ace_meta.ace_tag,\ -.ace-tomorrow-night-bright .ace_string.ace_regexp,\ -.ace-tomorrow-night-bright .ace_variable {\ -color: #D54E53\ -}\ -.ace-tomorrow-night-bright .ace_comment {\ -color: #969896\ -}\ -.ace-tomorrow-night-bright .ace_c9searchresults.ace_keyword {\ -color: #C2C280\ -}\ -.ace-tomorrow-night-bright .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYFBXV/8PAAJoAXX4kT2EAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/tomorrow_night_bright",["require","exports","module","ace/theme/tomorrow_night_bright-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-tomorrow-night-bright"; +exports.cssText = require("./tomorrow_night_bright-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/tomorrow_night_bright"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js b/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js index fe25a655..8fb11929 100644 --- a/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +++ b/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js @@ -1,108 +1,18 @@ -define("ace/theme/tomorrow_night_eighties",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/tomorrow_night_eighties-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-tomorrow-night-eighties .ace_gutter {\n background: #272727;\n color: #CCC\n}\n\n.ace-tomorrow-night-eighties .ace_print-margin {\n width: 1px;\n background: #272727\n}\n\n.ace-tomorrow-night-eighties {\n background-color: #2D2D2D;\n color: #CCCCCC\n}\n\n.ace-tomorrow-night-eighties .ace_constant.ace_other,\n.ace-tomorrow-night-eighties .ace_cursor {\n color: #CCCCCC\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {\n background: #515151\n}\n\n.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #2D2D2D;\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #6A6A6A\n}\n\n.ace-tomorrow-night-bright .ace_stack {\n background: rgb(66, 90, 44)\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {\n background: #393939\n}\n\n.ace-tomorrow-night-eighties .ace_gutter-active-line {\n background-color: #393939\n}\n\n.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {\n border: 1px solid #515151\n}\n\n.ace-tomorrow-night-eighties .ace_invisible {\n color: #6A6A6A\n}\n\n.ace-tomorrow-night-eighties .ace_keyword,\n.ace-tomorrow-night-eighties .ace_meta,\n.ace-tomorrow-night-eighties .ace_storage,\n.ace-tomorrow-night-eighties .ace_storage.ace_type,\n.ace-tomorrow-night-eighties .ace_support.ace_type {\n color: #CC99CC\n}\n\n.ace-tomorrow-night-eighties .ace_keyword.ace_operator {\n color: #66CCCC\n}\n\n.ace-tomorrow-night-eighties .ace_constant.ace_character,\n.ace-tomorrow-night-eighties .ace_constant.ace_language,\n.ace-tomorrow-night-eighties .ace_constant.ace_numeric,\n.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,\n.ace-tomorrow-night-eighties .ace_support.ace_constant,\n.ace-tomorrow-night-eighties .ace_variable.ace_parameter {\n color: #F99157\n}\n\n.ace-tomorrow-night-eighties .ace_invalid {\n color: #CDCDCD;\n background-color: #F2777A\n}\n\n.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {\n color: #CDCDCD;\n background-color: #CC99CC\n}\n\n.ace-tomorrow-night-eighties .ace_fold {\n background-color: #6699CC;\n border-color: #CCCCCC\n}\n\n.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,\n.ace-tomorrow-night-eighties .ace_support.ace_function,\n.ace-tomorrow-night-eighties .ace_variable {\n color: #6699CC\n}\n\n.ace-tomorrow-night-eighties .ace_support.ace_class,\n.ace-tomorrow-night-eighties .ace_support.ace_type {\n color: #FFCC66\n}\n\n.ace-tomorrow-night-eighties .ace_heading,\n.ace-tomorrow-night-eighties .ace_markup.ace_heading,\n.ace-tomorrow-night-eighties .ace_string {\n color: #99CC99\n}\n\n.ace-tomorrow-night-eighties .ace_comment {\n color: #999999\n}\n\n.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,\n.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,\n.ace-tomorrow-night-eighties .ace_meta.ace_tag,\n.ace-tomorrow-night-eighties .ace_variable {\n color: #F2777A\n}\n\n.ace-tomorrow-night-eighties .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-tomorrow-night-eighties .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-tomorrow-night-eighties"; -exports.cssText = ".ace-tomorrow-night-eighties .ace_gutter {\ -background: #272727;\ -color: #CCC\ -}\ -.ace-tomorrow-night-eighties .ace_print-margin {\ -width: 1px;\ -background: #272727\ -}\ -.ace-tomorrow-night-eighties {\ -background-color: #2D2D2D;\ -color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_constant.ace_other,\ -.ace-tomorrow-night-eighties .ace_cursor {\ -color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_selection {\ -background: #515151\ -}\ -.ace-tomorrow-night-eighties.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #2D2D2D;\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #6A6A6A\ -}\ -.ace-tomorrow-night-bright .ace_stack {\ -background: rgb(66, 90, 44)\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_active-line {\ -background: #393939\ -}\ -.ace-tomorrow-night-eighties .ace_gutter-active-line {\ -background-color: #393939\ -}\ -.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected-word {\ -border: 1px solid #515151\ -}\ -.ace-tomorrow-night-eighties .ace_invisible {\ -color: #6A6A6A\ -}\ -.ace-tomorrow-night-eighties .ace_keyword,\ -.ace-tomorrow-night-eighties .ace_meta,\ -.ace-tomorrow-night-eighties .ace_storage,\ -.ace-tomorrow-night-eighties .ace_storage.ace_type,\ -.ace-tomorrow-night-eighties .ace_support.ace_type {\ -color: #CC99CC\ -}\ -.ace-tomorrow-night-eighties .ace_keyword.ace_operator {\ -color: #66CCCC\ -}\ -.ace-tomorrow-night-eighties .ace_constant.ace_character,\ -.ace-tomorrow-night-eighties .ace_constant.ace_language,\ -.ace-tomorrow-night-eighties .ace_constant.ace_numeric,\ -.ace-tomorrow-night-eighties .ace_keyword.ace_other.ace_unit,\ -.ace-tomorrow-night-eighties .ace_support.ace_constant,\ -.ace-tomorrow-night-eighties .ace_variable.ace_parameter {\ -color: #F99157\ -}\ -.ace-tomorrow-night-eighties .ace_invalid {\ -color: #CDCDCD;\ -background-color: #F2777A\ -}\ -.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated {\ -color: #CDCDCD;\ -background-color: #CC99CC\ -}\ -.ace-tomorrow-night-eighties .ace_fold {\ -background-color: #6699CC;\ -border-color: #CCCCCC\ -}\ -.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function,\ -.ace-tomorrow-night-eighties .ace_support.ace_function,\ -.ace-tomorrow-night-eighties .ace_variable {\ -color: #6699CC\ -}\ -.ace-tomorrow-night-eighties .ace_support.ace_class,\ -.ace-tomorrow-night-eighties .ace_support.ace_type {\ -color: #FFCC66\ -}\ -.ace-tomorrow-night-eighties .ace_heading,\ -.ace-tomorrow-night-eighties .ace_markup.ace_heading,\ -.ace-tomorrow-night-eighties .ace_string {\ -color: #99CC99\ -}\ -.ace-tomorrow-night-eighties .ace_comment {\ -color: #999999\ -}\ -.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_tag,\ -.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name,\ -.ace-tomorrow-night-eighties .ace_meta.ace_tag,\ -.ace-tomorrow-night-eighties .ace_variable {\ -color: #F2777A\ -}\ -.ace-tomorrow-night-eighties .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ09NrYAgMjP4PAAtGAwchHMyAAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/tomorrow_night_eighties",["require","exports","module","ace/theme/tomorrow_night_eighties-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-tomorrow-night-eighties"; +exports.cssText = require("./tomorrow_night_eighties-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/tomorrow_night_eighties"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-twilight.js b/vendor/assets/javascripts/ace/theme-twilight.js index 68c58be4..86f18369 100644 --- a/vendor/assets/javascripts/ace/theme-twilight.js +++ b/vendor/assets/javascripts/ace/theme-twilight.js @@ -1,109 +1,18 @@ -define("ace/theme/twilight",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/twilight-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-twilight .ace_gutter {\n background: #232323;\n color: #E2E2E2\n}\n\n.ace-twilight .ace_print-margin {\n width: 1px;\n background: #232323\n}\n\n.ace-twilight {\n background-color: #141414;\n color: #F8F8F8\n}\n\n.ace-twilight .ace_cursor {\n color: #A7A7A7\n}\n\n.ace-twilight .ace_marker-layer .ace_selection {\n background: rgba(221, 240, 255, 0.20)\n}\n\n.ace-twilight.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #141414;\n}\n\n.ace-twilight .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-twilight .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid rgba(255, 255, 255, 0.25)\n}\n\n.ace-twilight .ace_marker-layer .ace_active-line {\n background: rgba(255, 255, 255, 0.031)\n}\n\n.ace-twilight .ace_gutter-active-line {\n background-color: rgba(255, 255, 255, 0.031)\n}\n\n.ace-twilight .ace_marker-layer .ace_selected-word {\n border: 1px solid rgba(221, 240, 255, 0.20)\n}\n\n.ace-twilight .ace_invisible {\n color: rgba(255, 255, 255, 0.25)\n}\n\n.ace-twilight .ace_keyword,\n.ace-twilight .ace_meta {\n color: #CDA869\n}\n\n.ace-twilight .ace_constant,\n.ace-twilight .ace_constant.ace_character,\n.ace-twilight .ace_constant.ace_character.ace_escape,\n.ace-twilight .ace_constant.ace_other,\n.ace-twilight .ace_heading,\n.ace-twilight .ace_markup.ace_heading,\n.ace-twilight .ace_support.ace_constant {\n color: #CF6A4C\n}\n\n.ace-twilight .ace_invalid.ace_illegal {\n color: #F8F8F8;\n background-color: rgba(86, 45, 86, 0.75)\n}\n\n.ace-twilight .ace_invalid.ace_deprecated {\n text-decoration: underline;\n font-style: italic;\n color: #D2A8A1\n}\n\n.ace-twilight .ace_support {\n color: #9B859D\n}\n\n.ace-twilight .ace_fold {\n background-color: #AC885B;\n border-color: #F8F8F8\n}\n\n.ace-twilight .ace_support.ace_function {\n color: #DAD085\n}\n\n.ace-twilight .ace_list,\n.ace-twilight .ace_markup.ace_list,\n.ace-twilight .ace_storage {\n color: #F9EE98\n}\n\n.ace-twilight .ace_entity.ace_name.ace_function,\n.ace-twilight .ace_meta.ace_tag {\n color: #AC885B\n}\n\n.ace-twilight .ace_string {\n color: #8F9D6A\n}\n\n.ace-twilight .ace_string.ace_regexp {\n color: #E9C062\n}\n\n.ace-twilight .ace_comment {\n font-style: italic;\n color: #5F5A60\n}\n\n.ace-twilight .ace_variable {\n color: #7587A6\n}\n\n.ace-twilight .ace_xml-pe {\n color: #494949\n}\n\n.ace-twilight .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-twilight .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-twilight"; -exports.cssText = ".ace-twilight .ace_gutter {\ -background: #232323;\ -color: #E2E2E2\ -}\ -.ace-twilight .ace_print-margin {\ -width: 1px;\ -background: #232323\ -}\ -.ace-twilight {\ -background-color: #141414;\ -color: #F8F8F8\ -}\ -.ace-twilight .ace_cursor {\ -color: #A7A7A7\ -}\ -.ace-twilight .ace_marker-layer .ace_selection {\ -background: rgba(221, 240, 255, 0.20)\ -}\ -.ace-twilight.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #141414;\ -}\ -.ace-twilight .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-twilight .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid rgba(255, 255, 255, 0.25)\ -}\ -.ace-twilight .ace_marker-layer .ace_active-line {\ -background: rgba(255, 255, 255, 0.031)\ -}\ -.ace-twilight .ace_gutter-active-line {\ -background-color: rgba(255, 255, 255, 0.031)\ -}\ -.ace-twilight .ace_marker-layer .ace_selected-word {\ -border: 1px solid rgba(221, 240, 255, 0.20)\ -}\ -.ace-twilight .ace_invisible {\ -color: rgba(255, 255, 255, 0.25)\ -}\ -.ace-twilight .ace_keyword,\ -.ace-twilight .ace_meta {\ -color: #CDA869\ -}\ -.ace-twilight .ace_constant,\ -.ace-twilight .ace_constant.ace_character,\ -.ace-twilight .ace_constant.ace_character.ace_escape,\ -.ace-twilight .ace_constant.ace_other,\ -.ace-twilight .ace_heading,\ -.ace-twilight .ace_markup.ace_heading,\ -.ace-twilight .ace_support.ace_constant {\ -color: #CF6A4C\ -}\ -.ace-twilight .ace_invalid.ace_illegal {\ -color: #F8F8F8;\ -background-color: rgba(86, 45, 86, 0.75)\ -}\ -.ace-twilight .ace_invalid.ace_deprecated {\ -text-decoration: underline;\ -font-style: italic;\ -color: #D2A8A1\ -}\ -.ace-twilight .ace_support {\ -color: #9B859D\ -}\ -.ace-twilight .ace_fold {\ -background-color: #AC885B;\ -border-color: #F8F8F8\ -}\ -.ace-twilight .ace_support.ace_function {\ -color: #DAD085\ -}\ -.ace-twilight .ace_list,\ -.ace-twilight .ace_markup.ace_list,\ -.ace-twilight .ace_storage {\ -color: #F9EE98\ -}\ -.ace-twilight .ace_entity.ace_name.ace_function,\ -.ace-twilight .ace_meta.ace_tag,\ -.ace-twilight .ace_variable {\ -color: #AC885B\ -}\ -.ace-twilight .ace_string {\ -color: #8F9D6A\ -}\ -.ace-twilight .ace_string.ace_regexp {\ -color: #E9C062\ -}\ -.ace-twilight .ace_comment {\ -font-style: italic;\ -color: #5F5A60\ -}\ -.ace-twilight .ace_variable {\ -color: #7587A6\ -}\ -.ace-twilight .ace_xml-pe {\ -color: #494949\ -}\ -.ace-twilight .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWMQERFpYLC1tf0PAAgOAnPnhxyiAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/twilight",["require","exports","module","ace/theme/twilight-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-twilight"; +exports.cssText = require("./twilight-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/twilight"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-vibrant_ink.js b/vendor/assets/javascripts/ace/theme-vibrant_ink.js index 43969354..8d6d7123 100644 --- a/vendor/assets/javascripts/ace/theme-vibrant_ink.js +++ b/vendor/assets/javascripts/ace/theme-vibrant_ink.js @@ -1,94 +1,18 @@ -define("ace/theme/vibrant_ink",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/vibrant_ink-css",["require","exports","module"], function(require, exports, module){module.exports = ".ace-vibrant-ink .ace_gutter {\n background: #1a1a1a;\n color: #BEBEBE\n}\n\n.ace-vibrant-ink .ace_print-margin {\n width: 1px;\n background: #1a1a1a\n}\n\n.ace-vibrant-ink {\n background-color: #0F0F0F;\n color: #FFFFFF\n}\n\n.ace-vibrant-ink .ace_cursor {\n color: #FFFFFF\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_selection {\n background: #6699CC\n}\n\n.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #0F0F0F;\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_step {\n background: rgb(102, 82, 0)\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #404040\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_active-line {\n background: #333333\n}\n\n.ace-vibrant-ink .ace_gutter-active-line {\n background-color: #333333\n}\n\n.ace-vibrant-ink .ace_marker-layer .ace_selected-word {\n border: 1px solid #6699CC\n}\n\n.ace-vibrant-ink .ace_invisible {\n color: #404040\n}\n\n.ace-vibrant-ink .ace_keyword,\n.ace-vibrant-ink .ace_meta {\n color: #FF6600\n}\n\n.ace-vibrant-ink .ace_constant,\n.ace-vibrant-ink .ace_constant.ace_character,\n.ace-vibrant-ink .ace_constant.ace_character.ace_escape,\n.ace-vibrant-ink .ace_constant.ace_other {\n color: #339999\n}\n\n.ace-vibrant-ink .ace_constant.ace_numeric {\n color: #99CC99\n}\n\n.ace-vibrant-ink .ace_invalid,\n.ace-vibrant-ink .ace_invalid.ace_deprecated {\n color: #CCFF33;\n background-color: #000000\n}\n\n.ace-vibrant-ink .ace_fold {\n background-color: #FFCC00;\n border-color: #FFFFFF\n}\n\n.ace-vibrant-ink .ace_entity.ace_name.ace_function,\n.ace-vibrant-ink .ace_support.ace_function,\n.ace-vibrant-ink .ace_variable {\n color: #FFCC00\n}\n\n.ace-vibrant-ink .ace_variable.ace_parameter {\n font-style: italic\n}\n\n.ace-vibrant-ink .ace_string {\n color: #66FF00\n}\n\n.ace-vibrant-ink .ace_string.ace_regexp {\n color: #44B4CC\n}\n\n.ace-vibrant-ink .ace_comment {\n color: #9933CC\n}\n\n.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {\n font-style: italic;\n color: #99CC99\n}\n\n.ace-vibrant-ink .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y\n}\n\n.ace-vibrant-ink .ace_indent-guide-active {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQIW2PQ1dX9zzBz5sz/ABCcBFFentLlAAAAAElFTkSuQmCC) right repeat-y;\n}\n"; -exports.isDark = true; -exports.cssClass = "ace-vibrant-ink"; -exports.cssText = ".ace-vibrant-ink .ace_gutter {\ -background: #1a1a1a;\ -color: #BEBEBE\ -}\ -.ace-vibrant-ink .ace_print-margin {\ -width: 1px;\ -background: #1a1a1a\ -}\ -.ace-vibrant-ink {\ -background-color: #0F0F0F;\ -color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_cursor {\ -color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_selection {\ -background: #6699CC\ -}\ -.ace-vibrant-ink.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #0F0F0F;\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_step {\ -background: rgb(102, 82, 0)\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #404040\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_active-line {\ -background: #333333\ -}\ -.ace-vibrant-ink .ace_gutter-active-line {\ -background-color: #333333\ -}\ -.ace-vibrant-ink .ace_marker-layer .ace_selected-word {\ -border: 1px solid #6699CC\ -}\ -.ace-vibrant-ink .ace_invisible {\ -color: #404040\ -}\ -.ace-vibrant-ink .ace_keyword,\ -.ace-vibrant-ink .ace_meta {\ -color: #FF6600\ -}\ -.ace-vibrant-ink .ace_constant,\ -.ace-vibrant-ink .ace_constant.ace_character,\ -.ace-vibrant-ink .ace_constant.ace_character.ace_escape,\ -.ace-vibrant-ink .ace_constant.ace_other {\ -color: #339999\ -}\ -.ace-vibrant-ink .ace_constant.ace_numeric {\ -color: #99CC99\ -}\ -.ace-vibrant-ink .ace_invalid,\ -.ace-vibrant-ink .ace_invalid.ace_deprecated {\ -color: #CCFF33;\ -background-color: #000000\ -}\ -.ace-vibrant-ink .ace_fold {\ -background-color: #FFCC00;\ -border-color: #FFFFFF\ -}\ -.ace-vibrant-ink .ace_entity.ace_name.ace_function,\ -.ace-vibrant-ink .ace_support.ace_function,\ -.ace-vibrant-ink .ace_variable {\ -color: #FFCC00\ -}\ -.ace-vibrant-ink .ace_variable.ace_parameter {\ -font-style: italic\ -}\ -.ace-vibrant-ink .ace_string {\ -color: #66FF00\ -}\ -.ace-vibrant-ink .ace_string.ace_regexp {\ -color: #44B4CC\ -}\ -.ace-vibrant-ink .ace_comment {\ -color: #9933CC\ -}\ -.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name {\ -font-style: italic;\ -color: #99CC99\ -}\ -.ace-vibrant-ink .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYNDTc/oPAALPAZ7hxlbYAAAAAElFTkSuQmCC) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/vibrant_ink",["require","exports","module","ace/theme/vibrant_ink-css","ace/lib/dom"], function(require, exports, module){exports.isDark = true; +exports.cssClass = "ace-vibrant-ink"; +exports.cssText = require("./vibrant_ink-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/vibrant_ink"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/theme-xcode.js b/vendor/assets/javascripts/ace/theme-xcode.js index 973cf418..56c2b42c 100644 --- a/vendor/assets/javascripts/ace/theme-xcode.js +++ b/vendor/assets/javascripts/ace/theme-xcode.js @@ -1,88 +1,18 @@ -define("ace/theme/xcode",["require","exports","module","ace/lib/dom"], function(require, exports, module) { +define("ace/theme/xcode-css",["require","exports","module"], function(require, exports, module){module.exports = "/* THIS THEME WAS AUTOGENERATED BY Theme.tmpl.css (UUID: EE3AD170-2B7F-4DE1-B724-C75F13FE0085) */\n\n.ace-xcode .ace_gutter {\n background: #e8e8e8;\n color: #333\n}\n\n.ace-xcode .ace_print-margin {\n width: 1px;\n background: #e8e8e8\n}\n\n.ace-xcode {\n background-color: #FFFFFF;\n color: #000000\n}\n\n.ace-xcode .ace_cursor {\n color: #000000\n}\n\n.ace-xcode .ace_marker-layer .ace_selection {\n background: #B5D5FF\n}\n\n.ace-xcode.ace_multiselect .ace_selection.ace_start {\n box-shadow: 0 0 3px 0px #FFFFFF;\n}\n\n.ace-xcode .ace_marker-layer .ace_step {\n background: rgb(198, 219, 174)\n}\n\n.ace-xcode .ace_marker-layer .ace_bracket {\n margin: -1px 0 0 -1px;\n border: 1px solid #BFBFBF\n}\n\n.ace-xcode .ace_marker-layer .ace_active-line {\n background: rgba(0, 0, 0, 0.071)\n}\n\n.ace-xcode .ace_gutter-active-line {\n background-color: rgba(0, 0, 0, 0.071)\n}\n\n.ace-xcode .ace_marker-layer .ace_selected-word {\n border: 1px solid #B5D5FF\n}\n\n.ace-xcode .ace_constant.ace_language,\n.ace-xcode .ace_keyword,\n.ace-xcode .ace_meta,\n.ace-xcode .ace_variable.ace_language {\n color: #C800A4\n}\n\n.ace-xcode .ace_invisible {\n color: #BFBFBF\n}\n\n.ace-xcode .ace_constant.ace_character,\n.ace-xcode .ace_constant.ace_other {\n color: #275A5E\n}\n\n.ace-xcode .ace_constant.ace_numeric {\n color: #3A00DC\n}\n\n.ace-xcode .ace_entity.ace_other.ace_attribute-name,\n.ace-xcode .ace_support.ace_constant,\n.ace-xcode .ace_support.ace_function {\n color: #450084\n}\n\n.ace-xcode .ace_fold {\n background-color: #C800A4;\n border-color: #000000\n}\n\n.ace-xcode .ace_entity.ace_name.ace_tag,\n.ace-xcode .ace_support.ace_class,\n.ace-xcode .ace_support.ace_type {\n color: #790EAD\n}\n\n.ace-xcode .ace_storage {\n color: #C900A4\n}\n\n.ace-xcode .ace_string {\n color: #DF0002\n}\n\n.ace-xcode .ace_comment {\n color: #008E00\n}\n\n.ace-xcode .ace_indent-guide {\n background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y\n}\n\n.ace-xcode .ace_indent-guide-active {\n background: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC\") right repeat-y;\n} \n"; -exports.isDark = false; -exports.cssClass = "ace-xcode"; -exports.cssText = "\ -.ace-xcode .ace_gutter {\ -background: #e8e8e8;\ -color: #333\ -}\ -.ace-xcode .ace_print-margin {\ -width: 1px;\ -background: #e8e8e8\ -}\ -.ace-xcode {\ -background-color: #FFFFFF;\ -color: #000000\ -}\ -.ace-xcode .ace_cursor {\ -color: #000000\ -}\ -.ace-xcode .ace_marker-layer .ace_selection {\ -background: #B5D5FF\ -}\ -.ace-xcode.ace_multiselect .ace_selection.ace_start {\ -box-shadow: 0 0 3px 0px #FFFFFF;\ -}\ -.ace-xcode .ace_marker-layer .ace_step {\ -background: rgb(198, 219, 174)\ -}\ -.ace-xcode .ace_marker-layer .ace_bracket {\ -margin: -1px 0 0 -1px;\ -border: 1px solid #BFBFBF\ -}\ -.ace-xcode .ace_marker-layer .ace_active-line {\ -background: rgba(0, 0, 0, 0.071)\ -}\ -.ace-xcode .ace_gutter-active-line {\ -background-color: rgba(0, 0, 0, 0.071)\ -}\ -.ace-xcode .ace_marker-layer .ace_selected-word {\ -border: 1px solid #B5D5FF\ -}\ -.ace-xcode .ace_constant.ace_language,\ -.ace-xcode .ace_keyword,\ -.ace-xcode .ace_meta,\ -.ace-xcode .ace_variable.ace_language {\ -color: #C800A4\ -}\ -.ace-xcode .ace_invisible {\ -color: #BFBFBF\ -}\ -.ace-xcode .ace_constant.ace_character,\ -.ace-xcode .ace_constant.ace_other {\ -color: #275A5E\ -}\ -.ace-xcode .ace_constant.ace_numeric {\ -color: #3A00DC\ -}\ -.ace-xcode .ace_entity.ace_other.ace_attribute-name,\ -.ace-xcode .ace_support.ace_constant,\ -.ace-xcode .ace_support.ace_function {\ -color: #450084\ -}\ -.ace-xcode .ace_fold {\ -background-color: #C800A4;\ -border-color: #000000\ -}\ -.ace-xcode .ace_entity.ace_name.ace_tag,\ -.ace-xcode .ace_support.ace_class,\ -.ace-xcode .ace_support.ace_type {\ -color: #790EAD\ -}\ -.ace-xcode .ace_storage {\ -color: #C900A4\ -}\ -.ace-xcode .ace_string {\ -color: #DF0002\ -}\ -.ace-xcode .ace_comment {\ -color: #008E00\ -}\ -.ace-xcode .ace_indent-guide {\ -background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==) right repeat-y\ -}"; - -var dom = require("../lib/dom"); -dom.importCssString(exports.cssText, exports.cssClass); }); + +define("ace/theme/xcode",["require","exports","module","ace/theme/xcode-css","ace/lib/dom"], function(require, exports, module){exports.isDark = false; +exports.cssClass = "ace-xcode"; +exports.cssText = require("./xcode-css"); +var dom = require("../lib/dom"); +dom.importCssString(exports.cssText, exports.cssClass, false); + +}); (function() { + window.require(["ace/theme/xcode"], function(m) { + if (typeof module == "object" && typeof exports == "object" && module) { + module.exports = m; + } + }); + })(); + \ No newline at end of file diff --git a/vendor/assets/javascripts/ace/worker-base.js b/vendor/assets/javascripts/ace/worker-base.js new file mode 100644 index 00000000..b48a660a --- /dev/null +++ b/vendor/assets/javascripts/ace/worker-base.js @@ -0,0 +1,1332 @@ +"no use strict"; +!(function(window) { +if (typeof window.window != "undefined" && window.document) + return; +if (window.require && window.define) + return; + +if (!window.console) { + window.console = function() { + var msgs = Array.prototype.slice.call(arguments, 0); + postMessage({type: "log", data: msgs}); + }; + window.console.error = + window.console.warn = + window.console.log = + window.console.trace = window.console; +} +window.window = window; +window.ace = window; + +window.onerror = function(message, file, line, col, err) { + postMessage({type: "error", data: { + message: message, + data: err && err.data, + file: file, + line: line, + col: col, + stack: err && err.stack + }}); +}; + +window.normalizeModule = function(parentId, moduleName) { + // normalize plugin requires + if (moduleName.indexOf("!") !== -1) { + var chunks = moduleName.split("!"); + return window.normalizeModule(parentId, chunks[0]) + "!" + window.normalizeModule(parentId, chunks[1]); + } + // normalize relative requires + if (moduleName.charAt(0) == ".") { + var base = parentId.split("/").slice(0, -1).join("/"); + moduleName = (base ? base + "/" : "") + moduleName; + + while (moduleName.indexOf(".") !== -1 && previous != moduleName) { + var previous = moduleName; + moduleName = moduleName.replace(/^\.\//, "").replace(/\/\.\//, "/").replace(/[^\/]+\/\.\.\//, ""); + } + } + + return moduleName; +}; + +window.require = function require(parentId, id) { + if (!id) { + id = parentId; + parentId = null; + } + if (!id.charAt) + throw new Error("worker.js require() accepts only (parentId, id) as arguments"); + + id = window.normalizeModule(parentId, id); + + var module = window.require.modules[id]; + if (module) { + if (!module.initialized) { + module.initialized = true; + module.exports = module.factory().exports; + } + return module.exports; + } + + if (!window.require.tlns) + return console.log("unable to load " + id); + + var path = resolveModuleId(id, window.require.tlns); + if (path.slice(-3) != ".js") path += ".js"; + + window.require.id = id; + window.require.modules[id] = {}; // prevent infinite loop on broken modules + importScripts(path); + return window.require(parentId, id); +}; +function resolveModuleId(id, paths) { + var testPath = id, tail = ""; + while (testPath) { + var alias = paths[testPath]; + if (typeof alias == "string") { + return alias + tail; + } else if (alias) { + return alias.location.replace(/\/*$/, "/") + (tail || alias.main || alias.name); + } else if (alias === false) { + return ""; + } + var i = testPath.lastIndexOf("/"); + if (i === -1) break; + tail = testPath.substr(i) + tail; + testPath = testPath.slice(0, i); + } + return id; +} +window.require.modules = {}; +window.require.tlns = {}; + +window.define = function(id, deps, factory) { + if (arguments.length == 2) { + factory = deps; + if (typeof id != "string") { + deps = id; + id = window.require.id; + } + } else if (arguments.length == 1) { + factory = id; + deps = []; + id = window.require.id; + } + + if (typeof factory != "function") { + window.require.modules[id] = { + exports: factory, + initialized: true + }; + return; + } + + if (!deps.length) + // If there is no dependencies, we inject "require", "exports" and + // "module" as dependencies, to provide CommonJS compatibility. + deps = ["require", "exports", "module"]; + + var req = function(childId) { + return window.require(id, childId); + }; + + window.require.modules[id] = { + exports: {}, + factory: function() { + var module = this; + var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { + switch (dep) { + // Because "require", "exports" and "module" aren't actual + // dependencies, we must handle them seperately. + case "require": return req; + case "exports": return module.exports; + case "module": return module; + // But for all other dependencies, we can just go ahead and + // require them. + default: return req(dep); + } + })); + if (returnExports) + module.exports = returnExports; + return module; + } + }; +}; +window.define.amd = {}; +window.require.tlns = {}; +window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { + for (var i in topLevelNamespaces) + this.require.tlns[i] = topLevelNamespaces[i]; +}; + +window.initSender = function initSender() { + + var EventEmitter = window.require("ace/lib/event_emitter").EventEmitter; + var oop = window.require("ace/lib/oop"); + + var Sender = function() {}; + + (function() { + + oop.implement(this, EventEmitter); + + this.callback = function(data, callbackId) { + postMessage({ + type: "call", + id: callbackId, + data: data + }); + }; + + this.emit = function(name, data) { + postMessage({ + type: "event", + name: name, + data: data + }); + }; + + }).call(Sender.prototype); + + return new Sender(); +}; + +var main = window.main = null; +var sender = window.sender = null; + +window.onmessage = function(e) { + var msg = e.data; + if (msg.event && sender) { + sender._signal(msg.event, msg.data); + } + else if (msg.command) { + if (main[msg.command]) + main[msg.command].apply(main, msg.args); + else if (window[msg.command]) + window[msg.command].apply(window, msg.args); + else + throw new Error("Unknown command:" + msg.command); + } + else if (msg.init) { + window.initBaseUrls(msg.tlns); + sender = window.sender = window.initSender(); + var clazz = this.require(msg.module)[msg.classname]; + main = window.main = new clazz(sender); + } +}; +})(this); + +define("ace/lib/oop",[], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); +}; +exports.mixin = function (obj, mixin) { + for (var key in mixin) { + obj[key] = mixin[key]; + } + return obj; +}; +exports.implement = function (proto, mixin) { + exports.mixin(proto, mixin); +}; + +}); + +define("ace/apply_delta",[], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { + console.log("Invalid Delta:", delta); + throw "Invalid Delta: " + errorText; +} +function positionInDocument(docLines, position) { + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; +} +function validateDelta(docLines, delta) { + if (delta.action != "insert" && delta.action != "remove") + throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); + if (!(delta.lines instanceof Array)) + throwDeltaError(delta, "delta.lines must be an Array"); + if (!delta.start || !delta.end) + throwDeltaError(delta, "delta.start/end must be an present"); + var start = delta.start; + if (!positionInDocument(docLines, delta.start)) + throwDeltaError(delta, "delta.start must be contained in document"); + var end = delta.end; + if (delta.action == "remove" && !positionInDocument(docLines, end)) + throwDeltaError(delta, "delta.end must contained in document for 'remove' actions"); + var numRangeRows = end.row - start.row; + var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0)); + if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) + throwDeltaError(delta, "delta.range must match delta lines"); +} +exports.applyDelta = function (docLines, delta, doNotValidate) { + var row = delta.start.row; + var startColumn = delta.start.column; + var line = docLines[row] || ""; + switch (delta.action) { + case "insert": + var lines = delta.lines; + if (lines.length === 1) { + docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); + } + else { + var args = [row, 1].concat(delta.lines); + docLines.splice.apply(docLines, args); + docLines[row] = line.substring(0, startColumn) + docLines[row]; + docLines[row + delta.lines.length - 1] += line.substring(startColumn); + } + break; + case "remove": + var endColumn = delta.end.column; + var endRow = delta.end.row; + if (row === endRow) { + docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); + } + break; + } +}; + +}); + +define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; +var EventEmitter = {}; +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; +EventEmitter._emit = + EventEmitter._dispatchEvent = function (eventName, e) { + this._eventRegistry || (this._eventRegistry = {}); + this._defaultHandlers || (this._defaultHandlers = {}); + var listeners = this._eventRegistry[eventName] || []; + var defaultHandler = this._defaultHandlers[eventName]; + if (!listeners.length && !defaultHandler) + return; + if (typeof e != "object" || !e) + e = {}; + if (!e.type) + e.type = eventName; + if (!e.stopPropagation) + e.stopPropagation = stopPropagation; + if (!e.preventDefault) + e.preventDefault = preventDefault; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) { + listeners[i](e, this); + if (e.propagationStopped) + break; + } + if (defaultHandler && !e.defaultPrevented) + return defaultHandler(e, this); + }; +EventEmitter._signal = function (eventName, e) { + var listeners = (this._eventRegistry || {})[eventName]; + if (!listeners) + return; + listeners = listeners.slice(); + for (var i = 0; i < listeners.length; i++) + listeners[i](e, this); +}; +EventEmitter.once = function (eventName, callback) { + var _self = this; + this.on(eventName, function newCallback() { + _self.off(eventName, newCallback); + callback.apply(null, arguments); + }); + if (!callback) { + return new Promise(function (resolve) { + callback = resolve; + }); + } +}; +EventEmitter.setDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + handlers = this._defaultHandlers = { _disabled_: {} }; + if (handlers[eventName]) { + var old = handlers[eventName]; + var disabled = handlers._disabled_[eventName]; + if (!disabled) + handlers._disabled_[eventName] = disabled = []; + disabled.push(old); + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } + handlers[eventName] = callback; +}; +EventEmitter.removeDefaultHandler = function (eventName, callback) { + var handlers = this._defaultHandlers; + if (!handlers) + return; + var disabled = handlers._disabled_[eventName]; + if (handlers[eventName] == callback) { + if (disabled) + this.setDefaultHandler(eventName, disabled.pop()); + } + else if (disabled) { + var i = disabled.indexOf(callback); + if (i != -1) + disabled.splice(i, 1); + } +}; +EventEmitter.on = + EventEmitter.addEventListener = function (eventName, callback, capturing) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + listeners = this._eventRegistry[eventName] = []; + if (listeners.indexOf(callback) == -1) + listeners[capturing ? "unshift" : "push"](callback); + return callback; + }; +EventEmitter.off = + EventEmitter.removeListener = + EventEmitter.removeEventListener = function (eventName, callback) { + this._eventRegistry = this._eventRegistry || {}; + var listeners = this._eventRegistry[eventName]; + if (!listeners) + return; + var index = listeners.indexOf(callback); + if (index !== -1) + listeners.splice(index, 1); + }; +EventEmitter.removeAllListeners = function (eventName) { + if (!eventName) + this._eventRegistry = this._defaultHandlers = undefined; + if (this._eventRegistry) + this._eventRegistry[eventName] = undefined; + if (this._defaultHandlers) + this._defaultHandlers[eventName] = undefined; +}; +exports.EventEmitter = EventEmitter; + +}); + +define("ace/range",[], function(require, exports, module){"use strict"; +var Range = /** @class */ (function () { + function Range(startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn + }; + } + Range.prototype.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + Range.prototype.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + Range.prototype.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + Range.prototype.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + Range.prototype.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + Range.prototype.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + Range.prototype.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + Range.prototype.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + Range.prototype.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + Range.prototype.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + Range.prototype.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + Range.prototype.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + Range.prototype.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + Range.prototype.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + Range.prototype.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + Range.prototype.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + Range.prototype.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + Range.prototype.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; + return Range; +}()); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = /** @class */ (function () { + function Anchor(doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof row != "number") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); + } + Anchor.prototype.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + Anchor.prototype.getDocument = function () { + return this.document; + }; + Anchor.prototype.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + Anchor.prototype.setPosition = function (row, column, noClip) { + var pos; + if (noClip) { + pos = { + row: row, + column: column + }; + } + else { + pos = this.$clipPositionToDocument(row, column); + } + if (this.row == pos.row && this.column == pos.column) + return; + var old = { + row: this.row, + column: this.column + }; + this.row = pos.row; + this.column = pos.column; + this._signal("change", { + old: old, + value: pos + }); + }; + Anchor.prototype.detach = function () { + this.document.off("change", this.$onChange); + }; + Anchor.prototype.attach = function (doc) { + this.document = doc || this.document; + this.document.on("change", this.$onChange); + }; + Anchor.prototype.$clipPositionToDocument = function (row, column) { + var pos = {}; + if (row >= this.document.getLength()) { + pos.row = Math.max(0, this.document.getLength() - 1); + pos.column = this.document.getLine(pos.row).length; + } + else if (row < 0) { + pos.row = 0; + pos.column = 0; + } + else { + pos.row = row; + pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); + } + if (column < 0) + pos.column = 0; + return pos; + }; + return Anchor; +}()); +Anchor.prototype.$insertRight = false; +oop.implement(Anchor.prototype, EventEmitter); +function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); +} +function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; +} +exports.Anchor = Anchor; + +}); + +define("ace/document",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var applyDelta = require("./apply_delta").applyDelta; +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Range = require("./range").Range; +var Anchor = require("./anchor").Anchor; +var Document = /** @class */ (function () { + function Document(textOrLines) { + this.$lines = [""]; + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } + } + Document.prototype.setValue = function (text) { + var len = this.getLength() - 1; + this.remove(new Range(0, 0, len, this.getLine(len).length)); + this.insert({ row: 0, column: 0 }, text || ""); + }; + Document.prototype.getValue = function () { + return this.getAllLines().join(this.getNewLineCharacter()); + }; + Document.prototype.createAnchor = function (row, column) { + return new Anchor(this, row, column); + }; + Document.prototype.$detectNewLine = function (text) { + var match = text.match(/^.*?(\r\n|\r|\n)/m); + this.$autoNewLine = match ? match[1] : "\n"; + this._signal("changeNewLineMode"); + }; + Document.prototype.getNewLineCharacter = function () { + switch (this.$newLineMode) { + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; + } + }; + Document.prototype.setNewLineMode = function (newLineMode) { + if (this.$newLineMode === newLineMode) + return; + this.$newLineMode = newLineMode; + this._signal("changeNewLineMode"); + }; + Document.prototype.getNewLineMode = function () { + return this.$newLineMode; + }; + Document.prototype.isNewLine = function (text) { + return (text == "\r\n" || text == "\r" || text == "\n"); + }; + Document.prototype.getLine = function (row) { + return this.$lines[row] || ""; + }; + Document.prototype.getLines = function (firstRow, lastRow) { + return this.$lines.slice(firstRow, lastRow + 1); + }; + Document.prototype.getAllLines = function () { + return this.getLines(0, this.getLength()); + }; + Document.prototype.getLength = function () { + return this.$lines.length; + }; + Document.prototype.getTextRange = function (range) { + return this.getLinesForRange(range).join(this.getNewLineCharacter()); + }; + Document.prototype.getLinesForRange = function (range) { + var lines; + if (range.start.row === range.end.row) { + lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; + } + else { + lines = this.getLines(range.start.row, range.end.row); + lines[0] = (lines[0] || "").substring(range.start.column); + var l = lines.length - 1; + if (range.end.row - range.start.row == l) + lines[l] = lines[l].substring(0, range.end.column); + } + return lines; + }; + Document.prototype.insertLines = function (row, lines) { + console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); + return this.insertFullLines(row, lines); + }; + Document.prototype.removeLines = function (firstRow, lastRow) { + console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); + return this.removeFullLines(firstRow, lastRow); + }; + Document.prototype.insertNewLine = function (position) { + console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); + return this.insertMergedLines(position, ["", ""]); + }; + Document.prototype.insert = function (position, text) { + if (this.getLength() <= 1) + this.$detectNewLine(text); + return this.insertMergedLines(position, this.$split(text)); + }; + Document.prototype.insertInLine = function (position, text) { + var start = this.clippedPos(position.row, position.column); + var end = this.pos(position.row, position.column + text.length); + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: [text] + }, true); + return this.clonePos(end); + }; + Document.prototype.clippedPos = function (row, column) { + var length = this.getLength(); + if (row === undefined) { + row = length; + } + else if (row < 0) { + row = 0; + } + else if (row >= length) { + row = length - 1; + column = undefined; + } + var line = this.getLine(row); + if (column == undefined) + column = line.length; + column = Math.min(Math.max(column, 0), line.length); + return { row: row, column: column }; + }; + Document.prototype.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; + }; + Document.prototype.pos = function (row, column) { + return { row: row, column: column }; + }; + Document.prototype.$clipPosition = function (position) { + var length = this.getLength(); + if (position.row >= length) { + position.row = Math.max(0, length - 1); + position.column = this.getLine(length - 1).length; + } + else { + position.row = Math.max(0, position.row); + position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); + } + return position; + }; + Document.prototype.insertFullLines = function (row, lines) { + row = Math.min(Math.max(row, 0), this.getLength()); + var column = 0; + if (row < this.getLength()) { + lines = lines.concat([""]); + column = 0; + } + else { + lines = [""].concat(lines); + row--; + column = this.$lines[row].length; + } + this.insertMergedLines({ row: row, column: column }, lines); + }; + Document.prototype.insertMergedLines = function (position, lines) { + var start = this.clippedPos(position.row, position.column); + var end = { + row: start.row + lines.length - 1, + column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length + }; + this.applyDelta({ + start: start, + end: end, + action: "insert", + lines: lines + }); + return this.clonePos(end); + }; + Document.prototype.remove = function (range) { + var start = this.clippedPos(range.start.row, range.start.column); + var end = this.clippedPos(range.end.row, range.end.column); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }); + return this.clonePos(start); + }; + Document.prototype.removeInLine = function (row, startColumn, endColumn) { + var start = this.clippedPos(row, startColumn); + var end = this.clippedPos(row, endColumn); + this.applyDelta({ + start: start, + end: end, + action: "remove", + lines: this.getLinesForRange({ start: start, end: end }) + }, true); + return this.clonePos(start); + }; + Document.prototype.removeFullLines = function (firstRow, lastRow) { + firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); + var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); + var range = new Range(startRow, startCol, endRow, endCol); + var deletedLines = this.$lines.slice(firstRow, lastRow + 1); + this.applyDelta({ + start: range.start, + end: range.end, + action: "remove", + lines: this.getLinesForRange(range) + }); + return deletedLines; + }; + Document.prototype.removeNewLine = function (row) { + if (row < this.getLength() - 1 && row >= 0) { + this.applyDelta({ + start: this.pos(row, this.getLine(row).length), + end: this.pos(row + 1, 0), + action: "remove", + lines: ["", ""] + }); + } + }; + Document.prototype.replace = function (range, text) { + if (!(range instanceof Range)) + range = Range.fromPoints(range.start, range.end); + if (text.length === 0 && range.isEmpty()) + return range.start; + if (text == this.getTextRange(range)) + return range.end; + this.remove(range); + var end; + if (text) { + end = this.insert(range.start, text); + } + else { + end = range.start; + } + return end; + }; + Document.prototype.applyDeltas = function (deltas) { + for (var i = 0; i < deltas.length; i++) { + this.applyDelta(deltas[i]); + } + }; + Document.prototype.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { + this.revertDelta(deltas[i]); + } + }; + Document.prototype.applyDelta = function (delta, doNotValidate) { + var isInsert = delta.action == "insert"; + if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] + : !Range.comparePoints(delta.start, delta.end)) { + return; + } + if (isInsert && delta.lines.length > 20000) { + this.$splitAndapplyLargeDelta(delta, 20000); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } + }; + Document.prototype.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { + var lines = delta.lines; + var l = lines.length - MAX + 1; + var row = delta.start.row; + var column = delta.start.column; + for (var from = 0, to = 0; from < l; from = to) { + to += MAX - 1; + var chunk = lines.slice(from, to); + chunk.push(""); + this.applyDelta({ + start: this.pos(row + from, column), + end: this.pos(row + to, column = 0), + action: delta.action, + lines: chunk + }, true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); + }; + Document.prototype.revertDelta = function (delta) { + this.$safeApplyDelta({ + start: this.clonePos(delta.start), + end: this.clonePos(delta.end), + action: (delta.action == "insert" ? "remove" : "insert"), + lines: delta.lines.slice() + }); + }; + Document.prototype.indexToPosition = function (index, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + for (var i = startRow || 0, l = lines.length; i < l; i++) { + index -= lines[i].length + newlineLength; + if (index < 0) + return { row: i, column: index + lines[i].length + newlineLength }; + } + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; + }; + Document.prototype.positionToIndex = function (pos, startRow) { + var lines = this.$lines || this.getAllLines(); + var newlineLength = this.getNewLineCharacter().length; + var index = 0; + var row = Math.min(pos.row, lines.length); + for (var i = startRow || 0; i < row; ++i) + index += lines[i].length + newlineLength; + return index + pos.column; + }; + Document.prototype.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + return Document; +}()); +Document.prototype.$autoNewLine = ""; +Document.prototype.$newLineMode = "auto"; +oop.implement(Document.prototype, EventEmitter); +exports.Document = Document; + +}); + +define("ace/lib/deep_copy",[], function(require, exports, module){exports.deepCopy = function deepCopy(obj) { + if (typeof obj !== "object" || !obj) + return obj; + var copy; + if (Array.isArray(obj)) { + copy = []; + for (var key = 0; key < obj.length; key++) { + copy[key] = deepCopy(obj[key]); + } + return copy; + } + if (Object.prototype.toString.call(obj) !== "[object Object]") + return obj; + copy = {}; + for (var key in obj) + copy[key] = deepCopy(obj[key]); + return copy; +}; + +}); + +define("ace/lib/lang",[], function(require, exports, module){"use strict"; +exports.last = function (a) { + return a[a.length - 1]; +}; +exports.stringReverse = function (string) { + return string.split("").reverse().join(""); +}; +exports.stringRepeat = function (string, count) { + var result = ''; + while (count > 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = require("./deep_copy").deepCopy; +exports.arrayToMap = function (arr) { + var map = {}; + for (var i = 0; i < arr.length; i++) { + map[arr[i]] = 1; + } + return map; +}; +exports.createMap = function (props) { + var map = Object.create(null); + for (var i in props) { + map[i] = props[i]; + } + return map; +}; +exports.arrayRemove = function (array, value) { + for (var i = 0; i <= array.length; i++) { + if (value === array[i]) { + array.splice(i, 1); + } + } +}; +exports.escapeRegExp = function (str) { + return str.replace(/([.*+?^${}()|[\]\/\\])/g, '\\$1'); +}; +exports.escapeHTML = function (str) { + return ("" + str).replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/ 0xffff ? 2 : 1; +}; + +}); + +define("ace/worker/mirror",[], function(require, exports, module) { +"use strict"; + +var Document = require("../document").Document; +var lang = require("../lib/lang"); + +var Mirror = exports.Mirror = function(sender) { + this.sender = sender; + var doc = this.doc = new Document(""); + + var deferredUpdate = this.deferredUpdate = lang.delayedCall(this.onUpdate.bind(this)); + + var _self = this; + sender.on("change", function(e) { + var data = e.data; + if (data[0].start) { + doc.applyDeltas(data); + } else { + for (var i = 0; i < data.length; i += 2) { + var d, err; + if (Array.isArray(data[i+1])) { + d = {action: "insert", start: data[i], lines: data[i+1]}; + } else { + d = {action: "remove", start: data[i], end: data[i+1]}; + } + + if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + + doc.applyDelta(d, true); + } + } + if (_self.$timeout) + return deferredUpdate.schedule(_self.$timeout); + _self.onUpdate(); + }); +}; + +(function() { + + this.$timeout = 500; + + this.setTimeout = function(timeout) { + this.$timeout = timeout; + }; + + this.setValue = function(value) { + this.doc.setValue(value); + this.deferredUpdate.schedule(this.$timeout); + }; + + this.getValue = function(callbackId) { + this.sender.callback(this.doc.getValue(), callbackId); + }; + + this.onUpdate = function() { + }; + + this.isPending = function() { + return this.deferredUpdate.isPending(); + }; + +}).call(Mirror.prototype); + +}); diff --git a/vendor/assets/javascripts/ace/worker-coffee.js b/vendor/assets/javascripts/ace/worker-coffee.js index 6b421a71..c0aab15e 100644 --- a/vendor/assets/javascripts/ace/worker-coffee.js +++ b/vendor/assets/javascripts/ace/worker-coffee.js @@ -21,11 +21,11 @@ window.ace = window; window.onerror = function(message, file, line, col, err) { postMessage({type: "error", data: { message: message, - data: err.data, + data: err && err.data, file: file, line: line, col: col, - stack: err.stack + stack: err && err.stack }}); }; @@ -134,7 +134,7 @@ window.define = function(id, deps, factory) { exports: {}, factory: function() { var module = this; - var returnExports = factory.apply(this, deps.map(function(dep) { + var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { switch (dep) { // Because "require", "exports" and "module" aren't actual // dependencies, we must handle them seperately. @@ -153,10 +153,10 @@ window.define = function(id, deps, factory) { }; }; window.define.amd = {}; -require.tlns = {}; +window.require.tlns = {}; window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { for (var i in topLevelNamespaces) - require.tlns[i] = topLevelNamespaces[i]; + this.require.tlns[i] = topLevelNamespaces[i]; }; window.initSender = function initSender() { @@ -209,18 +209,15 @@ window.onmessage = function(e) { } else if (msg.init) { window.initBaseUrls(msg.tlns); - require("ace/lib/es5-shim"); sender = window.sender = window.initSender(); - var clazz = require(msg.module)[msg.classname]; + var clazz = this.require(msg.module)[msg.classname]; main = window.main = new clazz(sender); } }; })(this); -define("ace/lib/oop",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.inherits = function(ctor, superCtor) { +define("ace/lib/oop",[], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { ctor.super_ = superCtor; ctor.prototype = Object.create(superCtor.prototype, { constructor: { @@ -231,279 +228,34 @@ exports.inherits = function(ctor, superCtor) { } }); }; - -exports.mixin = function(obj, mixin) { +exports.mixin = function (obj, mixin) { for (var key in mixin) { obj[key] = mixin[key]; } return obj; }; - -exports.implement = function(proto, mixin) { +exports.implement = function (proto, mixin) { exports.mixin(proto, mixin); }; }); -define("ace/range",["require","exports","module"], function(require, exports, module) { -"use strict"; -var comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -var Range = function(startRow, startColumn, endRow, endColumn) { - this.start = { - row: startRow, - column: startColumn - }; - - this.end = { - row: endRow, - column: endColumn - }; -}; - -(function() { - this.isEqual = function(range) { - return this.start.row === range.start.row && - this.end.row === range.end.row && - this.start.column === range.start.column && - this.end.column === range.end.column; - }; - this.toString = function() { - return ("Range: [" + this.start.row + "/" + this.start.column + - "] -> [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -define("ace/apply_delta",["require","exports","module"], function(require, exports, module) { -"use strict"; - -function throwDeltaError(delta, errorText){ +define("ace/apply_delta",[], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { console.log("Invalid Delta:", delta); throw "Invalid Delta: " + errorText; } - function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; } - function validateDelta(docLines, delta) { if (delta.action != "insert" && delta.action != "remove") throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); if (!(delta.lines instanceof Array)) throwDeltaError(delta, "delta.lines must be an Array"); if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); + throwDeltaError(delta, "delta.start/end must be an present"); var start = delta.start; if (!positionInDocument(docLines, delta.start)) throwDeltaError(delta, "delta.start must be contained in document"); @@ -515,9 +267,7 @@ function validateDelta(docLines, delta) { if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) throwDeltaError(delta, "delta.range must match delta lines"); } - -exports.applyDelta = function(docLines, delta, doNotValidate) { - +exports.applyDelta = function (docLines, delta, doNotValidate) { var row = delta.start.row; var startColumn = delta.start.column; var line = docLines[row] || ""; @@ -526,7 +276,8 @@ exports.applyDelta = function(docLines, delta, doNotValidate) { var lines = delta.lines; if (lines.length === 1) { docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } else { + } + else { var args = [row, 1].concat(delta.lines); docLines.splice.apply(docLines, args); docLines[row] = line.substring(0, startColumn) + docLines[row]; @@ -538,79 +289,69 @@ exports.applyDelta = function(docLines, delta, doNotValidate) { var endRow = delta.end.row; if (row === endRow) { docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } else { - docLines.splice( - row, endRow - row + 1, - line.substring(0, startColumn) + docLines[endRow].substring(endColumn) - ); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); } break; } }; + }); -define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i this.row) - return; - - var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - - function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); - } - - function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - - return { - row: deltaStart.row, - column: deltaStart.column +define("ace/range",[], function(require, exports, module){"use strict"; +var Range = /** @class */ (function () { + function Range(startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn }; } - this.setPosition = function(row, column, noClip) { + Range.prototype.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + Range.prototype.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + Range.prototype.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + Range.prototype.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + Range.prototype.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + Range.prototype.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + Range.prototype.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + Range.prototype.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + Range.prototype.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + Range.prototype.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + Range.prototype.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + Range.prototype.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + Range.prototype.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + Range.prototype.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + Range.prototype.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + Range.prototype.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + Range.prototype.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + Range.prototype.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; + return Range; +}()); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = /** @class */ (function () { + function Anchor(doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof row != "number") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); + } + Anchor.prototype.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + Anchor.prototype.getDocument = function () { + return this.document; + }; + Anchor.prototype.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + Anchor.prototype.setPosition = function (row, column, noClip) { var pos; if (noClip) { pos = { row: row, column: column }; - } else { + } + else { pos = this.$clipPositionToDocument(row, column); } - if (this.row == pos.row && this.column == pos.column) return; - var old = { row: this.row, column: this.column }; - this.row = pos.row; this.column = pos.column; this._signal("change", { @@ -767,16 +689,15 @@ var Anchor = exports.Anchor = function(doc, row, column) { value: pos }); }; - this.detach = function() { - this.document.removeEventListener("change", this.$onChange); + Anchor.prototype.detach = function () { + this.document.off("change", this.$onChange); }; - this.attach = function(doc) { + Anchor.prototype.attach = function (doc) { this.document = doc || this.document; this.document.on("change", this.$onChange); }; - this.$clipPositionToDocument = function(row, column) { + Anchor.prototype.$clipPositionToDocument = function (row, column) { var pos = {}; - if (row >= this.document.getLength()) { pos.row = Math.max(0, this.document.getLength() - 1); pos.column = this.document.getLine(pos.row).length; @@ -789,113 +710,123 @@ var Anchor = exports.Anchor = function(doc, row, column) { pos.row = row; pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); } - if (column < 0) pos.column = 0; - return pos; }; - -}).call(Anchor.prototype); + return Anchor; +}()); +Anchor.prototype.$insertRight = false; +oop.implement(Anchor.prototype, EventEmitter); +function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); +} +function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; +} +exports.Anchor = Anchor; }); -define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module) { -"use strict"; - +define("ace/document",[], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var applyDelta = require("./apply_delta").applyDelta; var EventEmitter = require("./lib/event_emitter").EventEmitter; var Range = require("./range").Range; var Anchor = require("./anchor").Anchor; - -var Document = function(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { +var Document = /** @class */ (function () { + function Document(textOrLines) { this.$lines = [""]; - } else if (Array.isArray(textOrLines)) { - this.insertMergedLines({row: 0, column: 0}, textOrLines); - } else { - this.insert({row: 0, column:0}, textOrLines); + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { + Document.prototype.setValue = function (text) { var len = this.getLength() - 1; this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({row: 0, column: 0}, text); + this.insert({ row: 0, column: 0 }, text || ""); }; - this.getValue = function() { + Document.prototype.getValue = function () { return this.getAllLines().join(this.getNewLineCharacter()); }; - this.createAnchor = function(row, column) { + Document.prototype.createAnchor = function (row, column) { return new Anchor(this, row, column); }; - if ("aaa".split(/a/).length === 0) { - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - }; - } else { - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - } - - - this.$detectNewLine = function(text) { + Document.prototype.$detectNewLine = function (text) { var match = text.match(/^.*?(\r\n|\r|\n)/m); this.$autoNewLine = match ? match[1] : "\n"; this._signal("changeNewLineMode"); }; - this.getNewLineCharacter = function() { + Document.prototype.getNewLineCharacter = function () { switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; } }; - - this.$autoNewLine = ""; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { + Document.prototype.setNewLineMode = function (newLineMode) { if (this.$newLineMode === newLineMode) return; - this.$newLineMode = newLineMode; this._signal("changeNewLineMode"); }; - this.getNewLineMode = function() { + Document.prototype.getNewLineMode = function () { return this.$newLineMode; }; - this.isNewLine = function(text) { + Document.prototype.isNewLine = function (text) { return (text == "\r\n" || text == "\r" || text == "\n"); }; - this.getLine = function(row) { + Document.prototype.getLine = function (row) { return this.$lines[row] || ""; }; - this.getLines = function(firstRow, lastRow) { + Document.prototype.getLines = function (firstRow, lastRow) { return this.$lines.slice(firstRow, lastRow + 1); }; - this.getAllLines = function() { + Document.prototype.getAllLines = function () { return this.getLines(0, this.getLength()); }; - this.getLength = function() { + Document.prototype.getLength = function () { return this.$lines.length; }; - this.getTextRange = function(range) { + Document.prototype.getTextRange = function (range) { return this.getLinesForRange(range).join(this.getNewLineCharacter()); }; - this.getLinesForRange = function(range) { + Document.prototype.getLinesForRange = function (range) { var lines; if (range.start.row === range.end.row) { lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } else { + } + else { lines = this.getLines(range.start.row, range.end.row); lines[0] = (lines[0] || "").substring(range.start.column); var l = lines.length - 1; @@ -904,45 +835,43 @@ var Document = function(textOrLines) { } return lines; }; - this.insertLines = function(row, lines) { + Document.prototype.insertLines = function (row, lines) { console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); return this.insertFullLines(row, lines); }; - this.removeLines = function(firstRow, lastRow) { + Document.prototype.removeLines = function (firstRow, lastRow) { console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); return this.removeFullLines(firstRow, lastRow); }; - this.insertNewLine = function(position) { + Document.prototype.insertNewLine = function (position) { console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); return this.insertMergedLines(position, ["", ""]); }; - this.insert = function(position, text) { + Document.prototype.insert = function (position, text) { if (this.getLength() <= 1) this.$detectNewLine(text); - return this.insertMergedLines(position, this.$split(text)); }; - this.insertInLine = function(position, text) { + Document.prototype.insertInLine = function (position, text) { var start = this.clippedPos(position.row, position.column); var end = this.pos(position.row, position.column + text.length); - this.applyDelta({ start: start, end: end, action: "insert", lines: [text] }, true); - return this.clonePos(end); }; - - this.clippedPos = function(row, column) { + Document.prototype.clippedPos = function (row, column) { var length = this.getLength(); if (row === undefined) { row = length; - } else if (row < 0) { + } + else if (row < 0) { row = 0; - } else if (row >= length) { + } + else if (row >= length) { row = length - 1; column = undefined; } @@ -950,93 +879,87 @@ var Document = function(textOrLines) { if (column == undefined) column = line.length; column = Math.min(Math.max(column, 0), line.length); - return {row: row, column: column}; + return { row: row, column: column }; }; - - this.clonePos = function(pos) { - return {row: pos.row, column: pos.column}; + Document.prototype.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; }; - - this.pos = function(row, column) { - return {row: row, column: column}; + Document.prototype.pos = function (row, column) { + return { row: row, column: column }; }; - - this.$clipPosition = function(position) { + Document.prototype.$clipPosition = function (position) { var length = this.getLength(); if (position.row >= length) { position.row = Math.max(0, length - 1); position.column = this.getLine(length - 1).length; - } else { + } + else { position.row = Math.max(0, position.row); position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); } return position; }; - this.insertFullLines = function(row, lines) { + Document.prototype.insertFullLines = function (row, lines) { row = Math.min(Math.max(row, 0), this.getLength()); var column = 0; if (row < this.getLength()) { lines = lines.concat([""]); column = 0; - } else { + } + else { lines = [""].concat(lines); row--; column = this.$lines[row].length; } - this.insertMergedLines({row: row, column: column}, lines); - }; - this.insertMergedLines = function(position, lines) { + this.insertMergedLines({ row: row, column: column }, lines); + }; + Document.prototype.insertMergedLines = function (position, lines) { var start = this.clippedPos(position.row, position.column); var end = { row: start.row + lines.length - 1, column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length }; - this.applyDelta({ start: start, end: end, action: "insert", lines: lines }); - return this.clonePos(end); }; - this.remove = function(range) { + Document.prototype.remove = function (range) { var start = this.clippedPos(range.start.row, range.start.column); var end = this.clippedPos(range.end.row, range.end.column); this.applyDelta({ start: start, end: end, action: "remove", - lines: this.getLinesForRange({start: start, end: end}) + lines: this.getLinesForRange({ start: start, end: end }) }); return this.clonePos(start); }; - this.removeInLine = function(row, startColumn, endColumn) { + Document.prototype.removeInLine = function (row, startColumn, endColumn) { var start = this.clippedPos(row, startColumn); var end = this.clippedPos(row, endColumn); - this.applyDelta({ start: start, end: end, action: "remove", - lines: this.getLinesForRange({start: start, end: end}) + lines: this.getLinesForRange({ start: start, end: end }) }, true); - return this.clonePos(start); }; - this.removeFullLines = function(firstRow, lastRow) { + Document.prototype.removeFullLines = function (firstRow, lastRow) { firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow ); - var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 ); - var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow ); - var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); var range = new Range(startRow, startCol, endRow, endCol); var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - this.applyDelta({ start: range.start, end: range.end, @@ -1045,7 +968,7 @@ var Document = function(textOrLines) { }); return deletedLines; }; - this.removeNewLine = function(row) { + Document.prototype.removeNewLine = function (row) { if (row < this.getLength() - 1 && row >= 0) { this.applyDelta({ start: this.pos(row, this.getLine(row).length), @@ -1055,14 +978,13 @@ var Document = function(textOrLines) { }); } }; - this.replace = function(range, text) { + Document.prototype.replace = function (range, text) { if (!(range instanceof Range)) range = Range.fromPoints(range.start, range.end); if (text.length === 0 && range.isEmpty()) return range.start; if (text == this.getTextRange(range)) return range.end; - this.remove(range); var end; if (text) { @@ -1071,48 +993,47 @@ var Document = function(textOrLines) { else { end = range.start; } - return end; }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { + Document.prototype.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { this.revertDelta(deltas[i]); } }; - this.applyDelta = function(delta, doNotValidate) { + Document.prototype.applyDelta = function (delta, doNotValidate) { var isInsert = delta.action == "insert"; if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] : !Range.comparePoints(delta.start, delta.end)) { return; } - - if (isInsert && delta.lines.length > 20000) + if (isInsert && delta.lines.length > 20000) { this.$splitAndapplyLargeDelta(delta, 20000); - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } }; - - this.$splitAndapplyLargeDelta = function(delta, MAX) { + Document.prototype.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { var lines = delta.lines; - var l = lines.length; - var row = delta.start.row; + var l = lines.length - MAX + 1; + var row = delta.start.row; var column = delta.start.column; - var from = 0, to = 0; - do { - from = to; + for (var from = 0, to = 0; from < l; from = to) { to += MAX - 1; var chunk = lines.slice(from, to); - if (to > l) { - delta.lines = chunk; - delta.start.row = row + from; - delta.start.column = column; - break; - } chunk.push(""); this.applyDelta({ start: this.pos(row + from, column), @@ -1120,96 +1041,52 @@ var Document = function(textOrLines) { action: delta.action, lines: chunk }, true); - } while(true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); }; - this.revertDelta = function(delta) { - this.applyDelta({ + Document.prototype.revertDelta = function (delta) { + this.$safeApplyDelta({ start: this.clonePos(delta.start), end: this.clonePos(delta.end), action: (delta.action == "insert" ? "remove" : "insert"), lines: delta.lines.slice() }); }; - this.indexToPosition = function(index, startRow) { + Document.prototype.indexToPosition = function (index, startRow) { var lines = this.$lines || this.getAllLines(); var newlineLength = this.getNewLineCharacter().length; for (var i = startRow || 0, l = lines.length; i < l; i++) { index -= lines[i].length + newlineLength; if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; + return { row: i, column: index + lines[i].length + newlineLength }; } - return {row: l-1, column: lines[l-1].length}; + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; }; - this.positionToIndex = function(pos, startRow) { + Document.prototype.positionToIndex = function (pos, startRow) { var lines = this.$lines || this.getAllLines(); var newlineLength = this.getNewLineCharacter().length; var index = 0; var row = Math.min(pos.row, lines.length); for (var i = startRow || 0; i < row; ++i) index += lines[i].length + newlineLength; - return index + pos.column; }; - -}).call(Document.prototype); - + Document.prototype.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + return Document; +}()); +Document.prototype.$autoNewLine = ""; +Document.prototype.$newLineMode = "auto"; +oop.implement(Document.prototype, EventEmitter); exports.Document = Document; + }); -define("ace/lib/lang",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.last = function(a) { - return a[a.length - 1]; -}; - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = require("./deep_copy").deepCopy; +exports.arrayToMap = function (arr) { var map = {}; - for (var i=0; i 0xffff ? 2 : 1; +}; + }); -define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"], function(require, exports, module) { +define("ace/worker/mirror",[], function(require, exports, module) { "use strict"; -var Range = require("../range").Range; var Document = require("../document").Document; var lang = require("../lib/lang"); @@ -1364,11 +1276,24 @@ var Mirror = exports.Mirror = function(sender) { doc.applyDeltas(data); } else { for (var i = 0; i < data.length; i += 2) { + var d, err; if (Array.isArray(data[i+1])) { - var d = {action: "insert", start: data[i], lines: data[i+1]}; + d = {action: "insert", start: data[i], lines: data[i+1]}; } else { - var d = {action: "remove", start: data[i], end: data[i+1]}; + d = {action: "remove", start: data[i], end: data[i+1]}; } + + if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + doc.applyDelta(d, true); } } @@ -1406,16 +1331,12 @@ var Mirror = exports.Mirror = function(sender) { }); -define("ace/mode/coffee/coffee",["require","exports","module"], function(require, exports, module) { +define("ace/mode/coffee/coffee",[], function(require, exports, module) { function define(f) { module.exports = f() }; define.amd = {}; -(function(root){var CoffeeScript=function(){function _dereq_(e){return _dereq_[e]}return _dereq_["./helpers"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o;e.starts=function(e,t,n){return t===e.substr(n,t.length)},e.ends=function(e,t,n){var i;return i=t.length,t===e.substr(e.length-i-(n||0),i)},e.repeat=s=function(e,t){var n;for(n="";t>0;)1&t&&(n+=e),t>>>=1,e+=e;return n},e.compact=function(e){var t,n,i,r;for(r=[],t=0,i=e.length;i>t;t++)n=e[t],n&&r.push(n);return r},e.count=function(e,t){var n,i;if(n=i=0,!t.length)return 1/0;for(;i=1+e.indexOf(t,i);)n++;return n},e.merge=function(e,t){return n(n({},e),t)},n=e.extend=function(e,t){var n,i;for(n in t)i=t[n],e[n]=i;return e},e.flatten=i=function(e){var t,n,r,s;for(n=[],r=0,s=e.length;s>r;r++)t=e[r],t instanceof Array?n=n.concat(i(t)):n.push(t);return n},e.del=function(e,t){var n;return n=e[t],delete e[t],n},e.some=null!=(r=Array.prototype.some)?r:function(e){var t,n,i;for(n=0,i=this.length;i>n;n++)if(t=this[n],e(t))return!0;return!1},e.invertLiterate=function(e){var t,n,i;return i=!0,n=function(){var n,r,s,o;for(s=e.split("\n"),o=[],n=0,r=s.length;r>n;n++)t=s[n],i&&/^([ ]{4}|[ ]{0,3}\t)/.test(t)?o.push(t):(i=/^\s*$/.test(t))?o.push(t):o.push("# "+t);return o}(),n.join("\n")},t=function(e,t){return t?{first_line:e.first_line,first_column:e.first_column,last_line:t.last_line,last_column:t.last_column}:e},e.addLocationDataFn=function(e,n){return function(i){return"object"==typeof i&&i.updateLocationDataIfMissing&&i.updateLocationDataIfMissing(t(e,n)),i}},e.locationDataToString=function(e){var t;return"2"in e&&"first_line"in e[2]?t=e[2]:"first_line"in e&&(t=e),t?t.first_line+1+":"+(t.first_column+1)+"-"+(t.last_line+1+":"+(t.last_column+1)):"No location data"},e.baseFileName=function(e,t,n){var i,r;return null==t&&(t=!1),null==n&&(n=!1),r=n?/\\|\//:/\//,i=e.split(r),e=i[i.length-1],t&&e.indexOf(".")>=0?(i=e.split("."),i.pop(),"coffee"===i[i.length-1]&&i.length>1&&i.pop(),i.join(".")):e},e.isCoffee=function(e){return/\.((lit)?coffee|coffee\.md)$/.test(e)},e.isLiterate=function(e){return/\.(litcoffee|coffee\.md)$/.test(e)},e.throwSyntaxError=function(e,t){var n;throw n=new SyntaxError(e),n.location=t,n.toString=o,n.stack=""+n,n},e.updateSyntaxError=function(e,t,n){return e.toString===o&&(e.code||(e.code=t),e.filename||(e.filename=n),e.stack=""+e),e},o=function(){var e,t,n,i,r,o,a,c,h,l,u,p,d,f,m;return this.code&&this.location?(u=this.location,a=u.first_line,o=u.first_column,h=u.last_line,c=u.last_column,null==h&&(h=a),null==c&&(c=o),r=this.filename||"[stdin]",e=this.code.split("\n")[a],m=o,i=a===h?c+1:e.length,l=e.slice(0,m).replace(/[^\s]/g," ")+s("^",i-m),"undefined"!=typeof process&&null!==process&&(n=(null!=(p=process.stdout)?p.isTTY:void 0)&&!(null!=(d=process.env)?d.NODE_DISABLE_COLORS:void 0)),(null!=(f=this.colorful)?f:n)&&(t=function(e){return""+e+""},e=e.slice(0,m)+t(e.slice(m,i))+e.slice(i),l=t(l)),r+":"+(a+1)+":"+(o+1)+": error: "+this.message+"\n"+e+"\n"+l):Error.prototype.toString.call(this)},e.nameWhitespaceCharacter=function(e){switch(e){case" ":return"space";case"\n":return"newline";case"\r":return"carriage return";case" ":return"tab";default:return e}}}.call(this),t.exports}(),_dereq_["./rewriter"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y,b,k=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},w=[].slice;for(f=function(e,t,n){var i;return i=[e,t],i.generated=!0,n&&(i.origin=n),i},e.Rewriter=function(){function e(){}return e.prototype.rewrite=function(e){return this.tokens=e,this.removeLeadingNewlines(),this.closeOpenCalls(),this.closeOpenIndexes(),this.normalizeLines(),this.tagPostfixConditionals(),this.addImplicitBracesAndParens(),this.addLocationDataToGeneratedTokens(),this.tokens},e.prototype.scanTokens=function(e){var t,n,i;for(i=this.tokens,t=0;n=i[t];)t+=e.call(this,n,t,i);return!0},e.prototype.detectEnd=function(e,t,n){var i,o,a,c,h;for(h=this.tokens,i=0;c=h[e];){if(0===i&&t.call(this,c,e))return n.call(this,c,e);if(!c||0>i)return n.call(this,c,e-1);o=c[0],k.call(s,o)>=0?i+=1:(a=c[0],k.call(r,a)>=0&&(i-=1)),e+=1}return e-1},e.prototype.removeLeadingNewlines=function(){var e,t,n,i,r;for(i=this.tokens,e=t=0,n=i.length;n>t&&(r=i[e][0],"TERMINATOR"===r);e=++t);return e?this.tokens.splice(0,e):void 0},e.prototype.closeOpenCalls=function(){var e,t;return t=function(e,t){var n;return")"===(n=e[0])||"CALL_END"===n||"OUTDENT"===e[0]&&")"===this.tag(t-1)},e=function(e,t){return this.tokens["OUTDENT"===e[0]?t-1:t][0]="CALL_END"},this.scanTokens(function(n,i){return"CALL_START"===n[0]&&this.detectEnd(i+1,t,e),1})},e.prototype.closeOpenIndexes=function(){var e,t;return t=function(e){var t;return"]"===(t=e[0])||"INDEX_END"===t},e=function(e){return e[0]="INDEX_END"},this.scanTokens(function(n,i){return"INDEX_START"===n[0]&&this.detectEnd(i+1,t,e),1})},e.prototype.indexOfTag=function(){var e,t,n,i,r,s,o;for(t=arguments[0],r=arguments.length>=2?w.call(arguments,1):[],e=0,n=i=0,s=r.length;s>=0?s>i:i>s;n=s>=0?++i:--i){for(;"HERECOMMENT"===this.tag(t+n+e);)e+=2;if(null!=r[n]&&("string"==typeof r[n]&&(r[n]=[r[n]]),o=this.tag(t+n+e),0>k.call(r[n],o)))return-1}return t+n+e-1},e.prototype.looksObjectish=function(e){var t,n;return this.indexOfTag(e,"@",null,":")>-1||this.indexOfTag(e,null,":")>-1?!0:(n=this.indexOfTag(e,s),n>-1&&(t=null,this.detectEnd(n+1,function(e){var t;return t=e[0],k.call(r,t)>=0},function(e,n){return t=n}),":"===this.tag(t+1))?!0:!1)},e.prototype.findTagsBackwards=function(e,t){var n,i,o,a,c,h,l;for(n=[];e>=0&&(n.length||(a=this.tag(e),0>k.call(t,a)&&(c=this.tag(e),0>k.call(s,c)||this.tokens[e].generated)&&(h=this.tag(e),0>k.call(u,h))));)i=this.tag(e),k.call(r,i)>=0&&n.push(this.tag(e)),o=this.tag(e),k.call(s,o)>=0&&n.length&&n.pop(),e-=1;return l=this.tag(e),k.call(t,l)>=0},e.prototype.addImplicitBracesAndParens=function(){var e,t;return e=[],t=null,this.scanTokens(function(i,l,p){var d,m,g,v,y,b,w,T,C,E,F,N,L,x,S,D,R,A,I,_,O,$,j,M,B,V,P,U;if(U=i[0],F=(N=l>0?p[l-1]:[])[0],C=(p.length-1>l?p[l+1]:[])[0],j=function(){return e[e.length-1]},M=l,g=function(e){return l-M+e},v=function(){var e,t;return null!=(e=j())?null!=(t=e[2])?t.ours:void 0:void 0},y=function(){var e;return v()&&"("===(null!=(e=j())?e[0]:void 0)},w=function(){var e;return v()&&"{"===(null!=(e=j())?e[0]:void 0)},b=function(){var e;return v&&"CONTROL"===(null!=(e=j())?e[0]:void 0)},B=function(t){var n;return n=null!=t?t:l,e.push(["(",n,{ours:!0}]),p.splice(n,0,f("CALL_START","(")),null==t?l+=1:void 0},d=function(){return e.pop(),p.splice(l,0,f("CALL_END",")",["","end of input",i[2]])),l+=1},V=function(t,n){var r,s;return null==n&&(n=!0),r=null!=t?t:l,e.push(["{",r,{sameLine:!0,startsLine:n,ours:!0}]),s=new String("{"),s.generated=!0,p.splice(r,0,f("{",s,i)),null==t?l+=1:void 0},m=function(t){return t=null!=t?t:l,e.pop(),p.splice(t,0,f("}","}",i)),l+=1},y()&&("IF"===U||"TRY"===U||"FINALLY"===U||"CATCH"===U||"CLASS"===U||"SWITCH"===U))return e.push(["CONTROL",l,{ours:!0}]),g(1);if("INDENT"===U&&v()){if("=>"!==F&&"->"!==F&&"["!==F&&"("!==F&&","!==F&&"{"!==F&&"TRY"!==F&&"ELSE"!==F&&"="!==F)for(;y();)d();return b()&&e.pop(),e.push([U,l]),g(1)}if(k.call(s,U)>=0)return e.push([U,l]),g(1);if(k.call(r,U)>=0){for(;v();)y()?d():w()?m():e.pop();t=e.pop()}if((k.call(c,U)>=0&&i.spaced||"?"===U&&l>0&&!p[l-1].spaced)&&(k.call(o,C)>=0||k.call(h,C)>=0&&!(null!=(L=p[l+1])?L.spaced:void 0)&&!(null!=(x=p[l+1])?x.newLine:void 0)))return"?"===U&&(U=i[0]="FUNC_EXIST"),B(l+1),g(2);if(k.call(c,U)>=0&&this.indexOfTag(l+1,"INDENT")>-1&&this.looksObjectish(l+2)&&!this.findTagsBackwards(l,["CLASS","EXTENDS","IF","CATCH","SWITCH","LEADING_WHEN","FOR","WHILE","UNTIL"]))return B(l+1),e.push(["INDENT",l+2]),g(3);if(":"===U){for(I=function(){var e;switch(!1){case e=this.tag(l-1),0>k.call(r,e):return t[1];case"@"!==this.tag(l-2):return l-2;default:return l-1}}.call(this);"HERECOMMENT"===this.tag(I-2);)I-=2;return this.insideForDeclaration="FOR"===C,P=0===I||(S=this.tag(I-1),k.call(u,S)>=0)||p[I-1].newLine,j()&&(D=j(),$=D[0],O=D[1],("{"===$||"INDENT"===$&&"{"===this.tag(O-1))&&(P||","===this.tag(I-1)||"{"===this.tag(I-1)))?g(1):(V(I,!!P),g(2))}if(w()&&k.call(u,U)>=0&&(j()[2].sameLine=!1),T="OUTDENT"===F||N.newLine,k.call(a,U)>=0||k.call(n,U)>=0&&T)for(;v();)if(R=j(),$=R[0],O=R[1],A=R[2],_=A.sameLine,P=A.startsLine,y()&&","!==F)d();else if(w()&&!this.insideForDeclaration&&_&&"TERMINATOR"!==U&&":"!==F)m();else{if(!w()||"TERMINATOR"!==U||","===F||P&&this.looksObjectish(l+1))break;if("HERECOMMENT"===C)return g(1);m()}if(!(","!==U||this.looksObjectish(l+1)||!w()||this.insideForDeclaration||"TERMINATOR"===C&&this.looksObjectish(l+2)))for(E="OUTDENT"===C?1:0;w();)m(l+E);return g(1)})},e.prototype.addLocationDataToGeneratedTokens=function(){return this.scanTokens(function(e,t,n){var i,r,s,o,a,c;return e[2]?1:e.generated||e.explicit?("{"===e[0]&&(s=null!=(a=n[t+1])?a[2]:void 0)?(r=s.first_line,i=s.first_column):(o=null!=(c=n[t-1])?c[2]:void 0)?(r=o.last_line,i=o.last_column):r=i=0,e[2]={first_line:r,first_column:i,last_line:r,last_column:i},1):1})},e.prototype.normalizeLines=function(){var e,t,r,s,o;return o=r=s=null,t=function(e,t){var r,s,a,c;return";"!==e[1]&&(r=e[0],k.call(p,r)>=0)&&!("TERMINATOR"===e[0]&&(s=this.tag(t+1),k.call(i,s)>=0))&&!("ELSE"===e[0]&&"THEN"!==o)&&!!("CATCH"!==(a=e[0])&&"FINALLY"!==a||"->"!==o&&"=>"!==o)||(c=e[0],k.call(n,c)>=0&&this.tokens[t-1].newLine)},e=function(e,t){return this.tokens.splice(","===this.tag(t-1)?t-1:t,0,s)},this.scanTokens(function(n,a,c){var h,l,u,p,f,m;if(m=n[0],"TERMINATOR"===m){if("ELSE"===this.tag(a+1)&&"OUTDENT"!==this.tag(a-1))return c.splice.apply(c,[a,1].concat(w.call(this.indentation()))),1;if(u=this.tag(a+1),k.call(i,u)>=0)return c.splice(a,1),0}if("CATCH"===m)for(h=l=1;2>=l;h=++l)if("OUTDENT"===(p=this.tag(a+h))||"TERMINATOR"===p||"FINALLY"===p)return c.splice.apply(c,[a+h,0].concat(w.call(this.indentation()))),2+h;return k.call(d,m)>=0&&"INDENT"!==this.tag(a+1)&&("ELSE"!==m||"IF"!==this.tag(a+1))?(o=m,f=this.indentation(c[a]),r=f[0],s=f[1],"THEN"===o&&(r.fromThen=!0),c.splice(a+1,0,r),this.detectEnd(a+2,t,e),"THEN"===m&&c.splice(a,1),1):1})},e.prototype.tagPostfixConditionals=function(){var e,t,n;return n=null,t=function(e,t){var n,i;return i=e[0],n=this.tokens[t-1][0],"TERMINATOR"===i||"INDENT"===i&&0>k.call(d,n)},e=function(e){return"INDENT"!==e[0]||e.generated&&!e.fromThen?n[0]="POST_"+n[0]:void 0},this.scanTokens(function(i,r){return"IF"!==i[0]?1:(n=i,this.detectEnd(r+1,t,e),1)})},e.prototype.indentation=function(e){var t,n;return t=["INDENT",2],n=["OUTDENT",2],e?(t.generated=n.generated=!0,t.origin=n.origin=e):t.explicit=n.explicit=!0,[t,n]},e.prototype.generate=f,e.prototype.tag=function(e){var t;return null!=(t=this.tokens[e])?t[0]:void 0},e}(),t=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]],e.INVERSES=l={},s=[],r=[],m=0,v=t.length;v>m;m++)y=t[m],g=y[0],b=y[1],s.push(l[b]=g),r.push(l[g]=b);i=["CATCH","THEN","ELSE","FINALLY"].concat(r),c=["IDENTIFIER","SUPER",")","CALL_END","]","INDEX_END","@","THIS"],o=["IDENTIFIER","NUMBER","STRING","STRING_START","JS","REGEX","REGEX_START","NEW","PARAM_START","CLASS","IF","TRY","SWITCH","THIS","BOOL","NULL","UNDEFINED","UNARY","YIELD","UNARY_MATH","SUPER","THROW","@","->","=>","[","(","{","--","++"],h=["+","-"],a=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],d=["ELSE","->","=>","TRY","FINALLY","THEN"],p=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],u=["TERMINATOR","INDENT","OUTDENT"],n=[".","?.","::","?::"]}.call(this),t.exports}(),_dereq_["./lexer"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y,b,k,w,T,C,E,F,N,L,x,S,D,R,A,I,_,O,$,j,M,B,V,P,U,G,H,q,X,W,Y,K,z,J,Q,Z,et,tt,nt,it,rt,st,ot,at,ct,ht,lt,ut=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};ot=_dereq_("./rewriter"),P=ot.Rewriter,w=ot.INVERSES,at=_dereq_("./helpers"),nt=at.count,ht=at.starts,tt=at.compact,ct=at.repeat,it=at.invertLiterate,st=at.locationDataToString,lt=at.throwSyntaxError,e.Lexer=S=function(){function e(){}return e.prototype.tokenize=function(e,t){var n,i,r,s;for(null==t&&(t={}),this.literate=t.literate,this.indent=0,this.baseIndent=0,this.indebt=0,this.outdebt=0,this.indents=[],this.ends=[],this.tokens=[],this.chunkLine=t.line||0,this.chunkColumn=t.column||0,e=this.clean(e),r=0;this.chunk=e.slice(r);)if(n=this.identifierToken()||this.commentToken()||this.whitespaceToken()||this.lineToken()||this.stringToken()||this.numberToken()||this.regexToken()||this.jsToken()||this.literalToken(),s=this.getLineAndColumnFromChunk(n),this.chunkLine=s[0],this.chunkColumn=s[1],r+=n,t.untilBalanced&&0===this.ends.length)return{tokens:this.tokens,index:r};return this.closeIndentation(),(i=this.ends.pop())&&this.error("missing "+i.tag,i.origin[2]),t.rewrite===!1?this.tokens:(new P).rewrite(this.tokens)},e.prototype.clean=function(e){return e.charCodeAt(0)===t&&(e=e.slice(1)),e=e.replace(/\r/g,"").replace(z,""),et.test(e)&&(e="\n"+e,this.chunkLine--),this.literate&&(e=it(e)),e},e.prototype.identifierToken=function(){var e,t,n,i,r,c,h,l,u,p,d,f,m,g,y,b;return(l=v.exec(this.chunk))?(h=l[0],r=l[1],t=l[2],c=r.length,u=void 0,"own"===r&&"FOR"===this.tag()?(this.token("OWN",r),r.length):"from"===r&&"YIELD"===this.tag()?(this.token("FROM",r),r.length):(d=this.tokens,p=d[d.length-1],i=t||null!=p&&("."===(f=p[0])||"?."===f||"::"===f||"?::"===f||!p.spaced&&"@"===p[0]),y="IDENTIFIER",!i&&(ut.call(E,r)>=0||ut.call(a,r)>=0)&&(y=r.toUpperCase(),"WHEN"===y&&(m=this.tag(),ut.call(N,m)>=0)?y="LEADING_WHEN":"FOR"===y?this.seenFor=!0:"UNLESS"===y?y="IF":ut.call(J,y)>=0?y="UNARY":ut.call(B,y)>=0&&("INSTANCEOF"!==y&&this.seenFor?(y="FOR"+y,this.seenFor=!1):(y="RELATION","!"===this.value()&&(u=this.tokens.pop(),r="!"+r)))),ut.call(C,r)>=0&&(i?(y="IDENTIFIER",r=new String(r),r.reserved=!0):ut.call(V,r)>=0&&this.error("reserved word '"+r+"'",{length:r.length})),i||(ut.call(s,r)>=0&&(e=r,r=o[r]),y=function(){switch(r){case"!":return"UNARY";case"==":case"!=":return"COMPARE";case"&&":case"||":return"LOGIC";case"true":case"false":return"BOOL";case"break":case"continue":return"STATEMENT";default:return y}}()),b=this.token(y,r,0,c),e&&(b.origin=[y,e,b[2]]),b.variable=!i,u&&(g=[u[2].first_line,u[2].first_column],b[2].first_line=g[0],b[2].first_column=g[1]),t&&(n=h.lastIndexOf(":"),this.token(":",":",n,t.length)),h.length)):0},e.prototype.numberToken=function(){var e,t,n,i,r;return(n=I.exec(this.chunk))?(i=n[0],t=i.length,/^0[BOX]/.test(i)?this.error("radix prefix in '"+i+"' must be lowercase",{offset:1}):/E/.test(i)&&!/^0x/.test(i)?this.error("exponential notation in '"+i+"' must be indicated with a lowercase 'e'",{offset:i.indexOf("E")}):/^0\d*[89]/.test(i)?this.error("decimal literal '"+i+"' must not be prefixed with '0'",{length:t}):/^0\d+/.test(i)&&this.error("octal literal '"+i+"' must be prefixed with '0o'",{length:t}),(r=/^0o([0-7]+)/.exec(i))&&(i="0x"+parseInt(r[1],8).toString(16)),(e=/^0b([01]+)/.exec(i))&&(i="0x"+parseInt(e[1],2).toString(16)),this.token("NUMBER",i,0,t),t):0},e.prototype.stringToken=function(){var e,t,n,i,r,s,o,a,c,h,l,u,m,g,v,y;if(l=(Y.exec(this.chunk)||[])[0],!l)return 0;if(g=function(){switch(l){case"'":return W;case'"':return q;case"'''":return f;case'"""':return p}}(),s=3===l.length,u=this.matchWithInterpolations(g,l),y=u.tokens,r=u.index,e=y.length-1,n=l.charAt(0),s){for(a=null,i=function(){var e,t,n;for(n=[],o=e=0,t=y.length;t>e;o=++e)v=y[o],"NEOSTRING"===v[0]&&n.push(v[1]);return n}().join("#{}");h=d.exec(i);)t=h[1],(null===a||(m=t.length)>0&&a.length>m)&&(a=t);a&&(c=RegExp("^"+a,"gm")),this.mergeInterpolationTokens(y,{delimiter:n},function(t){return function(n,i){return n=t.formatString(n),0===i&&(n=n.replace(F,"")),i===e&&(n=n.replace(K,"")),c&&(n=n.replace(c,"")),n}}(this))}else this.mergeInterpolationTokens(y,{delimiter:n},function(t){return function(n,i){return n=t.formatString(n),n=n.replace(G,function(t,r){return 0===i&&0===r||i===e&&r+t.length===n.length?"":" "})}}(this));return r},e.prototype.commentToken=function(){var e,t,n;return(n=this.chunk.match(c))?(e=n[0],t=n[1],t&&((n=u.exec(e))&&this.error("block comments cannot contain "+n[0],{offset:n.index,length:n[0].length}),t.indexOf("\n")>=0&&(t=t.replace(RegExp("\\n"+ct(" ",this.indent),"g"),"\n")),this.token("HERECOMMENT",t,0,e.length)),e.length):0},e.prototype.jsToken=function(){var e,t;return"`"===this.chunk.charAt(0)&&(e=T.exec(this.chunk))?(this.token("JS",(t=e[0]).slice(1,-1),0,t.length),t.length):0},e.prototype.regexToken=function(){var e,t,n,r,s,o,a,c,h,l,u,p,d;switch(!1){case!(o=M.exec(this.chunk)):this.error("regular expressions cannot begin with "+o[2],{offset:o.index+o[1].length});break;case!(o=this.matchWithInterpolations(m,"///")):d=o.tokens,s=o.index;break;case!(o=$.exec(this.chunk)):if(p=o[0],e=o[1],t=o[2],this.validateEscapes(e,{isRegex:!0,offsetInChunk:1}),s=p.length,h=this.tokens,c=h[h.length-1],c)if(c.spaced&&(l=c[0],ut.call(i,l)>=0)){if(!t||O.test(p))return 0}else if(u=c[0],ut.call(A,u)>=0)return 0;t||this.error("missing / (unclosed regex)");break;default:return 0}switch(r=j.exec(this.chunk.slice(s))[0],n=s+r.length,a=this.makeToken("REGEX",null,0,n),!1){case!!Z.test(r):this.error("invalid regular expression flags "+r,{offset:s,length:r.length});break;case!(p||1===d.length):null==e&&(e=this.formatHeregex(d[0][1])),this.token("REGEX",""+this.makeDelimitedLiteral(e,{delimiter:"/"})+r,0,n,a);break;default:this.token("REGEX_START","(",0,0,a),this.token("IDENTIFIER","RegExp",0,0),this.token("CALL_START","(",0,0),this.mergeInterpolationTokens(d,{delimiter:'"',"double":!0},this.formatHeregex),r&&(this.token(",",",",s,0),this.token("STRING",'"'+r+'"',s,r.length)),this.token(")",")",n,0),this.token("REGEX_END",")",n,0)}return n},e.prototype.lineToken=function(){var e,t,n,i,r;if(!(n=R.exec(this.chunk)))return 0;if(t=n[0],this.seenFor=!1,r=t.length-1-t.lastIndexOf("\n"),i=this.unfinished(),r-this.indebt===this.indent)return i?this.suppressNewlines():this.newlineToken(0),t.length;if(r>this.indent){if(i)return this.indebt=r-this.indent,this.suppressNewlines(),t.length;if(!this.tokens.length)return this.baseIndent=this.indent=r,t.length;e=r-this.indent+this.outdebt,this.token("INDENT",e,t.length-r,r),this.indents.push(e),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.indebt=0,this.indent=r}else this.baseIndent>r?this.error("missing indentation",{offset:t.length}):(this.indebt=0,this.outdentToken(this.indent-r,i,t.length));return t.length},e.prototype.outdentToken=function(e,t,n){var i,r,s,o;for(i=this.indent-e;e>0;)s=this.indents[this.indents.length-1],s?s===this.outdebt?(e-=this.outdebt,this.outdebt=0):this.outdebt>s?(this.outdebt-=s,e-=s):(r=this.indents.pop()+this.outdebt,n&&(o=this.chunk[n],ut.call(y,o)>=0)&&(i-=r-e,e=r),this.outdebt=0,this.pair("OUTDENT"),this.token("OUTDENT",e,0,n),e-=r):e=0;for(r&&(this.outdebt-=e);";"===this.value();)this.tokens.pop();return"TERMINATOR"===this.tag()||t||this.token("TERMINATOR","\n",n,0),this.indent=i,this},e.prototype.whitespaceToken=function(){var e,t,n,i;return(e=et.exec(this.chunk))||(t="\n"===this.chunk.charAt(0))?(i=this.tokens,n=i[i.length-1],n&&(n[e?"spaced":"newLine"]=!0),e?e[0].length:0):0},e.prototype.newlineToken=function(e){for(;";"===this.value();)this.tokens.pop();return"TERMINATOR"!==this.tag()&&this.token("TERMINATOR","\n",e,0),this},e.prototype.suppressNewlines=function(){return"\\"===this.value()&&this.tokens.pop(),this},e.prototype.literalToken=function(){var e,t,n,s,o,a,c,u,p,d;if((e=_.exec(this.chunk))?(d=e[0],r.test(d)&&this.tagParameters()):d=this.chunk.charAt(0),u=d,n=this.tokens,t=n[n.length-1],"="===d&&t&&(!t[1].reserved&&(s=t[1],ut.call(C,s)>=0)&&(t.origin&&(t=t.origin),this.error("reserved word '"+t[1]+"' can't be assigned",t[2])),"||"===(o=t[1])||"&&"===o))return t[0]="COMPOUND_ASSIGN",t[1]+="=",d.length;if(";"===d)this.seenFor=!1,u="TERMINATOR";else if(ut.call(D,d)>=0)u="MATH";else if(ut.call(h,d)>=0)u="COMPARE";else if(ut.call(l,d)>=0)u="COMPOUND_ASSIGN";else if(ut.call(J,d)>=0)u="UNARY";else if(ut.call(Q,d)>=0)u="UNARY_MATH";else if(ut.call(U,d)>=0)u="SHIFT";else if(ut.call(x,d)>=0||"?"===d&&(null!=t?t.spaced:void 0))u="LOGIC";else if(t&&!t.spaced)if("("===d&&(a=t[0],ut.call(i,a)>=0))"?"===t[0]&&(t[0]="FUNC_EXIST"),u="CALL_START";else if("["===d&&(c=t[0],ut.call(b,c)>=0))switch(u="INDEX_START",t[0]){case"?":t[0]="INDEX_SOAK"}switch(p=this.makeToken(u,d),d){case"(":case"{":case"[":this.ends.push({tag:w[d],origin:p});break;case")":case"}":case"]":this.pair(d)}return this.tokens.push(p),d.length},e.prototype.tagParameters=function(){var e,t,n,i;if(")"!==this.tag())return this;for(t=[],i=this.tokens,e=i.length,i[--e][0]="PARAM_END";n=i[--e];)switch(n[0]){case")":t.push(n);break;case"(":case"CALL_START":if(!t.length)return"("===n[0]?(n[0]="PARAM_START",this):this;t.pop()}return this},e.prototype.closeIndentation=function(){return this.outdentToken(this.indent)},e.prototype.matchWithInterpolations=function(t,n){var i,r,s,o,a,c,h,l,u,p,d,f,m,g,v;if(v=[],l=n.length,this.chunk.slice(0,l)!==n)return null;for(m=this.chunk.slice(l);;){if(g=t.exec(m)[0],this.validateEscapes(g,{isRegex:"/"===n.charAt(0),offsetInChunk:l}),v.push(this.makeToken("NEOSTRING",g,l)),m=m.slice(g.length),l+=g.length,"#{"!==m.slice(0,2))break;p=this.getLineAndColumnFromChunk(l+1),c=p[0],r=p[1],d=(new e).tokenize(m.slice(1),{line:c,column:r,untilBalanced:!0}),h=d.tokens,o=d.index,o+=1,u=h[0],i=h[h.length-1],u[0]=u[1]="(",i[0]=i[1]=")",i.origin=["","end of interpolation",i[2]],"TERMINATOR"===(null!=(f=h[1])?f[0]:void 0)&&h.splice(1,1),v.push(["TOKENS",h]),m=m.slice(o),l+=o}return m.slice(0,n.length)!==n&&this.error("missing "+n,{length:n.length}),s=v[0],a=v[v.length-1],s[2].first_column-=n.length,a[2].last_column+=n.length,0===a[1].length&&(a[2].last_column-=1),{tokens:v,index:l+n.length}},e.prototype.mergeInterpolationTokens=function(e,t,n){var i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y;for(e.length>1&&(u=this.token("STRING_START","(",0,0)),s=this.tokens.length,o=a=0,h=e.length;h>a;o=++a){switch(g=e[o],m=g[0],y=g[1],m){case"TOKENS":if(2===y.length)continue;l=y[0],v=y;break;case"NEOSTRING":if(i=n(g[1],o),0===i.length){if(0!==o)continue;r=this.tokens.length}2===o&&null!=r&&this.tokens.splice(r,2),g[0]="STRING",g[1]=this.makeDelimitedLiteral(i,t),l=g,v=[g]}this.tokens.length>s&&(p=this.token("+","+"),p[2]={first_line:l[2].first_line,first_column:l[2].first_column,last_line:l[2].first_line,last_column:l[2].first_column}),(d=this.tokens).push.apply(d,v)}return u?(c=e[e.length-1],u.origin=["STRING",null,{first_line:u[2].first_line,first_column:u[2].first_column,last_line:c[2].last_line,last_column:c[2].last_column}],f=this.token("STRING_END",")"),f[2]={first_line:c[2].last_line,first_column:c[2].last_column,last_line:c[2].last_line,last_column:c[2].last_column}):void 0},e.prototype.pair=function(e){var t,n,i,r,s;return i=this.ends,n=i[i.length-1],e!==(s=null!=n?n.tag:void 0)?("OUTDENT"!==s&&this.error("unmatched "+e),r=this.indents,t=r[r.length-1],this.outdentToken(t,!0),this.pair(e)):this.ends.pop()},e.prototype.getLineAndColumnFromChunk=function(e){var t,n,i,r,s;return 0===e?[this.chunkLine,this.chunkColumn]:(s=e>=this.chunk.length?this.chunk:this.chunk.slice(0,+(e-1)+1||9e9),i=nt(s,"\n"),t=this.chunkColumn,i>0?(r=s.split("\n"),n=r[r.length-1],t=n.length):t+=s.length,[this.chunkLine+i,t])},e.prototype.makeToken=function(e,t,n,i){var r,s,o,a,c;return null==n&&(n=0),null==i&&(i=t.length),s={},o=this.getLineAndColumnFromChunk(n),s.first_line=o[0],s.first_column=o[1],r=Math.max(0,i-1),a=this.getLineAndColumnFromChunk(n+r),s.last_line=a[0],s.last_column=a[1],c=[e,t,s]},e.prototype.token=function(e,t,n,i,r){var s;return s=this.makeToken(e,t,n,i),r&&(s.origin=r),this.tokens.push(s),s},e.prototype.tag=function(){var e,t;return e=this.tokens,t=e[e.length-1],null!=t?t[0]:void 0},e.prototype.value=function(){var e,t;return e=this.tokens,t=e[e.length-1],null!=t?t[1]:void 0},e.prototype.unfinished=function(){var e;return L.test(this.chunk)||"\\"===(e=this.tag())||"."===e||"?."===e||"?::"===e||"UNARY"===e||"MATH"===e||"UNARY_MATH"===e||"+"===e||"-"===e||"YIELD"===e||"**"===e||"SHIFT"===e||"RELATION"===e||"COMPARE"===e||"LOGIC"===e||"THROW"===e||"EXTENDS"===e},e.prototype.formatString=function(e){return e.replace(X,"$1")},e.prototype.formatHeregex=function(e){return e.replace(g,"$1$2")},e.prototype.validateEscapes=function(e,t){var n,i,r,s,o,a,c,h;return null==t&&(t={}),s=k.exec(e),!s||(s[0],n=s[1],a=s[2],i=s[3],h=s[4],t.isRegex&&a&&"0"!==a.charAt(0))?void 0:(o=a?"octal escape sequences are not allowed":"invalid escape sequence",r="\\"+(a||i||h),this.error(o+" "+r,{offset:(null!=(c=t.offsetInChunk)?c:0)+s.index+n.length,length:r.length}))},e.prototype.makeDelimitedLiteral=function(e,t){var n;return null==t&&(t={}),""===e&&"/"===t.delimiter&&(e="(?:)"),n=RegExp("(\\\\\\\\)|(\\\\0(?=[1-7]))|\\\\?("+t.delimiter+")|\\\\?(?:(\\n)|(\\r)|(\\u2028)|(\\u2029))|(\\\\.)","g"),e=e.replace(n,function(e,n,i,r,s,o,a,c,h){switch(!1){case!n:return t.double?n+n:n;case!i:return"\\x00";case!r:return"\\"+r;case!s:return"\\n";case!o:return"\\r";case!a:return"\\u2028";case!c:return"\\u2029";case!h:return t.double?"\\"+h:h}}),""+t.delimiter+e+t.delimiter},e.prototype.error=function(e,t){var n,i,r,s,o,a;return null==t&&(t={}),r="first_line"in t?t:(o=this.getLineAndColumnFromChunk(null!=(s=t.offset)?s:0),i=o[0],n=o[1],o,{first_line:i,first_column:n,last_column:n+(null!=(a=t.length)?a:1)-1}),lt(e,r)},e}(),E=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","if","else","switch","for","while","do","try","catch","finally","class","extends","super"],a=["undefined","then","unless","until","loop","of","by","when"],o={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},s=function(){var e;e=[];for(rt in o)e.push(rt);return e}(),a=a.concat(s),V=["case","default","function","var","void","with","const","let","enum","export","import","native","implements","interface","package","private","protected","public","static"],H=["arguments","eval","yield*"],C=E.concat(V).concat(H),e.RESERVED=V.concat(E).concat(a).concat(H),e.STRICT_PROSCRIBED=H,t=65279,v=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,I=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,_=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,et=/^[^\n\S]+/,c=/^###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/,r=/^[-=]>/,R=/^(?:\n[^\n\S]*)+/,T=/^`[^\\`]*(?:\\.[^\\`]*)*`/,Y=/^(?:'''|"""|'|")/,W=/^(?:[^\\']|\\[\s\S])*/,q=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,f=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,p=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,X=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,G=/\s*\n\s*/g,d=/\n+([^\n\S]*)(?=\S)/g,$=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,j=/^\w*/,Z=/^(?!.*(.).*\1)[imgy]*$/,m=/^(?:[^\\\/#]|\\[\s\S]|\/(?!\/\/)|\#(?!\{))*/,g=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,M=/^(\/|\/{3}\s*)(\*)/,O=/^\/=?\s/,u=/\*\//,L=/^\s*(?:,|\??\.(?![.\d])|::)/,k=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u(?![\da-fA-F]{4}).{0,4}))/,F=/^[^\n\S]*\n/,K=/\n[^\n\S]*$/,z=/\s+$/,l=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],J=["NEW","TYPEOF","DELETE","DO"],Q=["!","~"],x=["&&","||","&","|","^"],U=["<<",">>",">>>"],h=["==","!=","<",">","<=",">="],D=["*","/","%","//","%%"],B=["IN","OF","INSTANCEOF"],n=["TRUE","FALSE"],i=["IDENTIFIER",")","]","?","@","THIS","SUPER"],b=i.concat(["NUMBER","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),A=b.concat(["++","--"]),N=["INDENT","OUTDENT","TERMINATOR"],y=[")","}","]"]}.call(this),t.exports}(),_dereq_["./parser"]=function(){var e={},t={exports:e},n=function(){function e(){this.yy={}}var t=function(e,t,n,i){for(n=n||{},i=e.length;i--;n[e[i]]=t);return n},n=[1,20],i=[1,75],r=[1,71],s=[1,76],o=[1,77],a=[1,73],c=[1,74],h=[1,50],l=[1,52],u=[1,53],p=[1,54],d=[1,55],f=[1,45],m=[1,46],g=[1,27],v=[1,60],y=[1,61],b=[1,70],k=[1,43],w=[1,26],T=[1,58],C=[1,59],E=[1,57],F=[1,38],N=[1,44],L=[1,56],x=[1,65],S=[1,66],D=[1,67],R=[1,68],A=[1,42],I=[1,64],_=[1,29],O=[1,30],$=[1,31],j=[1,32],M=[1,33],B=[1,34],V=[1,35],P=[1,78],U=[1,6,26,34,108],G=[1,88],H=[1,81],q=[1,80],X=[1,79],W=[1,82],Y=[1,83],K=[1,84],z=[1,85],J=[1,86],Q=[1,87],Z=[1,91],et=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],tt=[1,97],nt=[1,98],it=[1,99],rt=[1,100],st=[1,102],ot=[1,103],at=[1,96],ct=[2,112],ht=[1,6,25,26,34,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],lt=[2,79],ut=[1,108],pt=[2,58],dt=[1,112],ft=[1,117],mt=[1,118],gt=[1,120],vt=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],yt=[2,76],bt=[1,6,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],kt=[1,155],wt=[1,157],Tt=[1,152],Ct=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,86,90,91,92,97,99,108,110,111,112,116,117,132,135,136,139,140,141,142,143,144,145,146,147,148],Et=[2,95],Ft=[1,6,25,26,34,49,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],Nt=[1,6,25,26,34,46,49,55,60,63,72,73,74,75,77,79,80,84,86,90,91,92,97,99,108,110,111,112,116,117,123,124,132,135,136,139,140,141,142,143,144,145,146,147,148],Lt=[1,206],xt=[1,205],St=[1,6,25,26,34,38,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],Dt=[2,56],Rt=[1,216],At=[6,25,26,55,60],It=[6,25,26,46,55,60,63],_t=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,142,144,145,146,147],Ot=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132],$t=[72,73,74,75,77,80,90,91],jt=[1,235],Mt=[2,133],Bt=[1,6,25,26,34,46,55,60,63,72,73,74,75,77,79,80,84,90,91,92,97,99,108,110,111,112,116,117,123,124,132,135,136,141,142,143,144,145,146,147],Vt=[1,244],Pt=[6,25,26,60,92,97],Ut=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,117,132],Gt=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,111,117,132],Ht=[123,124],qt=[60,123,124],Xt=[1,255],Wt=[6,25,26,60,84],Yt=[6,25,26,49,60,84],Kt=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,144,145,146,147],zt=[11,28,30,32,33,36,37,40,41,42,43,44,51,52,53,57,58,79,82,85,89,94,95,96,102,106,107,110,112,114,116,125,131,133,134,135,136,137,139,140],Jt=[2,122],Qt=[6,25,26],Zt=[2,57],en=[1,268],tn=[1,269],nn=[1,6,25,26,34,55,60,63,79,84,92,97,99,104,105,108,110,111,112,116,117,127,129,132,135,136,141,142,143,144,145,146,147],rn=[26,127,129],sn=[1,6,26,34,55,60,63,79,84,92,97,99,108,111,117,132],on=[2,71],an=[1,291],cn=[1,292],hn=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,127,132,135,136,141,142,143,144,145,146,147],ln=[1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,112,116,117,132],un=[1,303],pn=[1,304],dn=[6,25,26,60],fn=[1,6,25,26,34,55,60,63,79,84,92,97,99,104,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],mn=[25,60],gn={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,Statement:8,Return:9,Comment:10,STATEMENT:11,Value:12,Invocation:13,Code:14,Operation:15,Assign:16,If:17,Try:18,While:19,For:20,Switch:21,Class:22,Throw:23,Block:24,INDENT:25,OUTDENT:26,Identifier:27,IDENTIFIER:28,AlphaNumeric:29,NUMBER:30,String:31,STRING:32,STRING_START:33,STRING_END:34,Regex:35,REGEX:36,REGEX_START:37,REGEX_END:38,Literal:39,JS:40,DEBUGGER:41,UNDEFINED:42,NULL:43,BOOL:44,Assignable:45,"=":46,AssignObj:47,ObjAssignable:48,":":49,ThisProperty:50,RETURN:51,HERECOMMENT:52,PARAM_START:53,ParamList:54,PARAM_END:55,FuncGlyph:56,"->":57,"=>":58,OptComma:59,",":60,Param:61,ParamVar:62,"...":63,Array:64,Object:65,Splat:66,SimpleAssignable:67,Accessor:68,Parenthetical:69,Range:70,This:71,".":72,"?.":73,"::":74,"?::":75,Index:76,INDEX_START:77,IndexValue:78,INDEX_END:79,INDEX_SOAK:80,Slice:81,"{":82,AssignList:83,"}":84,CLASS:85,EXTENDS:86,OptFuncExist:87,Arguments:88,SUPER:89,FUNC_EXIST:90,CALL_START:91,CALL_END:92,ArgList:93,THIS:94,"@":95,"[":96,"]":97,RangeDots:98,"..":99,Arg:100,SimpleArgs:101,TRY:102,Catch:103,FINALLY:104,CATCH:105,THROW:106,"(":107,")":108,WhileSource:109,WHILE:110,WHEN:111,UNTIL:112,Loop:113,LOOP:114,ForBody:115,FOR:116,BY:117,ForStart:118,ForSource:119,ForVariables:120,OWN:121,ForValue:122,FORIN:123,FOROF:124,SWITCH:125,Whens:126,ELSE:127,When:128,LEADING_WHEN:129,IfBlock:130,IF:131,POST_IF:132,UNARY:133,UNARY_MATH:134,"-":135,"+":136,YIELD:137,FROM:138,"--":139,"++":140,"?":141,MATH:142,"**":143,SHIFT:144,COMPARE:145,LOGIC:146,RELATION:147,COMPOUND_ASSIGN:148,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",11:"STATEMENT",25:"INDENT",26:"OUTDENT",28:"IDENTIFIER",30:"NUMBER",32:"STRING",33:"STRING_START",34:"STRING_END",36:"REGEX",37:"REGEX_START",38:"REGEX_END",40:"JS",41:"DEBUGGER",42:"UNDEFINED",43:"NULL",44:"BOOL",46:"=",49:":",51:"RETURN",52:"HERECOMMENT",53:"PARAM_START",55:"PARAM_END",57:"->",58:"=>",60:",",63:"...",72:".",73:"?.",74:"::",75:"?::",77:"INDEX_START",79:"INDEX_END",80:"INDEX_SOAK",82:"{",84:"}",85:"CLASS",86:"EXTENDS",89:"SUPER",90:"FUNC_EXIST",91:"CALL_START",92:"CALL_END",94:"THIS",95:"@",96:"[",97:"]",99:"..",102:"TRY",104:"FINALLY",105:"CATCH",106:"THROW",107:"(",108:")",110:"WHILE",111:"WHEN",112:"UNTIL",114:"LOOP",116:"FOR",117:"BY",121:"OWN",123:"FORIN",124:"FOROF",125:"SWITCH",127:"ELSE",129:"LEADING_WHEN",131:"IF",132:"POST_IF",133:"UNARY",134:"UNARY_MATH",135:"-",136:"+",137:"YIELD",138:"FROM",139:"--",140:"++",141:"?",142:"MATH",143:"**",144:"SHIFT",145:"COMPARE",146:"LOGIC",147:"RELATION",148:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[8,1],[8,1],[8,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[24,2],[24,3],[27,1],[29,1],[29,1],[31,1],[31,3],[35,1],[35,3],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[39,1],[16,3],[16,4],[16,5],[47,1],[47,3],[47,5],[47,1],[48,1],[48,1],[48,1],[9,2],[9,1],[10,1],[14,5],[14,2],[56,1],[56,1],[59,0],[59,1],[54,0],[54,1],[54,3],[54,4],[54,6],[61,1],[61,2],[61,3],[61,1],[62,1],[62,1],[62,1],[62,1],[66,2],[67,1],[67,2],[67,2],[67,1],[45,1],[45,1],[45,1],[12,1],[12,1],[12,1],[12,1],[12,1],[68,2],[68,2],[68,2],[68,2],[68,1],[68,1],[76,3],[76,2],[78,1],[78,1],[65,4],[83,0],[83,1],[83,3],[83,4],[83,6],[22,1],[22,2],[22,3],[22,4],[22,2],[22,3],[22,4],[22,5],[13,3],[13,3],[13,1],[13,2],[87,0],[87,1],[88,2],[88,4],[71,1],[71,1],[50,2],[64,2],[64,4],[98,1],[98,1],[70,5],[81,3],[81,2],[81,2],[81,1],[93,1],[93,3],[93,4],[93,4],[93,6],[100,1],[100,1],[100,1],[101,1],[101,3],[18,2],[18,3],[18,4],[18,5],[103,3],[103,3],[103,2],[23,2],[69,3],[69,5],[109,2],[109,4],[109,2],[109,4],[19,2],[19,2],[19,2],[19,1],[113,2],[113,2],[20,2],[20,2],[20,2],[115,2],[115,4],[115,2],[118,2],[118,3],[122,1],[122,1],[122,1],[122,1],[120,1],[120,3],[119,2],[119,2],[119,4],[119,4],[119,4],[119,6],[119,6],[21,5],[21,7],[21,4],[21,6],[126,1],[126,2],[128,3],[128,4],[130,3],[130,5],[17,1],[17,3],[17,3],[17,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,2],[15,2],[15,2],[15,2],[15,2],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,3],[15,5],[15,4],[15,3]],performAction:function(e,t,n,i,r,s,o){var a=s.length-1; -switch(r){case 1:return this.$=i.addLocationDataFn(o[a],o[a])(new i.Block);case 2:return this.$=s[a];case 3:this.$=i.addLocationDataFn(o[a],o[a])(i.Block.wrap([s[a]]));break;case 4:this.$=i.addLocationDataFn(o[a-2],o[a])(s[a-2].push(s[a]));break;case 5:this.$=s[a-1];break;case 6:case 7:case 8:case 9:case 11:case 12:case 13:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 27:case 32:case 34:case 45:case 46:case 47:case 48:case 56:case 57:case 67:case 68:case 69:case 70:case 75:case 76:case 79:case 83:case 89:case 133:case 134:case 136:case 166:case 167:case 183:case 189:this.$=s[a];break;case 10:case 25:case 26:case 28:case 30:case 33:case 35:this.$=i.addLocationDataFn(o[a],o[a])(new i.Literal(s[a]));break;case 23:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Block);break;case 24:case 31:case 90:this.$=i.addLocationDataFn(o[a-2],o[a])(s[a-1]);break;case 29:case 146:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Parens(s[a-1]));break;case 36:this.$=i.addLocationDataFn(o[a],o[a])(new i.Undefined);break;case 37:this.$=i.addLocationDataFn(o[a],o[a])(new i.Null);break;case 38:this.$=i.addLocationDataFn(o[a],o[a])(new i.Bool(s[a]));break;case 39:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Assign(s[a-2],s[a]));break;case 40:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Assign(s[a-3],s[a]));break;case 41:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Assign(s[a-4],s[a-1]));break;case 42:case 72:case 77:case 78:case 80:case 81:case 82:case 168:case 169:this.$=i.addLocationDataFn(o[a],o[a])(new i.Value(s[a]));break;case 43:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Assign(i.addLocationDataFn(o[a-2])(new i.Value(s[a-2])),s[a],"object"));break;case 44:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Assign(i.addLocationDataFn(o[a-4])(new i.Value(s[a-4])),s[a-1],"object"));break;case 49:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Return(s[a]));break;case 50:this.$=i.addLocationDataFn(o[a],o[a])(new i.Return);break;case 51:this.$=i.addLocationDataFn(o[a],o[a])(new i.Comment(s[a]));break;case 52:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Code(s[a-3],s[a],s[a-1]));break;case 53:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Code([],s[a],s[a-1]));break;case 54:this.$=i.addLocationDataFn(o[a],o[a])("func");break;case 55:this.$=i.addLocationDataFn(o[a],o[a])("boundfunc");break;case 58:case 95:this.$=i.addLocationDataFn(o[a],o[a])([]);break;case 59:case 96:case 128:case 170:this.$=i.addLocationDataFn(o[a],o[a])([s[a]]);break;case 60:case 97:case 129:this.$=i.addLocationDataFn(o[a-2],o[a])(s[a-2].concat(s[a]));break;case 61:case 98:case 130:this.$=i.addLocationDataFn(o[a-3],o[a])(s[a-3].concat(s[a]));break;case 62:case 99:case 132:this.$=i.addLocationDataFn(o[a-5],o[a])(s[a-5].concat(s[a-2]));break;case 63:this.$=i.addLocationDataFn(o[a],o[a])(new i.Param(s[a]));break;case 64:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Param(s[a-1],null,!0));break;case 65:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Param(s[a-2],s[a]));break;case 66:case 135:this.$=i.addLocationDataFn(o[a],o[a])(new i.Expansion);break;case 71:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Splat(s[a-1]));break;case 73:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a-1].add(s[a]));break;case 74:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Value(s[a-1],[].concat(s[a])));break;case 84:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Access(s[a]));break;case 85:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Access(s[a],"soak"));break;case 86:this.$=i.addLocationDataFn(o[a-1],o[a])([i.addLocationDataFn(o[a-1])(new i.Access(new i.Literal("prototype"))),i.addLocationDataFn(o[a])(new i.Access(s[a]))]);break;case 87:this.$=i.addLocationDataFn(o[a-1],o[a])([i.addLocationDataFn(o[a-1])(new i.Access(new i.Literal("prototype"),"soak")),i.addLocationDataFn(o[a])(new i.Access(s[a]))]);break;case 88:this.$=i.addLocationDataFn(o[a],o[a])(new i.Access(new i.Literal("prototype")));break;case 91:this.$=i.addLocationDataFn(o[a-1],o[a])(i.extend(s[a],{soak:!0}));break;case 92:this.$=i.addLocationDataFn(o[a],o[a])(new i.Index(s[a]));break;case 93:this.$=i.addLocationDataFn(o[a],o[a])(new i.Slice(s[a]));break;case 94:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Obj(s[a-2],s[a-3].generated));break;case 100:this.$=i.addLocationDataFn(o[a],o[a])(new i.Class);break;case 101:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Class(null,null,s[a]));break;case 102:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Class(null,s[a]));break;case 103:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Class(null,s[a-1],s[a]));break;case 104:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Class(s[a]));break;case 105:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Class(s[a-1],null,s[a]));break;case 106:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Class(s[a-2],s[a]));break;case 107:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Class(s[a-3],s[a-1],s[a]));break;case 108:case 109:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Call(s[a-2],s[a],s[a-1]));break;case 110:this.$=i.addLocationDataFn(o[a],o[a])(new i.Call("super",[new i.Splat(new i.Literal("arguments"))]));break;case 111:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Call("super",s[a]));break;case 112:this.$=i.addLocationDataFn(o[a],o[a])(!1);break;case 113:this.$=i.addLocationDataFn(o[a],o[a])(!0);break;case 114:this.$=i.addLocationDataFn(o[a-1],o[a])([]);break;case 115:case 131:this.$=i.addLocationDataFn(o[a-3],o[a])(s[a-2]);break;case 116:case 117:this.$=i.addLocationDataFn(o[a],o[a])(new i.Value(new i.Literal("this")));break;case 118:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Value(i.addLocationDataFn(o[a-1])(new i.Literal("this")),[i.addLocationDataFn(o[a])(new i.Access(s[a]))],"this"));break;case 119:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Arr([]));break;case 120:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Arr(s[a-2]));break;case 121:this.$=i.addLocationDataFn(o[a],o[a])("inclusive");break;case 122:this.$=i.addLocationDataFn(o[a],o[a])("exclusive");break;case 123:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Range(s[a-3],s[a-1],s[a-2]));break;case 124:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Range(s[a-2],s[a],s[a-1]));break;case 125:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Range(s[a-1],null,s[a]));break;case 126:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Range(null,s[a],s[a-1]));break;case 127:this.$=i.addLocationDataFn(o[a],o[a])(new i.Range(null,null,s[a]));break;case 137:this.$=i.addLocationDataFn(o[a-2],o[a])([].concat(s[a-2],s[a]));break;case 138:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Try(s[a]));break;case 139:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Try(s[a-1],s[a][0],s[a][1]));break;case 140:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Try(s[a-2],null,null,s[a]));break;case 141:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Try(s[a-3],s[a-2][0],s[a-2][1],s[a]));break;case 142:this.$=i.addLocationDataFn(o[a-2],o[a])([s[a-1],s[a]]);break;case 143:this.$=i.addLocationDataFn(o[a-2],o[a])([i.addLocationDataFn(o[a-1])(new i.Value(s[a-1])),s[a]]);break;case 144:this.$=i.addLocationDataFn(o[a-1],o[a])([null,s[a]]);break;case 145:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Throw(s[a]));break;case 147:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Parens(s[a-2]));break;case 148:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.While(s[a]));break;case 149:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.While(s[a-2],{guard:s[a]}));break;case 150:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.While(s[a],{invert:!0}));break;case 151:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.While(s[a-2],{invert:!0,guard:s[a]}));break;case 152:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a-1].addBody(s[a]));break;case 153:case 154:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a].addBody(i.addLocationDataFn(o[a-1])(i.Block.wrap([s[a-1]]))));break;case 155:this.$=i.addLocationDataFn(o[a],o[a])(s[a]);break;case 156:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.While(i.addLocationDataFn(o[a-1])(new i.Literal("true"))).addBody(s[a]));break;case 157:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.While(i.addLocationDataFn(o[a-1])(new i.Literal("true"))).addBody(i.addLocationDataFn(o[a])(i.Block.wrap([s[a]]))));break;case 158:case 159:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.For(s[a-1],s[a]));break;case 160:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.For(s[a],s[a-1]));break;case 161:this.$=i.addLocationDataFn(o[a-1],o[a])({source:i.addLocationDataFn(o[a])(new i.Value(s[a]))});break;case 162:this.$=i.addLocationDataFn(o[a-3],o[a])({source:i.addLocationDataFn(o[a-2])(new i.Value(s[a-2])),step:s[a]});break;case 163:this.$=i.addLocationDataFn(o[a-1],o[a])(function(){return s[a].own=s[a-1].own,s[a].name=s[a-1][0],s[a].index=s[a-1][1],s[a]}());break;case 164:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a]);break;case 165:this.$=i.addLocationDataFn(o[a-2],o[a])(function(){return s[a].own=!0,s[a]}());break;case 171:this.$=i.addLocationDataFn(o[a-2],o[a])([s[a-2],s[a]]);break;case 172:this.$=i.addLocationDataFn(o[a-1],o[a])({source:s[a]});break;case 173:this.$=i.addLocationDataFn(o[a-1],o[a])({source:s[a],object:!0});break;case 174:this.$=i.addLocationDataFn(o[a-3],o[a])({source:s[a-2],guard:s[a]});break;case 175:this.$=i.addLocationDataFn(o[a-3],o[a])({source:s[a-2],guard:s[a],object:!0});break;case 176:this.$=i.addLocationDataFn(o[a-3],o[a])({source:s[a-2],step:s[a]});break;case 177:this.$=i.addLocationDataFn(o[a-5],o[a])({source:s[a-4],guard:s[a-2],step:s[a]});break;case 178:this.$=i.addLocationDataFn(o[a-5],o[a])({source:s[a-4],step:s[a-2],guard:s[a]});break;case 179:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Switch(s[a-3],s[a-1]));break;case 180:this.$=i.addLocationDataFn(o[a-6],o[a])(new i.Switch(s[a-5],s[a-3],s[a-1]));break;case 181:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Switch(null,s[a-1]));break;case 182:this.$=i.addLocationDataFn(o[a-5],o[a])(new i.Switch(null,s[a-3],s[a-1]));break;case 184:this.$=i.addLocationDataFn(o[a-1],o[a])(s[a-1].concat(s[a]));break;case 185:this.$=i.addLocationDataFn(o[a-2],o[a])([[s[a-1],s[a]]]);break;case 186:this.$=i.addLocationDataFn(o[a-3],o[a])([[s[a-2],s[a-1]]]);break;case 187:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.If(s[a-1],s[a],{type:s[a-2]}));break;case 188:this.$=i.addLocationDataFn(o[a-4],o[a])(s[a-4].addElse(i.addLocationDataFn(o[a-2],o[a])(new i.If(s[a-1],s[a],{type:s[a-2]}))));break;case 190:this.$=i.addLocationDataFn(o[a-2],o[a])(s[a-2].addElse(s[a]));break;case 191:case 192:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.If(s[a],i.addLocationDataFn(o[a-2])(i.Block.wrap([s[a-2]])),{type:s[a-1],statement:!0}));break;case 193:case 194:case 197:case 198:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op(s[a-1],s[a]));break;case 195:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("-",s[a]));break;case 196:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("+",s[a]));break;case 199:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Op(s[a-2].concat(s[a-1]),s[a]));break;case 200:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("--",s[a]));break;case 201:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("++",s[a]));break;case 202:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("--",s[a-1],null,!0));break;case 203:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Op("++",s[a-1],null,!0));break;case 204:this.$=i.addLocationDataFn(o[a-1],o[a])(new i.Existence(s[a-1]));break;case 205:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Op("+",s[a-2],s[a]));break;case 206:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Op("-",s[a-2],s[a]));break;case 207:case 208:case 209:case 210:case 211:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Op(s[a-1],s[a-2],s[a]));break;case 212:this.$=i.addLocationDataFn(o[a-2],o[a])(function(){return"!"===s[a-1].charAt(0)?new i.Op(s[a-1].slice(1),s[a-2],s[a]).invert():new i.Op(s[a-1],s[a-2],s[a])}());break;case 213:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Assign(s[a-2],s[a],s[a-1]));break;case 214:this.$=i.addLocationDataFn(o[a-4],o[a])(new i.Assign(s[a-4],s[a-1],s[a-3]));break;case 215:this.$=i.addLocationDataFn(o[a-3],o[a])(new i.Assign(s[a-3],s[a],s[a-2]));break;case 216:this.$=i.addLocationDataFn(o[a-2],o[a])(new i.Extends(s[a-2],s[a]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{1:[3]},{1:[2,2],6:P},t(U,[2,3]),t(U,[2,6],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(U,[2,7],{118:69,109:92,115:93,110:x,112:S,116:R,132:Z}),t(et,[2,11],{87:94,68:95,76:101,72:tt,73:nt,74:it,75:rt,77:st,80:ot,90:at,91:ct}),t(et,[2,12],{76:101,87:104,68:105,72:tt,73:nt,74:it,75:rt,77:st,80:ot,90:at,91:ct}),t(et,[2,13]),t(et,[2,14]),t(et,[2,15]),t(et,[2,16]),t(et,[2,17]),t(et,[2,18]),t(et,[2,19]),t(et,[2,20]),t(et,[2,21]),t(et,[2,22]),t(et,[2,8]),t(et,[2,9]),t(et,[2,10]),t(ht,lt,{46:[1,106]}),t(ht,[2,80]),t(ht,[2,81]),t(ht,[2,82]),t(ht,[2,83]),t([1,6,25,26,34,38,55,60,63,72,73,74,75,77,79,80,84,90,92,97,99,108,110,111,112,116,117,132,135,136,141,142,143,144,145,146,147],[2,110],{88:107,91:ut}),t([6,25,55,60],pt,{54:109,61:110,62:111,27:113,50:114,64:115,65:116,28:i,63:dt,82:b,95:ft,96:mt}),{24:119,25:gt},{7:121,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:123,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:124,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:125,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:127,8:126,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,138:[1,128],139:B,140:V},{12:130,13:131,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:132,50:63,64:47,65:48,67:129,69:23,70:24,71:25,82:b,89:w,94:T,95:C,96:E,107:L},{12:130,13:131,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:132,50:63,64:47,65:48,67:133,69:23,70:24,71:25,82:b,89:w,94:T,95:C,96:E,107:L},t(vt,yt,{86:[1,137],139:[1,134],140:[1,135],148:[1,136]}),t(et,[2,189],{127:[1,138]}),{24:139,25:gt},{24:140,25:gt},t(et,[2,155]),{24:141,25:gt},{7:142,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,143],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(bt,[2,100],{39:22,69:23,70:24,71:25,64:47,65:48,29:49,35:51,27:62,50:63,31:72,12:130,13:131,45:132,24:144,67:146,25:gt,28:i,30:r,32:s,33:o,36:a,37:c,40:h,41:l,42:u,43:p,44:d,82:b,86:[1,145],89:w,94:T,95:C,96:E,107:L}),{7:147,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,141,142,143,144,145,146,147],[2,50],{12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,8:122,7:148,11:n,28:i,30:r,32:s,33:o,36:a,37:c,40:h,41:l,42:u,43:p,44:d,51:f,52:m,53:g,57:v,58:y,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,114:D,125:A,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V}),t(et,[2,51]),t(vt,[2,77]),t(vt,[2,78]),t(ht,[2,32]),t(ht,[2,33]),t(ht,[2,34]),t(ht,[2,35]),t(ht,[2,36]),t(ht,[2,37]),t(ht,[2,38]),{4:149,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,150],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:151,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,93:153,94:T,95:C,96:E,97:Tt,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(ht,[2,116]),t(ht,[2,117],{27:158,28:i}),{25:[2,54]},{25:[2,55]},t(Ct,[2,72]),t(Ct,[2,75]),{7:159,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:160,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:161,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:163,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,24:162,25:gt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{27:168,28:i,50:169,64:170,65:171,70:164,82:b,95:ft,96:E,120:165,121:[1,166],122:167},{119:172,123:[1,173],124:[1,174]},t([6,25,60,84],Et,{31:72,83:175,47:176,48:177,10:178,27:179,29:180,50:181,28:i,30:r,32:s,33:o,52:m,95:ft}),t(Ft,[2,26]),t(Ft,[2,27]),t(ht,[2,30]),{12:130,13:182,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:132,50:63,64:47,65:48,67:183,69:23,70:24,71:25,82:b,89:w,94:T,95:C,96:E,107:L},t(Nt,[2,25]),t(Ft,[2,28]),{4:184,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(U,[2,5],{7:4,8:5,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,5:185,11:n,28:i,30:r,32:s,33:o,36:a,37:c,40:h,41:l,42:u,43:p,44:d,51:f,52:m,53:g,57:v,58:y,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,110:x,112:S,114:D,116:R,125:A,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V}),t(et,[2,204]),{7:186,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:187,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:188,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:189,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:190,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:191,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:192,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:193,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:194,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,154]),t(et,[2,159]),{7:195,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,153]),t(et,[2,158]),{88:196,91:ut},t(Ct,[2,73]),{91:[2,113]},{27:197,28:i},{27:198,28:i},t(Ct,[2,88],{27:199,28:i}),{27:200,28:i},t(Ct,[2,89]),{7:202,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:Lt,64:47,65:48,67:36,69:23,70:24,71:25,78:201,81:203,82:b,85:k,89:w,94:T,95:C,96:E,98:204,99:xt,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{76:207,77:st,80:ot},{88:208,91:ut},t(Ct,[2,74]),{6:[1,210],7:209,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,211],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(St,[2,111]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,92:[1,212],93:213,94:T,95:C,96:E,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([6,25],Dt,{59:217,55:[1,215],60:Rt}),t(At,[2,59]),t(At,[2,63],{46:[1,219],63:[1,218]}),t(At,[2,66]),t(It,[2,67]),t(It,[2,68]),t(It,[2,69]),t(It,[2,70]),{27:158,28:i},{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,93:153,94:T,95:C,96:E,97:Tt,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,53]),{4:221,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,26:[1,220],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,135,136,142,143,144,145,146,147],[2,193],{118:69,109:89,115:90,141:X}),{109:92,110:x,112:S,115:93,116:R,118:69,132:Z},t(_t,[2,194],{118:69,109:89,115:90,141:X,143:Y}),t(_t,[2,195],{118:69,109:89,115:90,141:X,143:Y}),t(_t,[2,196],{118:69,109:89,115:90,141:X,143:Y}),t(et,[2,197],{118:69,109:92,115:93}),t(Ot,[2,198],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{7:222,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,200],{72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt}),{68:95,72:tt,73:nt,74:it,75:rt,76:101,77:st,80:ot,87:94,90:at,91:ct},{68:105,72:tt,73:nt,74:it,75:rt,76:101,77:st,80:ot,87:104,90:at,91:ct},t($t,lt),t(et,[2,201],{72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt}),t(et,[2,202]),t(et,[2,203]),{6:[1,225],7:223,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,224],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:226,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{24:227,25:gt,131:[1,228]},t(et,[2,138],{103:229,104:[1,230],105:[1,231]}),t(et,[2,152]),t(et,[2,160]),{25:[1,232],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{126:233,128:234,129:jt},t(et,[2,101]),{7:236,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(bt,[2,104],{24:237,25:gt,72:yt,73:yt,74:yt,75:yt,77:yt,80:yt,90:yt,91:yt,86:[1,238]}),t(Ot,[2,145],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ot,[2,49],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{6:P,108:[1,239]},{4:240,5:3,7:4,8:5,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([6,25,60,97],Mt,{118:69,109:89,115:90,98:241,63:[1,242],99:xt,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Bt,[2,119]),t([6,25,97],Dt,{59:243,60:Vt}),t(Pt,[2,128]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,93:245,94:T,95:C,96:E,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Pt,[2,134]),t(Pt,[2,135]),t(Nt,[2,118]),{24:246,25:gt,109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(Ut,[2,148],{118:69,109:89,115:90,110:x,111:[1,247],112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ut,[2,150],{118:69,109:89,115:90,110:x,111:[1,248],112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(et,[2,156]),t(Gt,[2,157],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,132,135,136,141,142,143,144,145,146,147],[2,161],{117:[1,249]}),t(Ht,[2,164]),{27:168,28:i,50:169,64:170,65:171,82:b,95:ft,96:mt,120:250,122:167},t(Ht,[2,170],{60:[1,251]}),t(qt,[2,166]),t(qt,[2,167]),t(qt,[2,168]),t(qt,[2,169]),t(et,[2,163]),{7:252,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:253,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([6,25,84],Dt,{59:254,60:Xt}),t(Wt,[2,96]),t(Wt,[2,42],{49:[1,256]}),t(Wt,[2,45]),t(Yt,[2,46]),t(Yt,[2,47]),t(Yt,[2,48]),{38:[1,257],68:105,72:tt,73:nt,74:it,75:rt,76:101,77:st,80:ot,87:104,90:at,91:ct},t($t,yt),{6:P,34:[1,258]},t(U,[2,4]),t(Kt,[2,205],{118:69,109:89,115:90,141:X,142:W,143:Y}),t(Kt,[2,206],{118:69,109:89,115:90,141:X,142:W,143:Y}),t(_t,[2,207],{118:69,109:89,115:90,141:X,143:Y}),t(_t,[2,208],{118:69,109:89,115:90,141:X,143:Y}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,144,145,146,147],[2,209],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,145,146],[2,210],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,147:Q}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,146],[2,211],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,147:Q}),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,117,132,145,146,147],[2,212],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K}),t(Gt,[2,192],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Gt,[2,191],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(St,[2,108]),t(Ct,[2,84]),t(Ct,[2,85]),t(Ct,[2,86]),t(Ct,[2,87]),{79:[1,259]},{63:Lt,79:[2,92],98:260,99:xt,109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{79:[2,93]},{7:261,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,79:[2,127],82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(zt,[2,121]),t(zt,Jt),t(Ct,[2,91]),t(St,[2,109]),t(Ot,[2,39],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{7:262,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:263,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(St,[2,114]),t([6,25,92],Dt,{59:264,60:Vt}),t(Pt,Mt,{118:69,109:89,115:90,63:[1,265],110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{56:266,57:v,58:y},t(Qt,Zt,{62:111,27:113,50:114,64:115,65:116,61:267,28:i,63:dt,82:b,95:ft,96:mt}),{6:en,25:tn},t(At,[2,64]),{7:270,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(nn,[2,23]),{6:P,26:[1,271]},t(Ot,[2,199],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ot,[2,213],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{7:272,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:273,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Ot,[2,216],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(et,[2,190]),{7:274,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,139],{104:[1,275]}),{24:276,25:gt},{24:279,25:gt,27:277,28:i,65:278,82:b},{126:280,128:234,129:jt},{26:[1,281],127:[1,282],128:283,129:jt},t(rn,[2,183]),{7:285,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,101:284,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(sn,[2,102],{118:69,109:89,115:90,24:286,25:gt,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(et,[2,105]),{7:287,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(ht,[2,146]),{6:P,26:[1,288]},{7:289,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t([11,28,30,32,33,36,37,40,41,42,43,44,51,52,53,57,58,82,85,89,94,95,96,102,106,107,110,112,114,116,125,131,133,134,135,136,137,139,140],Jt,{6:on,25:on,60:on,97:on}),{6:an,25:cn,97:[1,290]},t([6,25,26,92,97],Zt,{12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,9:18,10:19,45:21,39:22,69:23,70:24,71:25,56:28,67:36,130:37,109:39,113:40,115:41,64:47,65:48,29:49,35:51,27:62,50:63,118:69,31:72,8:122,66:156,7:214,100:293,11:n,28:i,30:r,32:s,33:o,36:a,37:c,40:h,41:l,42:u,43:p,44:d,51:f,52:m,53:g,57:v,58:y,63:wt,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,110:x,112:S,114:D,116:R,125:A,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V}),t(Qt,Dt,{59:294,60:Vt}),t(hn,[2,187]),{7:295,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:296,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:297,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Ht,[2,165]),{27:168,28:i,50:169,64:170,65:171,82:b,95:ft,96:mt,122:298},t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,112,116,132],[2,172],{118:69,109:89,115:90,111:[1,299],117:[1,300],135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(ln,[2,173],{118:69,109:89,115:90,111:[1,301],135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{6:un,25:pn,84:[1,302]},t([6,25,26,84],Zt,{31:72,48:177,10:178,27:179,29:180,50:181,47:305,28:i,30:r,32:s,33:o,52:m,95:ft}),{7:306,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:[1,307],27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(ht,[2,31]),t(Ft,[2,29]),t(Ct,[2,90]),{7:308,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,79:[2,125],82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{79:[2,126],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(Ot,[2,40],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{26:[1,309],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{6:an,25:cn,92:[1,310]},t(Pt,on),{24:311,25:gt},t(At,[2,60]),{27:113,28:i,50:114,61:312,62:111,63:dt,64:115,65:116,82:b,95:ft,96:mt},t(dn,pt,{61:110,62:111,27:113,50:114,64:115,65:116,54:313,28:i,63:dt,82:b,95:ft,96:mt}),t(At,[2,65],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(nn,[2,24]),{26:[1,314],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(Ot,[2,215],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{24:315,25:gt,109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{24:316,25:gt},t(et,[2,140]),{24:317,25:gt},{24:318,25:gt},t(fn,[2,144]),{26:[1,319],127:[1,320],128:283,129:jt},t(et,[2,181]),{24:321,25:gt},t(rn,[2,184]),{24:322,25:gt,60:[1,323]},t(mn,[2,136],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(et,[2,103]),t(sn,[2,106],{118:69,109:89,115:90,24:324,25:gt,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{108:[1,325]},{97:[1,326],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(Bt,[2,120]),{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,100:327,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:214,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,25:kt,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,63:wt,64:47,65:48,66:156,67:36,69:23,70:24,71:25,82:b,85:k,89:w,93:328,94:T,95:C,96:E,100:154,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Pt,[2,129]),{6:an,25:cn,26:[1,329]},t(Gt,[2,149],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Gt,[2,151],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Gt,[2,162],{118:69,109:89,115:90,110:x,112:S,116:R,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ht,[2,171]),{7:330,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:331,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:332,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(Bt,[2,94]),{10:178,27:179,28:i,29:180,30:r,31:72,32:s,33:o,47:333,48:177,50:181,52:m,95:ft},t(dn,Et,{31:72,47:176,48:177,10:178,27:179,29:180,50:181,83:334,28:i,30:r,32:s,33:o,52:m,95:ft}),t(Wt,[2,97]),t(Wt,[2,43],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{7:335,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{79:[2,124],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},t(et,[2,41]),t(St,[2,115]),t(et,[2,52]),t(At,[2,61]),t(Qt,Dt,{59:336,60:Rt}),t(et,[2,214]),t(hn,[2,188]),t(et,[2,141]),t(fn,[2,142]),t(fn,[2,143]),t(et,[2,179]),{24:337,25:gt},{26:[1,338]},t(rn,[2,185],{6:[1,339]}),{7:340,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},t(et,[2,107]),t(ht,[2,147]),t(ht,[2,123]),t(Pt,[2,130]),t(Qt,Dt,{59:341,60:Vt}),t(Pt,[2,131]),t([1,6,25,26,34,55,60,63,79,84,92,97,99,108,110,111,112,116,132],[2,174],{118:69,109:89,115:90,117:[1,342],135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(ln,[2,176],{118:69,109:89,115:90,111:[1,343],135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ot,[2,175],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Wt,[2,98]),t(Qt,Dt,{59:344,60:Xt}),{26:[1,345],109:89,110:x,112:S,115:90,116:R,118:69,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q},{6:en,25:tn,26:[1,346]},{26:[1,347]},t(et,[2,182]),t(rn,[2,186]),t(mn,[2,137],{118:69,109:89,115:90,110:x,112:S,116:R,132:G,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),{6:an,25:cn,26:[1,348]},{7:349,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{7:350,8:122,9:18,10:19,11:n,12:6,13:7,14:8,15:9,16:10,17:11,18:12,19:13,20:14,21:15,22:16,23:17,27:62,28:i,29:49,30:r,31:72,32:s,33:o,35:51,36:a,37:c,39:22,40:h,41:l,42:u,43:p,44:d,45:21,50:63,51:f,52:m,53:g,56:28,57:v,58:y,64:47,65:48,67:36,69:23,70:24,71:25,82:b,85:k,89:w,94:T,95:C,96:E,102:F,106:N,107:L,109:39,110:x,112:S,113:40,114:D,115:41,116:R,118:69,125:A,130:37,131:I,133:_,134:O,135:$,136:j,137:M,139:B,140:V},{6:un,25:pn,26:[1,351]},t(Wt,[2,44]),t(At,[2,62]),t(et,[2,180]),t(Pt,[2,132]),t(Ot,[2,177],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Ot,[2,178],{118:69,109:89,115:90,135:H,136:q,141:X,142:W,143:Y,144:K,145:z,146:J,147:Q}),t(Wt,[2,99])],defaultActions:{60:[2,54],61:[2,55],96:[2,113],203:[2,93]},parseError:function(e,t){if(!t.recoverable)throw Error(e); -this.trace(e)},parse:function(e){function t(){var e;return e=f.lex()||p,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,i=[0],r=[null],s=[],o=this.table,a="",c=0,h=0,l=0,u=2,p=1,d=s.slice.call(arguments,1),f=Object.create(this.lexer),m={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(m.yy[g]=this.yy[g]);f.setInput(e,m.yy),m.yy.lexer=f,m.yy.parser=this,f.yylloc===void 0&&(f.yylloc={});var v=f.yylloc;s.push(v);var y=f.options&&f.options.ranges;this.parseError="function"==typeof m.yy.parseError?m.yy.parseError:Object.getPrototypeOf(this).parseError;for(var b,k,w,T,C,E,F,N,L,x={};;){if(w=i[i.length-1],this.defaultActions[w]?T=this.defaultActions[w]:((null===b||b===void 0)&&(b=t()),T=o[w]&&o[w][b]),T===void 0||!T.length||!T[0]){var S="";L=[];for(E in o[w])this.terminals_[E]&&E>u&&L.push("'"+this.terminals_[E]+"'");S=f.showPosition?"Parse error on line "+(c+1)+":\n"+f.showPosition()+"\nExpecting "+L.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(c+1)+": Unexpected "+(b==p?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(S,{text:f.match,token:this.terminals_[b]||b,line:f.yylineno,loc:v,expected:L})}if(T[0]instanceof Array&&T.length>1)throw Error("Parse Error: multiple actions possible at state: "+w+", token: "+b);switch(T[0]){case 1:i.push(b),r.push(f.yytext),s.push(f.yylloc),i.push(T[1]),b=null,k?(b=k,k=null):(h=f.yyleng,a=f.yytext,c=f.yylineno,v=f.yylloc,l>0&&l--);break;case 2:if(F=this.productions_[T[1]][1],x.$=r[r.length-F],x._$={first_line:s[s.length-(F||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(F||1)].first_column,last_column:s[s.length-1].last_column},y&&(x._$.range=[s[s.length-(F||1)].range[0],s[s.length-1].range[1]]),C=this.performAction.apply(x,[a,h,c,m.yy,T[1],r,s].concat(d)),C!==void 0)return C;F&&(i=i.slice(0,2*-1*F),r=r.slice(0,-1*F),s=s.slice(0,-1*F)),i.push(this.productions_[T[1]][0]),r.push(x.$),s.push(x._$),N=o[i[i.length-2]][i[i.length-1]],i.push(N);break;case 3:return!0}}return!0}};return e.prototype=gn,gn.Parser=e,new e}();return _dereq_!==void 0&&e!==void 0&&(e.parser=n,e.Parser=n.Parser,e.parse=function(){return n.parse.apply(n,arguments)},e.main=function(t){t[1]||(console.log("Usage: "+t[0]+" FILE"),process.exit(1));var n=_dereq_("fs").readFileSync(_dereq_("path").normalize(t[1]),"utf8");return e.parser.parse(n)},t!==void 0&&_dereq_.main===t&&e.main(process.argv.slice(1))),t.exports}(),_dereq_["./scope"]=function(){var e={},t={exports:e};return function(){var t,n=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};e.Scope=t=function(){function e(e,t,n,i){var r,s;this.parent=e,this.expressions=t,this.method=n,this.referencedVars=i,this.variables=[{name:"arguments",type:"arguments"}],this.positions={},this.parent||(this.utilities={}),this.root=null!=(r=null!=(s=this.parent)?s.root:void 0)?r:this}return e.prototype.add=function(e,t,n){return this.shared&&!n?this.parent.add(e,t,n):Object.prototype.hasOwnProperty.call(this.positions,e)?this.variables[this.positions[e]].type=t:this.positions[e]=this.variables.push({name:e,type:t})-1},e.prototype.namedMethod=function(){var e;return(null!=(e=this.method)?e.name:void 0)||!this.parent?this.method:this.parent.namedMethod()},e.prototype.find=function(e){return this.check(e)?!0:(this.add(e,"var"),!1)},e.prototype.parameter=function(e){return this.shared&&this.parent.check(e,!0)?void 0:this.add(e,"param")},e.prototype.check=function(e){var t;return!!(this.type(e)||(null!=(t=this.parent)?t.check(e):void 0))},e.prototype.temporary=function(e,t,n){return null==n&&(n=!1),n?(t+parseInt(e,36)).toString(36).replace(/\d/g,"a"):e+(t||"")},e.prototype.type=function(e){var t,n,i,r;for(i=this.variables,t=0,n=i.length;n>t;t++)if(r=i[t],r.name===e)return r.type;return null},e.prototype.freeVariable=function(e,t){var i,r,s;for(null==t&&(t={}),i=0;;){if(s=this.temporary(e,i,t.single),!(this.check(s)||n.call(this.root.referencedVars,s)>=0))break;i++}return(null!=(r=t.reserve)?r:!0)&&this.add(s,"var",!0),s},e.prototype.assign=function(e,t){return this.add(e,{value:t,assigned:!0},!0),this.hasAssignments=!0},e.prototype.hasDeclarations=function(){return!!this.declaredVariables().length},e.prototype.declaredVariables=function(){var e;return function(){var t,n,i,r;for(i=this.variables,r=[],t=0,n=i.length;n>t;t++)e=i[t],"var"===e.type&&r.push(e.name);return r}.call(this).sort()},e.prototype.assignedVariables=function(){var e,t,n,i,r;for(n=this.variables,i=[],e=0,t=n.length;t>e;e++)r=n[e],r.type.assigned&&i.push(r.name+" = "+r.type.value);return i},e}()}.call(this),t.exports}(),_dereq_["./nodes"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y,b,k,w,T,C,E,F,N,L,x,S,D,R,A,I,_,O,$,j,M,B,V,P,U,G,H,q,X,W,Y,K,z,J,Q,Z,et,tt,nt,it,rt,st,ot,at,ct,ht,lt,ut,pt,dt,ft,mt,gt,vt,yt,bt,kt=function(e,t){function n(){this.constructor=e}for(var i in t)wt.call(t,i)&&(e[i]=t[i]);return n.prototype=t.prototype,e.prototype=new n,e.__super__=t.prototype,e},wt={}.hasOwnProperty,Tt=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1},Ct=[].slice;Error.stackTraceLimit=1/0,P=_dereq_("./scope").Scope,dt=_dereq_("./lexer"),$=dt.RESERVED,V=dt.STRICT_PROSCRIBED,ft=_dereq_("./helpers"),et=ft.compact,rt=ft.flatten,it=ft.extend,lt=ft.merge,tt=ft.del,gt=ft.starts,nt=ft.ends,mt=ft.some,Z=ft.addLocationDataFn,ht=ft.locationDataToString,vt=ft.throwSyntaxError,e.extend=it,e.addLocationDataFn=Z,Q=function(){return!0},D=function(){return!1},X=function(){return this},S=function(){return this.negated=!this.negated,this},e.CodeFragment=h=function(){function e(e,t){var n;this.code=""+t,this.locationData=null!=e?e.locationData:void 0,this.type=(null!=e?null!=(n=e.constructor)?n.name:void 0:void 0)||"unknown"}return e.prototype.toString=function(){return""+this.code+(this.locationData?": "+ht(this.locationData):"")},e}(),st=function(e){var t;return function(){var n,i,r;for(r=[],n=0,i=e.length;i>n;n++)t=e[n],r.push(t.code);return r}().join("")},e.Base=r=function(){function e(){}return e.prototype.compile=function(e,t){return st(this.compileToFragments(e,t))},e.prototype.compileToFragments=function(e,t){var n;return e=it({},e),t&&(e.level=t),n=this.unfoldSoak(e)||this,n.tab=e.indent,e.level!==L&&n.isStatement(e)?n.compileClosure(e):n.compileNode(e)},e.prototype.compileClosure=function(e){var n,i,r,a,h,l,u;return(a=this.jumps())&&a.error("cannot use a pure statement in an expression"),e.sharedScope=!0,r=new c([],s.wrap([this])),n=[],((i=this.contains(at))||this.contains(ct))&&(n=[new x("this")],i?(h="apply",n.push(new x("arguments"))):h="call",r=new z(r,[new t(new x(h))])),l=new o(r,n).compileNode(e),(r.isGenerator||(null!=(u=r.base)?u.isGenerator:void 0))&&(l.unshift(this.makeCode("(yield* ")),l.push(this.makeCode(")"))),l},e.prototype.cache=function(e,t,n){var r,s,o;return r=null!=n?n(this):this.isComplex(),r?(s=new x(e.scope.freeVariable("ref")),o=new i(s,this),t?[o.compileToFragments(e,t),[this.makeCode(s.value)]]:[o,s]):(s=t?this.compileToFragments(e,t):this,[s,s])},e.prototype.cacheToCodeFragments=function(e){return[st(e[0]),st(e[1])]},e.prototype.makeReturn=function(e){var t;return t=this.unwrapAll(),e?new o(new x(e+".push"),[t]):new M(t)},e.prototype.contains=function(e){var t;return t=void 0,this.traverseChildren(!1,function(n){return e(n)?(t=n,!1):void 0}),t},e.prototype.lastNonComment=function(e){var t;for(t=e.length;t--;)if(!(e[t]instanceof l))return e[t];return null},e.prototype.toString=function(e,t){var n;return null==e&&(e=""),null==t&&(t=this.constructor.name),n="\n"+e+t,this.soak&&(n+="?"),this.eachChild(function(t){return n+=t.toString(e+q)}),n},e.prototype.eachChild=function(e){var t,n,i,r,s,o,a,c;if(!this.children)return this;for(a=this.children,i=0,s=a.length;s>i;i++)if(t=a[i],this[t])for(c=rt([this[t]]),r=0,o=c.length;o>r;r++)if(n=c[r],e(n)===!1)return this;return this},e.prototype.traverseChildren=function(e,t){return this.eachChild(function(n){var i;return i=t(n),i!==!1?n.traverseChildren(e,t):void 0})},e.prototype.invert=function(){return new I("!",this)},e.prototype.unwrapAll=function(){var e;for(e=this;e!==(e=e.unwrap()););return e},e.prototype.children=[],e.prototype.isStatement=D,e.prototype.jumps=D,e.prototype.isComplex=Q,e.prototype.isChainable=D,e.prototype.isAssignable=D,e.prototype.unwrap=X,e.prototype.unfoldSoak=D,e.prototype.assigns=D,e.prototype.updateLocationDataIfMissing=function(e){return this.locationData?this:(this.locationData=e,this.eachChild(function(t){return t.updateLocationDataIfMissing(e)}))},e.prototype.error=function(e){return vt(e,this.locationData)},e.prototype.makeCode=function(e){return new h(this,e)},e.prototype.wrapInBraces=function(e){return[].concat(this.makeCode("("),e,this.makeCode(")"))},e.prototype.joinFragmentArrays=function(e,t){var n,i,r,s,o;for(n=[],r=s=0,o=e.length;o>s;r=++s)i=e[r],r&&n.push(this.makeCode(t)),n=n.concat(i);return n},e}(),e.Block=s=function(e){function t(e){this.expressions=et(rt(e||[]))}return kt(t,e),t.prototype.children=["expressions"],t.prototype.push=function(e){return this.expressions.push(e),this},t.prototype.pop=function(){return this.expressions.pop()},t.prototype.unshift=function(e){return this.expressions.unshift(e),this},t.prototype.unwrap=function(){return 1===this.expressions.length?this.expressions[0]:this},t.prototype.isEmpty=function(){return!this.expressions.length},t.prototype.isStatement=function(e){var t,n,i,r;for(r=this.expressions,n=0,i=r.length;i>n;n++)if(t=r[n],t.isStatement(e))return!0;return!1},t.prototype.jumps=function(e){var t,n,i,r,s;for(s=this.expressions,n=0,r=s.length;r>n;n++)if(t=s[n],i=t.jumps(e))return i},t.prototype.makeReturn=function(e){var t,n;for(n=this.expressions.length;n--;)if(t=this.expressions[n],!(t instanceof l)){this.expressions[n]=t.makeReturn(e),t instanceof M&&!t.expression&&this.expressions.splice(n,1);break}return this},t.prototype.compileToFragments=function(e,n){return null==e&&(e={}),e.scope?t.__super__.compileToFragments.call(this,e,n):this.compileRoot(e)},t.prototype.compileNode=function(e){var n,i,r,s,o,a,c,h,l;for(this.tab=e.indent,l=e.level===L,i=[],h=this.expressions,s=o=0,a=h.length;a>o;s=++o)c=h[s],c=c.unwrapAll(),c=c.unfoldSoak(e)||c,c instanceof t?i.push(c.compileNode(e)):l?(c.front=!0,r=c.compileToFragments(e),c.isStatement(e)||(r.unshift(this.makeCode(""+this.tab)),r.push(this.makeCode(";"))),i.push(r)):i.push(c.compileToFragments(e,E));return l?this.spaced?[].concat(this.joinFragmentArrays(i,"\n\n"),this.makeCode("\n")):this.joinFragmentArrays(i,"\n"):(n=i.length?this.joinFragmentArrays(i,", "):[this.makeCode("void 0")],i.length>1&&e.level>=E?this.wrapInBraces(n):n)},t.prototype.compileRoot=function(e){var t,n,i,r,s,o,a,c,h,u,p;for(e.indent=e.bare?"":q,e.level=L,this.spaced=!0,e.scope=new P(null,this,null,null!=(h=e.referencedVars)?h:[]),u=e.locals||[],r=0,s=u.length;s>r;r++)o=u[r],e.scope.parameter(o);return a=[],e.bare||(c=function(){var e,n,r,s;for(r=this.expressions,s=[],i=e=0,n=r.length;n>e&&(t=r[i],t.unwrap()instanceof l);i=++e)s.push(t);return s}.call(this),p=this.expressions.slice(c.length),this.expressions=c,c.length&&(a=this.compileNode(lt(e,{indent:""})),a.push(this.makeCode("\n"))),this.expressions=p),n=this.compileWithDeclarations(e),e.bare?n:[].concat(a,this.makeCode("(function() {\n"),n,this.makeCode("\n}).call(this);\n"))},t.prototype.compileWithDeclarations=function(e){var t,n,i,r,s,o,a,c,h,u,p,d,f,m;for(r=[],c=[],h=this.expressions,s=o=0,a=h.length;a>o&&(i=h[s],i=i.unwrap(),i instanceof l||i instanceof x);s=++o);return e=lt(e,{level:L}),s&&(d=this.expressions.splice(s,9e9),u=[this.spaced,!1],m=u[0],this.spaced=u[1],p=[this.compileNode(e),m],r=p[0],this.spaced=p[1],this.expressions=d),c=this.compileNode(e),f=e.scope,f.expressions===this&&(n=e.scope.hasDeclarations(),t=f.hasAssignments,n||t?(s&&r.push(this.makeCode("\n")),r.push(this.makeCode(this.tab+"var ")),n&&r.push(this.makeCode(f.declaredVariables().join(", "))),t&&(n&&r.push(this.makeCode(",\n"+(this.tab+q))),r.push(this.makeCode(f.assignedVariables().join(",\n"+(this.tab+q))))),r.push(this.makeCode(";\n"+(this.spaced?"\n":"")))):r.length&&c.length&&r.push(this.makeCode("\n"))),r.concat(c)},t.wrap=function(e){return 1===e.length&&e[0]instanceof t?e[0]:new t(e)},t}(r),e.Literal=x=function(e){function t(e){this.value=e}return kt(t,e),t.prototype.makeReturn=function(){return this.isStatement()?this:t.__super__.makeReturn.apply(this,arguments)},t.prototype.isAssignable=function(){return g.test(this.value)},t.prototype.isStatement=function(){var e;return"break"===(e=this.value)||"continue"===e||"debugger"===e},t.prototype.isComplex=D,t.prototype.assigns=function(e){return e===this.value},t.prototype.jumps=function(e){return"break"!==this.value||(null!=e?e.loop:void 0)||(null!=e?e.block:void 0)?"continue"!==this.value||(null!=e?e.loop:void 0)?void 0:this:this},t.prototype.compileNode=function(e){var t,n,i;return n="this"===this.value?(null!=(i=e.scope.method)?i.bound:void 0)?e.scope.method.context:this.value:this.value.reserved?'"'+this.value+'"':this.value,t=this.isStatement()?""+this.tab+n+";":n,[this.makeCode(t)]},t.prototype.toString=function(){return' "'+this.value+'"'},t}(r),e.Undefined=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return kt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(e){return[this.makeCode(e.level>=T?"(void 0)":"void 0")]},t}(r),e.Null=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return kt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(){return[this.makeCode("null")]},t}(r),e.Bool=function(e){function t(e){this.val=e}return kt(t,e),t.prototype.isAssignable=D,t.prototype.isComplex=D,t.prototype.compileNode=function(){return[this.makeCode(this.val)]},t}(r),e.Return=M=function(e){function t(e){this.expression=e}return kt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=Q,t.prototype.makeReturn=X,t.prototype.jumps=X,t.prototype.compileToFragments=function(e,n){var i,r;return i=null!=(r=this.expression)?r.makeReturn():void 0,!i||i instanceof t?t.__super__.compileToFragments.call(this,e,n):i.compileToFragments(e,n)},t.prototype.compileNode=function(e){var t,n,i;return t=[],n=null!=(i=this.expression)?"function"==typeof i.isYieldReturn?i.isYieldReturn():void 0:void 0,n||t.push(this.makeCode(this.tab+("return"+(this.expression?" ":"")))),this.expression&&(t=t.concat(this.expression.compileToFragments(e,N))),n||t.push(this.makeCode(";")),t},t}(r),e.Value=z=function(e){function t(e,n,i){return!n&&e instanceof t?e:(this.base=e,this.properties=n||[],i&&(this[i]=!0),this)}return kt(t,e),t.prototype.children=["base","properties"],t.prototype.add=function(e){return this.properties=this.properties.concat(e),this},t.prototype.hasProperties=function(){return!!this.properties.length},t.prototype.bareLiteral=function(e){return!this.properties.length&&this.base instanceof e},t.prototype.isArray=function(){return this.bareLiteral(n)},t.prototype.isRange=function(){return this.bareLiteral(j)},t.prototype.isComplex=function(){return this.hasProperties()||this.base.isComplex()},t.prototype.isAssignable=function(){return this.hasProperties()||this.base.isAssignable()},t.prototype.isSimpleNumber=function(){return this.bareLiteral(x)&&B.test(this.base.value)},t.prototype.isString=function(){return this.bareLiteral(x)&&y.test(this.base.value)},t.prototype.isRegex=function(){return this.bareLiteral(x)&&v.test(this.base.value)},t.prototype.isAtomic=function(){var e,t,n,i;for(i=this.properties.concat(this.base),e=0,t=i.length;t>e;e++)if(n=i[e],n.soak||n instanceof o)return!1;return!0},t.prototype.isNotCallable=function(){return this.isSimpleNumber()||this.isString()||this.isRegex()||this.isArray()||this.isRange()||this.isSplice()||this.isObject()},t.prototype.isStatement=function(e){return!this.properties.length&&this.base.isStatement(e)},t.prototype.assigns=function(e){return!this.properties.length&&this.base.assigns(e)},t.prototype.jumps=function(e){return!this.properties.length&&this.base.jumps(e)},t.prototype.isObject=function(e){return this.properties.length?!1:this.base instanceof A&&(!e||this.base.generated)},t.prototype.isSplice=function(){var e,t;return t=this.properties,e=t[t.length-1],e instanceof U},t.prototype.looksStatic=function(e){var t;return this.base.value===e&&1===this.properties.length&&"prototype"!==(null!=(t=this.properties[0].name)?t.value:void 0)},t.prototype.unwrap=function(){return this.properties.length?this:this.base},t.prototype.cacheReference=function(e){var n,r,s,o,a;return a=this.properties,s=a[a.length-1],2>this.properties.length&&!this.base.isComplex()&&!(null!=s?s.isComplex():void 0)?[this,this]:(n=new t(this.base,this.properties.slice(0,-1)),n.isComplex()&&(r=new x(e.scope.freeVariable("base")),n=new t(new O(new i(r,n)))),s?(s.isComplex()&&(o=new x(e.scope.freeVariable("name")),s=new w(new i(o,s.index)),o=new w(o)),[n.add(s),new t(r||n.base,[o||s])]):[n,r])},t.prototype.compileNode=function(e){var t,n,i,r,s;for(this.base.front=this.front,s=this.properties,t=this.base.compileToFragments(e,s.length?T:null),(this.base instanceof O||s.length)&&B.test(st(t))&&t.push(this.makeCode(".")),n=0,i=s.length;i>n;n++)r=s[n],t.push.apply(t,r.compileToFragments(e));return t},t.prototype.unfoldSoak=function(e){return null!=this.unfoldedSoak?this.unfoldedSoak:this.unfoldedSoak=function(n){return function(){var r,s,o,a,c,h,l,p,d,f;if(o=n.base.unfoldSoak(e))return(p=o.body.properties).push.apply(p,n.properties),o;for(d=n.properties,s=a=0,c=d.length;c>a;s=++a)if(h=d[s],h.soak)return h.soak=!1,r=new t(n.base,n.properties.slice(0,s)),f=new t(n.base,n.properties.slice(s)),r.isComplex()&&(l=new x(e.scope.freeVariable("ref")),r=new O(new i(l,r)),f.base=l),new b(new u(r),f,{soak:!0});return!1}}(this)()},t}(r),e.Comment=l=function(e){function t(e){this.comment=e}return kt(t,e),t.prototype.isStatement=Q,t.prototype.makeReturn=X,t.prototype.compileNode=function(e,t){var n,i;return i=this.comment.replace(/^(\s*)#(?=\s)/gm,"$1 *"),n="/*"+ut(i,this.tab)+(Tt.call(i,"\n")>=0?"\n"+this.tab:"")+" */",(t||e.level)===L&&(n=e.indent+n),[this.makeCode("\n"),this.makeCode(n)]},t}(r),e.Call=o=function(e){function n(e,t,n){this.args=null!=t?t:[],this.soak=n,this.isNew=!1,this.isSuper="super"===e,this.variable=this.isSuper?null:e,e instanceof z&&e.isNotCallable()&&e.error("literal is not a function")}return kt(n,e),n.prototype.children=["variable","args"],n.prototype.newInstance=function(){var e,t;return e=(null!=(t=this.variable)?t.base:void 0)||this.variable,e instanceof n&&!e.isNew?e.newInstance():this.isNew=!0,this},n.prototype.superReference=function(e){var n,r,s,o,a,c,h,l;return a=e.scope.namedMethod(),(null!=a?a.klass:void 0)?(o=a.klass,c=a.name,l=a.variable,o.isComplex()&&(s=new x(e.scope.parent.freeVariable("base")),r=new z(new O(new i(s,o))),l.base=r,l.properties.splice(0,o.properties.length)),(c.isComplex()||c instanceof w&&c.index.isAssignable())&&(h=new x(e.scope.parent.freeVariable("name")),c=new w(new i(h,c.index)),l.properties.pop(),l.properties.push(c)),n=[new t(new x("__super__"))],a["static"]&&n.push(new t(new x("constructor"))),n.push(null!=h?new w(h):c),new z(null!=s?s:o,n).compile(e)):(null!=a?a.ctor:void 0)?a.name+".__super__.constructor":this.error("cannot call super outside of an instance method.")},n.prototype.superThis=function(e){var t;return t=e.scope.method,t&&!t.klass&&t.context||"this"},n.prototype.unfoldSoak=function(e){var t,i,r,s,o,a,c,h,l;if(this.soak){if(this.variable){if(i=yt(e,this,"variable"))return i;c=new z(this.variable).cacheReference(e),s=c[0],l=c[1]}else s=new x(this.superReference(e)),l=new z(s);return l=new n(l,this.args),l.isNew=this.isNew,s=new x("typeof "+s.compile(e)+' === "function"'),new b(s,new z(l),{soak:!0})}for(t=this,a=[];;)if(t.variable instanceof n)a.push(t),t=t.variable;else{if(!(t.variable instanceof z))break;if(a.push(t),!((t=t.variable.base)instanceof n))break}for(h=a.reverse(),r=0,o=h.length;o>r;r++)t=h[r],i&&(t.variable instanceof n?t.variable=i:t.variable.base=i),i=yt(e,t,"variable");return i},n.prototype.compileNode=function(e){var t,n,i,r,s,o,a,c,h,l;if(null!=(h=this.variable)&&(h.front=this.front),r=G.compileSplattedArray(e,this.args,!0),r.length)return this.compileSplat(e,r);for(i=[],l=this.args,n=o=0,a=l.length;a>o;n=++o)t=l[n],n&&i.push(this.makeCode(", ")),i.push.apply(i,t.compileToFragments(e,E));return s=[],this.isSuper?(c=this.superReference(e)+(".call("+this.superThis(e)),i.length&&(c+=", "),s.push(this.makeCode(c))):(this.isNew&&s.push(this.makeCode("new ")),s.push.apply(s,this.variable.compileToFragments(e,T)),s.push(this.makeCode("("))),s.push.apply(s,i),s.push(this.makeCode(")")),s},n.prototype.compileSplat=function(e,t){var n,i,r,s,o,a;return this.isSuper?[].concat(this.makeCode(this.superReference(e)+".apply("+this.superThis(e)+", "),t,this.makeCode(")")):this.isNew?(s=this.tab+q,[].concat(this.makeCode("(function(func, args, ctor) {\n"+s+"ctor.prototype = func.prototype;\n"+s+"var child = new ctor, result = func.apply(child, args);\n"+s+"return Object(result) === result ? result : child;\n"+this.tab+"})("),this.variable.compileToFragments(e,E),this.makeCode(", "),t,this.makeCode(", function(){})"))):(n=[],i=new z(this.variable),(o=i.properties.pop())&&i.isComplex()?(a=e.scope.freeVariable("ref"),n=n.concat(this.makeCode("("+a+" = "),i.compileToFragments(e,E),this.makeCode(")"),o.compileToFragments(e))):(r=i.compileToFragments(e,T),B.test(st(r))&&(r=this.wrapInBraces(r)),o?(a=st(r),r.push.apply(r,o.compileToFragments(e))):a="null",n=n.concat(r)),n=n.concat(this.makeCode(".apply("+a+", "),t,this.makeCode(")")))},n}(r),e.Extends=d=function(e){function t(e,t){this.child=e,this.parent=t}return kt(t,e),t.prototype.children=["child","parent"],t.prototype.compileToFragments=function(e){return new o(new z(new x(bt("extend",e))),[this.child,this.parent]).compileToFragments(e)},t}(r),e.Access=t=function(e){function t(e,t){this.name=e,this.name.asKey=!0,this.soak="soak"===t}return kt(t,e),t.prototype.children=["name"],t.prototype.compileToFragments=function(e){var t;return t=this.name.compileToFragments(e),g.test(st(t))?t.unshift(this.makeCode(".")):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.isComplex=D,t}(r),e.Index=w=function(e){function t(e){this.index=e}return kt(t,e),t.prototype.children=["index"],t.prototype.compileToFragments=function(e){return[].concat(this.makeCode("["),this.index.compileToFragments(e,N),this.makeCode("]"))},t.prototype.isComplex=function(){return this.index.isComplex()},t}(r),e.Range=j=function(e){function t(e,t,n){this.from=e,this.to=t,this.exclusive="exclusive"===n,this.equals=this.exclusive?"":"="}return kt(t,e),t.prototype.children=["from","to"],t.prototype.compileVariables=function(e){var t,n,i,r,s,o;return e=lt(e,{top:!0}),t=tt(e,"isComplex"),n=this.cacheToCodeFragments(this.from.cache(e,E,t)),this.fromC=n[0],this.fromVar=n[1],i=this.cacheToCodeFragments(this.to.cache(e,E,t)),this.toC=i[0],this.toVar=i[1],(o=tt(e,"step"))&&(r=this.cacheToCodeFragments(o.cache(e,E,t)),this.step=r[0],this.stepVar=r[1]),s=[this.fromVar.match(R),this.toVar.match(R)],this.fromNum=s[0],this.toNum=s[1],this.stepVar?this.stepNum=this.stepVar.match(R):void 0},t.prototype.compileNode=function(e){var t,n,i,r,s,o,a,c,h,l,u,p,d,f;return this.fromVar||this.compileVariables(e),e.index?(a=this.fromNum&&this.toNum,s=tt(e,"index"),o=tt(e,"name"),h=o&&o!==s,f=s+" = "+this.fromC,this.toC!==this.toVar&&(f+=", "+this.toC),this.step!==this.stepVar&&(f+=", "+this.step),l=[s+" <"+this.equals,s+" >"+this.equals],c=l[0],r=l[1],n=this.stepNum?pt(this.stepNum[0])>0?c+" "+this.toVar:r+" "+this.toVar:a?(u=[pt(this.fromNum[0]),pt(this.toNum[0])],i=u[0],d=u[1],u,d>=i?c+" "+d:r+" "+d):(t=this.stepVar?this.stepVar+" > 0":this.fromVar+" <= "+this.toVar,t+" ? "+c+" "+this.toVar+" : "+r+" "+this.toVar),p=this.stepVar?s+" += "+this.stepVar:a?h?d>=i?"++"+s:"--"+s:d>=i?s+"++":s+"--":h?t+" ? ++"+s+" : --"+s:t+" ? "+s+"++ : "+s+"--",h&&(f=o+" = "+f),h&&(p=o+" = "+p),[this.makeCode(f+"; "+n+"; "+p)]):this.compileArray(e)},t.prototype.compileArray=function(e){var t,n,i,r,s,o,a,c,h,l,u,p,d;return this.fromNum&&this.toNum&&20>=Math.abs(this.fromNum-this.toNum)?(h=function(){p=[];for(var e=l=+this.fromNum,t=+this.toNum;t>=l?t>=e:e>=t;t>=l?e++:e--)p.push(e);return p}.apply(this),this.exclusive&&h.pop(),[this.makeCode("["+h.join(", ")+"]")]):(o=this.tab+q,s=e.scope.freeVariable("i",{single:!0}),u=e.scope.freeVariable("results"),c="\n"+o+u+" = [];",this.fromNum&&this.toNum?(e.index=s,n=st(this.compileNode(e))):(d=s+" = "+this.fromC+(this.toC!==this.toVar?", "+this.toC:""),i=this.fromVar+" <= "+this.toVar,n="var "+d+"; "+i+" ? "+s+" <"+this.equals+" "+this.toVar+" : "+s+" >"+this.equals+" "+this.toVar+"; "+i+" ? "+s+"++ : "+s+"--"),a="{ "+u+".push("+s+"); }\n"+o+"return "+u+";\n"+e.indent,r=function(e){return null!=e?e.contains(at):void 0},(r(this.from)||r(this.to))&&(t=", arguments"),[this.makeCode("(function() {"+c+"\n"+o+"for ("+n+")"+a+"}).apply(this"+(null!=t?t:"")+")")])},t}(r),e.Slice=U=function(e){function t(e){this.range=e,t.__super__.constructor.call(this)}return kt(t,e),t.prototype.children=["range"],t.prototype.compileNode=function(e){var t,n,i,r,s,o,a;return s=this.range,o=s.to,i=s.from,r=i&&i.compileToFragments(e,N)||[this.makeCode("0")],o&&(t=o.compileToFragments(e,N),n=st(t),(this.range.exclusive||-1!==+n)&&(a=", "+(this.range.exclusive?n:B.test(n)?""+(+n+1):(t=o.compileToFragments(e,T),"+"+st(t)+" + 1 || 9e9")))),[this.makeCode(".slice("+st(r)+(a||"")+")")]},t}(r),e.Obj=A=function(e){function n(e,t){this.generated=null!=t?t:!1,this.objects=this.properties=e||[]}return kt(n,e),n.prototype.children=["properties"],n.prototype.compileNode=function(e){var n,r,s,o,a,c,h,u,p,d,f,m,g,v,y,b,k,w,T,C,E;if(T=this.properties,this.generated)for(h=0,g=T.length;g>h;h++)b=T[h],b instanceof z&&b.error("cannot have an implicit value in an implicit object");for(r=p=0,v=T.length;v>p&&(w=T[r],!((w.variable||w).base instanceof O));r=++p);for(s=T.length>r,a=e.indent+=q,m=this.lastNonComment(this.properties),n=[],s&&(k=e.scope.freeVariable("obj"),n.push(this.makeCode("(\n"+a+k+" = "))),n.push(this.makeCode("{"+(0===T.length||0===r?"}":"\n"))),o=f=0,y=T.length;y>f;o=++f)w=T[o],o===r&&(0!==o&&n.push(this.makeCode("\n"+a+"}")),n.push(this.makeCode(",\n"))),u=o===T.length-1||o===r-1?"":w===m||w instanceof l?"\n":",\n",c=w instanceof l?"":a,s&&r>o&&(c+=q),w instanceof i&&w.variable instanceof z&&w.variable.hasProperties()&&w.variable.error("invalid object key"),w instanceof z&&w["this"]&&(w=new i(w.properties[0].name,w,"object")),w instanceof l||(r>o?(w instanceof i||(w=new i(w,w,"object")),(w.variable.base||w.variable).asKey=!0):(w instanceof i?(d=w.variable,E=w.value):(C=w.base.cache(e),d=C[0],E=C[1]),w=new i(new z(new x(k),[new t(d)]),E))),c&&n.push(this.makeCode(c)),n.push.apply(n,w.compileToFragments(e,L)),u&&n.push(this.makeCode(u));return s?n.push(this.makeCode(",\n"+a+k+"\n"+this.tab+")")):0!==T.length&&n.push(this.makeCode("\n"+this.tab+"}")),this.front&&!s?this.wrapInBraces(n):n},n.prototype.assigns=function(e){var t,n,i,r;for(r=this.properties,t=0,n=r.length;n>t;t++)if(i=r[t],i.assigns(e))return!0;return!1},n}(r),e.Arr=n=function(e){function t(e){this.objects=e||[]}return kt(t,e),t.prototype.children=["objects"],t.prototype.compileNode=function(e){var t,n,i,r,s,o,a;if(!this.objects.length)return[this.makeCode("[]")];if(e.indent+=q,t=G.compileSplattedArray(e,this.objects),t.length)return t;for(t=[],n=function(){var t,n,i,r;for(i=this.objects,r=[],t=0,n=i.length;n>t;t++)a=i[t],r.push(a.compileToFragments(e,E));return r}.call(this),r=s=0,o=n.length;o>s;r=++s)i=n[r],r&&t.push(this.makeCode(", ")),t.push.apply(t,i);return st(t).indexOf("\n")>=0?(t.unshift(this.makeCode("[\n"+e.indent)),t.push(this.makeCode("\n"+this.tab+"]"))):(t.unshift(this.makeCode("[")),t.push(this.makeCode("]"))),t},t.prototype.assigns=function(e){var t,n,i,r;for(r=this.objects,t=0,n=r.length;n>t;t++)if(i=r[t],i.assigns(e))return!0;return!1},t}(r),e.Class=a=function(e){function n(e,t,n){this.variable=e,this.parent=t,this.body=null!=n?n:new s,this.boundFuncs=[],this.body.classBody=!0}return kt(n,e),n.prototype.children=["variable","parent","body"],n.prototype.determineName=function(){var e,n,i;return this.variable?(n=this.variable.properties,i=n[n.length-1],e=i?i instanceof t&&i.name.value:this.variable.base.value,Tt.call(V,e)>=0&&this.variable.error("class variable name may not be "+e),e&&(e=g.test(e)&&e)):null},n.prototype.setContext=function(e){return this.body.traverseChildren(!1,function(t){return t.classBody?!1:t instanceof x&&"this"===t.value?t.value=e:t instanceof c&&t.bound?t.context=e:void 0})},n.prototype.addBoundFunctions=function(e){var n,i,r,s,o;for(o=this.boundFuncs,i=0,r=o.length;r>i;i++)n=o[i],s=new z(new x("this"),[new t(n)]).compile(e),this.ctor.body.unshift(new x(s+" = "+bt("bind",e)+"("+s+", this)"))},n.prototype.addProperties=function(e,n,r){var s,o,a,h,l,u;return u=e.base.properties.slice(0),h=function(){var e;for(e=[];o=u.shift();)o instanceof i&&(a=o.variable.base,delete o.context,l=o.value,"constructor"===a.value?(this.ctor&&o.error("cannot define more than one constructor in a class"),l.bound&&o.error("cannot define a constructor as a bound function"),l instanceof c?o=this.ctor=l:(this.externalCtor=r.classScope.freeVariable("class"),o=new i(new x(this.externalCtor),l))):o.variable["this"]?l["static"]=!0:(s=a.isComplex()?new w(a):new t(a),o.variable=new z(new x(n),[new t(new x("prototype")),s]),l instanceof c&&l.bound&&(this.boundFuncs.push(a),l.bound=!1))),e.push(o);return e}.call(this),et(h)},n.prototype.walkBody=function(e,t){return this.traverseChildren(!1,function(r){return function(o){var a,c,h,l,u,p,d;if(a=!0,o instanceof n)return!1;if(o instanceof s){for(d=c=o.expressions,h=l=0,u=d.length;u>l;h=++l)p=d[h],p instanceof i&&p.variable.looksStatic(e)?p.value["static"]=!0:p instanceof z&&p.isObject(!0)&&(a=!1,c[h]=r.addProperties(p,e,t));o.expressions=c=rt(c)}return a&&!(o instanceof n)}}(this))},n.prototype.hoistDirectivePrologue=function(){var e,t,n;for(t=0,e=this.body.expressions;(n=e[t])&&n instanceof l||n instanceof z&&n.isString();)++t;return this.directives=e.splice(0,t)},n.prototype.ensureConstructor=function(e){return this.ctor||(this.ctor=new c,this.externalCtor?this.ctor.body.push(new x(this.externalCtor+".apply(this, arguments)")):this.parent&&this.ctor.body.push(new x(e+".__super__.constructor.apply(this, arguments)")),this.ctor.body.makeReturn(),this.body.expressions.unshift(this.ctor)),this.ctor.ctor=this.ctor.name=e,this.ctor.klass=null,this.ctor.noReturn=!0},n.prototype.compileNode=function(e){var t,n,r,a,h,l,u,p,f;return(a=this.body.jumps())&&a.error("Class bodies cannot contain pure statements"),(n=this.body.contains(at))&&n.error("Class bodies shouldn't reference arguments"),u=this.determineName()||"_Class",u.reserved&&(u="_"+u),l=new x(u),r=new c([],s.wrap([this.body])),t=[],e.classScope=r.makeScope(e.scope),this.hoistDirectivePrologue(),this.setContext(u),this.walkBody(u,e),this.ensureConstructor(u),this.addBoundFunctions(e),this.body.spaced=!0,this.body.expressions.push(l),this.parent&&(f=new x(e.classScope.freeVariable("superClass",{reserve:!1})),this.body.expressions.unshift(new d(l,f)),r.params.push(new _(f)),t.push(this.parent)),(p=this.body.expressions).unshift.apply(p,this.directives),h=new O(new o(r,t)),this.variable&&(h=new i(this.variable,h)),h.compileToFragments(e)},n}(r),e.Assign=i=function(e){function n(e,t,n,i){var r,s,o;this.variable=e,this.value=t,this.context=n,this.param=i&&i.param,this.subpattern=i&&i.subpattern,o=s=this.variable.unwrapAll().value,r=Tt.call(V,o)>=0,r&&"object"!==this.context&&this.variable.error('variable name may not be "'+s+'"')}return kt(n,e),n.prototype.children=["variable","value"],n.prototype.isStatement=function(e){return(null!=e?e.level:void 0)===L&&null!=this.context&&Tt.call(this.context,"?")>=0 -},n.prototype.assigns=function(e){return this["object"===this.context?"value":"variable"].assigns(e)},n.prototype.unfoldSoak=function(e){return yt(e,this,"variable")},n.prototype.compileNode=function(e){var t,n,i,r,s,o,a,h,l,u,p,d,f,m;if(i=this.variable instanceof z){if(this.variable.isArray()||this.variable.isObject())return this.compilePatternMatch(e);if(this.variable.isSplice())return this.compileSplice(e);if("||="===(h=this.context)||"&&="===h||"?="===h)return this.compileConditional(e);if("**="===(l=this.context)||"//="===l||"%%="===l)return this.compileSpecialMath(e)}return this.value instanceof c&&(this.value["static"]?(this.value.klass=this.variable.base,this.value.name=this.variable.properties[0],this.value.variable=this.variable):(null!=(u=this.variable.properties)?u.length:void 0)>=2&&(p=this.variable.properties,o=p.length>=3?Ct.call(p,0,r=p.length-2):(r=0,[]),a=p[r++],s=p[r++],"prototype"===(null!=(d=a.name)?d.value:void 0)&&(this.value.klass=new z(this.variable.base,o),this.value.name=s,this.value.variable=this.variable))),this.context||(m=this.variable.unwrapAll(),m.isAssignable()||this.variable.error('"'+this.variable.compile(e)+'" cannot be assigned'),("function"==typeof m.hasProperties?m.hasProperties():void 0)||(this.param?e.scope.add(m.value,"var"):e.scope.find(m.value))),f=this.value.compileToFragments(e,E),n=this.variable.compileToFragments(e,E),"object"===this.context?n.concat(this.makeCode(": "),f):(t=n.concat(this.makeCode(" "+(this.context||"=")+" "),f),E>=e.level?t:this.wrapInBraces(t))},n.prototype.compilePatternMatch=function(e){var i,r,s,o,a,c,h,l,u,d,f,m,v,y,b,k,T,C,N,S,D,R,A,I,_,j,M,B;if(I=e.level===L,j=this.value,y=this.variable.base.objects,!(b=y.length))return s=j.compileToFragments(e),e.level>=F?this.wrapInBraces(s):s;if(l=this.variable.isObject(),I&&1===b&&!((v=y[0])instanceof G))return v instanceof n?(T=v,C=T.variable,h=C.base,v=T.value):h=l?v["this"]?v.properties[0].name:v:new x(0),i=g.test(h.unwrap().value||0),j=new z(j),j.properties.push(new(i?t:w)(h)),N=v.unwrap().value,Tt.call($,N)>=0&&v.error("assignment to a reserved word: "+v.compile(e)),new n(v,j,null,{param:this.param}).compileToFragments(e,L);for(M=j.compileToFragments(e,E),B=st(M),r=[],o=!1,(!g.test(B)||this.variable.assigns(B))&&(r.push([this.makeCode((k=e.scope.freeVariable("ref"))+" = ")].concat(Ct.call(M))),M=[this.makeCode(k)],B=k),c=d=0,f=y.length;f>d;c=++d){if(v=y[c],h=c,l&&(v instanceof n?(S=v,D=S.variable,h=D.base,v=S.value):v.base instanceof O?(R=new z(v.unwrapAll()).cacheReference(e),v=R[0],h=R[1]):h=v["this"]?v.properties[0].name:v),!o&&v instanceof G)m=v.name.unwrap().value,v=v.unwrap(),_=b+" <= "+B+".length ? "+bt("slice",e)+".call("+B+", "+c,(A=b-c-1)?(u=e.scope.freeVariable("i",{single:!0}),_+=", "+u+" = "+B+".length - "+A+") : ("+u+" = "+c+", [])"):_+=") : []",_=new x(_),o=u+"++";else{if(!o&&v instanceof p){(A=b-c-1)&&(1===A?o=B+".length - 1":(u=e.scope.freeVariable("i",{single:!0}),_=new x(u+" = "+B+".length - "+A),o=u+"++",r.push(_.compileToFragments(e,E))));continue}m=v.unwrap().value,(v instanceof G||v instanceof p)&&v.error("multiple splats/expansions are disallowed in an assignment"),"number"==typeof h?(h=new x(o||h),i=!1):i=l&&g.test(h.unwrap().value||0),_=new z(new x(B),[new(i?t:w)(h)])}null!=m&&Tt.call($,m)>=0&&v.error("assignment to a reserved word: "+v.compile(e)),r.push(new n(v,_,null,{param:this.param,subpattern:!0}).compileToFragments(e,E))}return I||this.subpattern||r.push(M),a=this.joinFragmentArrays(r,", "),E>e.level?a:this.wrapInBraces(a)},n.prototype.compileConditional=function(e){var t,i,r,s;return r=this.variable.cacheReference(e),i=r[0],s=r[1],!i.properties.length&&i.base instanceof x&&"this"!==i.base.value&&!e.scope.check(i.base.value)&&this.variable.error('the variable "'+i.base.value+"\" can't be assigned with "+this.context+" because it has not been declared before"),Tt.call(this.context,"?")>=0?(e.isExistentialEquals=!0,new b(new u(i),s,{type:"if"}).addElse(new n(s,this.value,"=")).compileToFragments(e)):(t=new I(this.context.slice(0,-1),i,new n(s,this.value,"=")).compileToFragments(e),E>=e.level?t:this.wrapInBraces(t))},n.prototype.compileSpecialMath=function(e){var t,i,r;return i=this.variable.cacheReference(e),t=i[0],r=i[1],new n(t,new I(this.context.slice(0,-1),r,this.value)).compileToFragments(e)},n.prototype.compileSplice=function(e){var t,n,i,r,s,o,a,c,h,l,u,p;return a=this.variable.properties.pop().range,i=a.from,l=a.to,n=a.exclusive,o=this.variable.compile(e),i?(c=this.cacheToCodeFragments(i.cache(e,F)),r=c[0],s=c[1]):r=s="0",l?i instanceof z&&i.isSimpleNumber()&&l instanceof z&&l.isSimpleNumber()?(l=l.compile(e)-s,n||(l+=1)):(l=l.compile(e,T)+" - "+s,n||(l+=" + 1")):l="9e9",h=this.value.cache(e,E),u=h[0],p=h[1],t=[].concat(this.makeCode("[].splice.apply("+o+", ["+r+", "+l+"].concat("),u,this.makeCode(")), "),p),e.level>L?this.wrapInBraces(t):t},n}(r),e.Code=c=function(e){function t(e,t,n){this.params=e||[],this.body=t||new s,this.bound="boundfunc"===n,this.isGenerator=!!this.body.contains(function(e){var t;return e instanceof I&&("yield"===(t=e.operator)||"yield*"===t)})}return kt(t,e),t.prototype.children=["params","body"],t.prototype.isStatement=function(){return!!this.ctor},t.prototype.jumps=D,t.prototype.makeScope=function(e){return new P(e,this.body,this)},t.prototype.compileNode=function(e){var r,a,c,h,l,u,d,f,m,g,v,y,k,w,C,E,F,N,L,S,D,R,A,O,$,j,M,B,V,P,U,G,H;if(this.bound&&(null!=(A=e.scope.method)?A.bound:void 0)&&(this.context=e.scope.method.context),this.bound&&!this.context)return this.context="_this",H=new t([new _(new x(this.context))],new s([this])),a=new o(H,[new x("this")]),a.updateLocationDataIfMissing(this.locationData),a.compileNode(e);for(e.scope=tt(e,"classScope")||this.makeScope(e.scope),e.scope.shared=tt(e,"sharedScope"),e.indent+=q,delete e.bare,delete e.isExistentialEquals,L=[],h=[],O=this.params,u=0,m=O.length;m>u;u++)N=O[u],N instanceof p||e.scope.parameter(N.asReference(e));for($=this.params,d=0,g=$.length;g>d;d++)if(N=$[d],N.splat||N instanceof p){for(j=this.params,f=0,v=j.length;v>f;f++)F=j[f],F instanceof p||!F.name.value||e.scope.add(F.name.value,"var",!0);V=new i(new z(new n(function(){var t,n,i,r;for(i=this.params,r=[],n=0,t=i.length;t>n;n++)F=i[n],r.push(F.asReference(e));return r}.call(this))),new z(new x("arguments")));break}for(M=this.params,E=0,y=M.length;y>E;E++)N=M[E],N.isComplex()?(U=R=N.asReference(e),N.value&&(U=new I("?",R,N.value)),h.push(new i(new z(N.name),U,"=",{param:!0}))):(R=N,N.value&&(C=new x(R.name.value+" == null"),U=new i(new z(N.name),N.value,"="),h.push(new b(C,U)))),V||L.push(R);for(G=this.body.isEmpty(),V&&h.unshift(V),h.length&&(B=this.body.expressions).unshift.apply(B,h),l=S=0,k=L.length;k>S;l=++S)F=L[l],L[l]=F.compileToFragments(e),e.scope.parameter(st(L[l]));for(P=[],this.eachParamName(function(e,t){return Tt.call(P,e)>=0&&t.error("multiple parameters named "+e),P.push(e)}),G||this.noReturn||this.body.makeReturn(),c="function",this.isGenerator&&(c+="*"),this.ctor&&(c+=" "+this.name),c+="(",r=[this.makeCode(c)],l=D=0,w=L.length;w>D;l=++D)F=L[l],l&&r.push(this.makeCode(", ")),r.push.apply(r,F);return r.push(this.makeCode(") {")),this.body.isEmpty()||(r=r.concat(this.makeCode("\n"),this.body.compileWithDeclarations(e),this.makeCode("\n"+this.tab))),r.push(this.makeCode("}")),this.ctor?[this.makeCode(this.tab)].concat(Ct.call(r)):this.front||e.level>=T?this.wrapInBraces(r):r},t.prototype.eachParamName=function(e){var t,n,i,r,s;for(r=this.params,s=[],t=0,n=r.length;n>t;t++)i=r[t],s.push(i.eachName(e));return s},t.prototype.traverseChildren=function(e,n){return e?t.__super__.traverseChildren.call(this,e,n):void 0},t}(r),e.Param=_=function(e){function t(e,t,n){var i,r;this.name=e,this.value=t,this.splat=n,r=i=this.name.unwrapAll().value,Tt.call(V,r)>=0&&this.name.error('parameter name "'+i+'" is not allowed')}return kt(t,e),t.prototype.children=["name","value"],t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e,E)},t.prototype.asReference=function(e){var t,n;return this.reference?this.reference:(n=this.name,n["this"]?(t=n.properties[0].name.value,t.reserved&&(t="_"+t),n=new x(e.scope.freeVariable(t))):n.isComplex()&&(n=new x(e.scope.freeVariable("arg"))),n=new z(n),this.splat&&(n=new G(n)),n.updateLocationDataIfMissing(this.locationData),this.reference=n)},t.prototype.isComplex=function(){return this.name.isComplex()},t.prototype.eachName=function(e,t){var n,r,s,o,a,c;if(null==t&&(t=this.name),n=function(t){return e("@"+t.properties[0].name.value,t)},t instanceof x)return e(t.value,t);if(t instanceof z)return n(t);for(c=t.objects,r=0,s=c.length;s>r;r++)a=c[r],a instanceof i?this.eachName(e,a.value.unwrap()):a instanceof G?(o=a.name.unwrap(),e(o.value,o)):a instanceof z?a.isArray()||a.isObject()?this.eachName(e,a.base):a["this"]?n(a):e(a.base.value,a.base):a instanceof p||a.error("illegal parameter "+a.compile())},t}(r),e.Splat=G=function(e){function t(e){this.name=e.compile?e:new x(e)}return kt(t,e),t.prototype.children=["name"],t.prototype.isAssignable=Q,t.prototype.assigns=function(e){return this.name.assigns(e)},t.prototype.compileToFragments=function(e){return this.name.compileToFragments(e)},t.prototype.unwrap=function(){return this.name},t.compileSplattedArray=function(e,n,i){var r,s,o,a,c,h,l,u,p,d,f;for(l=-1;(f=n[++l])&&!(f instanceof t););if(l>=n.length)return[];if(1===n.length)return f=n[0],c=f.compileToFragments(e,E),i?c:[].concat(f.makeCode(bt("slice",e)+".call("),c,f.makeCode(")"));for(r=n.slice(l),h=u=0,d=r.length;d>u;h=++u)f=r[h],o=f.compileToFragments(e,E),r[h]=f instanceof t?[].concat(f.makeCode(bt("slice",e)+".call("),o,f.makeCode(")")):[].concat(f.makeCode("["),o,f.makeCode("]"));return 0===l?(f=n[0],a=f.joinFragmentArrays(r.slice(1),", "),r[0].concat(f.makeCode(".concat("),a,f.makeCode(")"))):(s=function(){var t,i,r,s;for(r=n.slice(0,l),s=[],t=0,i=r.length;i>t;t++)f=r[t],s.push(f.compileToFragments(e,E));return s}(),s=n[0].joinFragmentArrays(s,", "),a=n[l].joinFragmentArrays(r,", "),p=n[n.length-1],[].concat(n[0].makeCode("["),s,n[l].makeCode("].concat("),a,p.makeCode(")")))},t}(r),e.Expansion=p=function(e){function t(){return t.__super__.constructor.apply(this,arguments)}return kt(t,e),t.prototype.isComplex=D,t.prototype.compileNode=function(){return this.error("Expansion must be used inside a destructuring assignment or parameter list")},t.prototype.asReference=function(){return this},t.prototype.eachName=function(){},t}(r),e.While=J=function(e){function t(e,t){this.condition=(null!=t?t.invert:void 0)?e.invert():e,this.guard=null!=t?t.guard:void 0}return kt(t,e),t.prototype.children=["condition","guard","body"],t.prototype.isStatement=Q,t.prototype.makeReturn=function(e){return e?t.__super__.makeReturn.apply(this,arguments):(this.returns=!this.jumps({loop:!0}),this)},t.prototype.addBody=function(e){return this.body=e,this},t.prototype.jumps=function(){var e,t,n,i,r;if(e=this.body.expressions,!e.length)return!1;for(t=0,i=e.length;i>t;t++)if(r=e[t],n=r.jumps({loop:!0}))return n;return!1},t.prototype.compileNode=function(e){var t,n,i,r;return e.indent+=q,r="",n=this.body,n.isEmpty()?n=this.makeCode(""):(this.returns&&(n.makeReturn(i=e.scope.freeVariable("results")),r=""+this.tab+i+" = [];\n"),this.guard&&(n.expressions.length>1?n.expressions.unshift(new b(new O(this.guard).invert(),new x("continue"))):this.guard&&(n=s.wrap([new b(this.guard,n)]))),n=[].concat(this.makeCode("\n"),n.compileToFragments(e,L),this.makeCode("\n"+this.tab))),t=[].concat(this.makeCode(r+this.tab+"while ("),this.condition.compileToFragments(e,N),this.makeCode(") {"),n,this.makeCode("}")),this.returns&&t.push(this.makeCode("\n"+this.tab+"return "+i+";")),t},t}(r),e.Op=I=function(e){function n(e,t,n,i){if("in"===e)return new k(t,n);if("do"===e)return this.generateDo(t);if("new"===e){if(t instanceof o&&!t["do"]&&!t.isNew)return t.newInstance();(t instanceof c&&t.bound||t["do"])&&(t=new O(t))}return this.operator=r[e]||e,this.first=t,this.second=n,this.flip=!!i,this}var r,s;return kt(n,e),r={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},s={"!==":"===","===":"!=="},n.prototype.children=["first","second"],n.prototype.isSimpleNumber=D,n.prototype.isYield=function(){var e;return"yield"===(e=this.operator)||"yield*"===e},n.prototype.isYieldReturn=function(){return this.isYield()&&this.first instanceof M},n.prototype.isUnary=function(){return!this.second},n.prototype.isComplex=function(){var e;return!(this.isUnary()&&("+"===(e=this.operator)||"-"===e)&&this.first instanceof z&&this.first.isSimpleNumber())},n.prototype.isChainable=function(){var e;return"<"===(e=this.operator)||">"===e||">="===e||"<="===e||"==="===e||"!=="===e},n.prototype.invert=function(){var e,t,i,r,o;if(this.isChainable()&&this.first.isChainable()){for(e=!0,t=this;t&&t.operator;)e&&(e=t.operator in s),t=t.first;if(!e)return new O(this).invert();for(t=this;t&&t.operator;)t.invert=!t.invert,t.operator=s[t.operator],t=t.first;return this}return(r=s[this.operator])?(this.operator=r,this.first.unwrap()instanceof n&&this.first.invert(),this):this.second?new O(this).invert():"!"===this.operator&&(i=this.first.unwrap())instanceof n&&("!"===(o=i.operator)||"in"===o||"instanceof"===o)?i:new n("!",this)},n.prototype.unfoldSoak=function(e){var t;return("++"===(t=this.operator)||"--"===t||"delete"===t)&&yt(e,this,"first")},n.prototype.generateDo=function(e){var t,n,r,s,a,h,l,u;for(h=[],n=e instanceof i&&(l=e.value.unwrap())instanceof c?l:e,u=n.params||[],r=0,s=u.length;s>r;r++)a=u[r],a.value?(h.push(a.value),delete a.value):h.push(a);return t=new o(e,h),t["do"]=!0,t},n.prototype.compileNode=function(e){var t,n,i,r,s,o;if(n=this.isChainable()&&this.first.isChainable(),n||(this.first.front=this.front),"delete"===this.operator&&e.scope.check(this.first.unwrapAll().value)&&this.error("delete operand may not be argument or var"),("--"===(r=this.operator)||"++"===r)&&(s=this.first.unwrapAll().value,Tt.call(V,s)>=0)&&this.error('cannot increment/decrement "'+this.first.unwrapAll().value+'"'),this.isYield())return this.compileYield(e);if(this.isUnary())return this.compileUnary(e);if(n)return this.compileChain(e);switch(this.operator){case"?":return this.compileExistence(e);case"**":return this.compilePower(e);case"//":return this.compileFloorDivision(e);case"%%":return this.compileModulo(e);default:return i=this.first.compileToFragments(e,F),o=this.second.compileToFragments(e,F),t=[].concat(i,this.makeCode(" "+this.operator+" "),o),F>=e.level?t:this.wrapInBraces(t)}},n.prototype.compileChain=function(e){var t,n,i,r;return i=this.first.second.cache(e),this.first.second=i[0],r=i[1],n=this.first.compileToFragments(e,F),t=n.concat(this.makeCode(" "+(this.invert?"&&":"||")+" "),r.compileToFragments(e),this.makeCode(" "+this.operator+" "),this.second.compileToFragments(e,F)),this.wrapInBraces(t)},n.prototype.compileExistence=function(e){var t,n;return this.first.isComplex()?(n=new x(e.scope.freeVariable("ref")),t=new O(new i(n,this.first))):(t=this.first,n=t),new b(new u(t),n,{type:"if"}).addElse(this.second).compileToFragments(e)},n.prototype.compileUnary=function(e){var t,i,r;return i=[],t=this.operator,i.push([this.makeCode(t)]),"!"===t&&this.first instanceof u?(this.first.negated=!this.first.negated,this.first.compileToFragments(e)):e.level>=T?new O(this).compileToFragments(e):(r="+"===t||"-"===t,("new"===t||"typeof"===t||"delete"===t||r&&this.first instanceof n&&this.first.operator===t)&&i.push([this.makeCode(" ")]),(r&&this.first instanceof n||"new"===t&&this.first.isStatement(e))&&(this.first=new O(this.first)),i.push(this.first.compileToFragments(e,F)),this.flip&&i.reverse(),this.joinFragmentArrays(i,""))},n.prototype.compileYield=function(e){var t,n;return n=[],t=this.operator,null==e.scope.parent&&this.error("yield statements must occur within a function generator."),Tt.call(Object.keys(this.first),"expression")>=0&&!(this.first instanceof W)?this.isYieldReturn()?n.push(this.first.compileToFragments(e,L)):null!=this.first.expression&&n.push(this.first.expression.compileToFragments(e,F)):(n.push([this.makeCode("("+t+" ")]),n.push(this.first.compileToFragments(e,F)),n.push([this.makeCode(")")])),this.joinFragmentArrays(n,"")},n.prototype.compilePower=function(e){var n;return n=new z(new x("Math"),[new t(new x("pow"))]),new o(n,[this.first,this.second]).compileToFragments(e)},n.prototype.compileFloorDivision=function(e){var i,r;return r=new z(new x("Math"),[new t(new x("floor"))]),i=new n("/",this.first,this.second),new o(r,[i]).compileToFragments(e)},n.prototype.compileModulo=function(e){var t;return t=new z(new x(bt("modulo",e))),new o(t,[this.first,this.second]).compileToFragments(e)},n.prototype.toString=function(e){return n.__super__.toString.call(this,e,this.constructor.name+" "+this.operator)},n}(r),e.In=k=function(e){function t(e,t){this.object=e,this.array=t}return kt(t,e),t.prototype.children=["object","array"],t.prototype.invert=S,t.prototype.compileNode=function(e){var t,n,i,r,s;if(this.array instanceof z&&this.array.isArray()&&this.array.base.objects.length){for(s=this.array.base.objects,n=0,i=s.length;i>n;n++)if(r=s[n],r instanceof G){t=!0;break}if(!t)return this.compileOrTest(e)}return this.compileLoopTest(e)},t.prototype.compileOrTest=function(e){var t,n,i,r,s,o,a,c,h,l,u,p;for(c=this.object.cache(e,F),u=c[0],a=c[1],h=this.negated?[" !== "," && "]:[" === "," || "],t=h[0],n=h[1],p=[],l=this.array.base.objects,i=s=0,o=l.length;o>s;i=++s)r=l[i],i&&p.push(this.makeCode(n)),p=p.concat(i?a:u,this.makeCode(t),r.compileToFragments(e,T));return F>e.level?p:this.wrapInBraces(p)},t.prototype.compileLoopTest=function(e){var t,n,i,r;return i=this.object.cache(e,E),r=i[0],n=i[1],t=[].concat(this.makeCode(bt("indexOf",e)+".call("),this.array.compileToFragments(e,E),this.makeCode(", "),n,this.makeCode(") "+(this.negated?"< 0":">= 0"))),st(r)===st(n)?t:(t=r.concat(this.makeCode(", "),t),E>e.level?t:this.wrapInBraces(t))},t.prototype.toString=function(e){return t.__super__.toString.call(this,e,this.constructor.name+(this.negated?"!":""))},t}(r),e.Try=Y=function(e){function t(e,t,n,i){this.attempt=e,this.errorVariable=t,this.recovery=n,this.ensure=i}return kt(t,e),t.prototype.children=["attempt","recovery","ensure"],t.prototype.isStatement=Q,t.prototype.jumps=function(e){var t;return this.attempt.jumps(e)||(null!=(t=this.recovery)?t.jumps(e):void 0)},t.prototype.makeReturn=function(e){return this.attempt&&(this.attempt=this.attempt.makeReturn(e)),this.recovery&&(this.recovery=this.recovery.makeReturn(e)),this},t.prototype.compileNode=function(e){var t,n,r,s;return e.indent+=q,s=this.attempt.compileToFragments(e,L),t=this.recovery?(r=new x("_error"),this.errorVariable?this.recovery.unshift(new i(this.errorVariable,r)):void 0,[].concat(this.makeCode(" catch ("),r.compileToFragments(e),this.makeCode(") {\n"),this.recovery.compileToFragments(e,L),this.makeCode("\n"+this.tab+"}"))):this.ensure||this.recovery?[]:[this.makeCode(" catch (_error) {}")],n=this.ensure?[].concat(this.makeCode(" finally {\n"),this.ensure.compileToFragments(e,L),this.makeCode("\n"+this.tab+"}")):[],[].concat(this.makeCode(this.tab+"try {\n"),s,this.makeCode("\n"+this.tab+"}"),t,n)},t}(r),e.Throw=W=function(e){function t(e){this.expression=e}return kt(t,e),t.prototype.children=["expression"],t.prototype.isStatement=Q,t.prototype.jumps=D,t.prototype.makeReturn=X,t.prototype.compileNode=function(e){return[].concat(this.makeCode(this.tab+"throw "),this.expression.compileToFragments(e),this.makeCode(";"))},t}(r),e.Existence=u=function(e){function t(e){this.expression=e}return kt(t,e),t.prototype.children=["expression"],t.prototype.invert=S,t.prototype.compileNode=function(e){var t,n,i,r;return this.expression.front=this.front,i=this.expression.compile(e,F),g.test(i)&&!e.scope.check(i)?(r=this.negated?["===","||"]:["!==","&&"],t=r[0],n=r[1],i="typeof "+i+" "+t+' "undefined" '+n+" "+i+" "+t+" null"):i=i+" "+(this.negated?"==":"!=")+" null",[this.makeCode(C>=e.level?i:"("+i+")")]},t}(r),e.Parens=O=function(e){function t(e){this.body=e}return kt(t,e),t.prototype.children=["body"],t.prototype.unwrap=function(){return this.body},t.prototype.isComplex=function(){return this.body.isComplex()},t.prototype.compileNode=function(e){var t,n,i;return n=this.body.unwrap(),n instanceof z&&n.isAtomic()?(n.front=this.front,n.compileToFragments(e)):(i=n.compileToFragments(e,N),t=F>e.level&&(n instanceof I||n instanceof o||n instanceof f&&n.returns),t?i:this.wrapInBraces(i))},t}(r),e.For=f=function(e){function t(e,t){var n;this.source=t.source,this.guard=t.guard,this.step=t.step,this.name=t.name,this.index=t.index,this.body=s.wrap([e]),this.own=!!t.own,this.object=!!t.object,this.object&&(n=[this.index,this.name],this.name=n[0],this.index=n[1]),this.index instanceof z&&this.index.error("index cannot be a pattern matching expression"),this.range=this.source instanceof z&&this.source.base instanceof j&&!this.source.properties.length,this.pattern=this.name instanceof z,this.range&&this.index&&this.index.error("indexes do not apply to range loops"),this.range&&this.pattern&&this.name.error("cannot pattern match over range loops"),this.own&&!this.object&&this.name.error("cannot use own with for-in"),this.returns=!1}return kt(t,e),t.prototype.children=["body","source","guard","step"],t.prototype.compileNode=function(e){var t,n,r,o,a,c,h,l,u,p,d,f,m,v,y,k,w,T,C,F,N,S,D,A,I,_,$,j,B,V,P,U,G,H;return t=s.wrap([this.body]),D=t.expressions,T=D[D.length-1],(null!=T?T.jumps():void 0)instanceof M&&(this.returns=!1),B=this.range?this.source.base:this.source,j=e.scope,this.pattern||(F=this.name&&this.name.compile(e,E)),v=this.index&&this.index.compile(e,E),F&&!this.pattern&&j.find(F),v&&j.find(v),this.returns&&($=j.freeVariable("results")),y=this.object&&v||j.freeVariable("i",{single:!0}),k=this.range&&F||v||y,w=k!==y?k+" = ":"",this.step&&!this.range&&(A=this.cacheToCodeFragments(this.step.cache(e,E,ot)),V=A[0],U=A[1],P=U.match(R)),this.pattern&&(F=y),H="",d="",h="",f=this.tab+q,this.range?p=B.compileToFragments(lt(e,{index:y,name:F,step:this.step,isComplex:ot})):(G=this.source.compile(e,E),!F&&!this.own||g.test(G)||(h+=""+this.tab+(S=j.freeVariable("ref"))+" = "+G+";\n",G=S),F&&!this.pattern&&(N=F+" = "+G+"["+k+"]"),this.object||(V!==U&&(h+=""+this.tab+V+";\n"),this.step&&P&&(u=0>pt(P[0]))||(C=j.freeVariable("len")),a=""+w+y+" = 0, "+C+" = "+G+".length",c=""+w+y+" = "+G+".length - 1",r=y+" < "+C,o=y+" >= 0",this.step?(P?u&&(r=o,a=c):(r=U+" > 0 ? "+r+" : "+o,a="("+U+" > 0 ? ("+a+") : "+c+")"),m=y+" += "+U):m=""+(k!==y?"++"+y:y+"++"),p=[this.makeCode(a+"; "+r+"; "+w+m)])),this.returns&&(I=""+this.tab+$+" = [];\n",_="\n"+this.tab+"return "+$+";",t.makeReturn($)),this.guard&&(t.expressions.length>1?t.expressions.unshift(new b(new O(this.guard).invert(),new x("continue"))):this.guard&&(t=s.wrap([new b(this.guard,t)]))),this.pattern&&t.expressions.unshift(new i(this.name,new x(G+"["+k+"]"))),l=[].concat(this.makeCode(h),this.pluckDirectCall(e,t)),N&&(H="\n"+f+N+";"),this.object&&(p=[this.makeCode(k+" in "+G)],this.own&&(d="\n"+f+"if (!"+bt("hasProp",e)+".call("+G+", "+k+")) continue;")),n=t.compileToFragments(lt(e,{indent:f}),L),n&&n.length>0&&(n=[].concat(this.makeCode("\n"),n,this.makeCode("\n"))),[].concat(l,this.makeCode(""+(I||"")+this.tab+"for ("),p,this.makeCode(") {"+d+H),n,this.makeCode(this.tab+"}"+(_||"")))},t.prototype.pluckDirectCall=function(e,t){var n,r,s,a,h,l,u,p,d,f,m,g,v,y,b,k;for(r=[],d=t.expressions,h=l=0,u=d.length;u>l;h=++l)s=d[h],s=s.unwrapAll(),s instanceof o&&(k=null!=(f=s.variable)?f.unwrapAll():void 0,(k instanceof c||k instanceof z&&(null!=(m=k.base)?m.unwrapAll():void 0)instanceof c&&1===k.properties.length&&("call"===(g=null!=(v=k.properties[0].name)?v.value:void 0)||"apply"===g))&&(a=(null!=(y=k.base)?y.unwrapAll():void 0)||k,p=new x(e.scope.freeVariable("fn")),n=new z(p),k.base&&(b=[n,k],k.base=b[0],n=b[1]),t.expressions[h]=new o(n,s.args),r=r.concat(this.makeCode(this.tab),new i(p,a).compileToFragments(e,L),this.makeCode(";\n"))));return r},t}(J),e.Switch=H=function(e){function t(e,t,n){this.subject=e,this.cases=t,this.otherwise=n}return kt(t,e),t.prototype.children=["subject","cases","otherwise"],t.prototype.isStatement=Q,t.prototype.jumps=function(e){var t,n,i,r,s,o,a,c;for(null==e&&(e={block:!0}),o=this.cases,i=0,s=o.length;s>i;i++)if(a=o[i],n=a[0],t=a[1],r=t.jumps(e))return r;return null!=(c=this.otherwise)?c.jumps(e):void 0},t.prototype.makeReturn=function(e){var t,n,i,r,o;for(r=this.cases,t=0,n=r.length;n>t;t++)i=r[t],i[1].makeReturn(e);return e&&(this.otherwise||(this.otherwise=new s([new x("void 0")]))),null!=(o=this.otherwise)&&o.makeReturn(e),this},t.prototype.compileNode=function(e){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g;for(c=e.indent+q,h=e.indent=c+q,o=[].concat(this.makeCode(this.tab+"switch ("),this.subject?this.subject.compileToFragments(e,N):this.makeCode("false"),this.makeCode(") {\n")),f=this.cases,a=l=0,p=f.length;p>l;a=++l){for(m=f[a],r=m[0],t=m[1],g=rt([r]),u=0,d=g.length;d>u;u++)i=g[u],this.subject||(i=i.invert()),o=o.concat(this.makeCode(c+"case "),i.compileToFragments(e,N),this.makeCode(":\n"));if((n=t.compileToFragments(e,L)).length>0&&(o=o.concat(n,this.makeCode("\n"))),a===this.cases.length-1&&!this.otherwise)break;s=this.lastNonComment(t.expressions),s instanceof M||s instanceof x&&s.jumps()&&"debugger"!==s.value||o.push(i.makeCode(h+"break;\n"))}return this.otherwise&&this.otherwise.expressions.length&&o.push.apply(o,[this.makeCode(c+"default:\n")].concat(Ct.call(this.otherwise.compileToFragments(e,L)),[this.makeCode("\n")])),o.push(this.makeCode(this.tab+"}")),o},t}(r),e.If=b=function(e){function t(e,t,n){this.body=t,null==n&&(n={}),this.condition="unless"===n.type?e.invert():e,this.elseBody=null,this.isChain=!1,this.soak=n.soak}return kt(t,e),t.prototype.children=["condition","body","elseBody"],t.prototype.bodyNode=function(){var e;return null!=(e=this.body)?e.unwrap():void 0},t.prototype.elseBodyNode=function(){var e;return null!=(e=this.elseBody)?e.unwrap():void 0},t.prototype.addElse=function(e){return this.isChain?this.elseBodyNode().addElse(e):(this.isChain=e instanceof t,this.elseBody=this.ensureBlock(e),this.elseBody.updateLocationDataIfMissing(e.locationData)),this},t.prototype.isStatement=function(e){var t;return(null!=e?e.level:void 0)===L||this.bodyNode().isStatement(e)||(null!=(t=this.elseBodyNode())?t.isStatement(e):void 0)},t.prototype.jumps=function(e){var t;return this.body.jumps(e)||(null!=(t=this.elseBody)?t.jumps(e):void 0)},t.prototype.compileNode=function(e){return this.isStatement(e)?this.compileStatement(e):this.compileExpression(e)},t.prototype.makeReturn=function(e){return e&&(this.elseBody||(this.elseBody=new s([new x("void 0")]))),this.body&&(this.body=new s([this.body.makeReturn(e)])),this.elseBody&&(this.elseBody=new s([this.elseBody.makeReturn(e)])),this},t.prototype.ensureBlock=function(e){return e instanceof s?e:new s([e])},t.prototype.compileStatement=function(e){var n,i,r,s,o,a,c;return r=tt(e,"chainChild"),(o=tt(e,"isExistentialEquals"))?new t(this.condition.invert(),this.elseBodyNode(),{type:"if"}).compileToFragments(e):(c=e.indent+q,s=this.condition.compileToFragments(e,N),i=this.ensureBlock(this.body).compileToFragments(lt(e,{indent:c})),a=[].concat(this.makeCode("if ("),s,this.makeCode(") {\n"),i,this.makeCode("\n"+this.tab+"}")),r||a.unshift(this.makeCode(this.tab)),this.elseBody?(n=a.concat(this.makeCode(" else ")),this.isChain?(e.chainChild=!0,n=n.concat(this.elseBody.unwrap().compileToFragments(e,L))):n=n.concat(this.makeCode("{\n"),this.elseBody.compileToFragments(lt(e,{indent:c}),L),this.makeCode("\n"+this.tab+"}")),n):a)},t.prototype.compileExpression=function(e){var t,n,i,r;return i=this.condition.compileToFragments(e,C),n=this.bodyNode().compileToFragments(e,E),t=this.elseBodyNode()?this.elseBodyNode().compileToFragments(e,E):[this.makeCode("void 0")],r=i.concat(this.makeCode(" ? "),n,this.makeCode(" : "),t),e.level>=C?this.wrapInBraces(r):r},t.prototype.unfoldSoak=function(){return this.soak&&this},t}(r),K={extend:function(e){return"function(child, parent) { for (var key in parent) { if ("+bt("hasProp",e)+".call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }"},bind:function(){return"function(fn, me){ return function(){ return fn.apply(me, arguments); }; }"},indexOf:function(){return"[].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }"},modulo:function(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},hasProp:function(){return"{}.hasOwnProperty"},slice:function(){return"[].slice"}},L=1,N=2,E=3,C=4,F=5,T=6,q=" ",g=/^(?!\d)[$\w\x7f-\uffff]+$/,B=/^[+-]?\d+$/,m=/^[+-]?0x[\da-f]+/i,R=/^[+-]?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)$/i,y=/^['"]/,v=/^\//,bt=function(e,t){var n,i;return i=t.scope.root,e in i.utilities?i.utilities[e]:(n=i.freeVariable(e),i.assign(n,K[e](t)),i.utilities[e]=n)},ut=function(e,t){return e=e.replace(/\n/g,"$&"+t),e.replace(/\s+$/,"")},pt=function(e){return null==e?0:e.match(m)?parseInt(e,16):parseFloat(e)},at=function(e){return e instanceof x&&"arguments"===e.value&&!e.asKey},ct=function(e){return e instanceof x&&"this"===e.value&&!e.asKey||e instanceof c&&e.bound||e instanceof o&&e.isSuper},ot=function(e){return e.isComplex()||("function"==typeof e.isAssignable?e.isAssignable():void 0)},yt=function(e,t,n){var i;if(i=t[n].unfoldSoak(e))return t[n]=i.body,i.body=new z(t),i}}.call(this),t.exports}(),_dereq_["./sourcemap"]=function(){var e={},t={exports:e};return function(){var e,n;e=function(){function e(e){this.line=e,this.columns=[]}return e.prototype.add=function(e,t,n){var i,r;return r=t[0],i=t[1],null==n&&(n={}),this.columns[e]&&n.noReplace?void 0:this.columns[e]={line:this.line,column:e,sourceLine:r,sourceColumn:i}},e.prototype.sourceLocation=function(e){for(var t;!((t=this.columns[e])||0>=e);)e--;return t&&[t.sourceLine,t.sourceColumn]},e}(),n=function(){function t(){this.lines=[]}var n,i,r,s;return t.prototype.add=function(t,n,i){var r,s,o,a;return null==i&&(i={}),o=n[0],s=n[1],a=(r=this.lines)[o]||(r[o]=new e(o)),a.add(s,t,i)},t.prototype.sourceLocation=function(e){var t,n,i;for(n=e[0],t=e[1];!((i=this.lines[n])||0>=n);)n--;return i&&i.sourceLocation(t)},t.prototype.generate=function(e,t){var n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v;for(null==e&&(e={}),null==t&&(t=null),v=0,s=0,a=0,o=0,d=!1,n="",f=this.lines,u=i=0,c=f.length;c>i;u=++i)if(l=f[u])for(m=l.columns,r=0,h=m.length;h>r;r++)if(p=m[r]){for(;p.line>v;)s=0,d=!1,n+=";",v++;d&&(n+=",",d=!1),n+=this.encodeVlq(p.column-s),s=p.column,n+=this.encodeVlq(0),n+=this.encodeVlq(p.sourceLine-a),a=p.sourceLine,n+=this.encodeVlq(p.sourceColumn-o),o=p.sourceColumn,d=!0}return g={version:3,file:e.generatedFile||"",sourceRoot:e.sourceRoot||"",sources:e.sourceFiles||[""],names:[],mappings:n},e.inline&&(g.sourcesContent=[t]),JSON.stringify(g,null,2)},r=5,i=1<e?1:0,a=(Math.abs(e)<<1)+o;a||!t;)n=a&s,a>>=r,a&&(n|=i),t+=this.encodeBase64(n);return t},n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t.prototype.encodeBase64=function(e){return n[e]||function(){throw Error("Cannot Base64 encode value: "+e)}()},t}(),t.exports=n}.call(this),t.exports}(),_dereq_["./coffee-script"]=function(){var e={},t={exports:e};return function(){var t,n,i,r,s,o,a,c,h,l,u,p,d,f,m,g,v,y,b={}.hasOwnProperty,k=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};if(a=_dereq_("fs"),v=_dereq_("vm"),f=_dereq_("path"),t=_dereq_("./lexer").Lexer,d=_dereq_("./parser").parser,h=_dereq_("./helpers"),n=_dereq_("./sourcemap"),e.VERSION="1.9.3",e.FILE_EXTENSIONS=[".coffee",".litcoffee",".coffee.md"],e.helpers=h,y=function(e){return function(t,n){var i;null==n&&(n={});try{return e.call(this,t,n) -}catch(r){if(i=r,"string"!=typeof t)throw i;throw h.updateSyntaxError(i,t,n.filename)}}},e.compile=r=y(function(e,t){var i,r,s,o,a,c,l,u,f,m,g,v,y,b,k;for(v=h.merge,o=h.extend,t=o({},t),t.sourceMap&&(g=new n),k=p.tokenize(e,t),t.referencedVars=function(){var e,t,n;for(n=[],e=0,t=k.length;t>e;e++)b=k[e],b.variable&&n.push(b[1]);return n}(),c=d.parse(k).compileToFragments(t),s=0,t.header&&(s+=1),t.shiftLine&&(s+=1),r=0,f="",u=0,m=c.length;m>u;u++)a=c[u],t.sourceMap&&(a.locationData&&!/^[;\s]*$/.test(a.code)&&g.add([a.locationData.first_line,a.locationData.first_column],[s,r],{noReplace:!0}),y=h.count(a.code,"\n"),s+=y,y?r=a.code.length-(a.code.lastIndexOf("\n")+1):r+=a.code.length),f+=a.code;return t.header&&(l="Generated by CoffeeScript "+this.VERSION,f="// "+l+"\n"+f),t.sourceMap?(i={js:f},i.sourceMap=g,i.v3SourceMap=g.generate(t,e),i):f}),e.tokens=y(function(e,t){return p.tokenize(e,t)}),e.nodes=y(function(e,t){return"string"==typeof e?d.parse(p.tokenize(e,t)):d.parse(e)}),e.run=function(e,t){var n,i,s,o;return null==t&&(t={}),s=_dereq_.main,s.filename=process.argv[1]=t.filename?a.realpathSync(t.filename):".",s.moduleCache&&(s.moduleCache={}),i=t.filename?f.dirname(a.realpathSync(t.filename)):a.realpathSync("."),s.paths=_dereq_("module")._nodeModulePaths(i),(!h.isCoffee(s.filename)||_dereq_.extensions)&&(n=r(e,t),e=null!=(o=n.js)?o:n),s._compile(e,s.filename)},e.eval=function(e,t){var n,i,s,o,a,c,h,l,u,p,d,m,g,y,k,w,T;if(null==t&&(t={}),e=e.trim()){if(o=null!=(m=v.Script.createContext)?m:v.createContext,c=null!=(g=v.isContext)?g:function(){return t.sandbox instanceof o().constructor},o){if(null!=t.sandbox){if(c(t.sandbox))w=t.sandbox;else{w=o(),y=t.sandbox;for(l in y)b.call(y,l)&&(T=y[l],w[l]=T)}w.global=w.root=w.GLOBAL=w}else w=global;if(w.__filename=t.filename||"eval",w.__dirname=f.dirname(w.__filename),w===global&&!w.module&&!w.require){for(n=_dereq_("module"),w.module=i=new n(t.modulename||"eval"),w.require=s=function(e){return n._load(e,i,!0)},i.filename=w.__filename,k=Object.getOwnPropertyNames(_dereq_),a=0,u=k.length;u>a;a++)d=k[a],"paths"!==d&&(s[d]=_dereq_[d]);s.paths=i.paths=n._nodeModulePaths(process.cwd()),s.resolve=function(e){return n._resolveFilename(e,i)}}}p={};for(l in t)b.call(t,l)&&(T=t[l],p[l]=T);return p.bare=!0,h=r(e,p),w===global?v.runInThisContext(h):v.runInContext(h,w)}},e.register=function(){return _dereq_("./register")},_dereq_.extensions)for(m=this.FILE_EXTENSIONS,l=0,u=m.length;u>l;l++)s=m[l],null==(i=_dereq_.extensions)[s]&&(i[s]=function(){throw Error("Use CoffeeScript.register() or require the coffee-script/register module to require "+s+" files.")});e._compileFile=function(e,t){var n,i,s,o;null==t&&(t=!1),s=a.readFileSync(e,"utf8"),o=65279===s.charCodeAt(0)?s.substring(1):s;try{n=r(o,{filename:e,sourceMap:t,literate:h.isLiterate(e)})}catch(c){throw i=c,h.updateSyntaxError(i,o,e)}return n},p=new t,d.lexer={lex:function(){var e,t;return t=d.tokens[this.pos++],t?(e=t[0],this.yytext=t[1],this.yylloc=t[2],d.errorToken=t.origin||t,this.yylineno=this.yylloc.first_line):e="",e},setInput:function(e){return d.tokens=e,this.pos=0},upcomingInput:function(){return""}},d.yy=_dereq_("./nodes"),d.yy.parseError=function(e,t){var n,i,r,s,o,a;return o=t.token,s=d.errorToken,a=d.tokens,i=s[0],r=s[1],n=s[2],r=function(){switch(!1){case s!==a[a.length-1]:return"end of input";case"INDENT"!==i&&"OUTDENT"!==i:return"indentation";case"IDENTIFIER"!==i&&"NUMBER"!==i&&"STRING"!==i&&"STRING_START"!==i&&"REGEX"!==i&&"REGEX_START"!==i:return i.replace(/_START$/,"").toLowerCase();default:return h.nameWhitespaceCharacter(r)}}(),h.throwSyntaxError("unexpected "+r,n)},o=function(e,t){var n,i,r,s,o,a,c,h,l,u,p,d;return s=void 0,r="",e.isNative()?r="native":(e.isEval()?(s=e.getScriptNameOrSourceURL(),s||(r=e.getEvalOrigin()+", ")):s=e.getFileName(),s||(s=""),h=e.getLineNumber(),i=e.getColumnNumber(),u=t(s,h,i),r=u?s+":"+u[0]+":"+u[1]:s+":"+h+":"+i),o=e.getFunctionName(),a=e.isConstructor(),c=!(e.isToplevel()||a),c?(l=e.getMethodName(),d=e.getTypeName(),o?(p=n="",d&&o.indexOf(d)&&(p=d+"."),l&&o.indexOf("."+l)!==o.length-l.length-1&&(n=" [as "+l+"]"),""+p+o+n+" ("+r+")"):d+"."+(l||"")+" ("+r+")"):a?"new "+(o||"")+" ("+r+")":o?o+" ("+r+")":r},g={},c=function(t){var n,i;if(g[t])return g[t];if(i=null!=f?f.extname(t):void 0,!(0>k.call(e.FILE_EXTENSIONS,i)))return n=e._compileFile(t,!0),g[t]=n.sourceMap},Error.prepareStackTrace=function(t,n){var i,r,s;return s=function(e,t,n){var i,r;return r=c(e),r&&(i=r.sourceLocation([t-1,n-1])),i?[i[0]+1,i[1]+1]:null},r=function(){var t,r,a;for(a=[],t=0,r=n.length;r>t&&(i=n[t],i.getFunction()!==e.run);t++)a.push(" at "+o(i,s));return a}(),""+t+"\n"+r.join("\n")+"\n"}}.call(this),t.exports}(),_dereq_["./browser"]=function(){var exports={},module={exports:exports};return function(){var CoffeeScript,compile,runScripts,indexOf=[].indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(t in this&&this[t]===e)return t;return-1};CoffeeScript=_dereq_("./coffee-script"),CoffeeScript.require=_dereq_,compile=CoffeeScript.compile,CoffeeScript.eval=function(code,options){return null==options&&(options={}),null==options.bare&&(options.bare=!0),eval(compile(code,options))},CoffeeScript.run=function(e,t){return null==t&&(t={}),t.bare=!0,t.shiftLine=!0,Function(compile(e,t))()},"undefined"!=typeof window&&null!==window&&("undefined"!=typeof btoa&&null!==btoa&&"undefined"!=typeof JSON&&null!==JSON&&"undefined"!=typeof unescape&&null!==unescape&&"undefined"!=typeof encodeURIComponent&&null!==encodeURIComponent&&(compile=function(e,t){var n,i,r;return null==t&&(t={}),t.sourceMap=!0,t.inline=!0,i=CoffeeScript.compile(e,t),n=i.js,r=i.v3SourceMap,n+"\n//# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(r)))+"\n//# sourceURL=coffeescript"}),CoffeeScript.load=function(e,t,n,i){var r;return null==n&&(n={}),null==i&&(i=!1),n.sourceFiles=[e],r=window.ActiveXObject?new window.ActiveXObject("Microsoft.XMLHTTP"):new window.XMLHttpRequest,r.open("GET",e,!0),"overrideMimeType"in r&&r.overrideMimeType("text/plain"),r.onreadystatechange=function(){var s,o;if(4===r.readyState){if(0!==(o=r.status)&&200!==o)throw Error("Could not load "+e);if(s=[r.responseText,n],i||CoffeeScript.run.apply(CoffeeScript,s),t)return t(s)}},r.send(null)},runScripts=function(){var e,t,n,i,r,s,o,a,c,h,l;for(l=window.document.getElementsByTagName("script"),t=["text/coffeescript","text/literate-coffeescript"],e=function(){var e,n,i,r;for(r=[],e=0,n=l.length;n>e;e++)c=l[e],i=c.type,indexOf.call(t,i)>=0&&r.push(c);return r}(),s=0,n=function(){var t;return t=e[s],t instanceof Array?(CoffeeScript.run.apply(CoffeeScript,t),s++,n()):void 0},i=function(i,r){var s,o;return s={literate:i.type===t[1]},o=i.src||i.getAttribute("data-src"),o?CoffeeScript.load(o,function(t){return e[r]=t,n()},s,!0):(s.sourceFiles=["embedded"],e[r]=[i.innerHTML,s])},r=o=0,a=e.length;a>o;r=++o)h=e[r],i(h,r);return n()},window.addEventListener?window.addEventListener("DOMContentLoaded",runScripts,!1):window.attachEvent("onload",runScripts))}.call(this),module.exports}(),_dereq_["./coffee-script"]}();"function"==typeof define&&define.amd?define(function(){return CoffeeScript}):root.CoffeeScript=CoffeeScript})(this); +var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_get=function e(a,t,o){null===a&&(a=Function.prototype);var n=Object.getOwnPropertyDescriptor(a,t);if(n===void 0){var r=Object.getPrototypeOf(a);return null===r?void 0:e(r,t,o)}if("value"in n)return n.value;var l=n.get;return void 0===l?void 0:l.call(o)},_slicedToArray=function(){function e(e,a){var t=[],o=!0,n=!1,r=void 0;try{for(var l=e[Symbol.iterator](),s;!(o=(s=l.next()).done)&&(t.push(s.value),!(a&&t.length===a));o=!0);}catch(e){n=!0,r=e}finally{try{!o&&l["return"]&&l["return"]()}finally{if(n)throw r}}return t}return function(a,t){if(Array.isArray(a))return a;if(Symbol.iterator in Object(a))return e(a,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_createClass=function(){function e(e,a){for(var t=0,o;t=6"},directories:{lib:"./lib/coffeescript"},main:"./lib/coffeescript/index",browser:"./lib/coffeescript/browser",bin:{coffee:"./bin/coffee",cake:"./bin/cake"},files:["bin","lib","register.js","repl.js"],scripts:{test:"node ./bin/cake test","test-harmony":"node --harmony ./bin/cake test"},homepage:"http://coffeescript.org",bugs:"https://github.com/jashkenas/coffeescript/issues",repository:{type:"git",url:"git://github.com/jashkenas/coffeescript.git"},devDependencies:{"babel-core":"~6.26.0","babel-preset-babili":"~0.1.4","babel-preset-env":"~1.6.1","babel-preset-minify":"^0.3.0",codemirror:"^5.32.0",docco:"~0.8.0","highlight.js":"~9.12.0",jison:">=0.4.18","markdown-it":"~8.4.0",underscore:"~1.8.3",webpack:"~3.10.0"},dependencies:{}}}(),require["./helpers"]=function(){var e={};return function(){var a,t,o,n,r,l,s,i;e.starts=function(e,a,t){return a===e.substr(t,a.length)},e.ends=function(e,a,t){var o;return o=a.length,a===e.substr(e.length-o-(t||0),o)},e.repeat=s=function(e,a){var t;for(t="";0>>=1,e+=e;return t},e.compact=function(e){var a,t,o,n;for(n=[],a=0,o=e.length;ar)return n.returnOnNegativeLevel?void 0:o.call(this,i,e);e+=1}return e-1}},{key:"removeLeadingNewlines",value:function removeLeadingNewlines(){var e,a,t,o,n,r,l,s,i;for(l=this.tokens,e=a=0,n=l.length;a=n&&n>r;o=0<=r?++n:--n)if(null!=i[o]&&("string"==typeof i[o]&&(i[o]=[i[o]]),l=this.tag(e+o+t),0>a.call(i[o],l)))return-1;return e+o+t-1}},{key:"looksObjectish",value:function looksObjectish(e){var t,o;return-1!==this.indexOfTag(e,"@",null,":")||-1!==this.indexOfTag(e,null,":")||(o=this.indexOfTag(e,c),!!(-1!==o&&(t=null,this.detectEnd(o+1,function(e){var t;return t=e[0],0<=a.call(d,t)},function(e,a){return t=a}),":"===this.tag(t+1))))}},{key:"findTagsBackwards",value:function findTagsBackwards(e,t){var o,n,r,l,s,i,p;for(o=[];0<=e&&(o.length||(l=this.tag(e),0>a.call(t,l))&&((s=this.tag(e),0>a.call(c,s))||this.tokens[e].generated)&&(i=this.tag(e),0>a.call(g,i)));)(n=this.tag(e),0<=a.call(d,n))&&o.push(this.tag(e)),(r=this.tag(e),0<=a.call(c,r))&&o.length&&o.pop(),e-=1;return p=this.tag(e),0<=a.call(t,p)}},{key:"addImplicitBracesAndParens",value:function addImplicitBracesAndParens(){var e,t;return e=[],t=null,this.scanTokens(function(o,l,f){var i=this,y=_slicedToArray(o,1),T,v,b,$,_,C,D,E,x,I,S,A,R,k,O,L,F,w,P,j,M,U,V,s,B,G,H,W,X,Y,q,z,J;J=y[0];var K=P=0"!==w&&"->"!==w&&"["!==w&&"("!==w&&","!==w&&"{"!==w&&"ELSE"!==w&&"="!==w)for(;D()||x()&&":"!==w;)D()?T():v();return E()&&e.pop(),e.push([J,l]),b(1)}if(0<=a.call(c,J))return e.push([J,l]),b(1);if(0<=a.call(d,J)){for(;C();)D()?T():x()?v():e.pop();t=e.pop()}if(_=function(){var e,t,n,r;return(n=i.findTagsBackwards(l,["FOR"])&&i.findTagsBackwards(l,["FORIN","FOROF","FORFROM"]),e=n||i.findTagsBackwards(l,["WHILE","UNTIL","LOOP","LEADING_WHEN"]),!!e)&&(t=!1,r=o[2].first_line,i.detectEnd(l,function(e){var t;return t=e[0],0<=a.call(g,t)},function(e,a){var o=f[a-1]||[],n=_slicedToArray(o,3),l;return w=n[0],l=n[2].first_line,t=r===l&&("->"===w||"=>"===w)},{returnOnNegativeLevel:!0}),t)},(0<=a.call(m,J)&&o.spaced||"?"===J&&0a.call(d,e):return t[1];case"@"!==this.tag(l-2):return l-2;default:return l-1}}.call(this),z=0>=V||(M=this.tag(V-1),0<=a.call(g,M))||f[V-1].newLine,W()){var ae=W(),te=_slicedToArray(ae,2);if(H=te[0],B=te[1],("{"===H||"INDENT"===H&&"{"===this.tag(B-1))&&(z||","===this.tag(V-1)||"{"===this.tag(V-1)))return b(1)}return q(V,!!z),b(2)}if(0<=a.call(g,J))for(R=e.length-1;0<=R&&(G=e[R],!!I(G));R+=-1)A(G)&&(G[2].sameLine=!1);if(k="OUTDENT"===w||P.newLine,0<=a.call(u,J)||0<=a.call(n,J)&&k||(".."===J||"..."===J)&&this.findTagsBackwards(l,["INDEX_START"]))for(;C();){var oe=W(),ne=_slicedToArray(oe,3);H=ne[0],B=ne[1];var re=ne[2];if(s=re.sameLine,z=re.startsLine,D()&&","!==w||","===w&&"TERMINATOR"===J&&null==O)T();else if(x()&&s&&"TERMINATOR"!==J&&":"!==w&&!(("POST_IF"===J||"FOR"===J||"WHILE"===J||"UNTIL"===J)&&z&&$(l+1)))v();else if(x()&&"TERMINATOR"===J&&","!==w&&!(z&&this.looksObjectish(l+1)))v();else break}if(","===J&&!this.looksObjectish(l+1)&&x()&&"FOROF"!==(U=this.tag(l+2))&&"FORIN"!==U&&("TERMINATOR"!==O||!this.looksObjectish(l+2)))for(F="OUTDENT"===O?1:0;x();)v(l+F);return b(1)})}},{key:"enforceValidCSXAttributes",value:function enforceValidCSXAttributes(){return this.scanTokens(function(e,a,t){var o,n;return e.csxColon&&(o=t[a+1],"STRING_START"!==(n=o[0])&&"STRING"!==n&&"("!==n&&C("expected wrapped or quoted JSX attribute",o[2])),1})}},{key:"rescueStowawayComments",value:function rescueStowawayComments(){var e,t,o;return e=function(e,a,t,o){return"TERMINATOR"!==t[a][0]&&t[o](N("TERMINATOR","\n",t[a])),t[o](N("JS","",t[a],e))},o=function(t,o,n){var r,s,i,d,c,p,u;for(s=o;s!==n.length&&(c=n[s][0],0<=a.call(l,c));)s++;if(!(s===n.length||(p=n[s][0],0<=a.call(l,p)))){for(u=t.comments,i=0,d=u.length;ia.call(n,r)))return this.tokens.splice(o,0,N("(","(",this.tokens[o])),this.tokens.splice(t+1,0,N(")",")",this.tokens[t]))},o=null,this.scanTokens(function(a,n){var r,l;return"do"===a[1]?(o=n,r=n+1,"PARAM_START"===this.tag(n+1)&&(r=null,this.detectEnd(n+1,function(e,a){return"PARAM_END"===this.tag(a-1)},function(e,a){return r=a})),null==r||"->"!==(l=this.tag(r))&&"=>"!==l||"INDENT"!==this.tag(r+1))?1:(this.detectEnd(r+1,t,e),2):1})}},{key:"normalizeLines",value:function normalizeLines(){var e=this,t,o,r,l,d,c,p,u,m;return m=d=u=null,p=null,c=null,l=[],r=function(e,t){var o,r,l,i;return";"!==e[1]&&(o=e[0],0<=a.call(y,o))&&!("TERMINATOR"===e[0]&&(r=this.tag(t+1),0<=a.call(s,r)))&&!("ELSE"===e[0]&&("THEN"!==m||c||p))&&("CATCH"!==(l=e[0])&&"FINALLY"!==l||"->"!==m&&"=>"!==m)||(i=e[0],0<=a.call(n,i))&&(this.tokens[t-1].newLine||"OUTDENT"===this.tokens[t-1][0])},t=function(e,a){return"ELSE"===e[0]&&"THEN"===m&&l.pop(),this.tokens.splice(","===this.tag(a-1)?a-1:a,0,u)},o=function(a,t){var o,n,r;if(r=l.length,!(0"===v||"=>"===v)&&this.findTagsBackwards(n,["IF","WHILE","FOR","UNTIL","SWITCH","WHEN","LEADING_WHEN","[","INDEX_START"])&&!this.findTagsBackwards(n,["THEN","..","..."]),"TERMINATOR"===v){if("ELSE"===this.tag(n+1)&&"OUTDENT"!==this.tag(n-1))return i.splice.apply(i,[n,1].concat(_toConsumableArray(this.indentation()))),1;if(k=this.tag(n+1),0<=a.call(s,k))return i.splice(n,1),0}if("CATCH"===v)for(f=y=1;2>=y;f=++y)if("OUTDENT"===(N=this.tag(n+f))||"TERMINATOR"===N||"FINALLY"===N)return i.splice.apply(i,[n+f,0].concat(_toConsumableArray(this.indentation()))),2+f;if(("->"===v||"=>"===v)&&(","===this.tag(n+1)||"."===this.tag(n+1)&&e.newLine)){var b=this.indentation(i[n]),$=_slicedToArray(b,2);return d=$[0],u=$[1],i.splice(n+1,0,d,u),1}if(0<=a.call(T,v)&&"INDENT"!==this.tag(n+1)&&("ELSE"!==v||"IF"!==this.tag(n+1))&&!g){m=v;var _=this.indentation(i[n]),C=_slicedToArray(_,2);return d=C[0],u=C[1],"THEN"===m&&(d.fromThen=!0),"THEN"===v&&(p=this.findTagsBackwards(n,["LEADING_WHEN"])&&"IF"===this.tag(n+1),c=this.findTagsBackwards(n,["IF"])&&"IF"===this.tag(n+1)),"THEN"===v&&this.findTagsBackwards(n,["IF"])&&l.push(n),"ELSE"===v&&"OUTDENT"!==this.tag(n-1)&&(n=o(i,n)),i.splice(n+1,0,d),this.detectEnd(n+2,r,t),"THEN"===v&&i.splice(n,1),1}return 1})}},{key:"tagPostfixConditionals",value:function tagPostfixConditionals(){var e,t,o;return o=null,t=function(e,t){var o=_slicedToArray(e,1),n,r;r=o[0];var l=_slicedToArray(this.tokens[t-1],1);return n=l[0],"TERMINATOR"===r||"INDENT"===r&&0>a.call(T,n)},e=function(e){if("INDENT"!==e[0]||e.generated&&!e.fromThen)return o[0]="POST_"+o[0]},this.scanTokens(function(a,n){return"IF"===a[0]?(o=a,this.detectEnd(n+1,t,e),1):1})}},{key:"indentation",value:function indentation(e){var a,t;return a=["INDENT",2],t=["OUTDENT",2],e?(a.generated=t.generated=!0,a.origin=t.origin=e):a.explicit=t.explicit=!0,[a,t]}},{key:"tag",value:function tag(e){var a;return null==(a=this.tokens[e])?void 0:a[0]}}]),e}();return e.prototype.generate=N,e}.call(this),o=[["(",")"],["[","]"],["{","}"],["INDENT","OUTDENT"],["CALL_START","CALL_END"],["PARAM_START","PARAM_END"],["INDEX_START","INDEX_END"],["STRING_START","STRING_END"],["REGEX_START","REGEX_END"]],e.INVERSES=i={},c=[],d=[],v=0,b=o.length;v","=>","[","(","{","--","++"],h=["+","-"],u=["POST_IF","FOR","WHILE","UNTIL","WHEN","BY","LOOP","TERMINATOR"],T=["ELSE","->","=>","TRY","FINALLY","THEN"],y=["TERMINATOR","CATCH","FINALLY","ELSE","OUTDENT","LEADING_WHEN"],g=["TERMINATOR","INDENT","OUTDENT"],n=[".","?.","::","?::"],r=["IF","TRY","FINALLY","CATCH","CLASS","SWITCH"],l=["(",")","[","]","{","}",".","..","...",",","=","++","--","?","AS","AWAIT","CALL_START","CALL_END","DEFAULT","ELSE","EXTENDS","EXPORT","FORIN","FOROF","FORFROM","IMPORT","INDENT","INDEX_SOAK","LEADING_WHEN","OUTDENT","PARAM_END","REGEX_START","REGEX_END","RETURN","STRING_END","THROW","UNARY","YIELD"].concat(h.concat(u.concat(n.concat(r))))}.call(this),{exports:e}.exports}(),require["./lexer"]=function(){var e={};return function(){var a=[].indexOf,t=[].slice,o=require("./rewriter"),n,r,l,s,i,d,c,p,u,m,h,g,f,y,k,T,N,v,b,$,_,C,D,E,x,I,S,A,R,O,L,F,w,P,j,M,U,V,B,G,H,W,X,Y,q,z,J,K,Z,Q,ee,ae,te,oe,ne,re,le,se,ie,de,ce,pe,ue,me,he,ge,fe,ye,ke,Te,Ne,ve,be,$e;z=o.Rewriter,S=o.INVERSES;var _e=require("./helpers");he=_e.count,be=_e.starts,me=_e.compact,ve=_e.repeat,ge=_e.invertLiterate,Ne=_e.merge,ue=_e.attachCommentsToNode,Te=_e.locationDataToString,$e=_e.throwSyntaxError,e.Lexer=w=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"tokenize",value:function tokenize(e){var a=1this.indent){if(s)return this.indebt=d-this.indent,this.suppressNewlines(),o.length;if(!this.tokens.length)return this.baseIndent=this.indent=d,this.indentLiteral=l,o.length;t=d-this.indent+this.outdebt,this.token("INDENT",t,o.length-d,d),this.indents.push(t),this.ends.push({tag:"OUTDENT"}),this.outdebt=this.indebt=0,this.indent=d,this.indentLiteral=l}else da.call(u,h)))))return 0;var N=d,v=_slicedToArray(N,3);return i=v[0],s=v[1],o=v[2],c=this.token("CSX_TAG",s,1,s.length),this.token("CALL_START","("),this.token("[","["),this.ends.push({tag:"/>",origin:c,name:s}),this.csxDepth++,s.length+1}if(n=this.atCSXTag()){if("/>"===this.chunk.slice(0,2))return this.pair("/>"),this.token("]","]",0,2),this.token("CALL_END",")",0,2),this.csxDepth--,2;if("{"===l)return":"===m?(g=this.token("(","("),this.csxObjAttribute[this.csxDepth]=!1):(g=this.token("{","{"),this.csxObjAttribute[this.csxDepth]=!0),this.ends.push({tag:"}",origin:g}),1;if(">"===l){this.pair("/>"),c=this.token("]","]"),this.token(",",",");var b=this.matchWithInterpolations(I,">",""})}),d=y.exec(this.chunk.slice(r))||f.exec(this.chunk.slice(r)),d&&d[1]===n.name||this.error("expected corresponding CSX closing tag for "+n.name,n.origin[2]),t=r+n.name.length,">"!==this.chunk[t]&&this.error("missing closing > after tag name",{offset:t,length:1}),this.token("CALL_END",")",r,n.name.length+1),this.csxDepth--,t+1}return 0}return this.atCSXTag(1)?"}"===l?(this.pair(l),this.csxObjAttribute[this.csxDepth]?(this.token("}","}"),this.csxObjAttribute[this.csxDepth]=!1):this.token(")",")"),this.token(",",","),1):0:0}},{key:"atCSXTag",value:function atCSXTag(){var e=0"===(null==t?void 0:t.tag)&&t}},{key:"literalToken",value:function literalToken(){var e,t,o,n,r,i,d,c,p,u,g,f,y;if(e=V.exec(this.chunk)){var k=e,T=_slicedToArray(k,1);y=T[0],s.test(y)&&this.tagParameters()}else y=this.chunk.charAt(0);if(g=y,n=this.prev(),n&&0<=a.call(["="].concat(_toConsumableArray(h)),y)&&(u=!1,"="!==y||"||"!==(r=n[1])&&"&&"!==r||n.spaced||(n[0]="COMPOUND_ASSIGN",n[1]+="=",n=this.tokens[this.tokens.length-2],u=!0),n&&"PROPERTY"!==n[0]&&(o=null==(i=n.origin)?n:i,t=ye(n[1],o[1]),t&&this.error(t,o[2])),u))return y.length;if("{"===y&&this.seenImport?this.importSpecifierList=!0:this.importSpecifierList&&"}"===y?this.importSpecifierList=!1:"{"===y&&"EXPORT"===(null==n?void 0:n[0])?this.exportSpecifierList=!0:this.exportSpecifierList&&"}"===y&&(this.exportSpecifierList=!1),";"===y)(d=null==n?void 0:n[0],0<=a.call(["="].concat(_toConsumableArray(ie)),d))&&this.error("unexpected ;"),this.seenFor=this.seenImport=this.seenExport=!1,g="TERMINATOR";else if("*"===y&&"EXPORT"===(null==n?void 0:n[0]))g="EXPORT_ALL";else if(0<=a.call(P,y))g="MATH";else if(0<=a.call(m,y))g="COMPARE";else if(0<=a.call(h,y))g="COMPOUND_ASSIGN";else if(0<=a.call(le,y))g="UNARY";else if(0<=a.call(se,y))g="UNARY_MATH";else if(0<=a.call(J,y))g="SHIFT";else if("?"===y&&(null==n?void 0:n.spaced))g="BIN?";else if(n)if("("===y&&!n.spaced&&(c=n[0],0<=a.call(l,c)))"?"===n[0]&&(n[0]="FUNC_EXIST"),g="CALL_START";else if("["===y&&((p=n[0],0<=a.call(x,p))&&!n.spaced||"::"===n[0]))switch(g="INDEX_START",n[0]){case"?":n[0]="INDEX_SOAK"}return f=this.makeToken(g,y),"("===y||"{"===y||"["===y?this.ends.push({tag:S[y],origin:f}):")"===y||"}"===y||"]"===y?this.pair(y):void 0,this.tokens.push(this.makeToken(g,y)),y.length}},{key:"tagParameters",value:function tagParameters(){var e,a,t,o,n;if(")"!==this.tag())return this;for(t=[],n=this.tokens,e=n.length,a=n[--e],a[0]="PARAM_END";o=n[--e];)switch(o[0]){case")":t.push(o);break;case"(":case"CALL_START":if(t.length)t.pop();else return"("===o[0]?(o[0]="PARAM_START",this):(a[0]="CALL_END",this)}return this}},{key:"closeIndentation",value:function closeIndentation(){return this.outdentToken(this.indent)}},{key:"matchWithInterpolations",value:function matchWithInterpolations(a,o,n,r){var l,s,i,d,c,p,u,m,h,g,f,y,k,T,N,v,b,$,_,C,D,E;if(null==n&&(n=o),null==r&&(r=/^#\{/),E=[],v=o.length,this.chunk.slice(0,v)!==o)return null;for(C=this.chunk.slice(v);;){var x=a.exec(C),I=_slicedToArray(x,1);if(D=I[0],this.validateEscapes(D,{isRegex:"/"===o.charAt(0),offsetInChunk:v}),E.push(this.makeToken("NEOSTRING",D,v)),C=C.slice(D.length),v+=D.length,!(T=r.exec(C)))break;var S=T,A=_slicedToArray(S,1);f=A[0],g=f.length-1;var R=this.getLineAndColumnFromChunk(v+g),O=_slicedToArray(R,2);k=O[0],u=O[1],_=C.slice(g);var L=(new e).tokenize(_,{line:k,column:u,untilBalanced:!0});if(N=L.tokens,h=L.index,h+=g,c="}"===C[h-1],c){var F,w,P,j;F=N,w=_slicedToArray(F,1),b=w[0],F,P=t.call(N,-1),j=_slicedToArray(P,1),p=j[0],P,b[0]=b[1]="(",p[0]=p[1]=")",p.origin=["","end of interpolation",p[2]]}"TERMINATOR"===(null==($=N[1])?void 0:$[0])&&N.splice(1,1),c||(b=this.makeToken("(","(",v,0),p=this.makeToken(")",")",v+h,0),N=[b].concat(_toConsumableArray(N),[p])),E.push(["TOKENS",N]),C=C.slice(h),v+=h}return C.slice(0,n.length)!==n&&this.error("missing "+n,{length:o.length}),l=E,s=_slicedToArray(l,1),m=s[0],l,i=t.call(E,-1),d=_slicedToArray(i,1),y=d[0],i,m[2].first_column-=o.length,"\n"===y[1].substr(-1)?(y[2].last_line+=1,y[2].last_column=n.length-1):y[2].last_column+=n.length,0===y[1].length&&(y[2].last_column-=1),{tokens:E,index:v+n.length}}},{key:"mergeInterpolationTokens",value:function mergeInterpolationTokens(e,a,o){var n,r,l,s,i,d,c,p,u,m,h,g,f,y,k,T,N,v,b;for(1l&&(f=this.token("+","+"),f[2]={first_line:m[2].first_line,first_column:m[2].first_column,last_line:m[2].first_line,last_column:m[2].first_column}),($=this.tokens).push.apply($,_toConsumableArray(N))}if(h){var E=t.call(e,-1),x=_slicedToArray(E,1);return c=x[0],h.origin=["STRING",null,{first_line:h[2].first_line,first_column:h[2].first_column,last_line:c[2].last_line,last_column:c[2].last_column}],h[2]=h.origin[2],y=this.token("STRING_END",")"),y[2]={first_line:c[2].last_line,first_column:c[2].last_column,last_line:c[2].last_line,last_column:c[2].last_column}}}},{key:"pair",value:function pair(e){var a,o,n,r,l,s,i;if(l=this.ends,a=t.call(l,-1),o=_slicedToArray(a,1),r=o[0],a,e!==(i=null==r?void 0:r.tag)){var d,c;return"OUTDENT"!==i&&this.error("unmatched "+e),s=this.indents,d=t.call(s,-1),c=_slicedToArray(d,1),n=c[0],d,this.outdentToken(n,!0),this.pair(e)}return this.ends.pop()}},{key:"getLineAndColumnFromChunk",value:function getLineAndColumnFromChunk(e){var a,o,n,r,l;if(0===e)return[this.chunkLine,this.chunkColumn];if(l=e>=this.chunk.length?this.chunk:this.chunk.slice(0,+(e-1)+1||9e9),n=he(l,"\n"),a=this.chunkColumn,0e)?o(e):(a=_Mathfloor((e-65536)/1024)+55296,t=(e-65536)%1024+56320,""+o(a)+o(t))}},{key:"replaceUnicodeCodePointEscapes",value:function replaceUnicodeCodePointEscapes(e,t){var o=this,n;return n=null!=t.flags&&0>a.call(t.flags,"u"),e.replace(de,function(e,a,r,l){var s;return a?a:(s=parseInt(r,16),1114111a.call([].concat(_toConsumableArray(R),_toConsumableArray(c)),e):return"keyword '"+t+"' can't be assigned";case 0>a.call(Z,e):return"'"+t+"' can't be assigned";case 0>a.call(q,e):return"reserved word '"+t+"' can't be assigned";default:return!1}},e.isUnassignable=ye,fe=function(e){var a;return"IDENTIFIER"===e[0]?("from"===e[1]&&(e[1][0]="IDENTIFIER",!0),!0):"FOR"!==e[0]&&"{"!==(a=e[1])&&"["!==a&&","!==a&&":"!==a},R=["true","false","null","this","new","delete","typeof","in","instanceof","return","throw","break","continue","debugger","yield","await","if","else","switch","for","while","do","try","catch","finally","class","extends","super","import","export","default"],c=["undefined","Infinity","NaN","then","unless","until","loop","of","by","when"],d={and:"&&",or:"||",is:"==",isnt:"!=",not:"!",yes:"true",no:"false",on:"true",off:"false"},i=function(){var e;for(ke in e=[],d)e.push(ke);return e}(),c=c.concat(i),q=["case","function","var","void","with","const","let","enum","native","implements","interface","package","private","protected","public","static"],Z=["arguments","eval"],e.JS_FORBIDDEN=R.concat(q).concat(Z),n=65279,D=/^(?!\d)((?:(?!\s)[$\w\x7f-\uffff])+)([^\n\S]*:(?!:))?/,y=/^(?![\d<])((?:(?!\s)[\.\-$\w\x7f-\uffff])+)/,f=/^()>/,g=/^(?!\d)((?:(?!\s)[\-$\w\x7f-\uffff])+)([^\S]*=(?!=))?/,U=/^0b[01]+|^0o[0-7]+|^0x[\da-f]+|^\d*\.?\d+(?:e[+-]?\d+)?/i,V=/^(?:[-=]>|[-+*\/%<>&|^!?=]=|>>>=?|([-+:])\1|([&|<>*\/%])\2=?|\?(\.|::)|\.{2,3})/,pe=/^[^\n\S]+/,p=/^\s*###([^#][\s\S]*?)(?:###[^\n\S]*|###$)|^(?:\s*#(?!##[^#]).*)+/,s=/^[-=]>/,j=/^(?:\n[^\n\S]*)+/,A=/^`(?!``)((?:[^`\\]|\\[\s\S])*)`/,C=/^```((?:[^`\\]|\\[\s\S]|`(?!``))*)```/,oe=/^(?:'''|"""|'|")/,te=/^(?:[^\\']|\\[\s\S])*/,Q=/^(?:[^\\"#]|\\[\s\S]|\#(?!\{))*/,b=/^(?:[^\\']|\\[\s\S]|'(?!''))*/,N=/^(?:[^\\"#]|\\[\s\S]|"(?!"")|\#(?!\{))*/,I=/^(?:[^\{<])*/,k=/^(?:\{|<(?!\/))/,ae=/((?:\\\\)+)|\\[^\S\n]*\n\s*/g,K=/\s*\n\s*/g,v=/\n+([^\n\S]*)(?=\S)/g,G=/^\/(?!\/)((?:[^[\/\n\\]|\\[^\n]|\[(?:\\[^\n]|[^\]\n\\])*\])*)(\/)?/,H=/^\w*/,ce=/^(?!.*(.).*\1)[imguy]*$/,$=/^(?:[^\\\/#\s]|\\[\s\S]|\/(?!\/\/)|\#(?!\{)|\s+(?:#(?!\{).*)?)*/,_=/((?:\\\\)+)|\\(\s)|\s+(?:#.*)?/g,W=/^(\/|\/{3}\s*)(\*)/,B=/^\/=?\s/,T=/\*\//,F=/^\s*(?:,|\??\.(?![.\d])|::)/,ee=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7]|[1-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,X=/((?:^|[^\\])(?:\\\\)*)\\(?:(0[0-7])|(x(?![\da-fA-F]{2}).{0,2})|(u\{(?![\da-fA-F]{1,}\})[^}]*\}?)|(u(?!\{|[\da-fA-F]{4}).{0,4}))/,de=/(\\\\)|\\u\{([\da-fA-F]+)\}/g,O=/^[^\n\S]*\n/,ne=/\n[^\n\S]*$/,re=/\s+$/,h=["-=","+=","/=","*=","%=","||=","&&=","?=","<<=",">>=",">>>=","&=","^=","|=","**=","//=","%%="],le=["NEW","TYPEOF","DELETE","DO"],se=["!","~"],J=["<<",">>",">>>"],m=["==","!=","<",">","<=",">="],P=["*","/","%","//","%%"],Y=["IN","OF","INSTANCEOF"],r=["TRUE","FALSE"],l=["IDENTIFIER","PROPERTY",")","]","?","@","THIS","SUPER"],x=l.concat(["NUMBER","INFINITY","NAN","STRING","STRING_END","REGEX","REGEX_END","BOOL","NULL","UNDEFINED","}","::"]),u=["IDENTIFIER",")","]","NUMBER"],M=x.concat(["++","--"]),L=["INDENT","OUTDENT","TERMINATOR"],E=[")","}","]"],ie=["\\",".","?.","?::","UNARY","MATH","UNARY_MATH","+","-","**","SHIFT","RELATION","COMPARE","&","^","|","&&","||","BIN?","EXTENDS"]}.call(this),{exports:e}.exports}(),require["./parser"]=function(){var e={},a={exports:e},t=function(){function e(){this.yy={}}var a=function(e,a,t,o){for(t=t||{},o=e.length;o--;t[e[o]]=a);return t},t=[1,24],o=[1,56],n=[1,91],r=[1,92],l=[1,87],s=[1,93],i=[1,94],d=[1,89],c=[1,90],p=[1,64],u=[1,66],m=[1,67],h=[1,68],g=[1,69],f=[1,70],y=[1,72],k=[1,73],T=[1,58],N=[1,42],v=[1,36],b=[1,76],$=[1,77],_=[1,86],C=[1,54],D=[1,59],E=[1,60],x=[1,74],I=[1,75],S=[1,47],A=[1,55],R=[1,71],O=[1,81],L=[1,82],F=[1,83],w=[1,84],P=[1,53],j=[1,80],M=[1,38],U=[1,39],V=[1,40],B=[1,41],G=[1,43],H=[1,44],W=[1,95],X=[1,6,36,47,146],Y=[1,6,35,36,47,69,70,93,127,135,146,149,157],q=[1,113],z=[1,114],J=[1,115],K=[1,110],Z=[1,98],Q=[1,97],ee=[1,96],ae=[1,99],te=[1,100],oe=[1,101],ne=[1,102],re=[1,103],le=[1,104],se=[1,105],ie=[1,106],de=[1,107],ce=[1,108],pe=[1,109],ue=[1,117],me=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],he=[2,196],ge=[1,123],fe=[1,128],ye=[1,124],ke=[1,125],Te=[1,126],Ne=[1,129],ve=[1,122],be=[1,6,35,36,47,69,70,93,127,135,146,148,149,150,156,157,174],$e=[1,6,35,36,45,46,47,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],_e=[2,122],Ce=[2,126],De=[6,35,88,93],Ee=[2,99],xe=[1,141],Ie=[1,135],Se=[1,140],Ae=[1,144],Re=[1,149],Oe=[1,147],Le=[1,151],Fe=[1,155],we=[1,153],Pe=[1,6,35,36,45,46,47,61,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],je=[2,119],Me=[1,6,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Ue=[2,31],Ve=[1,183],Be=[2,86],Ge=[1,187],He=[1,193],We=[1,208],Xe=[1,203],Ye=[1,212],qe=[1,209],ze=[1,214],Je=[1,215],Ke=[1,217],Ze=[14,32,35,38,39,43,45,46,49,50,54,55,56,57,58,59,68,77,84,85,86,90,91,107,110,112,120,129,130,140,144,145,148,150,153,156,167,173,176,177,178,179,180,181],Qe=[1,6,35,36,45,46,47,61,69,70,80,81,83,88,93,101,102,103,105,109,111,125,126,127,135,146,148,149,150,156,157,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],ea=[1,228],aa=[2,142],ta=[1,250],oa=[1,245],na=[1,256],ra=[1,6,35,36,45,46,47,65,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],la=[1,6,33,35,36,45,46,47,61,65,69,70,80,81,83,88,93,101,102,103,105,109,111,117,125,126,127,135,146,148,149,150,156,157,164,165,166,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],sa=[1,6,35,36,45,46,47,52,65,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],ia=[1,286],da=[45,46,126],ca=[1,297],pa=[1,296],ua=[6,35],ma=[2,97],ha=[1,303],ga=[6,35,36,88,93],fa=[6,35,36,61,70,88,93],ya=[1,6,35,36,47,69,70,80,81,83,88,93,101,102,103,105,109,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],ka=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,183,184,185,186,187,188,189,190,191,192,193],Ta=[2,347],Na=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,183,185,186,187,188,189,190,191,192,193],va=[45,46,80,81,101,102,103,105,125,126],ba=[1,330],$a=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174],_a=[2,84],Ca=[1,346],Da=[1,348],Ea=[1,353],xa=[1,355],Ia=[6,35,69,93],Sa=[2,221],Aa=[2,222],Ra=[1,6,35,36,45,46,47,61,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,164,165,166,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Oa=[1,369],La=[6,14,32,35,36,38,39,43,45,46,49,50,54,55,56,57,58,59,68,69,70,77,84,85,86,90,91,93,107,110,112,120,129,130,140,144,145,148,150,153,156,167,173,176,177,178,179,180,181],Fa=[6,35,36,69,93],wa=[6,35,36,69,93,127],Pa=[1,6,35,36,45,46,47,61,65,69,70,80,81,83,88,93,101,102,103,105,109,111,125,126,127,135,146,148,149,150,156,157,164,165,166,174,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],ja=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,157,174],Ma=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,149,157,174],Ua=[2,273],Va=[164,165,166],Ba=[93,164,165,166],Ga=[6,35,109],Ha=[1,393],Wa=[6,35,36,93,109],Xa=[6,35,36,65,93,109],Ya=[1,399],qa=[1,400],za=[6,35,36,61,65,70,80,81,93,109,126],Ja=[6,35,36,70,80,81,93,109,126],Ka=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,178,179,185,186,187,188,189,190,191,192,193],Za=[2,339],Qa=[2,338],et=[1,6,35,36,45,46,47,52,69,70,80,81,83,88,93,101,102,103,105,109,125,126,127,135,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],at=[1,422],tt=[14,32,38,39,43,45,46,49,50,54,55,56,57,58,59,68,77,83,84,85,86,90,91,107,110,112,120,129,130,140,144,145,148,150,153,156,167,173,176,177,178,179,180,181],ot=[2,207],nt=[6,35,36],rt=[2,98],lt=[1,431],st=[1,432],it=[1,6,35,36,47,69,70,80,81,83,88,93,101,102,103,105,109,127,135,142,143,146,148,149,150,156,157,169,171,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],dt=[1,312],ct=[36,169,171],pt=[1,6,36,47,69,70,83,88,93,109,127,135,146,149,157,174],ut=[1,467],mt=[1,473],ht=[1,6,35,36,47,69,70,93,127,135,146,149,157,174],gt=[2,113],ft=[1,486],yt=[1,487],kt=[6,35,36,69],Tt=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,169,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Nt=[1,6,35,36,47,69,70,93,127,135,146,149,157,169],vt=[2,286],bt=[2,287],$t=[2,302],_t=[1,510],Ct=[1,511],Dt=[6,35,36,109],Et=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,150,156,157,174],xt=[1,532],It=[6,35,36,93,127],St=[6,35,36,93],At=[1,6,35,36,47,69,70,83,88,93,109,127,135,142,146,148,149,150,156,157,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Rt=[35,93],Ot=[1,560],Lt=[1,561],Ft=[1,567],wt=[1,568],Pt=[2,258],jt=[2,261],Mt=[2,274],Ut=[1,617],Vt=[1,618],Bt=[2,288],Gt=[2,292],Ht=[2,289],Wt=[2,293],Xt=[2,290],Yt=[2,291],qt=[2,303],zt=[2,304],Jt=[1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,174],Kt=[2,294],Zt=[2,296],Qt=[2,298],eo=[2,300],ao=[2,295],to=[2,297],oo=[2,299],no=[2,301],ro={trace:function(){},yy:{},symbols_:{error:2,Root:3,Body:4,Line:5,TERMINATOR:6,Expression:7,ExpressionLine:8,Statement:9,FuncDirective:10,YieldReturn:11,AwaitReturn:12,Return:13,STATEMENT:14,Import:15,Export:16,Value:17,Code:18,Operation:19,Assign:20,If:21,Try:22,While:23,For:24,Switch:25,Class:26,Throw:27,Yield:28,CodeLine:29,IfLine:30,OperationLine:31,YIELD:32,FROM:33,Block:34,INDENT:35,OUTDENT:36,Identifier:37,IDENTIFIER:38,CSX_TAG:39,Property:40,PROPERTY:41,AlphaNumeric:42,NUMBER:43,String:44,STRING:45,STRING_START:46,STRING_END:47,Regex:48,REGEX:49,REGEX_START:50,Invocation:51,REGEX_END:52,Literal:53,JS:54,UNDEFINED:55,NULL:56,BOOL:57,INFINITY:58,NAN:59,Assignable:60,"=":61,AssignObj:62,ObjAssignable:63,ObjRestValue:64,":":65,SimpleObjAssignable:66,ThisProperty:67,"[":68,"]":69,"...":70,ObjSpreadExpr:71,ObjSpreadIdentifier:72,Object:73,Parenthetical:74,Super:75,This:76,SUPER:77,Arguments:78,ObjSpreadAccessor:79,".":80,INDEX_START:81,IndexValue:82,INDEX_END:83,RETURN:84,AWAIT:85,PARAM_START:86,ParamList:87,PARAM_END:88,FuncGlyph:89,"->":90,"=>":91,OptComma:92,",":93,Param:94,ParamVar:95,Array:96,Splat:97,SimpleAssignable:98,Accessor:99,Range:100,"?.":101,"::":102,"?::":103,Index:104,INDEX_SOAK:105,Slice:106,"{":107,AssignList:108,"}":109,CLASS:110,EXTENDS:111,IMPORT:112,ImportDefaultSpecifier:113,ImportNamespaceSpecifier:114,ImportSpecifierList:115,ImportSpecifier:116,AS:117,DEFAULT:118,IMPORT_ALL:119,EXPORT:120,ExportSpecifierList:121,EXPORT_ALL:122,ExportSpecifier:123,OptFuncExist:124,FUNC_EXIST:125,CALL_START:126,CALL_END:127,ArgList:128,THIS:129,"@":130,Elisions:131,ArgElisionList:132,OptElisions:133,RangeDots:134,"..":135,Arg:136,ArgElision:137,Elision:138,SimpleArgs:139,TRY:140,Catch:141,FINALLY:142,CATCH:143,THROW:144,"(":145,")":146,WhileLineSource:147,WHILE:148,WHEN:149,UNTIL:150,WhileSource:151,Loop:152,LOOP:153,ForBody:154,ForLineBody:155,FOR:156,BY:157,ForStart:158,ForSource:159,ForLineSource:160,ForVariables:161,OWN:162,ForValue:163,FORIN:164,FOROF:165,FORFROM:166,SWITCH:167,Whens:168,ELSE:169,When:170,LEADING_WHEN:171,IfBlock:172,IF:173,POST_IF:174,IfBlockLine:175,UNARY:176,UNARY_MATH:177,"-":178,"+":179,"--":180,"++":181,"?":182,MATH:183,"**":184,SHIFT:185,COMPARE:186,"&":187,"^":188,"|":189,"&&":190,"||":191,"BIN?":192,RELATION:193,COMPOUND_ASSIGN:194,$accept:0,$end:1},terminals_:{2:"error",6:"TERMINATOR",14:"STATEMENT",32:"YIELD",33:"FROM",35:"INDENT",36:"OUTDENT",38:"IDENTIFIER",39:"CSX_TAG",41:"PROPERTY",43:"NUMBER",45:"STRING",46:"STRING_START",47:"STRING_END",49:"REGEX",50:"REGEX_START",52:"REGEX_END",54:"JS",55:"UNDEFINED",56:"NULL",57:"BOOL",58:"INFINITY",59:"NAN",61:"=",65:":",68:"[",69:"]",70:"...",77:"SUPER",80:".",81:"INDEX_START",83:"INDEX_END",84:"RETURN",85:"AWAIT",86:"PARAM_START",88:"PARAM_END",90:"->",91:"=>",93:",",101:"?.",102:"::",103:"?::",105:"INDEX_SOAK",107:"{",109:"}",110:"CLASS",111:"EXTENDS",112:"IMPORT",117:"AS",118:"DEFAULT",119:"IMPORT_ALL",120:"EXPORT",122:"EXPORT_ALL",125:"FUNC_EXIST",126:"CALL_START",127:"CALL_END",129:"THIS",130:"@",135:"..",140:"TRY",142:"FINALLY",143:"CATCH",144:"THROW",145:"(",146:")",148:"WHILE",149:"WHEN",150:"UNTIL",153:"LOOP",156:"FOR",157:"BY",162:"OWN",164:"FORIN",165:"FOROF",166:"FORFROM",167:"SWITCH",169:"ELSE",171:"LEADING_WHEN",173:"IF",174:"POST_IF",176:"UNARY",177:"UNARY_MATH",178:"-",179:"+",180:"--",181:"++",182:"?",183:"MATH",184:"**",185:"SHIFT",186:"COMPARE",187:"&",188:"^",189:"|",190:"&&",191:"||",192:"BIN?",193:"RELATION",194:"COMPOUND_ASSIGN"},productions_:[0,[3,0],[3,1],[4,1],[4,3],[4,2],[5,1],[5,1],[5,1],[5,1],[10,1],[10,1],[9,1],[9,1],[9,1],[9,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[8,1],[8,1],[8,1],[28,1],[28,2],[28,3],[34,2],[34,3],[37,1],[37,1],[40,1],[42,1],[42,1],[44,1],[44,3],[48,1],[48,3],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[53,1],[20,3],[20,4],[20,5],[62,1],[62,1],[62,3],[62,5],[62,3],[62,5],[66,1],[66,1],[66,1],[66,3],[63,1],[63,1],[64,2],[64,2],[64,2],[64,2],[71,1],[71,1],[71,1],[71,1],[71,1],[71,2],[71,2],[71,2],[72,2],[72,2],[79,2],[79,3],[13,2],[13,4],[13,1],[11,3],[11,2],[12,3],[12,2],[18,5],[18,2],[29,5],[29,2],[89,1],[89,1],[92,0],[92,1],[87,0],[87,1],[87,3],[87,4],[87,6],[94,1],[94,2],[94,2],[94,3],[94,1],[95,1],[95,1],[95,1],[95,1],[97,2],[97,2],[98,1],[98,2],[98,2],[98,1],[60,1],[60,1],[60,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[75,3],[75,4],[99,2],[99,2],[99,2],[99,2],[99,1],[99,1],[104,3],[104,2],[82,1],[82,1],[73,4],[108,0],[108,1],[108,3],[108,4],[108,6],[26,1],[26,2],[26,3],[26,4],[26,2],[26,3],[26,4],[26,5],[15,2],[15,4],[15,4],[15,5],[15,7],[15,6],[15,9],[115,1],[115,3],[115,4],[115,4],[115,6],[116,1],[116,3],[116,1],[116,3],[113,1],[114,3],[16,3],[16,5],[16,2],[16,4],[16,5],[16,6],[16,3],[16,5],[16,4],[16,7],[121,1],[121,3],[121,4],[121,4],[121,6],[123,1],[123,3],[123,3],[123,1],[123,3],[51,3],[51,3],[51,3],[124,0],[124,1],[78,2],[78,4],[76,1],[76,1],[67,2],[96,2],[96,3],[96,4],[134,1],[134,1],[100,5],[100,5],[106,3],[106,2],[106,3],[106,2],[106,2],[106,1],[128,1],[128,3],[128,4],[128,4],[128,6],[136,1],[136,1],[136,1],[136,1],[132,1],[132,3],[132,4],[132,4],[132,6],[137,1],[137,2],[133,1],[133,2],[131,1],[131,2],[138,1],[139,1],[139,1],[139,3],[139,3],[22,2],[22,3],[22,4],[22,5],[141,3],[141,3],[141,2],[27,2],[27,4],[74,3],[74,5],[147,2],[147,4],[147,2],[147,4],[151,2],[151,4],[151,4],[151,2],[151,4],[151,4],[23,2],[23,2],[23,2],[23,2],[23,1],[152,2],[152,2],[24,2],[24,2],[24,2],[24,2],[154,2],[154,4],[154,2],[155,4],[155,2],[158,2],[158,3],[163,1],[163,1],[163,1],[163,1],[161,1],[161,3],[159,2],[159,2],[159,4],[159,4],[159,4],[159,4],[159,4],[159,4],[159,6],[159,6],[159,6],[159,6],[159,6],[159,6],[159,6],[159,6],[159,2],[159,4],[159,4],[160,2],[160,2],[160,4],[160,4],[160,4],[160,4],[160,4],[160,4],[160,6],[160,6],[160,6],[160,6],[160,6],[160,6],[160,6],[160,6],[160,2],[160,4],[160,4],[25,5],[25,5],[25,7],[25,7],[25,4],[25,6],[168,1],[168,2],[170,3],[170,4],[172,3],[172,5],[21,1],[21,3],[21,3],[21,3],[175,3],[175,5],[30,1],[30,3],[30,3],[30,3],[31,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,2],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,3],[19,5],[19,4]],performAction:function(e,a,t,o,n,r,l){var s=r.length-1;switch(n){case 1:return this.$=o.addDataToNode(o,l[s],l[s])(new o.Block);break;case 2:return this.$=r[s];break;case 3:this.$=o.addDataToNode(o,l[s],l[s])(o.Block.wrap([r[s]]));break;case 4:this.$=o.addDataToNode(o,l[s-2],l[s])(r[s-2].push(r[s]));break;case 5:this.$=r[s-1];break;case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 14:case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 40:case 45:case 47:case 57:case 62:case 63:case 64:case 66:case 67:case 72:case 73:case 74:case 75:case 76:case 97:case 98:case 109:case 110:case 111:case 112:case 118:case 119:case 122:case 127:case 136:case 221:case 222:case 223:case 225:case 237:case 238:case 280:case 281:case 330:case 336:case 342:this.$=r[s];break;case 13:this.$=o.addDataToNode(o,l[s],l[s])(new o.StatementLiteral(r[s]));break;case 31:this.$=o.addDataToNode(o,l[s],l[s])(new o.Op(r[s],new o.Value(new o.Literal(""))));break;case 32:case 346:case 347:case 348:case 351:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op(r[s-1],r[s]));break;case 33:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Op(r[s-2].concat(r[s-1]),r[s]));break;case 34:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Block);break;case 35:case 83:case 137:this.$=o.addDataToNode(o,l[s-2],l[s])(r[s-1]);break;case 36:this.$=o.addDataToNode(o,l[s],l[s])(new o.IdentifierLiteral(r[s]));break;case 37:this.$=o.addDataToNode(o,l[s],l[s])(new o.CSXTag(r[s]));break;case 38:this.$=o.addDataToNode(o,l[s],l[s])(new o.PropertyName(r[s]));break;case 39:this.$=o.addDataToNode(o,l[s],l[s])(new o.NumberLiteral(r[s]));break;case 41:this.$=o.addDataToNode(o,l[s],l[s])(new o.StringLiteral(r[s]));break;case 42:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.StringWithInterpolations(r[s-1]));break;case 43:this.$=o.addDataToNode(o,l[s],l[s])(new o.RegexLiteral(r[s]));break;case 44:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.RegexWithInterpolations(r[s-1].args));break;case 46:this.$=o.addDataToNode(o,l[s],l[s])(new o.PassthroughLiteral(r[s]));break;case 48:this.$=o.addDataToNode(o,l[s],l[s])(new o.UndefinedLiteral(r[s]));break;case 49:this.$=o.addDataToNode(o,l[s],l[s])(new o.NullLiteral(r[s]));break;case 50:this.$=o.addDataToNode(o,l[s],l[s])(new o.BooleanLiteral(r[s]));break;case 51:this.$=o.addDataToNode(o,l[s],l[s])(new o.InfinityLiteral(r[s]));break;case 52:this.$=o.addDataToNode(o,l[s],l[s])(new o.NaNLiteral(r[s]));break;case 53:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Assign(r[s-2],r[s]));break;case 54:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Assign(r[s-3],r[s]));break;case 55:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Assign(r[s-4],r[s-1]));break;case 56:case 115:case 120:case 121:case 123:case 124:case 125:case 126:case 128:case 282:case 283:this.$=o.addDataToNode(o,l[s],l[s])(new o.Value(r[s]));break;case 58:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Assign(o.addDataToNode(o,l[s-2])(new o.Value(r[s-2])),r[s],"object",{operatorToken:o.addDataToNode(o,l[s-1])(new o.Literal(r[s-1]))}));break;case 59:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Assign(o.addDataToNode(o,l[s-4])(new o.Value(r[s-4])),r[s-1],"object",{operatorToken:o.addDataToNode(o,l[s-3])(new o.Literal(r[s-3]))}));break;case 60:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Assign(o.addDataToNode(o,l[s-2])(new o.Value(r[s-2])),r[s],null,{operatorToken:o.addDataToNode(o,l[s-1])(new o.Literal(r[s-1]))}));break;case 61:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Assign(o.addDataToNode(o,l[s-4])(new o.Value(r[s-4])),r[s-1],null,{operatorToken:o.addDataToNode(o,l[s-3])(new o.Literal(r[s-3]))}));break;case 65:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Value(new o.ComputedPropertyName(r[s-1])));break;case 68:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Splat(new o.Value(r[s-1])));break;case 69:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Splat(new o.Value(r[s])));break;case 70:case 113:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Splat(r[s-1]));break;case 71:case 114:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Splat(r[s]));break;case 77:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.SuperCall(o.addDataToNode(o,l[s-1])(new o.Super),r[s],!1,r[s-1]));break;case 78:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Call(new o.Value(r[s-1]),r[s]));break;case 79:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Call(r[s-1],r[s]));break;case 80:case 81:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Value(r[s-1]).add(r[s]));break;case 82:case 131:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Access(r[s]));break;case 84:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Return(r[s]));break;case 85:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Return(new o.Value(r[s-1])));break;case 86:this.$=o.addDataToNode(o,l[s],l[s])(new o.Return);break;case 87:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.YieldReturn(r[s]));break;case 88:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.YieldReturn);break;case 89:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.AwaitReturn(r[s]));break;case 90:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.AwaitReturn);break;case 91:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Code(r[s-3],r[s],r[s-1],o.addDataToNode(o,l[s-4])(new o.Literal(r[s-4]))));break;case 92:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Code([],r[s],r[s-1]));break;case 93:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Code(r[s-3],o.addDataToNode(o,l[s])(o.Block.wrap([r[s]])),r[s-1],o.addDataToNode(o,l[s-4])(new o.Literal(r[s-4]))));break;case 94:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Code([],o.addDataToNode(o,l[s])(o.Block.wrap([r[s]])),r[s-1]));break;case 95:case 96:this.$=o.addDataToNode(o,l[s],l[s])(new o.FuncGlyph(r[s]));break;case 99:case 142:case 232:this.$=o.addDataToNode(o,l[s],l[s])([]);break;case 100:case 143:case 162:case 183:case 216:case 230:case 234:case 284:this.$=o.addDataToNode(o,l[s],l[s])([r[s]]);break;case 101:case 144:case 163:case 184:case 217:case 226:this.$=o.addDataToNode(o,l[s-2],l[s])(r[s-2].concat(r[s]));break;case 102:case 145:case 164:case 185:case 218:this.$=o.addDataToNode(o,l[s-3],l[s])(r[s-3].concat(r[s]));break;case 103:case 146:case 166:case 187:case 220:this.$=o.addDataToNode(o,l[s-5],l[s])(r[s-5].concat(r[s-2]));break;case 104:this.$=o.addDataToNode(o,l[s],l[s])(new o.Param(r[s]));break;case 105:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Param(r[s-1],null,!0));break;case 106:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Param(r[s],null,!0));break;case 107:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Param(r[s-2],r[s]));break;case 108:case 224:this.$=o.addDataToNode(o,l[s],l[s])(new o.Expansion);break;case 116:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s-1].add(r[s]));break;case 117:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Value(r[s-1]).add(r[s]));break;case 129:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Super(o.addDataToNode(o,l[s])(new o.Access(r[s])),[],!1,r[s-2]));break;case 130:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Super(o.addDataToNode(o,l[s-1])(new o.Index(r[s-1])),[],!1,r[s-3]));break;case 132:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Access(r[s],"soak"));break;case 133:this.$=o.addDataToNode(o,l[s-1],l[s])([o.addDataToNode(o,l[s-1])(new o.Access(new o.PropertyName("prototype"))),o.addDataToNode(o,l[s])(new o.Access(r[s]))]);break;case 134:this.$=o.addDataToNode(o,l[s-1],l[s])([o.addDataToNode(o,l[s-1])(new o.Access(new o.PropertyName("prototype"),"soak")),o.addDataToNode(o,l[s])(new o.Access(r[s]))]);break;case 135:this.$=o.addDataToNode(o,l[s],l[s])(new o.Access(new o.PropertyName("prototype")));break;case 138:this.$=o.addDataToNode(o,l[s-1],l[s])(o.extend(r[s],{soak:!0}));break;case 139:this.$=o.addDataToNode(o,l[s],l[s])(new o.Index(r[s]));break;case 140:this.$=o.addDataToNode(o,l[s],l[s])(new o.Slice(r[s]));break;case 141:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Obj(r[s-2],r[s-3].generated));break;case 147:this.$=o.addDataToNode(o,l[s],l[s])(new o.Class);break;case 148:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Class(null,null,r[s]));break;case 149:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Class(null,r[s]));break;case 150:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Class(null,r[s-1],r[s]));break;case 151:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Class(r[s]));break;case 152:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Class(r[s-1],null,r[s]));break;case 153:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Class(r[s-2],r[s]));break;case 154:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Class(r[s-3],r[s-1],r[s]));break;case 155:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.ImportDeclaration(null,r[s]));break;case 156:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.ImportDeclaration(new o.ImportClause(r[s-2],null),r[s]));break;case 157:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.ImportDeclaration(new o.ImportClause(null,r[s-2]),r[s]));break;case 158:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.ImportDeclaration(new o.ImportClause(null,new o.ImportSpecifierList([])),r[s]));break;case 159:this.$=o.addDataToNode(o,l[s-6],l[s])(new o.ImportDeclaration(new o.ImportClause(null,new o.ImportSpecifierList(r[s-4])),r[s]));break;case 160:this.$=o.addDataToNode(o,l[s-5],l[s])(new o.ImportDeclaration(new o.ImportClause(r[s-4],r[s-2]),r[s]));break;case 161:this.$=o.addDataToNode(o,l[s-8],l[s])(new o.ImportDeclaration(new o.ImportClause(r[s-7],new o.ImportSpecifierList(r[s-4])),r[s]));break;case 165:case 186:case 199:case 219:this.$=o.addDataToNode(o,l[s-3],l[s])(r[s-2]);break;case 167:this.$=o.addDataToNode(o,l[s],l[s])(new o.ImportSpecifier(r[s]));break;case 168:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ImportSpecifier(r[s-2],r[s]));break;case 169:this.$=o.addDataToNode(o,l[s],l[s])(new o.ImportSpecifier(new o.Literal(r[s])));break;case 170:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ImportSpecifier(new o.Literal(r[s-2]),r[s]));break;case 171:this.$=o.addDataToNode(o,l[s],l[s])(new o.ImportDefaultSpecifier(r[s]));break;case 172:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ImportNamespaceSpecifier(new o.Literal(r[s-2]),r[s]));break;case 173:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList([])));break;case 174:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList(r[s-2])));break;case 175:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.ExportNamedDeclaration(r[s]));break;case 176:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-2],r[s],null,{moduleDeclaration:"export"})));break;case 177:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-3],r[s],null,{moduleDeclaration:"export"})));break;case 178:this.$=o.addDataToNode(o,l[s-5],l[s])(new o.ExportNamedDeclaration(new o.Assign(r[s-4],r[s-1],null,{moduleDeclaration:"export"})));break;case 179:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportDefaultDeclaration(r[s]));break;case 180:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.ExportDefaultDeclaration(new o.Value(r[s-1])));break;case 181:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.ExportAllDeclaration(new o.Literal(r[s-2]),r[s]));break;case 182:this.$=o.addDataToNode(o,l[s-6],l[s])(new o.ExportNamedDeclaration(new o.ExportSpecifierList(r[s-4]),r[s]));break;case 188:this.$=o.addDataToNode(o,l[s],l[s])(new o.ExportSpecifier(r[s]));break;case 189:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportSpecifier(r[s-2],r[s]));break;case 190:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportSpecifier(r[s-2],new o.Literal(r[s])));break;case 191:this.$=o.addDataToNode(o,l[s],l[s])(new o.ExportSpecifier(new o.Literal(r[s])));break;case 192:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.ExportSpecifier(new o.Literal(r[s-2]),r[s]));break;case 193:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.TaggedTemplateCall(r[s-2],r[s],r[s-1]));break;case 194:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Call(r[s-2],r[s],r[s-1]));break;case 195:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.SuperCall(o.addDataToNode(o,l[s-2])(new o.Super),r[s],r[s-1],r[s-2]));break;case 196:this.$=o.addDataToNode(o,l[s],l[s])(!1);break;case 197:this.$=o.addDataToNode(o,l[s],l[s])(!0);break;case 198:this.$=o.addDataToNode(o,l[s-1],l[s])([]);break;case 200:case 201:this.$=o.addDataToNode(o,l[s],l[s])(new o.Value(new o.ThisLiteral(r[s])));break;case 202:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Value(o.addDataToNode(o,l[s-1])(new o.ThisLiteral(r[s-1])),[o.addDataToNode(o,l[s])(new o.Access(r[s]))],"this"));break;case 203:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Arr([]));break;case 204:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Arr(r[s-1]));break;case 205:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Arr([].concat(r[s-2],r[s-1])));break;case 206:this.$=o.addDataToNode(o,l[s],l[s])("inclusive");break;case 207:this.$=o.addDataToNode(o,l[s],l[s])("exclusive");break;case 208:case 209:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Range(r[s-3],r[s-1],r[s-2]));break;case 210:case 212:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Range(r[s-2],r[s],r[s-1]));break;case 211:case 213:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Range(r[s-1],null,r[s]));break;case 214:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Range(null,r[s],r[s-1]));break;case 215:this.$=o.addDataToNode(o,l[s],l[s])(new o.Range(null,null,r[s]));break;case 227:this.$=o.addDataToNode(o,l[s-3],l[s])(r[s-3].concat(r[s-2],r[s]));break;case 228:this.$=o.addDataToNode(o,l[s-3],l[s])(r[s-2].concat(r[s-1]));break;case 229:this.$=o.addDataToNode(o,l[s-5],l[s])(r[s-5].concat(r[s-4],r[s-2],r[s-1]));break;case 231:case 235:case 331:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s-1].concat(r[s]));break;case 233:this.$=o.addDataToNode(o,l[s-1],l[s])([].concat(r[s]));break;case 236:this.$=o.addDataToNode(o,l[s],l[s])(new o.Elision);break;case 239:case 240:this.$=o.addDataToNode(o,l[s-2],l[s])([].concat(r[s-2],r[s]));break;case 241:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Try(r[s]));break;case 242:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Try(r[s-1],r[s][0],r[s][1]));break;case 243:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Try(r[s-2],null,null,r[s]));break;case 244:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Try(r[s-3],r[s-2][0],r[s-2][1],r[s]));break;case 245:this.$=o.addDataToNode(o,l[s-2],l[s])([r[s-1],r[s]]);break;case 246:this.$=o.addDataToNode(o,l[s-2],l[s])([o.addDataToNode(o,l[s-1])(new o.Value(r[s-1])),r[s]]);break;case 247:this.$=o.addDataToNode(o,l[s-1],l[s])([null,r[s]]);break;case 248:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Throw(r[s]));break;case 249:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Throw(new o.Value(r[s-1])));break;case 250:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Parens(r[s-1]));break;case 251:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Parens(r[s-2]));break;case 252:case 256:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.While(r[s]));break;case 253:case 257:case 258:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.While(r[s-2],{guard:r[s]}));break;case 254:case 259:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.While(r[s],{invert:!0}));break;case 255:case 260:case 261:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.While(r[s-2],{invert:!0,guard:r[s]}));break;case 262:case 263:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s-1].addBody(r[s]));break;case 264:case 265:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s].addBody(o.addDataToNode(o,l[s-1])(o.Block.wrap([r[s-1]]))));break;case 266:this.$=o.addDataToNode(o,l[s],l[s])(r[s]);break;case 267:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.While(o.addDataToNode(o,l[s-1])(new o.BooleanLiteral("true"))).addBody(r[s]));break;case 268:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.While(o.addDataToNode(o,l[s-1])(new o.BooleanLiteral("true"))).addBody(o.addDataToNode(o,l[s])(o.Block.wrap([r[s]]))));break;case 269:case 270:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.For(r[s-1],r[s]));break;case 271:case 272:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.For(r[s],r[s-1]));break;case 273:this.$=o.addDataToNode(o,l[s-1],l[s])({source:o.addDataToNode(o,l[s])(new o.Value(r[s]))});break;case 274:case 276:this.$=o.addDataToNode(o,l[s-3],l[s])({source:o.addDataToNode(o,l[s-2])(new o.Value(r[s-2])),step:r[s]});break;case 275:case 277:this.$=o.addDataToNode(o,l[s-1],l[s])(function(){return r[s].own=r[s-1].own,r[s].ownTag=r[s-1].ownTag,r[s].name=r[s-1][0],r[s].index=r[s-1][1],r[s]}());break;case 278:this.$=o.addDataToNode(o,l[s-1],l[s])(r[s]);break;case 279:this.$=o.addDataToNode(o,l[s-2],l[s])(function(){return r[s].own=!0,r[s].ownTag=o.addDataToNode(o,l[s-1])(new o.Literal(r[s-1])),r[s]}());break;case 285:this.$=o.addDataToNode(o,l[s-2],l[s])([r[s-2],r[s]]);break;case 286:case 305:this.$=o.addDataToNode(o,l[s-1],l[s])({source:r[s]});break;case 287:case 306:this.$=o.addDataToNode(o,l[s-1],l[s])({source:r[s],object:!0});break;case 288:case 289:case 307:case 308:this.$=o.addDataToNode(o,l[s-3],l[s])({source:r[s-2],guard:r[s]});break;case 290:case 291:case 309:case 310:this.$=o.addDataToNode(o,l[s-3],l[s])({source:r[s-2],guard:r[s],object:!0});break;case 292:case 293:case 311:case 312:this.$=o.addDataToNode(o,l[s-3],l[s])({source:r[s-2],step:r[s]});break;case 294:case 295:case 296:case 297:case 313:case 314:case 315:case 316:this.$=o.addDataToNode(o,l[s-5],l[s])({source:r[s-4],guard:r[s-2],step:r[s]});break;case 298:case 299:case 300:case 301:case 317:case 318:case 319:case 320:this.$=o.addDataToNode(o,l[s-5],l[s])({source:r[s-4],step:r[s-2],guard:r[s]});break;case 302:case 321:this.$=o.addDataToNode(o,l[s-1],l[s])({source:r[s],from:!0});break;case 303:case 304:case 322:case 323:this.$=o.addDataToNode(o,l[s-3],l[s])({source:r[s-2],guard:r[s],from:!0});break;case 324:case 325:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Switch(r[s-3],r[s-1]));break;case 326:case 327:this.$=o.addDataToNode(o,l[s-6],l[s])(new o.Switch(r[s-5],r[s-3],r[s-1]));break;case 328:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Switch(null,r[s-1]));break;case 329:this.$=o.addDataToNode(o,l[s-5],l[s])(new o.Switch(null,r[s-3],r[s-1]));break;case 332:this.$=o.addDataToNode(o,l[s-2],l[s])([[r[s-1],r[s]]]);break;case 333:this.$=o.addDataToNode(o,l[s-3],l[s])([[r[s-2],r[s-1]]]);break;case 334:case 340:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.If(r[s-1],r[s],{type:r[s-2]}));break;case 335:case 341:this.$=o.addDataToNode(o,l[s-4],l[s])(r[s-4].addElse(o.addDataToNode(o,l[s-2],l[s])(new o.If(r[s-1],r[s],{type:r[s-2]}))));break;case 337:case 343:this.$=o.addDataToNode(o,l[s-2],l[s])(r[s-2].addElse(r[s]));break;case 338:case 339:case 344:case 345:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.If(r[s],o.addDataToNode(o,l[s-2])(o.Block.wrap([r[s-2]])),{type:r[s-1],statement:!0}));break;case 349:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("-",r[s]));break;case 350:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("+",r[s]));break;case 352:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("--",r[s]));break;case 353:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("++",r[s]));break;case 354:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("--",r[s-1],null,!0));break;case 355:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Op("++",r[s-1],null,!0));break;case 356:this.$=o.addDataToNode(o,l[s-1],l[s])(new o.Existence(r[s-1]));break;case 357:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Op("+",r[s-2],r[s]));break;case 358:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Op("-",r[s-2],r[s]));break;case 359:case 360:case 361:case 362:case 363:case 364:case 365:case 366:case 367:case 368:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Op(r[s-1],r[s-2],r[s]));break;case 369:this.$=o.addDataToNode(o,l[s-2],l[s])(function(){return"!"===r[s-1].charAt(0)?new o.Op(r[s-1].slice(1),r[s-2],r[s]).invert():new o.Op(r[s-1],r[s-2],r[s])}());break;case 370:this.$=o.addDataToNode(o,l[s-2],l[s])(new o.Assign(r[s-2],r[s],r[s-1]));break;case 371:this.$=o.addDataToNode(o,l[s-4],l[s])(new o.Assign(r[s-4],r[s-1],r[s-3]));break;case 372:this.$=o.addDataToNode(o,l[s-3],l[s])(new o.Assign(r[s-3],r[s],r[s-2]))}},table:[{1:[2,1],3:1,4:2,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{1:[3]},{1:[2,2],6:W},a(X,[2,3]),a(Y,[2,6],{151:111,154:112,158:116,148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,7]),a(Y,[2,8],{158:116,151:118,154:119,148:q,150:z,156:J,174:ue}),a(Y,[2,9]),a(me,[2,16],{124:120,99:121,104:127,45:he,46:he,126:he,80:ge,81:fe,101:ye,102:ke,103:Te,105:Ne,125:ve}),a(me,[2,17],{104:127,99:130,80:ge,81:fe,101:ye,102:ke,103:Te,105:Ne}),a(me,[2,18]),a(me,[2,19]),a(me,[2,20]),a(me,[2,21]),a(me,[2,22]),a(me,[2,23]),a(me,[2,24]),a(me,[2,25]),a(me,[2,26]),a(me,[2,27]),a(Y,[2,28]),a(Y,[2,29]),a(Y,[2,30]),a(be,[2,12]),a(be,[2,13]),a(be,[2,14]),a(be,[2,15]),a(Y,[2,10]),a(Y,[2,11]),a($e,_e,{61:[1,131]}),a($e,[2,123]),a($e,[2,124]),a($e,[2,125]),a($e,Ce),a($e,[2,127]),a($e,[2,128]),a(De,Ee,{87:132,94:133,95:134,37:136,67:137,96:138,73:139,38:n,39:r,68:xe,70:Ie,107:_,130:Se}),{5:143,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,34:142,35:Ae,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:145,8:146,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:150,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:156,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:157,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:158,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:[1,159],85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{17:161,18:162,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:163,67:79,68:y,73:62,74:31,75:35,76:34,77:k,86:Le,89:152,90:b,91:$,96:61,98:160,100:32,107:_,129:x,130:I,145:R},{17:161,18:162,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:163,67:79,68:y,73:62,74:31,75:35,76:34,77:k,86:Le,89:152,90:b,91:$,96:61,98:164,100:32,107:_,129:x,130:I,145:R},a(Pe,je,{180:[1,165],181:[1,166],194:[1,167]}),a(me,[2,336],{169:[1,168]}),{34:169,35:Ae},{34:170,35:Ae},{34:171,35:Ae},a(me,[2,266]),{34:172,35:Ae},{34:173,35:Ae},{7:174,8:175,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:[1,176],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Me,[2,147],{53:30,74:31,100:32,51:33,76:34,75:35,96:61,73:62,42:63,48:65,37:78,67:79,44:88,89:152,17:161,18:162,60:163,34:177,98:179,35:Ae,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,86:Le,90:b,91:$,107:_,111:[1,178],129:x,130:I,145:R}),{7:180,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,181],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a([1,6,35,36,47,69,70,93,127,135,146,148,149,150,156,157,174,182,183,184,185,186,187,188,189,190,191,192,193],Ue,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:182,14:t,32:Re,33:Ve,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:[1,184],85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),a(Y,[2,342],{169:[1,185]}),a([1,6,36,47,69,70,93,127,135,146,148,149,150,156,157,174],Be,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:186,14:t,32:Re,35:Ge,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),{37:192,38:n,39:r,44:188,45:s,46:i,107:[1,191],113:189,114:190,119:He},{26:195,37:196,38:n,39:r,107:[1,194],110:C,118:[1,197],122:[1,198]},a(Pe,[2,120]),a(Pe,[2,121]),a($e,[2,45]),a($e,[2,46]),a($e,[2,47]),a($e,[2,48]),a($e,[2,49]),a($e,[2,50]),a($e,[2,51]),a($e,[2,52]),{4:199,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,35:[1,200],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:201,8:202,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:We,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,69:Xe,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:204,132:205,136:210,137:207,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{80:ze,81:Je,124:213,125:ve,126:he},a($e,[2,200]),a($e,[2,201],{40:216,41:Ke}),a(Ze,[2,95]),a(Ze,[2,96]),a(Qe,[2,115]),a(Qe,[2,118]),{7:218,8:219,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:220,8:221,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:222,8:223,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:225,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,34:224,35:Ae,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{37:230,38:n,39:r,67:231,68:y,73:233,96:232,100:226,107:_,130:Se,161:227,162:ea,163:229},{159:234,160:235,164:[1,236],165:[1,237],166:[1,238]},a([6,35,93,109],aa,{44:88,108:239,62:240,63:241,64:242,66:243,42:244,71:246,37:247,40:248,67:249,72:251,73:252,74:253,75:254,76:255,38:n,39:r,41:Ke,43:l,45:s,46:i,68:ta,70:oa,77:na,107:_,129:x,130:I,145:R}),a(ra,[2,39]),a(ra,[2,40]),a($e,[2,43]),{17:161,18:162,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:257,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:163,67:79,68:y,73:62,74:31,75:35,76:34,77:k,86:Le,89:152,90:b,91:$,96:61,98:258,100:32,107:_,129:x,130:I,145:R},a(la,[2,36]),a(la,[2,37]),a(sa,[2,41]),{4:259,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(X,[2,5],{7:4,8:5,9:6,10:7,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,11:27,12:28,60:29,53:30,74:31,100:32,51:33,76:34,75:35,89:37,98:45,172:46,151:48,147:49,152:50,154:51,155:52,175:57,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,5:260,14:t,32:o,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:N,86:v,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:j,176:M,177:U,178:V,179:B,180:G,181:H}),a(me,[2,356]),{7:261,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:262,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:263,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:264,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:265,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:266,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:267,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:268,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:269,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:270,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:271,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:272,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:273,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:274,8:275,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(me,[2,265]),a(me,[2,270]),{7:220,8:276,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:222,8:277,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{37:230,38:n,39:r,67:231,68:y,73:233,96:232,100:278,107:_,130:Se,161:227,162:ea,163:229},{159:234,164:[1,279],165:[1,280],166:[1,281]},{7:282,8:283,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(me,[2,264]),a(me,[2,269]),{44:284,45:s,46:i,78:285,126:ia},a(Qe,[2,116]),a(da,[2,197]),{40:287,41:Ke},{40:288,41:Ke},a(Qe,[2,135],{40:289,41:Ke}),{40:290,41:Ke},a(Qe,[2,136]),{7:292,8:294,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:ca,73:62,74:31,75:35,76:34,77:k,82:291,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,106:293,107:_,110:C,112:D,120:E,129:x,130:I,134:295,135:pa,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{81:fe,104:298,105:Ne},a(Qe,[2,117]),{6:[1,300],7:299,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,301],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(ua,ma,{92:304,88:[1,302],93:ha}),a(ga,[2,100]),a(ga,[2,104],{61:[1,306],70:[1,305]}),a(ga,[2,108],{37:136,67:137,96:138,73:139,95:307,38:n,39:r,68:xe,107:_,130:Se}),a(fa,[2,109]),a(fa,[2,110]),a(fa,[2,111]),a(fa,[2,112]),{40:216,41:Ke},{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:We,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,69:Xe,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:204,132:205,136:210,137:207,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(ya,[2,92]),a(Y,[2,94]),{4:311,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,36:[1,310],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(ka,Ta,{151:111,154:112,158:116,182:ee}),a(Y,[2,346]),{7:158,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{148:q,150:z,151:118,154:119,156:J,158:116,174:ue},a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,182,183,184,185,186,187,188,189,190,191,192,193],Ue,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:182,14:t,32:Re,33:Ve,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),a(Na,[2,348],{151:111,154:112,158:116,182:ee,184:te}),a(De,Ee,{94:133,95:134,37:136,67:137,96:138,73:139,87:313,38:n,39:r,68:xe,70:Ie,107:_,130:Se}),{34:142,35:Ae},{7:314,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{148:q,150:z,151:118,154:119,156:J,158:116,174:[1,315]},{7:316,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Na,[2,349],{151:111,154:112,158:116,182:ee,184:te}),a(Na,[2,350],{151:111,154:112,158:116,182:ee,184:te}),a(ka,[2,351],{151:111,154:112,158:116,182:ee}),a(Y,[2,90],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:317,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:Be,150:Be,156:Be,174:Be,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),a(me,[2,352],{45:je,46:je,80:je,81:je,101:je,102:je,103:je,105:je,125:je,126:je}),a(da,he,{124:120,99:121,104:127,80:ge,81:fe,101:ye,102:ke,103:Te,105:Ne,125:ve}),{80:ge,81:fe,99:130,101:ye,102:ke,103:Te,104:127,105:Ne},a(va,_e),a(me,[2,353],{45:je,46:je,80:je,81:je,101:je,102:je,103:je,105:je,125:je,126:je}),a(me,[2,354]),a(me,[2,355]),{6:[1,320],7:318,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,319],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{34:321,35:Ae,173:[1,322]},a(me,[2,241],{141:323,142:[1,324],143:[1,325]}),a(me,[2,262]),a(me,[2,263]),a(me,[2,271]),a(me,[2,272]),{35:[1,326],148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[1,327]},{168:328,170:329,171:ba},a(me,[2,148]),{7:331,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Me,[2,151],{34:332,35:Ae,45:je,46:je,80:je,81:je,101:je,102:je,103:je,105:je,125:je,126:je,111:[1,333]}),a($a,[2,248],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{73:334,107:_},a($a,[2,32],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:335,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a([1,6,36,47,69,70,93,127,135,146,149,157],[2,88],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:336,14:t,32:Re,35:Ge,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:Be,150:Be,156:Be,174:Be,153:F,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),{34:337,35:Ae,173:[1,338]},a(be,_a,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{73:339,107:_},a(be,[2,155]),{33:[1,340],93:[1,341]},{33:[1,342]},{35:Ca,37:347,38:n,39:r,109:[1,343],115:344,116:345,118:Da},a([33,93],[2,171]),{117:[1,349]},{35:Ea,37:354,38:n,39:r,109:[1,350],118:xa,121:351,123:352},a(be,[2,175]),{61:[1,356]},{7:357,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,358],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{33:[1,359]},{6:W,146:[1,360]},{4:361,5:3,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Ia,Sa,{151:111,154:112,158:116,134:362,70:[1,363],135:pa,148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Ia,Aa,{134:364,70:ca,135:pa}),a(Ra,[2,203]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,69:[1,365],70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,136:367,138:366,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a([6,35,69],ma,{133:368,92:370,93:Oa}),a(La,[2,234]),a(Fa,[2,225]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:We,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:372,132:371,136:210,137:207,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(La,[2,236]),a(Fa,[2,230]),a(wa,[2,223]),a(wa,[2,224],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,98:45,172:46,151:48,147:49,152:50,154:51,155:52,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,89:152,9:154,7:373,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,77:k,84:T,85:Oe,86:Le,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H}),{78:374,126:ia},{40:375,41:Ke},{7:376,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Pa,[2,202]),a(Pa,[2,38]),{34:377,35:Ae,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{34:378,35:Ae},a(ja,[2,256],{151:111,154:112,158:116,148:q,149:[1,379],150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:[2,252],149:[1,380]},a(ja,[2,259],{151:111,154:112,158:116,148:q,149:[1,381],150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:[2,254],149:[1,382]},a(me,[2,267]),a(Ma,[2,268],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:Ua,157:[1,383]},a(Va,[2,278]),{37:230,38:n,39:r,67:231,68:xe,73:233,96:232,107:_,130:Se,161:384,163:229},a(Va,[2,284],{93:[1,385]}),a(Ba,[2,280]),a(Ba,[2,281]),a(Ba,[2,282]),a(Ba,[2,283]),a(me,[2,275]),{35:[2,277]},{7:386,8:387,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:388,8:389,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:390,8:391,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Ga,ma,{92:392,93:Ha}),a(Wa,[2,143]),a(Wa,[2,56],{65:[1,394]}),a(Wa,[2,57]),a(Xa,[2,66],{78:397,79:398,61:[1,395],70:[1,396],80:Ya,81:qa,126:ia}),a(Xa,[2,67]),{37:247,38:n,39:r,40:248,41:Ke,66:401,67:249,68:ta,71:402,72:251,73:252,74:253,75:254,76:255,77:na,107:_,129:x,130:I,145:R},{70:[1,403],78:404,79:405,80:Ya,81:qa,126:ia},a(za,[2,62]),a(za,[2,63]),a(za,[2,64]),{7:406,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Ja,[2,72]),a(Ja,[2,73]),a(Ja,[2,74]),a(Ja,[2,75]),a(Ja,[2,76]),{78:407,80:ze,81:Je,126:ia},a(va,Ce,{52:[1,408]}),a(va,je),{6:W,47:[1,409]},a(X,[2,4]),a(Ka,[2,357],{151:111,154:112,158:116,182:ee,183:ae,184:te}),a(Ka,[2,358],{151:111,154:112,158:116,182:ee,183:ae,184:te}),a(Na,[2,359],{151:111,154:112,158:116,182:ee,184:te}),a(Na,[2,360],{151:111,154:112,158:116,182:ee,184:te}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,185,186,187,188,189,190,191,192,193],[2,361],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,186,187,188,189,190,191,192],[2,362],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,187,188,189,190,191,192],[2,363],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,188,189,190,191,192],[2,364],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,189,190,191,192],[2,365],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,190,191,192],[2,366],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,191,192],[2,367],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,192],[2,368],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,193:pe}),a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,157,174,186,187,188,189,190,191,192,193],[2,369],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe}),a(Ma,Za,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,345]),{149:[1,410]},{149:[1,411]},a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,149,150,156,174,178,179,182,183,184,185,186,187,188,189,190,191,192,193],Ua,{157:[1,412]}),{7:413,8:414,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:415,8:416,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:417,8:418,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Ma,Qa,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,344]),a(et,[2,193]),a(et,[2,194]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:at,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,127:[1,419],128:420,129:x,130:I,136:421,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Qe,[2,131]),a(Qe,[2,132]),a(Qe,[2,133]),a(Qe,[2,134]),{83:[1,423]},{70:ca,83:[2,139],134:424,135:pa,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{83:[2,140]},{70:ca,134:425,135:pa},{7:426,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,83:[2,215],84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(tt,[2,206]),a(tt,ot),a(Qe,[2,138]),a($a,[2,53],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:427,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:428,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{89:429,90:b,91:$},a(nt,rt,{95:134,37:136,67:137,96:138,73:139,94:430,38:n,39:r,68:xe,70:Ie,107:_,130:Se}),{6:lt,35:st},a(ga,[2,105]),{7:433,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(ga,[2,106]),a(wa,Sa,{151:111,154:112,158:116,70:[1,434],148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(wa,Aa),a(it,[2,34]),{6:W,36:[1,435]},{7:436,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(ua,ma,{92:304,88:[1,437],93:ha}),a(ka,Ta,{151:111,154:112,158:116,182:ee}),{7:438,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{34:377,35:Ae,148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Y,[2,89],{151:111,154:112,158:116,148:_a,150:_a,156:_a,174:_a,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,[2,370],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:439,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:440,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(me,[2,337]),{7:441,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(me,[2,242],{142:[1,442]}),{34:443,35:Ae},{34:446,35:Ae,37:444,38:n,39:r,73:445,107:_},{168:447,170:329,171:ba},{168:448,170:329,171:ba},{36:[1,449],169:[1,450],170:451,171:ba},a(ct,[2,330]),{7:453,8:454,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,139:452,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(pt,[2,149],{151:111,154:112,158:116,34:455,35:Ae,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(me,[2,152]),{7:456,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{36:[1,457]},a($a,[2,33],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,87],{151:111,154:112,158:116,148:_a,150:_a,156:_a,174:_a,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Y,[2,343]),{7:459,8:458,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{36:[1,460]},{44:461,45:s,46:i},{107:[1,463],114:462,119:He},{44:464,45:s,46:i},{33:[1,465]},a(Ga,ma,{92:466,93:ut}),a(Wa,[2,162]),{35:Ca,37:347,38:n,39:r,115:468,116:345,118:Da},a(Wa,[2,167],{117:[1,469]}),a(Wa,[2,169],{117:[1,470]}),{37:471,38:n,39:r},a(be,[2,173]),a(Ga,ma,{92:472,93:mt}),a(Wa,[2,183]),{35:Ea,37:354,38:n,39:r,118:xa,121:474,123:352},a(Wa,[2,188],{117:[1,475]}),a(Wa,[2,191],{117:[1,476]}),{6:[1,478],7:477,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,479],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(ht,[2,179],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{73:480,107:_},{44:481,45:s,46:i},a($e,[2,250]),{6:W,36:[1,482]},{7:483,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a([14,32,38,39,43,45,46,49,50,54,55,56,57,58,59,68,77,84,85,86,90,91,107,110,112,120,129,130,140,144,145,148,150,153,156,167,173,176,177,178,179,180,181],ot,{6:gt,35:gt,69:gt,93:gt}),{7:484,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Ra,[2,204]),a(La,[2,235]),a(Fa,[2,231]),{6:ft,35:yt,69:[1,485]},a(kt,rt,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,89:37,98:45,172:46,151:48,147:49,152:50,154:51,155:52,175:57,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,9:148,138:206,136:210,97:211,7:308,8:309,137:488,131:489,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,70:Ye,77:k,84:T,85:Oe,86:v,90:b,91:$,93:qe,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:j,176:M,177:U,178:V,179:B,180:G,181:H}),a(kt,[2,232]),a(nt,ma,{92:370,133:490,93:Oa}),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,136:367,138:366,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(wa,[2,114],{151:111,154:112,158:116,148:q,150:z,156:J,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(et,[2,195]),a($e,[2,129]),{83:[1,491],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Tt,[2,334]),a(Nt,[2,340]),{7:492,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:493,8:494,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:495,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:496,8:497,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:498,8:499,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Va,[2,279]),{37:230,38:n,39:r,67:231,68:xe,73:233,96:232,107:_,130:Se,163:500},{35:vt,148:q,149:[1,501],150:z,151:111,154:112,156:J,157:[1,502],158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,305],149:[1,503],157:[1,504]},{35:bt,148:q,149:[1,505],150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,306],149:[1,506]},{35:$t,148:q,149:[1,507],150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,321],149:[1,508]},{6:_t,35:Ct,109:[1,509]},a(Dt,rt,{44:88,63:241,64:242,66:243,42:244,71:246,37:247,40:248,67:249,72:251,73:252,74:253,75:254,76:255,62:512,38:n,39:r,41:Ke,43:l,45:s,46:i,68:ta,70:oa,77:na,107:_,129:x,130:I,145:R}),{7:513,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,514],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:515,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,35:[1,516],37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Wa,[2,68]),a(Ja,[2,78]),a(Ja,[2,80]),{40:517,41:Ke},{7:292,8:294,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:ca,73:62,74:31,75:35,76:34,77:k,82:518,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,106:293,107:_,110:C,112:D,120:E,129:x,130:I,134:295,135:pa,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Wa,[2,69],{78:397,79:398,80:Ya,81:qa,126:ia}),a(Wa,[2,71],{78:404,79:405,80:Ya,81:qa,126:ia}),a(Wa,[2,70]),a(Ja,[2,79]),a(Ja,[2,81]),{69:[1,519],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Ja,[2,77]),a($e,[2,44]),a(sa,[2,42]),{7:520,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:521,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:522,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a([1,6,35,36,47,69,70,83,88,93,109,127,135,146,148,150,156,174],vt,{151:111,154:112,158:116,149:[1,523],157:[1,524],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,525],157:[1,526]},a(Et,bt,{151:111,154:112,158:116,149:[1,527],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,528]},a(Et,$t,{151:111,154:112,158:116,149:[1,529],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,530]},a(et,[2,198]),a([6,35,127],ma,{92:531,93:xt}),a(It,[2,216]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:at,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,128:533,129:x,130:I,136:421,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Qe,[2,137]),{7:534,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,83:[2,211],84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:535,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,83:[2,213],84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{83:[2,214],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a($a,[2,54],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{36:[1,536],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{5:538,7:4,8:5,9:6,10:7,11:27,12:28,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:o,34:537,35:Ae,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:N,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(ga,[2,101]),{37:136,38:n,39:r,67:137,68:xe,70:Ie,73:139,94:539,95:134,96:138,107:_,130:Se},a(St,Ee,{94:133,95:134,37:136,67:137,96:138,73:139,87:540,38:n,39:r,68:xe,70:Ie,107:_,130:Se}),a(ga,[2,107],{151:111,154:112,158:116,148:q,150:z,156:J,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(wa,gt),a(it,[2,35]),a(Ma,Za,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{89:541,90:b,91:$},a(Ma,Qa,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{36:[1,542],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a($a,[2,372],{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{34:543,35:Ae,148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{34:544,35:Ae},a(me,[2,243]),{34:545,35:Ae},{34:546,35:Ae},a(At,[2,247]),{36:[1,547],169:[1,548],170:451,171:ba},{36:[1,549],169:[1,550],170:451,171:ba},a(me,[2,328]),{34:551,35:Ae},a(ct,[2,331]),{34:552,35:Ae,93:[1,553]},a(Rt,[2,237],{151:111,154:112,158:116,148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Rt,[2,238]),a(me,[2,150]),a(pt,[2,153],{151:111,154:112,158:116,34:554,35:Ae,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(me,[2,249]),{34:555,35:Ae},{148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(be,[2,85]),a(be,[2,156]),{33:[1,556]},{35:Ca,37:347,38:n,39:r,115:557,116:345,118:Da},a(be,[2,157]),{44:558,45:s,46:i},{6:Ot,35:Lt,109:[1,559]},a(Dt,rt,{37:347,116:562,38:n,39:r,118:Da}),a(nt,ma,{92:563,93:ut}),{37:564,38:n,39:r},{37:565,38:n,39:r},{33:[2,172]},{6:Ft,35:wt,109:[1,566]},a(Dt,rt,{37:354,123:569,38:n,39:r,118:xa}),a(nt,ma,{92:570,93:mt}),{37:571,38:n,39:r,118:[1,572]},{37:573,38:n,39:r},a(ht,[2,176],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:574,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:575,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{36:[1,576]},a(be,[2,181]),{146:[1,577]},{69:[1,578],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{69:[1,579],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Ra,[2,205]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:372,136:210,137:580,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:We,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,93:qe,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,131:372,132:581,136:210,137:207,138:206,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Fa,[2,226]),a(kt,[2,233],{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,89:37,98:45,172:46,151:48,147:49,152:50,154:51,155:52,175:57,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,9:148,97:211,7:308,8:309,138:366,136:367,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,70:Ye,77:k,84:T,85:Oe,86:v,90:b,91:$,93:qe,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:j,176:M,177:U,178:V,179:B,180:G,181:H}),{6:ft,35:yt,36:[1,582]},a($e,[2,130]),a(Ma,[2,257],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:Pt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,253]},a(Ma,[2,260],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{35:jt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,255]},{35:Mt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,276]},a(Va,[2,285]),{7:583,8:584,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:585,8:586,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:587,8:588,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:589,8:590,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:591,8:592,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:593,8:594,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:595,8:596,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:597,8:598,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(Ra,[2,141]),{37:247,38:n,39:r,40:248,41:Ke,42:244,43:l,44:88,45:s,46:i,62:599,63:241,64:242,66:243,67:249,68:ta,70:oa,71:246,72:251,73:252,74:253,75:254,76:255,77:na,107:_,129:x,130:I,145:R},a(St,aa,{44:88,62:240,63:241,64:242,66:243,42:244,71:246,37:247,40:248,67:249,72:251,73:252,74:253,75:254,76:255,108:600,38:n,39:r,41:Ke,43:l,45:s,46:i,68:ta,70:oa,77:na,107:_,129:x,130:I,145:R}),a(Wa,[2,144]),a(Wa,[2,58],{151:111,154:112,158:116,148:q,150:z,156:J,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:601,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Wa,[2,60],{151:111,154:112,158:116,148:q,150:z,156:J,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:602,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(Ja,[2,82]),{83:[1,603]},a(za,[2,65]),a(Ma,Pt,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Ma,jt,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Ma,Mt,{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{7:604,8:605,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:606,8:607,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:608,8:609,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:610,8:611,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:612,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:613,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:614,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:615,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{6:Ut,35:Vt,127:[1,616]},a([6,35,36,127],rt,{17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,13:23,15:25,16:26,60:29,53:30,74:31,100:32,51:33,76:34,75:35,89:37,98:45,172:46,151:48,147:49,152:50,154:51,155:52,175:57,96:61,73:62,42:63,48:65,37:78,67:79,158:85,44:88,9:148,97:211,7:308,8:309,136:619,14:t,32:Re,38:n,39:r,43:l,45:s,46:i,49:d,50:c,54:p,55:u,56:m,57:h,58:g,59:f,68:y,70:Ye,77:k,84:T,85:Oe,86:v,90:b,91:$,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,148:O,150:L,153:F,156:w,167:P,173:j,176:M,177:U,178:V,179:B,180:G,181:H}),a(nt,ma,{92:620,93:xt}),{83:[2,210],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{83:[2,212],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(me,[2,55]),a(ya,[2,91]),a(Y,[2,93]),a(ga,[2,102]),a(nt,ma,{92:621,93:ha}),{34:537,35:Ae},a(me,[2,371]),a(Tt,[2,335]),a(me,[2,244]),a(At,[2,245]),a(At,[2,246]),a(me,[2,324]),{34:622,35:Ae},a(me,[2,325]),{34:623,35:Ae},{36:[1,624]},a(ct,[2,332],{6:[1,625]}),{7:626,8:627,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(me,[2,154]),a(Nt,[2,341]),{44:628,45:s,46:i},a(Ga,ma,{92:629,93:ut}),a(be,[2,158]),{33:[1,630]},{37:347,38:n,39:r,116:631,118:Da},{35:Ca,37:347,38:n,39:r,115:632,116:345,118:Da},a(Wa,[2,163]),{6:Ot,35:Lt,36:[1,633]},a(Wa,[2,168]),a(Wa,[2,170]),a(be,[2,174],{33:[1,634]}),{37:354,38:n,39:r,118:xa,123:635},{35:Ea,37:354,38:n,39:r,118:xa,121:636,123:352},a(Wa,[2,184]),{6:Ft,35:wt,36:[1,637]},a(Wa,[2,189]),a(Wa,[2,190]),a(Wa,[2,192]),a(ht,[2,177],{151:111,154:112,158:116,148:q,150:z,156:J,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{36:[1,638],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(be,[2,180]),a($e,[2,251]),a($e,[2,208]),a($e,[2,209]),a(Fa,[2,227]),a(nt,ma,{92:370,133:639,93:Oa}),a(Fa,[2,228]),{35:Bt,148:q,150:z,151:111,154:112,156:J,157:[1,640],158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,307],157:[1,641]},{35:Gt,148:q,149:[1,642],150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,311],149:[1,643]},{35:Ht,148:q,150:z,151:111,154:112,156:J,157:[1,644],158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,308],157:[1,645]},{35:Wt,148:q,149:[1,646],150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,312],149:[1,647]},{35:Xt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,309]},{35:Yt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,310]},{35:qt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,322]},{35:zt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,323]},a(Wa,[2,145]),a(nt,ma,{92:648,93:Ha}),{36:[1,649],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{36:[1,650],148:q,150:z,151:111,154:112,156:J,158:116,174:dt,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},a(Ja,[2,83]),a(Jt,Bt,{151:111,154:112,158:116,157:[1,651],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{157:[1,652]},a(Et,Gt,{151:111,154:112,158:116,149:[1,653],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,654]},a(Jt,Ht,{151:111,154:112,158:116,157:[1,655],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{157:[1,656]},a(Et,Wt,{151:111,154:112,158:116,149:[1,657],178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{149:[1,658]},a($a,Xt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,Yt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,qt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,zt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(et,[2,199]),{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,136:659,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:308,8:309,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,35:at,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,70:Ye,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,97:211,98:45,100:32,107:_,110:C,112:D,120:E,128:660,129:x,130:I,136:421,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},a(It,[2,217]),{6:Ut,35:Vt,36:[1,661]},{6:lt,35:st,36:[1,662]},{36:[1,663]},{36:[1,664]},a(me,[2,329]),a(ct,[2,333]),a(Rt,[2,239],{151:111,154:112,158:116,148:q,150:z,156:J,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a(Rt,[2,240]),a(be,[2,160]),{6:Ot,35:Lt,109:[1,665]},{44:666,45:s,46:i},a(Wa,[2,164]),a(nt,ma,{92:667,93:ut}),a(Wa,[2,165]),{44:668,45:s,46:i},a(Wa,[2,185]),a(nt,ma,{92:669,93:mt}),a(Wa,[2,186]),a(be,[2,178]),{6:ft,35:yt,36:[1,670]},{7:671,8:672,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:673,8:674,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:675,8:676,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:677,8:678,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:679,8:680,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:681,8:682,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:683,8:684,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{7:685,8:686,9:148,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,29:20,30:21,31:22,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:v,89:37,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:j,175:57,176:M,177:U,178:V,179:B,180:G,181:H},{6:_t,35:Ct,36:[1,687]},a(Wa,[2,59]),a(Wa,[2,61]),{7:688,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:689,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:690,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:691,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:692,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:693,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:694,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},{7:695,9:154,13:23,14:t,15:25,16:26,17:8,18:9,19:10,20:11,21:12,22:13,23:14,24:15,25:16,26:17,27:18,28:19,32:Re,37:78,38:n,39:r,42:63,43:l,44:88,45:s,46:i,48:65,49:d,50:c,51:33,53:30,54:p,55:u,56:m,57:h,58:g,59:f,60:29,67:79,68:y,73:62,74:31,75:35,76:34,77:k,84:T,85:Oe,86:Le,89:152,90:b,91:$,96:61,98:45,100:32,107:_,110:C,112:D,120:E,129:x,130:I,140:S,144:A,145:R,147:49,148:O,150:L,151:48,152:50,153:F,154:51,155:52,156:w,158:85,167:P,172:46,173:Fe,176:we,177:U,178:V,179:B,180:G,181:H},a(It,[2,218]),a(nt,ma,{92:696,93:xt}),a(It,[2,219]),a(ga,[2,103]),a(me,[2,326]),a(me,[2,327]),{33:[1,697]},a(be,[2,159]),{6:Ot,35:Lt,36:[1,698]},a(be,[2,182]),{6:Ft,35:wt,36:[1,699]},a(Fa,[2,229]),{35:Kt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,313]},{35:Zt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,315]},{35:Qt,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,317]},{35:eo,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,319]},{35:ao,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,314]},{35:to,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,316]},{35:oo,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,318]},{35:no,148:q,150:z,151:111,154:112,156:J,158:116,174:K,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe},{35:[2,320]},a(Wa,[2,146]),a($a,Kt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,Zt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,Qt,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,eo,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,ao,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,to,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,oo,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),a($a,no,{151:111,154:112,158:116,178:Z,179:Q,182:ee,183:ae,184:te,185:oe,186:ne,187:re,188:le,189:se,190:ie,191:de,192:ce,193:pe}),{6:Ut,35:Vt,36:[1,700]},{44:701,45:s,46:i},a(Wa,[2,166]),a(Wa,[2,187]),a(It,[2,220]),a(be,[2,161])],defaultActions:{235:[2,277],293:[2,140],471:[2,172],494:[2,253],497:[2,255],499:[2,276],592:[2,309],594:[2,310],596:[2,322],598:[2,323],672:[2,313],674:[2,315],676:[2,317],678:[2,319],680:[2,314],682:[2,316],684:[2,318],686:[2,320]},parseError:function(e,a){if(a.recoverable)this.trace(e);else{var t=new Error(e);throw t.hash=a,t}},parse:function(e){var a=this,t=[0],o=[null],n=[],l=this.table,s="",i=0,d=0,c=0,u=1,m=n.slice.call(arguments,1),h=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);h.setInput(e,g.yy),g.yy.lexer=h,g.yy.parser=this,"undefined"==typeof h.yylloc&&(h.yylloc={});var y=h.yylloc;n.push(y);var k=h.options&&h.options.ranges;this.parseError="function"==typeof g.yy.parseError?g.yy.parseError:Object.getPrototypeOf(this).parseError;_token_stack:var T=function(){var e;return e=h.lex()||u,"number"!=typeof e&&(e=a.symbols_[e]||e),e};for(var N={},v,b,$,_,C,D,p,E,x;;){if($=t[t.length-1],this.defaultActions[$]?_=this.defaultActions[$]:((null===v||"undefined"==typeof v)&&(v=T()),_=l[$]&&l[$][v]),"undefined"==typeof _||!_.length||!_[0]){var I="";for(D in x=[],l[$])this.terminals_[D]&&D>2&&x.push("'"+this.terminals_[D]+"'");I=h.showPosition?"Parse error on line "+(i+1)+":\n"+h.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on line "+(i+1)+": Unexpected "+(v==u?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(I,{text:h.match,token:this.terminals_[v]||v,line:h.yylineno,loc:y,expected:x})}if(_[0]instanceof Array&&1<_.length)throw new Error("Parse Error: multiple actions possible at state: "+$+", token: "+v);switch(_[0]){case 1:t.push(v),o.push(h.yytext),n.push(h.yylloc),t.push(_[1]),v=null,b?(v=b,b=null):(d=h.yyleng,s=h.yytext,i=h.yylineno,y=h.yylloc,0a.call(this.compiledComments,l)))&&(this.compiledComments.push(l),s=l.here?new S(l).compileNode(e):new J(l).compileNode(e),s.isHereComment&&!s.newLine||t.includeCommentFragments()?p(s):(0===o.length&&o.push(this.makeCode("")),s.unshift?(null==(n=o[0]).precedingComments&&(n.precedingComments=[]),o[0].precedingComments.push(s)):(null==(r=o[o.length-1]).followingComments&&(r.followingComments=[]),o[o.length-1].followingComments.push(s))));return o}},{key:"cache",value:function cache(e,a,t){var o,n,r;return o=null==t?this.shouldCache():t(this),o?(n=new R(e.scope.freeVariable("ref")),r=new d(n,this),a?[r.compileToFragments(e,a),[this.makeCode(n.value)]]:[r,n]):(n=a?this.compileToFragments(e,a):this,[n,n])}},{key:"hoist",value:function hoist(){var e,a,t;return this.hoisted=!0,t=new A(this),e=this.compileNode,a=this.compileToFragments,this.compileNode=function(a){return t.update(e,a)},this.compileToFragments=function(e){return t.update(a,e)},t}},{key:"cacheToCodeFragments",value:function cacheToCodeFragments(e){return[We(e[0]),We(e[1])]}},{key:"makeReturn",value:function makeReturn(e){var a;return a=this.unwrapAll(),e?new u(new K(e+".push"),[a]):new ge(a)}},{key:"contains",value:function contains(e){var a;return a=void 0,this.traverseChildren(!1,function(t){if(e(t))return a=t,!1}),a}},{key:"lastNode",value:function lastNode(e){return 0===e.length?null:e[e.length-1]}},{key:"toString",value:function toString(){var e=0=X?this.wrapInParentheses(a):a)}},{key:"compileRoot",value:function compileRoot(e){var a,t,o,n,r,l;for(e.indent=e.bare?"":De,e.level=z,this.spaced=!0,e.scope=new ye(null,this,null,null==(r=e.referencedVars)?[]:r),l=e.locals||[],t=0,o=l.length;t=Y?this.wrapInParentheses(a):a}}]),a}(re),e.StringLiteral=ve=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(){var e;return e=this.csx?[this.makeCode(this.unquote(!0,!0))]:_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this)}},{key:"unquote",value:function unquote(){var e=!!(0=H?"(void 0)":"void 0")]}}]),a}(K),e.NullLiteral=ne=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this,"null"))}return _inherits(a,e),a}(K),e.BooleanLiteral=i=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),a}(K),e.Return=ge=function(){var e=function(e){function t(e){_classCallCheck(this,t);var a=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return a.expression=e,a}return _inherits(t,e),_createClass(t,[{key:"compileToFragments",value:function compileToFragments(e,a){var o,n;return o=null==(n=this.expression)?void 0:n.makeReturn(),o&&!(o instanceof t)?o.compileToFragments(e,a):_get(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"compileToFragments",this).call(this,e,a)}},{key:"compileNode",value:function compileNode(e){var t,o,n,r;if(t=[],this.expression){for(t=this.expression.compileToFragments(e,q),la(t,this.makeCode(this.tab+"return ")),n=0,r=t.length;nthis.properties.length&&!this.base.shouldCache()&&(null==s||!s.shouldCache()))?[this,this]:(r=new a(this.base,this.properties.slice(0,-1)),r.shouldCache()&&(l=new R(e.scope.freeVariable("base")),r=new a(new de(new d(l,r)))),!s)?[r,l]:(s.shouldCache()&&(i=new R(e.scope.freeVariable("name")),s=new V(new d(i,s.index)),i=new V(i)),[r.add(s),new a(l||r.base,[i||s])])}},{key:"compileNode",value:function compileNode(e){var a,t,o,n,r;for(this.base.front=this.front,r=this.properties,a=r.length&&null!=this.base.cached?this.base.cached:this.base.compileToFragments(e,r.length?H:null),r.length&&fe.test(We(a))&&a.push(this.makeCode(".")),t=0,o=r.length;tn.length&&(n=r);this.content=this.content.replace(RegExp("^("+r+")","gm"),"")}return this.content="/*"+this.content+(t?" ":"")+"*/",e=this.makeCode(this.content),e.newLine=this.newLine,e.unshift=this.unshift,e.multiline=i,e.isComment=e.isHereComment=!0,e}}]),t}(l),e.LineComment=J=function(e){function a(e){var t=e.content,o=e.newLine,n=e.unshift;_classCallCheck(this,a);var r=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return r.content=t,r.newLine=o,r.unshift=n,r}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(){var e;return e=this.makeCode(/^\s*$/.test(this.content)?"":"//"+this.content),e.newLine=this.newLine,e.unshift=this.unshift,e.trail=!this.newLine&&!this.unshift,e.isComment=e.isLineComment=!0,e}}]),a}(l),e.Call=u=function(){var e=function(e){function a(e){var t=1")),(g=i).push.apply(g,_toConsumableArray(l.compileNode(e,X))),(f=i).push.apply(f,[this.makeCode("")]))}else i.push(this.makeCode(" />"));return i}}]),a}(l);return e.prototype.children=["variable","args"],e}.call(this),e.SuperCall=_e=function(){var e=function(e){function a(){return _classCallCheck(this,a),_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return _inherits(a,e),_createClass(a,[{key:"isStatement",value:function isStatement(e){var a;return(null==(a=this.expressions)?void 0:a.length)&&e.level===z}},{key:"compileNode",value:function compileNode(e){var t,o,n,r;if(null==(o=this.expressions)||!o.length)return _get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this,e);if(r=new K(We(_get(a.prototype.__proto__||Object.getPrototypeOf(a.prototype),"compileNode",this).call(this,e))),n=new c(this.expressions.slice()),e.level>z){var l=r.cache(e,null,we),s=_slicedToArray(l,2);r=s[0],t=s[1],n.push(t)}return n.unshift(r),n.compileToFragments(e,e.level===z?e.level:X)}}]),a}(u);return e.prototype.children=u.prototype.children.concat(["expressions"]),e}.call(this),e.Super=$e=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.accessor=e,t}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(e){var a,t,o,n,r,l,s,i;if(t=e.scope.namedMethod(),(null==t?void 0:t.isMethod)||this.error("cannot use super outside of an instance method"),null==t.ctor&&null==this.accessor){var c=t;o=c.name,i=c.variable,(o.shouldCache()||o instanceof V&&o.index.isAssignable())&&(n=new R(e.scope.parent.freeVariable("name")),o.index=new d(n,o.index)),this.accessor=null==n?o:new V(n)}return(null==(r=this.accessor)||null==(l=r.name)?void 0:l.comments)&&(s=this.accessor.name.comments,delete this.accessor.name.comments),a=new Le(new K("super"),this.accessor?[this.accessor]:[]).compileToFragments(e),s&&Me(s,this.accessor.name),a}}]),a}(l);return e.prototype.children=["accessor"],e}.call(this),e.RegexWithInterpolations=he=function(e){function a(){var e=0"+this.equals;var f=[this.fromNum,this.toNum];return o=f[0],m=f[1],p=this.stepNum?this.stepNum+" !== 0":this.stepVar+" !== 0",t=s?null==this.step?o<=m?d+" "+m:n+" "+m:(i=o+" <= "+r+" && "+d+" "+m,h=o+" >= "+r+" && "+n+" "+m,o<=m?p+" && "+i:p+" && "+h):(i=this.fromVar+" <= "+r+" && "+d+" "+this.toVar,h=this.fromVar+" >= "+r+" && "+n+" "+this.toVar,p+" && ("+this.fromVar+" <= "+this.toVar+" ? "+i+" : "+h+")"),a=this.stepVar?this.stepVar+" > 0":this.fromVar+" <= "+this.toVar,u=this.stepVar?r+" += "+this.stepVar:s?c?o<=m?"++"+r:"--"+r:o<=m?r+"++":r+"--":c?a+" ? ++"+r+" : --"+r:a+" ? "+r+"++ : "+r+"--",c&&(g=l+" = "+g),c&&(u=l+" = "+u),[this.makeCode(g+"; "+t+"; "+u)]}},{key:"compileArray",value:function compileArray(e){var a,t,o,n,r,l,s,i,d,c,p,u,m;return(s=null!=this.fromNum&&null!=this.toNum,s&&20>=_Mathabs(this.fromNum-this.toNum))?(c=function(){for(var e=[],a=p=this.fromNum,t=this.toNum;p<=t?a<=t:a>=t;p<=t?a++:a--)e.push(a);return e}.apply(this),this.exclusive&&c.pop(),[this.makeCode("["+c.join(", ")+"]")]):(l=this.tab+De,r=e.scope.freeVariable("i",{single:!0,reserve:!1}),u=e.scope.freeVariable("results",{reserve:!1}),d="\n"+l+"var "+u+" = [];",s?(e.index=r,t=We(this.compileNode(e))):(m=r+" = "+this.fromC+(this.toC===this.toVar?"":", "+this.toC),o=this.fromVar+" <= "+this.toVar,t="var "+m+"; "+o+" ? "+r+" <"+this.equals+" "+this.toVar+" : "+r+" >"+this.equals+" "+this.toVar+"; "+o+" ? "+r+"++ : "+r+"--"),i="{ "+u+".push("+r+"); }\n"+l+"return "+u+";\n"+e.indent,n=function(e){return null==e?void 0:e.contains(qe)},(n(this.from)||n(this.to))&&(a=", arguments"),[this.makeCode("(function() {"+d+"\n"+l+"for ("+t+")"+i+"}).apply(this"+(null==a?"":a)+")")])}}]),a}(l);return e.prototype.children=["from","to"],e}.call(this),e.Slice=ke=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.range=e,t}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(e){var a=this.range,t,o,n,r,l,s;return l=a.to,n=a.from,(null==n?void 0:n.shouldCache())&&(n=new Le(new de(n))),(null==l?void 0:l.shouldCache())&&(l=new Le(new de(l))),r=(null==n?void 0:n.compileToFragments(e,q))||[this.makeCode("0")],l&&(t=l.compileToFragments(e,q),o=We(t),(this.range.exclusive||-1!=+o)&&(s=", "+(this.range.exclusive?o:l.isNumber()?""+(+o+1):(t=l.compileToFragments(e,H),"+"+We(t)+" + 1 || 9e9")))),[this.makeCode(".slice("+We(r)+(s||"")+")")]}}]),a}(l);return e.prototype.children=["range"],e}.call(this),e.Obj=le=function(){var e=function(e){function a(e){var t=!!(1N)return l.push(new Le(new le(y.slice(N,a),!0)))};e=y[a];)(d=this.addInitializerExpression(e))&&(k(),l.push(d),i.push(d),N=a+1),a++;k(),t.apply(r,[s,s-s+1].concat(l)),l,s+=l.length}else(d=this.addInitializerExpression(n))&&(i.push(d),r[s]=d),s+=1;for(u=0,g=i.length;uX||l&&this.variable.base instanceof le&&!this.nestedLhs&&!0!==this.param?this.wrapInParentheses(o):o)}},{key:"compileObjectDestruct",value:function compileObjectDestruct(e){var a,t,o,l,i,d,p,m,h,g,f,y;if(t=function(a){var t;if(a instanceof n){var o=a.variable.cache(e),r=_slicedToArray(o,2);return a.variable=r[0],t=r[1],t}return a},o=function(a){var o,r;return r=t(a),o=a instanceof n&&a.variable!==r,o||!r.isAssignable()?r:new K("'"+r.compileWithoutComments(e)+"'")},h=function traverseRest(a,l){var i,d,c,u,m,g,f,y,p,k,T;for(k=[],T=void 0,null==l.properties&&(l=new Le(l)),d=c=0,u=a.length;c=Y?this.wrapInParentheses(d):d;var W=I,q=_slicedToArray(W,1);return E=q[0],1===S&&E instanceof N&&E.error("Destructuring assignment has no target"),j=function(){var e,a,t;for(t=[],v=e=0,a=I.length;ea.call(g,v):return new Le(E.base);default:return E}}(),k=function(){switch(!1){case!(E instanceof Te):return c(i,v);default:return new Le(new K(i),[new V(new re(v))])}}();h=Je(s.unwrap().value),h&&s.error(h),f.push(l.push(new n(s,k,null,{param:t.param,subpattern:!0}).compileToFragments(e,X)))}return f},o=function(a,o,r){var i;return o=new Le(new s(a,!0)),i=r instanceof Le?r:new Le(new K(r)),l.push(new n(o,i,null,{param:t.param,subpattern:!0}).compileToFragments(e,X))},A=function(e,a,t){return m(e)?D(e,a,t):o(e,a,t)},M.length?(h=M[0],C=I.slice(0,h+(_?1:0)),w=I.slice(h+1),0!==C.length&&A(C,G,H),0!==w.length&&(L=function(){switch(!1){case!_:return p(I[h].unwrapAll().value,-1*w.length);case!b:return c(H,-1*w.length)}}(),m(w)&&(F=L,L=e.scope.freeVariable("ref"),l.push([this.makeCode(L+" = ")].concat(_toConsumableArray(F.compileToFragments(e,X))))),A(w,G,L))):A(I,G,H),U||this.subpattern||l.push(G),f=this.joinFragmentArrays(l,", "),e.levelz?this.wrapInParentheses(o):o}},{key:"eachName",value:function eachName(e){return this.variable.unwrapAll().eachName(e)}}]),n}(l);return e.prototype.children=["variable","value"],e.prototype.isAssignable=we,e}.call(this),e.FuncGlyph=I=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.glyph=e,t}return _inherits(a,e),a}(l),e.Code=h=function(){var e=function(e){function t(e,a,n,r){_classCallCheck(this,t);var l=_possibleConstructorReturn(this,(t.__proto__||Object.getPrototypeOf(t)).call(this)),s;return l.funcGlyph=n,l.paramStart=r,l.params=e||[],l.body=a||new c,l.bound="=>"===(null==(s=l.funcGlyph)?void 0:s.glyph),l.isGenerator=!1,l.isAsync=!1,l.isMethod=!1,l.body.traverseChildren(!1,function(e){if((e instanceof se&&e.isYield()||e instanceof Pe)&&(l.isGenerator=!0),(e instanceof se&&e.isAwait()||e instanceof o)&&(l.isAsync=!0),l.isGenerator&&l.isAsync)return e.error("function can't contain both yield and await")}),l}return _inherits(t,e),_createClass(t,[{key:"isStatement",value:function isStatement(){return this.isMethod}},{key:"makeScope",value:function makeScope(e){return new ye(e,this.body,this)}},{key:"compileNode",value:function compileNode(e){var t,o,n,r,c,p,h,g,f,y,T,v,i,b,$,k,l,_,C,D,m,E,x,I,S,A,L,F,w,P,j,M,U,V,B,W,X,Y,q,z,J,Z,Q;for(this.ctor&&(this.isAsync&&this.name.error("Class constructor may not be async"),this.isGenerator&&this.name.error("Class constructor may not be a generator")),this.bound&&((null==(P=e.scope.method)?void 0:P.bound)&&(this.context=e.scope.method.context),!this.context&&(this.context="this")),e.scope=Ve(e,"classScope")||this.makeScope(e.scope),e.scope.shared=Ve(e,"sharedScope"),e.indent+=De,delete e.bare,delete e.isExistentialEquals,L=[],g=[],J=null==(j=null==(M=this.thisAssignments)?void 0:M.slice())?[]:j,F=[],T=!1,y=!1,S=[],this.eachParamName(function(t,o,n,r){var l,s;if(0<=a.call(S,t)&&o.error("multiple parameters named '"+t+"'"),S.push(t),o.this)return t=o.properties[0].name.value,0<=a.call(G,t)&&(t="_"+t),s=new R(e.scope.freeVariable(t,{reserve:!1})),l=n.name instanceof le&&r instanceof d&&"="===r.operatorToken.value?new d(new R(t),s,"object"):s,n.renameParam(o,l),J.push(new d(o,s))}),U=this.params,v=b=0,l=U.length;b")),n.push(this.makeCode(" {")),null==r?void 0:r.length){var re;(re=n).push.apply(re,[this.makeCode("\n")].concat(_toConsumableArray(r),[this.makeCode("\n"+this.tab)]))}return n.push(this.makeCode("}")),this.isMethod?Ye(n,this):this.front||e.level>=H?this.wrapInParentheses(n):n}},{key:"eachParamName",value:function eachParamName(e){var a,t,o,n,r;for(n=this.params,r=[],a=0,t=n.length;a"===e||">="===e||"<="===e||"==="===e||"!=="===e}},{key:"invert",value:function invert(){var e,a,t,r,l;if(this.isChainable()&&this.first.isChainable()){for(e=!0,a=this;a&&a.operator;)e&&(e=a.operator in o),a=a.first;if(!e)return new de(this).invert();for(a=this;a&&a.operator;)a.invert=!a.invert,a.operator=o[a.operator],a=a.first;return this}return(r=o[this.operator])?(this.operator=r,this.first.unwrap()instanceof n&&this.first.invert(),this):this.second?new de(this).invert():"!"===this.operator&&(t=this.first.unwrap())instanceof n&&("!"===(l=t.operator)||"in"===l||"instanceof"===l)?t:new n("!",this)}},{key:"unfoldSoak",value:function unfoldSoak(e){var a;return("++"===(a=this.operator)||"--"===a||"delete"===a)&&ra(e,this,"first")}},{key:"generateDo",value:function generateDo(e){var a,t,o,n,r,l,s,i;for(l=[],t=e instanceof d&&(s=e.value.unwrap())instanceof h?s:e,i=t.params||[],o=0,n=i.length;o=H?new de(this).compileToFragments(e):(o="+"===a||"-"===a,("new"===a||"typeof"===a||"delete"===a||o&&this.first instanceof n&&this.first.operator===a)&&t.push([this.makeCode(" ")]),(o&&this.first instanceof n||"new"===a&&this.first.isStatement(e))&&(this.first=new de(this.first)),t.push(this.first.compileToFragments(e,Y)),this.flip&&t.reverse(),this.joinFragmentArrays(t,""))}},{key:"compileContinuation",value:function compileContinuation(e){var t,o,n,r;return o=[],t=this.operator,null==e.scope.parent&&this.error(this.operator+" can only occur inside functions"),(null==(n=e.scope.method)?void 0:n.bound)&&e.scope.method.isGenerator&&this.error("yield cannot occur inside bound (fat arrow) functions"),0<=a.call(Object.keys(this.first),"expression")&&!(this.first instanceof Se)?null!=this.first.expression&&o.push(this.first.expression.compileToFragments(e,Y)):(e.level>=q&&o.push([this.makeCode("(")]),o.push([this.makeCode(t)]),""!==(null==(r=this.first.base)?void 0:r.value)&&o.push([this.makeCode(" ")]),o.push(this.first.compileToFragments(e,Y)),e.level>=q&&o.push([this.makeCode(")")])),this.joinFragmentArrays(o,"")}},{key:"compilePower",value:function compilePower(e){var a;return a=new Le(new R("Math"),[new r(new pe("pow"))]),new u(a,[this.first,this.second]).compileToFragments(e)}},{key:"compileFloorDivision",value:function compileFloorDivision(e){var a,t,o;return t=new Le(new R("Math"),[new r(new pe("floor"))]),o=this.second.shouldCache()?new de(this.second):this.second,a=new n("/",this.first,o),new u(t,[a]).compileToFragments(e)}},{key:"compileModulo",value:function compileModulo(e){var a;return a=new Le(new K(sa("modulo",e))),new u(a,[this.first,this.second]).compileToFragments(e)}},{key:"toString",value:function toString(e){return _get(n.prototype.__proto__||Object.getPrototypeOf(n.prototype),"toString",this).call(this,e,this.constructor.name+" "+this.operator)}}]),n}(l),t,o;return t={"==":"===","!=":"!==",of:"in",yieldfrom:"yield*"},o={"!==":"===","===":"!=="},e.prototype.children=["first","second"],e}.call(this),e.In=U=function(){var e=function(e){function a(e,t){_classCallCheck(this,a);var o=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return o.object=e,o.array=t,o}return _inherits(a,e),_createClass(a,[{key:"compileNode",value:function compileNode(e){var a,t,o,n,r;if(this.array instanceof Le&&this.array.isArray()&&this.array.base.objects.length){for(r=this.array.base.objects,t=0,o=r.length;t= 0"))),We(r)===We(n))?o:(o=r.concat(this.makeCode(", "),o),e.levela.call(r,t)&&r.push(t);return delete e.comments}}),Me(r,n),Qe(n.expression,n),n}return _inherits(t,e),_createClass(t,[{key:"compileNode",value:function compileNode(e){var a,t,o;if(this.expression.front=this.front,o=this.expression.compile(e,Y),this.expression.unwrap()instanceof R&&!e.scope.check(o)){var n=this.negated?["===","||"]:["!==","&&"],r=_slicedToArray(n,2);a=r[0],t=r[1],o="typeof "+o+" "+a+' "undefined"'+("undefined"===this.comparisonTarget?"":" "+t+" "+o+" "+a+" "+this.comparisonTarget)}else a="null"===this.comparisonTarget?this.negated?"==":"!=":this.negated?"===":"!==",o=o+" "+a+" "+this.comparisonTarget;return[this.makeCode(e.level<=W?o:"("+o+")")]}}]),t}(l);return e.prototype.children=["expression"],e.prototype.invert=ae,e}.call(this),e.Parens=de=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.body=e,t}return _inherits(a,e),_createClass(a,[{key:"unwrap",value:function unwrap(){return this.body}},{key:"shouldCache",value:function shouldCache(){return this.body.shouldCache()}},{key:"compileNode",value:function compileNode(e){var a,t,o,n,r;return(t=this.body.unwrap(),r=null==(n=t.comments)?void 0:n.some(function(e){return e.here&&!e.unshift&&!e.newLine}),t instanceof Le&&t.isAtomic()&&!this.csxAttribute&&!r)?(t.front=this.front,t.compileToFragments(e)):(o=t.compileToFragments(e,q),a=e.level=o.length),this.csxAttribute?this.wrapInBraces(o):a?o:this.wrapInParentheses(o))}}]),a}(l);return e.prototype.children=["body"],e}.call(this),e.StringWithInterpolations=be=function(){var e=function(e){function a(e){_classCallCheck(this,a);var t=_possibleConstructorReturn(this,(a.__proto__||Object.getPrototypeOf(a)).call(this));return t.body=e,t}return _inherits(a,e),_createClass(a,[{key:"unwrap",value:function unwrap(){return this}},{key:"shouldCache",value:function shouldCache(){return this.body.shouldCache()}},{key:"compileNode",value:function compileNode(e){var t,o,n,r,l,s,i,d,c;if(this.csxAttribute)return c=new de(new a(this.body)),c.csxAttribute=!0,c.compileNode(e);for(r=this.body.unwrap(),n=[],d=[],r.traverseChildren(!1,function(e){var a,t,o,r,l,s;if(e instanceof ve){if(e.comments){var i;(i=d).push.apply(i,_toConsumableArray(e.comments)),delete e.comments}return n.push(e),!0}if(e instanceof de){if(0!==d.length){for(t=0,r=d.length;tP,!(this.step&&null!=P&&m)&&(_=L.freeVariable("len")),i=""+b+N+" = 0, "+_+" = "+M+".length",p=""+b+N+" = "+M+".length - 1",l=N+" < "+_,s=N+" >= 0",this.step?(null==P?(l=j+" > 0 ? "+l+" : "+s,i="("+j+" > 0 ? ("+i+") : "+p+")"):m&&(l=s,i=p),k=N+" += "+j):k=""+(v===N?N+"++":"++"+N),h=[this.makeCode(i+"; "+l+"; "+b+k)])),this.returns&&(I=""+this.tab+A+" = [];\n",S="\n"+this.tab+"return "+A+";",o.makeReturn(A)),this.guard&&(1=W?this.wrapInParentheses(n):n}},{key:"unfoldSoak",value:function unfoldSoak(){return this.soak&&this}}]),a}(l);return e.prototype.children=["condition","body","elseBody"],e}.call(this),Re={modulo:function modulo(){return"function(a, b) { return (+a % (b = +b) + b) % b; }"},objectWithoutKeys:function objectWithoutKeys(){return"function(o, ks) { var res = {}; for (var k in o) ([].indexOf.call(ks, k) < 0 && {}.hasOwnProperty.call(o, k)) && (res[k] = o[k]); return res; }"},boundMethodCheck:function boundMethodCheck(){return"function(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new Error('Bound instance method accessed before binding'); } }"},_extends:function _extends(){return"Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }"},hasProp:function hasProp(){return"{}.hasOwnProperty"},indexOf:function(){return"[].indexOf"},slice:function slice(){return"[].slice"},splice:function(){return"[].splice"}},z=1,q=2,X=3,W=4,Y=5,H=6,De=" ",fe=/^[+-]?\d+$/,sa=function(e,a){var t,o;return o=a.scope.root,e in o.utilities?o.utilities[e]:(t=o.freeVariable(e),o.assign(t,Re[e](a)),o.utilities[e]=t)},ea=function(e,a){var t=!(2=e);)e--;return a&&[a.sourceLine,a.sourceColumn]}}]),e}(),t=function(){var e=function(){function e(){_classCallCheck(this,e),this.lines=[]}return _createClass(e,[{key:"add",value:function add(e,t){var o=2=t);)t--;return n&&n.sourceLocation(o)}},{key:"generate",value:function generate(){var e=0"],y={version:3,file:e.generatedFile||"",sourceRoot:e.sourceRoot||"",sources:f,names:[],mappings:t},(e.sourceMap||e.inlineMap)&&(y.sourcesContent=[a]),y}},{key:"encodeVlq",value:function encodeVlq(e){var a,t,l,s;for(a="",l=0>e?1:0,s=(_Mathabs(e)<<1)+l;s||!a;)t=s&r,s>>=n,s&&(t|=o),a+=this.encodeBase64(t);return a}},{key:"encodeBase64",value:function encodeBase64(e){return t[e]||function(){throw new Error("Cannot Base64 encode value: "+e)}()}}]),e}(),t,o,n,r;return n=5,o=1<",s(d,e),null==f[d]&&(f[d]=[]),f[d].push(e),y&&($=new r),S=u.tokenize(e,a),a.referencedVars=function(){var e,a,t;for(t=[],e=0,a=S.length;e"),d=e.getLineNumber(),o=e.getColumnNumber(),p=a(r,d,o),n=p?r+":"+p[0]+":"+p[1]:r+":"+d+":"+o),l=e.getFunctionName(),s=e.isConstructor(),i=!(e.isToplevel()||s),i?(c=e.getMethodName(),m=e.getTypeName(),l?(u=t="",m&&l.indexOf(m)&&(u=m+"."),c&&l.indexOf("."+c)!==l.length-c.length-1&&(t=" [as "+c+"]"),""+u+l+t+" ("+n+")"):m+"."+(c||"")+" ("+n+")"):s?"new "+(l||"")+" ("+n+")":l?l+" ("+n+")":n},i=function(e,t,n){var r,l,s,i,c,u;if(!(""===e||(i=e.slice(e.lastIndexOf(".")),0<=a.call(o,i))))return null;if(""!==e&&null!=g[e])return g[e][g[e].length-1];if(null!=g[""])for(c=g[""],l=c.length-1;0<=l;l+=-1)if(s=c[l],u=s.sourceLocation([t-1,n-1]),null!=(null==u?void 0:u[0])&&null!=u[1])return s;return null==f[e]?null:(r=d(f[e][f[e].length-1],{filename:e,sourceMap:!0,literate:p.isLiterate(e)}),r.sourceMap)},Error.prepareStackTrace=function(a,t){var o,n,r;return r=function(e,a,t){var o,n;return n=i(e,a,t),null!=n&&(o=n.sourceLocation([a-1,t-1])),null==o?null:[o[0]+1,o[1]+1]},n=function(){var a,n,l;for(l=[],a=0,n=t.length;a 0) { - if (pos > length) - pos = length; - } else if (pos == void 0) { - pos = 0; - } else if (pos < 0) { - pos = Math.max(length + pos, 0); - } - - if (!(pos+removeCount < length)) - removeCount = length - pos; - - var removed = this.slice(pos, pos+removeCount); - var insert = slice.call(arguments, 2); - var add = insert.length; - if (pos === length) { - if (add) { - this.push.apply(this, insert); - } - } else { - var remove = Math.min(removeCount, length - pos); - var tailOldPos = pos + remove; - var tailNewPos = tailOldPos + add - remove; - var tailCount = length - tailOldPos; - var lengthAfterRemove = length - remove; - - if (tailNewPos < tailOldPos) { // case A - for (var i = 0; i < tailCount; ++i) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } else if (tailNewPos > tailOldPos) { // case B - for (i = tailCount; i--; ) { - this[tailNewPos+i] = this[tailOldPos+i]; - } - } // else, add == remove (nothing to do) - - if (add && pos === lengthAfterRemove) { - this.length = lengthAfterRemove; // truncate array - this.push.apply(this, insert); - } else { - this.length = lengthAfterRemove + add; // reserves space - for (i = 0; i < add; ++i) { - this[pos+i] = insert[i]; - } - } - } - return removed; - }; - } -} -if (!Array.isArray) { - Array.isArray = function isArray(obj) { - return _toString(obj) == "[object Array]"; - }; -} -var boxedString = Object("a"), - splitString = boxedString[0] != "a" || !(0 in boxedString); - -if (!Array.prototype.forEach) { - Array.prototype.forEach = function forEach(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - thisp = arguments[1], - i = -1, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(); // TODO message - } - - while (++i < length) { - if (i in self) { - fun.call(thisp, self[i], i, object); - } - } - }; -} -if (!Array.prototype.map) { - Array.prototype.map = function map(fun /*, thisp*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = Array(length), - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) - result[i] = fun.call(thisp, self[i], i, object); - } - return result; - }; -} -if (!Array.prototype.filter) { - Array.prototype.filter = function filter(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - result = [], - value, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self) { - value = self[i]; - if (fun.call(thisp, value, i, object)) { - result.push(value); - } - } - } - return result; - }; -} -if (!Array.prototype.every) { - Array.prototype.every = function every(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && !fun.call(thisp, self[i], i, object)) { - return false; - } - } - return true; - }; -} -if (!Array.prototype.some) { - Array.prototype.some = function some(fun /*, thisp */) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0, - thisp = arguments[1]; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - - for (var i = 0; i < length; i++) { - if (i in self && fun.call(thisp, self[i], i, object)) { - return true; - } - } - return false; - }; -} -if (!Array.prototype.reduce) { - Array.prototype.reduce = function reduce(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduce of empty array with no initial value"); - } - - var i = 0; - var result; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i++]; - break; - } - if (++i >= length) { - throw new TypeError("reduce of empty array with no initial value"); - } - } while (true); - } - - for (; i < length; i++) { - if (i in self) { - result = fun.call(void 0, result, self[i], i, object); - } - } - - return result; - }; -} -if (!Array.prototype.reduceRight) { - Array.prototype.reduceRight = function reduceRight(fun /*, initial*/) { - var object = toObject(this), - self = splitString && _toString(this) == "[object String]" ? - this.split("") : - object, - length = self.length >>> 0; - if (_toString(fun) != "[object Function]") { - throw new TypeError(fun + " is not a function"); - } - if (!length && arguments.length == 1) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - - var result, i = length - 1; - if (arguments.length >= 2) { - result = arguments[1]; - } else { - do { - if (i in self) { - result = self[i--]; - break; - } - if (--i < 0) { - throw new TypeError("reduceRight of empty array with no initial value"); - } - } while (true); - } - - do { - if (i in this) { - result = fun.call(void 0, result, self[i], i, object); - } - } while (i--); - - return result; - }; -} -if (!Array.prototype.indexOf || ([0, 1].indexOf(1, 2) != -1)) { - Array.prototype.indexOf = function indexOf(sought /*, fromIndex */ ) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - - var i = 0; - if (arguments.length > 1) { - i = toInteger(arguments[1]); - } - i = i >= 0 ? i : Math.max(0, length + i); - for (; i < length; i++) { - if (i in self && self[i] === sought) { - return i; - } - } - return -1; - }; -} -if (!Array.prototype.lastIndexOf || ([0, 1].lastIndexOf(0, -3) != -1)) { - Array.prototype.lastIndexOf = function lastIndexOf(sought /*, fromIndex */) { - var self = splitString && _toString(this) == "[object String]" ? - this.split("") : - toObject(this), - length = self.length >>> 0; - - if (!length) { - return -1; - } - var i = length - 1; - if (arguments.length > 1) { - i = Math.min(i, toInteger(arguments[1])); - } - i = i >= 0 ? i : length - Math.abs(i); - for (; i >= 0; i--) { - if (i in self && sought === self[i]) { - return i; - } - } - return -1; - }; -} -if (!Object.getPrototypeOf) { - Object.getPrototypeOf = function getPrototypeOf(object) { - return object.__proto__ || ( - object.constructor ? - object.constructor.prototype : - prototypeOfObject - ); - }; -} -if (!Object.getOwnPropertyDescriptor) { - var ERR_NON_OBJECT = "Object.getOwnPropertyDescriptor called on a " + - "non-object: "; - Object.getOwnPropertyDescriptor = function getOwnPropertyDescriptor(object, property) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT + object); - if (!owns(object, property)) - return; - - var descriptor, getter, setter; - descriptor = { enumerable: true, configurable: true }; - if (supportsAccessors) { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - - var getter = lookupGetter(object, property); - var setter = lookupSetter(object, property); - object.__proto__ = prototype; - - if (getter || setter) { - if (getter) descriptor.get = getter; - if (setter) descriptor.set = setter; - return descriptor; - } - } - descriptor.value = object[property]; - return descriptor; - }; -} -if (!Object.getOwnPropertyNames) { - Object.getOwnPropertyNames = function getOwnPropertyNames(object) { - return Object.keys(object); - }; -} -if (!Object.create) { - var createEmpty; - if (Object.prototype.__proto__ === null) { - createEmpty = function () { - return { "__proto__": null }; - }; - } else { - createEmpty = function () { - var empty = {}; - for (var i in empty) - empty[i] = null; - empty.constructor = - empty.hasOwnProperty = - empty.propertyIsEnumerable = - empty.isPrototypeOf = - empty.toLocaleString = - empty.toString = - empty.valueOf = - empty.__proto__ = null; - return empty; - } - } - - Object.create = function create(prototype, properties) { - var object; - if (prototype === null) { - object = createEmpty(); - } else { - if (typeof prototype != "object") - throw new TypeError("typeof prototype["+(typeof prototype)+"] != 'object'"); - var Type = function () {}; - Type.prototype = prototype; - object = new Type(); - object.__proto__ = prototype; - } - if (properties !== void 0) - Object.defineProperties(object, properties); - return object; - }; -} - -function doesDefinePropertyWork(object) { - try { - Object.defineProperty(object, "sentinel", {}); - return "sentinel" in object; - } catch (exception) { - } -} -if (Object.defineProperty) { - var definePropertyWorksOnObject = doesDefinePropertyWork({}); - var definePropertyWorksOnDom = typeof document == "undefined" || - doesDefinePropertyWork(document.createElement("div")); - if (!definePropertyWorksOnObject || !definePropertyWorksOnDom) { - var definePropertyFallback = Object.defineProperty; - } -} - -if (!Object.defineProperty || definePropertyFallback) { - var ERR_NON_OBJECT_DESCRIPTOR = "Property description must be an object: "; - var ERR_NON_OBJECT_TARGET = "Object.defineProperty called on non-object: " - var ERR_ACCESSORS_NOT_SUPPORTED = "getters & setters can not be defined " + - "on this javascript engine"; - - Object.defineProperty = function defineProperty(object, property, descriptor) { - if ((typeof object != "object" && typeof object != "function") || object === null) - throw new TypeError(ERR_NON_OBJECT_TARGET + object); - if ((typeof descriptor != "object" && typeof descriptor != "function") || descriptor === null) - throw new TypeError(ERR_NON_OBJECT_DESCRIPTOR + descriptor); - if (definePropertyFallback) { - try { - return definePropertyFallback.call(Object, object, property, descriptor); - } catch (exception) { - } - } - if (owns(descriptor, "value")) { - - if (supportsAccessors && (lookupGetter(object, property) || - lookupSetter(object, property))) - { - var prototype = object.__proto__; - object.__proto__ = prototypeOfObject; - delete object[property]; - object[property] = descriptor.value; - object.__proto__ = prototype; - } else { - object[property] = descriptor.value; - } - } else { - if (!supportsAccessors) - throw new TypeError(ERR_ACCESSORS_NOT_SUPPORTED); - if (owns(descriptor, "get")) - defineGetter(object, property, descriptor.get); - if (owns(descriptor, "set")) - defineSetter(object, property, descriptor.set); - } - - return object; - }; -} -if (!Object.defineProperties) { - Object.defineProperties = function defineProperties(object, properties) { - for (var property in properties) { - if (owns(properties, property)) - Object.defineProperty(object, property, properties[property]); - } - return object; - }; -} -if (!Object.seal) { - Object.seal = function seal(object) { - return object; - }; -} -if (!Object.freeze) { - Object.freeze = function freeze(object) { - return object; - }; -} -try { - Object.freeze(function () {}); -} catch (exception) { - Object.freeze = (function freeze(freezeObject) { - return function freeze(object) { - if (typeof object == "function") { - return object; - } else { - return freezeObject(object); - } - }; - })(Object.freeze); -} -if (!Object.preventExtensions) { - Object.preventExtensions = function preventExtensions(object) { - return object; - }; -} -if (!Object.isSealed) { - Object.isSealed = function isSealed(object) { - return false; - }; -} -if (!Object.isFrozen) { - Object.isFrozen = function isFrozen(object) { - return false; - }; -} -if (!Object.isExtensible) { - Object.isExtensible = function isExtensible(object) { - if (Object(object) === object) { - throw new TypeError(); // TODO message - } - var name = ''; - while (owns(object, name)) { - name += '?'; - } - object[name] = true; - var returnValue = owns(object, name); - delete object[name]; - return returnValue; - }; -} -if (!Object.keys) { - var hasDontEnumBug = true, - dontEnums = [ - "toString", - "toLocaleString", - "valueOf", - "hasOwnProperty", - "isPrototypeOf", - "propertyIsEnumerable", - "constructor" - ], - dontEnumsLength = dontEnums.length; - - for (var key in {"toString": null}) { - hasDontEnumBug = false; - } - - Object.keys = function keys(object) { - - if ( - (typeof object != "object" && typeof object != "function") || - object === null - ) { - throw new TypeError("Object.keys called on a non-object"); - } - - var keys = []; - for (var name in object) { - if (owns(object, name)) { - keys.push(name); - } - } - - if (hasDontEnumBug) { - for (var i = 0, ii = dontEnumsLength; i < ii; i++) { - var dontEnum = dontEnums[i]; - if (owns(object, dontEnum)) { - keys.push(dontEnum); - } - } - } - return keys; - }; - -} -if (!Date.now) { - Date.now = function now() { - return new Date().getTime(); - }; -} -var ws = "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" + - "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028" + - "\u2029\uFEFF"; -if (!String.prototype.trim || ws.trim()) { - ws = "[" + ws + "]"; - var trimBeginRegexp = new RegExp("^" + ws + ws + "*"), - trimEndRegexp = new RegExp(ws + ws + "*$"); - String.prototype.trim = function trim() { - return String(this).replace(trimBeginRegexp, "").replace(trimEndRegexp, ""); - }; -} - -function toInteger(n) { - n = +n; - if (n !== n) { // isNaN - n = 0; - } else if (n !== 0 && n !== (1/0) && n !== -(1/0)) { - n = (n > 0 || -1) * Math.floor(Math.abs(n)); - } - return n; -} - -function isPrimitive(input) { - var type = typeof input; - return ( - input === null || - type === "undefined" || - type === "boolean" || - type === "number" || - type === "string" - ); -} - -function toPrimitive(input) { - var val, valueOf, toString; - if (isPrimitive(input)) { - return input; - } - valueOf = input.valueOf; - if (typeof valueOf === "function") { - val = valueOf.call(input); - if (isPrimitive(val)) { - return val; - } - } - toString = input.toString; - if (typeof toString === "function") { - val = toString.call(input); - if (isPrimitive(val)) { - return val; - } - } - throw new TypeError(); -} -var toObject = function (o) { - if (o == null) { // this matches both null and undefined - throw new TypeError("can't convert "+o+" to object"); - } - return Object(o); -}; - -}); diff --git a/vendor/assets/javascripts/ace/worker-css.js b/vendor/assets/javascripts/ace/worker-css.js index bb86bd7a..25f82ab1 100644 --- a/vendor/assets/javascripts/ace/worker-css.js +++ b/vendor/assets/javascripts/ace/worker-css.js @@ -21,11 +21,11 @@ window.ace = window; window.onerror = function(message, file, line, col, err) { postMessage({type: "error", data: { message: message, - data: err.data, + data: err && err.data, file: file, line: line, col: col, - stack: err.stack + stack: err && err.stack }}); }; @@ -134,7 +134,7 @@ window.define = function(id, deps, factory) { exports: {}, factory: function() { var module = this; - var returnExports = factory.apply(this, deps.map(function(dep) { + var returnExports = factory.apply(this, deps.slice(0, factory.length).map(function(dep) { switch (dep) { // Because "require", "exports" and "module" aren't actual // dependencies, we must handle them seperately. @@ -153,10 +153,10 @@ window.define = function(id, deps, factory) { }; }; window.define.amd = {}; -require.tlns = {}; +window.require.tlns = {}; window.initBaseUrls = function initBaseUrls(topLevelNamespaces) { for (var i in topLevelNamespaces) - require.tlns[i] = topLevelNamespaces[i]; + this.require.tlns[i] = topLevelNamespaces[i]; }; window.initSender = function initSender() { @@ -209,18 +209,15 @@ window.onmessage = function(e) { } else if (msg.init) { window.initBaseUrls(msg.tlns); - require("ace/lib/es5-shim"); sender = window.sender = window.initSender(); - var clazz = require(msg.module)[msg.classname]; + var clazz = this.require(msg.module)[msg.classname]; main = window.main = new clazz(sender); } }; })(this); -define("ace/lib/oop",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.inherits = function(ctor, superCtor) { +define("ace/lib/oop",[], function(require, exports, module){"use strict"; +exports.inherits = function (ctor, superCtor) { ctor.super_ = superCtor; ctor.prototype = Object.create(superCtor.prototype, { constructor: { @@ -231,74 +228,19 @@ exports.inherits = function(ctor, superCtor) { } }); }; - -exports.mixin = function(obj, mixin) { +exports.mixin = function (obj, mixin) { for (var key in mixin) { obj[key] = mixin[key]; } return obj; }; - -exports.implement = function(proto, mixin) { +exports.implement = function (proto, mixin) { exports.mixin(proto, mixin); }; }); -define("ace/lib/lang",["require","exports","module"], function(require, exports, module) { -"use strict"; - -exports.last = function(a) { - return a[a.length - 1]; -}; - -exports.stringReverse = function(string) { - return string.split("").reverse().join(""); -}; - -exports.stringRepeat = function (string, count) { - var result = ''; - while (count > 0) { - if (count & 1) - result += string; - - if (count >>= 1) - string += string; - } - return result; -}; - -var trimBeginRegexp = /^\s\s*/; -var trimEndRegexp = /\s\s*$/; - -exports.stringTrimLeft = function (string) { - return string.replace(trimBeginRegexp, ''); -}; - -exports.stringTrimRight = function (string) { - return string.replace(trimEndRegexp, ''); -}; - -exports.copyObject = function(obj) { - var copy = {}; - for (var key in obj) { - copy[key] = obj[key]; - } - return copy; -}; - -exports.copyArray = function(array){ - var copy = []; - for (var i=0, l=array.length; i 0) { + if (count & 1) + result += string; + if (count >>= 1) + string += string; + } + return result; +}; +var trimBeginRegexp = /^\s\s*/; +var trimEndRegexp = /\s\s*$/; +exports.stringTrimLeft = function (string) { + return string.replace(trimBeginRegexp, ''); +}; +exports.stringTrimRight = function (string) { + return string.replace(trimEndRegexp, ''); +}; +exports.copyObject = function (obj) { + var copy = {}; + for (var key in obj) { + copy[key] = obj[key]; + } + return copy; +}; +exports.copyArray = function (array) { + var copy = []; + for (var i = 0, l = array.length; i < l; i++) { + if (array[i] && typeof array[i] == "object") + copy[i] = this.copyObject(array[i]); + else + copy[i] = array[i]; + } + return copy; +}; +exports.deepCopy = require("./deep_copy").deepCopy; +exports.arrayToMap = function (arr) { var map = {}; - for (var i=0; i 0xffff ? 2 : 1; +}; + }); -define("ace/range",["require","exports","module"], function(require, exports, module) { -"use strict"; -var comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; -var Range = function(startRow, startColumn, endRow, endColumn) { - this.start = { - row: startRow, - column: startColumn - }; - - this.end = { - row: endRow, - column: endColumn - }; -}; - -(function() { - this.isEqual = function(range) { - return this.start.row === range.start.row && - this.end.row === range.end.row && - this.start.column === range.start.column && - this.end.column === range.end.column; - }; - this.toString = function() { - return ("Range: [" + this.start.row + "/" + this.start.column + - "] -> [" + this.end.row + "/" + this.end.column + "]"); - }; - - this.contains = function(row, column) { - return this.compare(row, column) == 0; - }; - this.compareRange = function(range) { - var cmp, - end = range.end, - start = range.start; - - cmp = this.compare(end.row, end.column); - if (cmp == 1) { - cmp = this.compare(start.row, start.column); - if (cmp == 1) { - return 2; - } else if (cmp == 0) { - return 1; - } else { - return 0; - } - } else if (cmp == -1) { - return -2; - } else { - cmp = this.compare(start.row, start.column); - if (cmp == -1) { - return -1; - } else if (cmp == 1) { - return 42; - } else { - return 0; - } - } - }; - this.comparePoint = function(p) { - return this.compare(p.row, p.column); - }; - this.containsRange = function(range) { - return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; - }; - this.intersects = function(range) { - var cmp = this.compareRange(range); - return (cmp == -1 || cmp == 0 || cmp == 1); - }; - this.isEnd = function(row, column) { - return this.end.row == row && this.end.column == column; - }; - this.isStart = function(row, column) { - return this.start.row == row && this.start.column == column; - }; - this.setStart = function(row, column) { - if (typeof row == "object") { - this.start.column = row.column; - this.start.row = row.row; - } else { - this.start.row = row; - this.start.column = column; - } - }; - this.setEnd = function(row, column) { - if (typeof row == "object") { - this.end.column = row.column; - this.end.row = row.row; - } else { - this.end.row = row; - this.end.column = column; - } - }; - this.inside = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column) || this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideStart = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isEnd(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.insideEnd = function(row, column) { - if (this.compare(row, column) == 0) { - if (this.isStart(row, column)) { - return false; - } else { - return true; - } - } - return false; - }; - this.compare = function(row, column) { - if (!this.isMultiLine()) { - if (row === this.start.row) { - return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); - } - } - - if (row < this.start.row) - return -1; - - if (row > this.end.row) - return 1; - - if (this.start.row === row) - return column >= this.start.column ? 0 : -1; - - if (this.end.row === row) - return column <= this.end.column ? 0 : 1; - - return 0; - }; - this.compareStart = function(row, column) { - if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.compareEnd = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else { - return this.compare(row, column); - } - }; - this.compareInside = function(row, column) { - if (this.end.row == row && this.end.column == column) { - return 1; - } else if (this.start.row == row && this.start.column == column) { - return -1; - } else { - return this.compare(row, column); - } - }; - this.clipRows = function(firstRow, lastRow) { - if (this.end.row > lastRow) - var end = {row: lastRow + 1, column: 0}; - else if (this.end.row < firstRow) - var end = {row: firstRow, column: 0}; - - if (this.start.row > lastRow) - var start = {row: lastRow + 1, column: 0}; - else if (this.start.row < firstRow) - var start = {row: firstRow, column: 0}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - this.extend = function(row, column) { - var cmp = this.compare(row, column); - - if (cmp == 0) - return this; - else if (cmp == -1) - var start = {row: row, column: column}; - else - var end = {row: row, column: column}; - - return Range.fromPoints(start || this.start, end || this.end); - }; - - this.isEmpty = function() { - return (this.start.row === this.end.row && this.start.column === this.end.column); - }; - this.isMultiLine = function() { - return (this.start.row !== this.end.row); - }; - this.clone = function() { - return Range.fromPoints(this.start, this.end); - }; - this.collapseRows = function() { - if (this.end.column == 0) - return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0); - else - return new Range(this.start.row, 0, this.end.row, 0); - }; - this.toScreenRange = function(session) { - var screenPosStart = session.documentToScreenPosition(this.start); - var screenPosEnd = session.documentToScreenPosition(this.end); - - return new Range( - screenPosStart.row, screenPosStart.column, - screenPosEnd.row, screenPosEnd.column - ); - }; - this.moveBy = function(row, column) { - this.start.row += row; - this.start.column += column; - this.end.row += row; - this.end.column += column; - }; - -}).call(Range.prototype); -Range.fromPoints = function(start, end) { - return new Range(start.row, start.column, end.row, end.column); -}; -Range.comparePoints = comparePoints; - -Range.comparePoints = function(p1, p2) { - return p1.row - p2.row || p1.column - p2.column; -}; - - -exports.Range = Range; -}); - -define("ace/apply_delta",["require","exports","module"], function(require, exports, module) { -"use strict"; - -function throwDeltaError(delta, errorText){ +define("ace/apply_delta",[], function(require, exports, module){"use strict"; +function throwDeltaError(delta, errorText) { console.log("Invalid Delta:", delta); throw "Invalid Delta: " + errorText; } - function positionInDocument(docLines, position) { - return position.row >= 0 && position.row < docLines.length && - position.column >= 0 && position.column <= docLines[position.row].length; + return position.row >= 0 && position.row < docLines.length && + position.column >= 0 && position.column <= docLines[position.row].length; } - function validateDelta(docLines, delta) { if (delta.action != "insert" && delta.action != "remove") throwDeltaError(delta, "delta.action must be 'insert' or 'remove'"); if (!(delta.lines instanceof Array)) throwDeltaError(delta, "delta.lines must be an Array"); if (!delta.start || !delta.end) - throwDeltaError(delta, "delta.start/end must be an present"); + throwDeltaError(delta, "delta.start/end must be an present"); var start = delta.start; if (!positionInDocument(docLines, delta.start)) throwDeltaError(delta, "delta.start must be contained in document"); @@ -703,9 +438,7 @@ function validateDelta(docLines, delta) { if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars) throwDeltaError(delta, "delta.range must match delta lines"); } - -exports.applyDelta = function(docLines, delta, doNotValidate) { - +exports.applyDelta = function (docLines, delta, doNotValidate) { var row = delta.start.row; var startColumn = delta.start.column; var line = docLines[row] || ""; @@ -714,7 +447,8 @@ exports.applyDelta = function(docLines, delta, doNotValidate) { var lines = delta.lines; if (lines.length === 1) { docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn); - } else { + } + else { var args = [row, 1].concat(delta.lines); docLines.splice.apply(docLines, args); docLines[row] = line.substring(0, startColumn) + docLines[row]; @@ -726,79 +460,69 @@ exports.applyDelta = function(docLines, delta, doNotValidate) { var endRow = delta.end.row; if (row === endRow) { docLines[row] = line.substring(0, startColumn) + line.substring(endColumn); - } else { - docLines.splice( - row, endRow - row + 1, - line.substring(0, startColumn) + docLines[endRow].substring(endColumn) - ); + } + else { + docLines.splice(row, endRow - row + 1, line.substring(0, startColumn) + docLines[endRow].substring(endColumn)); } break; } }; + }); -define("ace/lib/event_emitter",["require","exports","module"], function(require, exports, module) { -"use strict"; - +define("ace/lib/event_emitter",[], function(require, exports, module){"use strict"; var EventEmitter = {}; -var stopPropagation = function() { this.propagationStopped = true; }; -var preventDefault = function() { this.defaultPrevented = true; }; - +var stopPropagation = function () { this.propagationStopped = true; }; +var preventDefault = function () { this.defaultPrevented = true; }; EventEmitter._emit = -EventEmitter._dispatchEvent = function(eventName, e) { - this._eventRegistry || (this._eventRegistry = {}); - this._defaultHandlers || (this._defaultHandlers = {}); - - var listeners = this._eventRegistry[eventName] || []; - var defaultHandler = this._defaultHandlers[eventName]; - if (!listeners.length && !defaultHandler) - return; - - if (typeof e != "object" || !e) - e = {}; - - if (!e.type) - e.type = eventName; - if (!e.stopPropagation) - e.stopPropagation = stopPropagation; - if (!e.preventDefault) - e.preventDefault = preventDefault; - - listeners = listeners.slice(); - for (var i=0; i this.row) - return; - - var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight); - this.setPosition(point.row, point.column, true); - }; - - function $pointsInOrder(point1, point2, equalPointsInOrder) { - var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; - return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); - } - - function $getTransformedPoint(delta, point, moveIfEqual) { - var deltaIsInsert = delta.action == "insert"; - var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); - var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); - var deltaStart = delta.start; - var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. - if ($pointsInOrder(point, deltaStart, moveIfEqual)) { - return { - row: point.row, - column: point.column - }; - } - if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { - return { - row: point.row + deltaRowShift, - column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) - }; - } - - return { - row: deltaStart.row, - column: deltaStart.column +define("ace/range",[], function(require, exports, module){"use strict"; +var Range = /** @class */ (function () { + function Range(startRow, startColumn, endRow, endColumn) { + this.start = { + row: startRow, + column: startColumn + }; + this.end = { + row: endRow, + column: endColumn }; } - this.setPosition = function(row, column, noClip) { + Range.prototype.isEqual = function (range) { + return this.start.row === range.start.row && + this.end.row === range.end.row && + this.start.column === range.start.column && + this.end.column === range.end.column; + }; + Range.prototype.toString = function () { + return ("Range: [" + this.start.row + "/" + this.start.column + + "] -> [" + this.end.row + "/" + this.end.column + "]"); + }; + Range.prototype.contains = function (row, column) { + return this.compare(row, column) == 0; + }; + Range.prototype.compareRange = function (range) { + var cmp, end = range.end, start = range.start; + cmp = this.compare(end.row, end.column); + if (cmp == 1) { + cmp = this.compare(start.row, start.column); + if (cmp == 1) { + return 2; + } + else if (cmp == 0) { + return 1; + } + else { + return 0; + } + } + else if (cmp == -1) { + return -2; + } + else { + cmp = this.compare(start.row, start.column); + if (cmp == -1) { + return -1; + } + else if (cmp == 1) { + return 42; + } + else { + return 0; + } + } + }; + Range.prototype.comparePoint = function (p) { + return this.compare(p.row, p.column); + }; + Range.prototype.containsRange = function (range) { + return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0; + }; + Range.prototype.intersects = function (range) { + var cmp = this.compareRange(range); + return (cmp == -1 || cmp == 0 || cmp == 1); + }; + Range.prototype.isEnd = function (row, column) { + return this.end.row == row && this.end.column == column; + }; + Range.prototype.isStart = function (row, column) { + return this.start.row == row && this.start.column == column; + }; + Range.prototype.setStart = function (row, column) { + if (typeof row == "object") { + this.start.column = row.column; + this.start.row = row.row; + } + else { + this.start.row = row; + this.start.column = column; + } + }; + Range.prototype.setEnd = function (row, column) { + if (typeof row == "object") { + this.end.column = row.column; + this.end.row = row.row; + } + else { + this.end.row = row; + this.end.column = column; + } + }; + Range.prototype.inside = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column) || this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideStart = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isEnd(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.insideEnd = function (row, column) { + if (this.compare(row, column) == 0) { + if (this.isStart(row, column)) { + return false; + } + else { + return true; + } + } + return false; + }; + Range.prototype.compare = function (row, column) { + if (!this.isMultiLine()) { + if (row === this.start.row) { + return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0); + } + } + if (row < this.start.row) + return -1; + if (row > this.end.row) + return 1; + if (this.start.row === row) + return column >= this.start.column ? 0 : -1; + if (this.end.row === row) + return column <= this.end.column ? 0 : 1; + return 0; + }; + Range.prototype.compareStart = function (row, column) { + if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareEnd = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.compareInside = function (row, column) { + if (this.end.row == row && this.end.column == column) { + return 1; + } + else if (this.start.row == row && this.start.column == column) { + return -1; + } + else { + return this.compare(row, column); + } + }; + Range.prototype.clipRows = function (firstRow, lastRow) { + if (this.end.row > lastRow) + var end = { row: lastRow + 1, column: 0 }; + else if (this.end.row < firstRow) + var end = { row: firstRow, column: 0 }; + if (this.start.row > lastRow) + var start = { row: lastRow + 1, column: 0 }; + else if (this.start.row < firstRow) + var start = { row: firstRow, column: 0 }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.extend = function (row, column) { + var cmp = this.compare(row, column); + if (cmp == 0) + return this; + else if (cmp == -1) + var start = { row: row, column: column }; + else + var end = { row: row, column: column }; + return Range.fromPoints(start || this.start, end || this.end); + }; + Range.prototype.isEmpty = function () { + return (this.start.row === this.end.row && this.start.column === this.end.column); + }; + Range.prototype.isMultiLine = function () { + return (this.start.row !== this.end.row); + }; + Range.prototype.clone = function () { + return Range.fromPoints(this.start, this.end); + }; + Range.prototype.collapseRows = function () { + if (this.end.column == 0) + return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0); + else + return new Range(this.start.row, 0, this.end.row, 0); + }; + Range.prototype.toScreenRange = function (session) { + var screenPosStart = session.documentToScreenPosition(this.start); + var screenPosEnd = session.documentToScreenPosition(this.end); + return new Range(screenPosStart.row, screenPosStart.column, screenPosEnd.row, screenPosEnd.column); + }; + Range.prototype.moveBy = function (row, column) { + this.start.row += row; + this.start.column += column; + this.end.row += row; + this.end.column += column; + }; + return Range; +}()); +Range.fromPoints = function (start, end) { + return new Range(start.row, start.column, end.row, end.column); +}; +Range.comparePoints = function (p1, p2) { + return p1.row - p2.row || p1.column - p2.column; +}; +exports.Range = Range; + +}); + +define("ace/anchor",[], function(require, exports, module){"use strict"; +var oop = require("./lib/oop"); +var EventEmitter = require("./lib/event_emitter").EventEmitter; +var Anchor = /** @class */ (function () { + function Anchor(doc, row, column) { + this.$onChange = this.onChange.bind(this); + this.attach(doc); + if (typeof row != "number") + this.setPosition(row.row, row.column); + else + this.setPosition(row, column); + } + Anchor.prototype.getPosition = function () { + return this.$clipPositionToDocument(this.row, this.column); + }; + Anchor.prototype.getDocument = function () { + return this.document; + }; + Anchor.prototype.onChange = function (delta) { + if (delta.start.row == delta.end.row && delta.start.row != this.row) + return; + if (delta.start.row > this.row) + return; + var point = $getTransformedPoint(delta, { row: this.row, column: this.column }, this.$insertRight); + this.setPosition(point.row, point.column, true); + }; + Anchor.prototype.setPosition = function (row, column, noClip) { var pos; if (noClip) { pos = { row: row, column: column }; - } else { + } + else { pos = this.$clipPositionToDocument(row, column); } - if (this.row == pos.row && this.column == pos.column) return; - var old = { row: this.row, column: this.column }; - this.row = pos.row; this.column = pos.column; this._signal("change", { @@ -955,16 +860,15 @@ var Anchor = exports.Anchor = function(doc, row, column) { value: pos }); }; - this.detach = function() { - this.document.removeEventListener("change", this.$onChange); + Anchor.prototype.detach = function () { + this.document.off("change", this.$onChange); }; - this.attach = function(doc) { + Anchor.prototype.attach = function (doc) { this.document = doc || this.document; this.document.on("change", this.$onChange); }; - this.$clipPositionToDocument = function(row, column) { + Anchor.prototype.$clipPositionToDocument = function (row, column) { var pos = {}; - if (row >= this.document.getLength()) { pos.row = Math.max(0, this.document.getLength() - 1); pos.column = this.document.getLine(pos.row).length; @@ -977,113 +881,123 @@ var Anchor = exports.Anchor = function(doc, row, column) { pos.row = row; pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column)); } - if (column < 0) pos.column = 0; - return pos; }; - -}).call(Anchor.prototype); + return Anchor; +}()); +Anchor.prototype.$insertRight = false; +oop.implement(Anchor.prototype, EventEmitter); +function $pointsInOrder(point1, point2, equalPointsInOrder) { + var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column; + return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter); +} +function $getTransformedPoint(delta, point, moveIfEqual) { + var deltaIsInsert = delta.action == "insert"; + var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row); + var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column); + var deltaStart = delta.start; + var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range. + if ($pointsInOrder(point, deltaStart, moveIfEqual)) { + return { + row: point.row, + column: point.column + }; + } + if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) { + return { + row: point.row + deltaRowShift, + column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0) + }; + } + return { + row: deltaStart.row, + column: deltaStart.column + }; +} +exports.Anchor = Anchor; }); -define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"], function(require, exports, module) { -"use strict"; - +define("ace/document",[], function(require, exports, module){"use strict"; var oop = require("./lib/oop"); var applyDelta = require("./apply_delta").applyDelta; var EventEmitter = require("./lib/event_emitter").EventEmitter; var Range = require("./range").Range; var Anchor = require("./anchor").Anchor; - -var Document = function(textOrLines) { - this.$lines = [""]; - if (textOrLines.length === 0) { +var Document = /** @class */ (function () { + function Document(textOrLines) { this.$lines = [""]; - } else if (Array.isArray(textOrLines)) { - this.insertMergedLines({row: 0, column: 0}, textOrLines); - } else { - this.insert({row: 0, column:0}, textOrLines); + if (textOrLines.length === 0) { + this.$lines = [""]; + } + else if (Array.isArray(textOrLines)) { + this.insertMergedLines({ row: 0, column: 0 }, textOrLines); + } + else { + this.insert({ row: 0, column: 0 }, textOrLines); + } } -}; - -(function() { - - oop.implement(this, EventEmitter); - this.setValue = function(text) { + Document.prototype.setValue = function (text) { var len = this.getLength() - 1; this.remove(new Range(0, 0, len, this.getLine(len).length)); - this.insert({row: 0, column: 0}, text); + this.insert({ row: 0, column: 0 }, text || ""); }; - this.getValue = function() { + Document.prototype.getValue = function () { return this.getAllLines().join(this.getNewLineCharacter()); }; - this.createAnchor = function(row, column) { + Document.prototype.createAnchor = function (row, column) { return new Anchor(this, row, column); }; - if ("aaa".split(/a/).length === 0) { - this.$split = function(text) { - return text.replace(/\r\n|\r/g, "\n").split("\n"); - }; - } else { - this.$split = function(text) { - return text.split(/\r\n|\r|\n/); - }; - } - - - this.$detectNewLine = function(text) { + Document.prototype.$detectNewLine = function (text) { var match = text.match(/^.*?(\r\n|\r|\n)/m); this.$autoNewLine = match ? match[1] : "\n"; this._signal("changeNewLineMode"); }; - this.getNewLineCharacter = function() { + Document.prototype.getNewLineCharacter = function () { switch (this.$newLineMode) { - case "windows": - return "\r\n"; - case "unix": - return "\n"; - default: - return this.$autoNewLine || "\n"; + case "windows": + return "\r\n"; + case "unix": + return "\n"; + default: + return this.$autoNewLine || "\n"; } }; - - this.$autoNewLine = ""; - this.$newLineMode = "auto"; - this.setNewLineMode = function(newLineMode) { + Document.prototype.setNewLineMode = function (newLineMode) { if (this.$newLineMode === newLineMode) return; - this.$newLineMode = newLineMode; this._signal("changeNewLineMode"); }; - this.getNewLineMode = function() { + Document.prototype.getNewLineMode = function () { return this.$newLineMode; }; - this.isNewLine = function(text) { + Document.prototype.isNewLine = function (text) { return (text == "\r\n" || text == "\r" || text == "\n"); }; - this.getLine = function(row) { + Document.prototype.getLine = function (row) { return this.$lines[row] || ""; }; - this.getLines = function(firstRow, lastRow) { + Document.prototype.getLines = function (firstRow, lastRow) { return this.$lines.slice(firstRow, lastRow + 1); }; - this.getAllLines = function() { + Document.prototype.getAllLines = function () { return this.getLines(0, this.getLength()); }; - this.getLength = function() { + Document.prototype.getLength = function () { return this.$lines.length; }; - this.getTextRange = function(range) { + Document.prototype.getTextRange = function (range) { return this.getLinesForRange(range).join(this.getNewLineCharacter()); }; - this.getLinesForRange = function(range) { + Document.prototype.getLinesForRange = function (range) { var lines; if (range.start.row === range.end.row) { lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)]; - } else { + } + else { lines = this.getLines(range.start.row, range.end.row); lines[0] = (lines[0] || "").substring(range.start.column); var l = lines.length - 1; @@ -1092,45 +1006,43 @@ var Document = function(textOrLines) { } return lines; }; - this.insertLines = function(row, lines) { + Document.prototype.insertLines = function (row, lines) { console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."); return this.insertFullLines(row, lines); }; - this.removeLines = function(firstRow, lastRow) { + Document.prototype.removeLines = function (firstRow, lastRow) { console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."); return this.removeFullLines(firstRow, lastRow); }; - this.insertNewLine = function(position) { + Document.prototype.insertNewLine = function (position) { console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."); return this.insertMergedLines(position, ["", ""]); }; - this.insert = function(position, text) { + Document.prototype.insert = function (position, text) { if (this.getLength() <= 1) this.$detectNewLine(text); - return this.insertMergedLines(position, this.$split(text)); }; - this.insertInLine = function(position, text) { + Document.prototype.insertInLine = function (position, text) { var start = this.clippedPos(position.row, position.column); var end = this.pos(position.row, position.column + text.length); - this.applyDelta({ start: start, end: end, action: "insert", lines: [text] }, true); - return this.clonePos(end); }; - - this.clippedPos = function(row, column) { + Document.prototype.clippedPos = function (row, column) { var length = this.getLength(); if (row === undefined) { row = length; - } else if (row < 0) { + } + else if (row < 0) { row = 0; - } else if (row >= length) { + } + else if (row >= length) { row = length - 1; column = undefined; } @@ -1138,93 +1050,87 @@ var Document = function(textOrLines) { if (column == undefined) column = line.length; column = Math.min(Math.max(column, 0), line.length); - return {row: row, column: column}; + return { row: row, column: column }; }; - - this.clonePos = function(pos) { - return {row: pos.row, column: pos.column}; + Document.prototype.clonePos = function (pos) { + return { row: pos.row, column: pos.column }; }; - - this.pos = function(row, column) { - return {row: row, column: column}; + Document.prototype.pos = function (row, column) { + return { row: row, column: column }; }; - - this.$clipPosition = function(position) { + Document.prototype.$clipPosition = function (position) { var length = this.getLength(); if (position.row >= length) { position.row = Math.max(0, length - 1); position.column = this.getLine(length - 1).length; - } else { + } + else { position.row = Math.max(0, position.row); position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length); } return position; }; - this.insertFullLines = function(row, lines) { + Document.prototype.insertFullLines = function (row, lines) { row = Math.min(Math.max(row, 0), this.getLength()); var column = 0; if (row < this.getLength()) { lines = lines.concat([""]); column = 0; - } else { + } + else { lines = [""].concat(lines); row--; column = this.$lines[row].length; } - this.insertMergedLines({row: row, column: column}, lines); - }; - this.insertMergedLines = function(position, lines) { + this.insertMergedLines({ row: row, column: column }, lines); + }; + Document.prototype.insertMergedLines = function (position, lines) { var start = this.clippedPos(position.row, position.column); var end = { row: start.row + lines.length - 1, column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length }; - this.applyDelta({ start: start, end: end, action: "insert", lines: lines }); - return this.clonePos(end); }; - this.remove = function(range) { + Document.prototype.remove = function (range) { var start = this.clippedPos(range.start.row, range.start.column); var end = this.clippedPos(range.end.row, range.end.column); this.applyDelta({ start: start, end: end, action: "remove", - lines: this.getLinesForRange({start: start, end: end}) + lines: this.getLinesForRange({ start: start, end: end }) }); return this.clonePos(start); }; - this.removeInLine = function(row, startColumn, endColumn) { + Document.prototype.removeInLine = function (row, startColumn, endColumn) { var start = this.clippedPos(row, startColumn); var end = this.clippedPos(row, endColumn); - this.applyDelta({ start: start, end: end, action: "remove", - lines: this.getLinesForRange({start: start, end: end}) + lines: this.getLinesForRange({ start: start, end: end }) }, true); - return this.clonePos(start); }; - this.removeFullLines = function(firstRow, lastRow) { + Document.prototype.removeFullLines = function (firstRow, lastRow) { firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1); - lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1); + lastRow = Math.min(Math.max(0, lastRow), this.getLength() - 1); var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0; - var deleteLastNewLine = lastRow < this.getLength() - 1; - var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow ); - var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 ); - var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow ); - var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); + var deleteLastNewLine = lastRow < this.getLength() - 1; + var startRow = (deleteFirstNewLine ? firstRow - 1 : firstRow); + var startCol = (deleteFirstNewLine ? this.getLine(startRow).length : 0); + var endRow = (deleteLastNewLine ? lastRow + 1 : lastRow); + var endCol = (deleteLastNewLine ? 0 : this.getLine(endRow).length); var range = new Range(startRow, startCol, endRow, endCol); var deletedLines = this.$lines.slice(firstRow, lastRow + 1); - this.applyDelta({ start: range.start, end: range.end, @@ -1233,7 +1139,7 @@ var Document = function(textOrLines) { }); return deletedLines; }; - this.removeNewLine = function(row) { + Document.prototype.removeNewLine = function (row) { if (row < this.getLength() - 1 && row >= 0) { this.applyDelta({ start: this.pos(row, this.getLine(row).length), @@ -1243,14 +1149,13 @@ var Document = function(textOrLines) { }); } }; - this.replace = function(range, text) { + Document.prototype.replace = function (range, text) { if (!(range instanceof Range)) range = Range.fromPoints(range.start, range.end); if (text.length === 0 && range.isEmpty()) return range.start; if (text == this.getTextRange(range)) return range.end; - this.remove(range); var end; if (text) { @@ -1259,48 +1164,47 @@ var Document = function(textOrLines) { else { end = range.start; } - return end; }; - this.applyDeltas = function(deltas) { - for (var i=0; i=0; i--) { + Document.prototype.revertDeltas = function (deltas) { + for (var i = deltas.length - 1; i >= 0; i--) { this.revertDelta(deltas[i]); } }; - this.applyDelta = function(delta, doNotValidate) { + Document.prototype.applyDelta = function (delta, doNotValidate) { var isInsert = delta.action == "insert"; if (isInsert ? delta.lines.length <= 1 && !delta.lines[0] : !Range.comparePoints(delta.start, delta.end)) { return; } - - if (isInsert && delta.lines.length > 20000) + if (isInsert && delta.lines.length > 20000) { this.$splitAndapplyLargeDelta(delta, 20000); - applyDelta(this.$lines, delta, doNotValidate); - this._signal("change", delta); + } + else { + applyDelta(this.$lines, delta, doNotValidate); + this._signal("change", delta); + } }; - - this.$splitAndapplyLargeDelta = function(delta, MAX) { + Document.prototype.$safeApplyDelta = function (delta) { + var docLength = this.$lines.length; + if (delta.action == "remove" && delta.start.row < docLength && delta.end.row < docLength + || delta.action == "insert" && delta.start.row <= docLength) { + this.applyDelta(delta); + } + }; + Document.prototype.$splitAndapplyLargeDelta = function (delta, MAX) { var lines = delta.lines; - var l = lines.length; - var row = delta.start.row; + var l = lines.length - MAX + 1; + var row = delta.start.row; var column = delta.start.column; - var from = 0, to = 0; - do { - from = to; + for (var from = 0, to = 0; from < l; from = to) { to += MAX - 1; var chunk = lines.slice(from, to); - if (to > l) { - delta.lines = chunk; - delta.start.row = row + from; - delta.start.column = column; - break; - } chunk.push(""); this.applyDelta({ start: this.pos(row + from, column), @@ -1308,46 +1212,54 @@ var Document = function(textOrLines) { action: delta.action, lines: chunk }, true); - } while(true); + } + delta.lines = lines.slice(from); + delta.start.row = row + from; + delta.start.column = column; + this.applyDelta(delta, true); }; - this.revertDelta = function(delta) { - this.applyDelta({ + Document.prototype.revertDelta = function (delta) { + this.$safeApplyDelta({ start: this.clonePos(delta.start), end: this.clonePos(delta.end), action: (delta.action == "insert" ? "remove" : "insert"), lines: delta.lines.slice() }); }; - this.indexToPosition = function(index, startRow) { + Document.prototype.indexToPosition = function (index, startRow) { var lines = this.$lines || this.getAllLines(); var newlineLength = this.getNewLineCharacter().length; for (var i = startRow || 0, l = lines.length; i < l; i++) { index -= lines[i].length + newlineLength; if (index < 0) - return {row: i, column: index + lines[i].length + newlineLength}; + return { row: i, column: index + lines[i].length + newlineLength }; } - return {row: l-1, column: lines[l-1].length}; + return { row: l - 1, column: index + lines[l - 1].length + newlineLength }; }; - this.positionToIndex = function(pos, startRow) { + Document.prototype.positionToIndex = function (pos, startRow) { var lines = this.$lines || this.getAllLines(); var newlineLength = this.getNewLineCharacter().length; var index = 0; var row = Math.min(pos.row, lines.length); for (var i = startRow || 0; i < row; ++i) index += lines[i].length + newlineLength; - return index + pos.column; }; - -}).call(Document.prototype); - + Document.prototype.$split = function (text) { + return text.split(/\r\n|\r|\n/); + }; + return Document; +}()); +Document.prototype.$autoNewLine = ""; +Document.prototype.$newLineMode = "auto"; +oop.implement(Document.prototype, EventEmitter); exports.Document = Document; + }); -define("ace/worker/mirror",["require","exports","module","ace/range","ace/document","ace/lib/lang"], function(require, exports, module) { +define("ace/worker/mirror",[], function(require, exports, module) { "use strict"; -var Range = require("../range").Range; var Document = require("../document").Document; var lang = require("../lib/lang"); @@ -1364,11 +1276,24 @@ var Mirror = exports.Mirror = function(sender) { doc.applyDeltas(data); } else { for (var i = 0; i < data.length; i += 2) { + var d, err; if (Array.isArray(data[i+1])) { - var d = {action: "insert", start: data[i], lines: data[i+1]}; + d = {action: "insert", start: data[i], lines: data[i+1]}; } else { - var d = {action: "remove", start: data[i], end: data[i+1]}; + d = {action: "remove", start: data[i], end: data[i+1]}; } + + if ((d.action == "insert" ? d.start : d.end).row >= doc.$lines.length) { + err = new Error("Invalid delta"); + err.data = { + path: _self.$path, + linesLength: doc.$lines.length, + start: d.start, + end: d.end + }; + throw err; + } + doc.applyDelta(d, true); } } @@ -1406,590 +1331,218 @@ var Mirror = exports.Mirror = function(sender) { }); -define("ace/mode/css/csslint",["require","exports","module"], function(require, exports, module) { -var parserlib = {}; -(function(){ -function EventTarget(){ - this._listeners = {}; -} +define("ace/mode/css/csslint",[], function(require, exports, module) { -EventTarget.prototype = { - constructor: EventTarget, - addListener: function(type, listener){ - if (!this._listeners[type]){ - this._listeners[type] = []; - } +var CSSLint = (function(){ + var module = module || {}, + exports = exports || {}; +var parserlib = (function () { +var require; +require=(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i= 0 && this._ltIndex < this._lt.length){ - - i++; - this._token = this._lt[this._ltIndex++]; - info = tokenInfo[this._token.type]; - while((info.channel !== undefined && channel !== info.channel) && - this._ltIndex < this._lt.length){ - this._token = this._lt[this._ltIndex++]; - info = tokenInfo[this._token.type]; - i++; - } - if ((info.channel === undefined || channel === info.channel) && - this._ltIndex <= this._lt.length){ - this._ltIndexCache.push(i); - return this._token.type; - } - } - token = this._getToken(); - if (token.type > -1 && !tokenInfo[token.type].hide){ - token.channel = tokenInfo[token.type].channel; - this._token = token; - this._lt.push(token); - this._ltIndexCache.push(this._lt.length - this._ltIndex + i); - if (this._lt.length > 5){ - this._lt.shift(); - } - if (this._ltIndexCache.length > 5){ - this._ltIndexCache.shift(); - } - this._ltIndex = this._lt.length; - } - info = tokenInfo[token.type]; - if (info && - (info.hide || - (info.channel !== undefined && channel !== info.channel))){ - return this.get(channel); - } else { - return token.type; - } - }, - LA: function(index){ - var total = index, - tt; - if (index > 0){ - if (index > 5){ - throw new Error("Too much lookahead."); - } - while(total){ - tt = this.get(); - total--; - } - while(total < index){ - this.unget(); - total++; - } - } else if (index < 0){ - - if(this._lt[this._ltIndex+index]){ - tt = this._lt[this._ltIndex+index].type; - } else { - throw new Error("Too much lookbehind."); - } - - } else { - tt = this._token.type; - } - - return tt; - - }, - LT: function(index){ - this.LA(index); - return this._lt[this._ltIndex+index-1]; - }, - peek: function(){ - return this.LA(1); - }, - token: function(){ - return this._token; - }, - tokenName: function(tokenType){ - if (tokenType < 0 || tokenType > this._tokenData.length){ - return "UNKNOWN_TOKEN"; - } else { - return this._tokenData[tokenType].name; - } - }, - tokenType: function(tokenName){ - return this._tokenData[tokenName] || -1; - }, - unget: function(){ - if (this._ltIndexCache.length){ - this._ltIndex -= this._ltIndexCache.pop();//--; - this._token = this._lt[this._ltIndex - 1]; - } else { - throw new Error("Too much lookahead."); - } - } - -}; - - -parserlib.util = { -StringReader: StringReader, -SyntaxError : SyntaxError, -SyntaxUnit : SyntaxUnit, -EventTarget : EventTarget, -TokenStreamBase : TokenStreamBase -}; -})(); -(function(){ -var EventTarget = parserlib.util.EventTarget, -TokenStreamBase = parserlib.util.TokenStreamBase, -StringReader = parserlib.util.StringReader, -SyntaxError = parserlib.util.SyntaxError, -SyntaxUnit = parserlib.util.SyntaxUnit; - -var Colors = { - aliceblue :"#f0f8ff", - antiquewhite :"#faebd7", - aqua :"#00ffff", - aquamarine :"#7fffd4", - azure :"#f0ffff", - beige :"#f5f5dc", - bisque :"#ffe4c4", - black :"#000000", - blanchedalmond :"#ffebcd", - blue :"#0000ff", - blueviolet :"#8a2be2", - brown :"#a52a2a", - burlywood :"#deb887", - cadetblue :"#5f9ea0", - chartreuse :"#7fff00", - chocolate :"#d2691e", - coral :"#ff7f50", - cornflowerblue :"#6495ed", - cornsilk :"#fff8dc", - crimson :"#dc143c", - cyan :"#00ffff", - darkblue :"#00008b", - darkcyan :"#008b8b", - darkgoldenrod :"#b8860b", - darkgray :"#a9a9a9", - darkgrey :"#a9a9a9", - darkgreen :"#006400", - darkkhaki :"#bdb76b", - darkmagenta :"#8b008b", - darkolivegreen :"#556b2f", - darkorange :"#ff8c00", - darkorchid :"#9932cc", - darkred :"#8b0000", - darksalmon :"#e9967a", - darkseagreen :"#8fbc8f", - darkslateblue :"#483d8b", - darkslategray :"#2f4f4f", - darkslategrey :"#2f4f4f", - darkturquoise :"#00ced1", - darkviolet :"#9400d3", - deeppink :"#ff1493", - deepskyblue :"#00bfff", - dimgray :"#696969", - dimgrey :"#696969", - dodgerblue :"#1e90ff", - firebrick :"#b22222", - floralwhite :"#fffaf0", - forestgreen :"#228b22", - fuchsia :"#ff00ff", - gainsboro :"#dcdcdc", - ghostwhite :"#f8f8ff", - gold :"#ffd700", - goldenrod :"#daa520", - gray :"#808080", - grey :"#808080", - green :"#008000", - greenyellow :"#adff2f", - honeydew :"#f0fff0", - hotpink :"#ff69b4", - indianred :"#cd5c5c", - indigo :"#4b0082", - ivory :"#fffff0", - khaki :"#f0e68c", - lavender :"#e6e6fa", - lavenderblush :"#fff0f5", - lawngreen :"#7cfc00", - lemonchiffon :"#fffacd", - lightblue :"#add8e6", - lightcoral :"#f08080", - lightcyan :"#e0ffff", - lightgoldenrodyellow :"#fafad2", - lightgray :"#d3d3d3", - lightgrey :"#d3d3d3", - lightgreen :"#90ee90", - lightpink :"#ffb6c1", - lightsalmon :"#ffa07a", - lightseagreen :"#20b2aa", - lightskyblue :"#87cefa", - lightslategray :"#778899", - lightslategrey :"#778899", - lightsteelblue :"#b0c4de", - lightyellow :"#ffffe0", - lime :"#00ff00", - limegreen :"#32cd32", - linen :"#faf0e6", - magenta :"#ff00ff", - maroon :"#800000", - mediumaquamarine:"#66cdaa", - mediumblue :"#0000cd", - mediumorchid :"#ba55d3", - mediumpurple :"#9370d8", - mediumseagreen :"#3cb371", - mediumslateblue :"#7b68ee", - mediumspringgreen :"#00fa9a", - mediumturquoise :"#48d1cc", - mediumvioletred :"#c71585", - midnightblue :"#191970", - mintcream :"#f5fffa", - mistyrose :"#ffe4e1", - moccasin :"#ffe4b5", - navajowhite :"#ffdead", - navy :"#000080", - oldlace :"#fdf5e6", - olive :"#808000", - olivedrab :"#6b8e23", - orange :"#ffa500", - orangered :"#ff4500", - orchid :"#da70d6", - palegoldenrod :"#eee8aa", - palegreen :"#98fb98", - paleturquoise :"#afeeee", - palevioletred :"#d87093", - papayawhip :"#ffefd5", - peachpuff :"#ffdab9", - peru :"#cd853f", - pink :"#ffc0cb", - plum :"#dda0dd", - powderblue :"#b0e0e6", - purple :"#800080", - red :"#ff0000", - rosybrown :"#bc8f8f", - royalblue :"#4169e1", - saddlebrown :"#8b4513", - salmon :"#fa8072", - sandybrown :"#f4a460", - seagreen :"#2e8b57", - seashell :"#fff5ee", - sienna :"#a0522d", - silver :"#c0c0c0", - skyblue :"#87ceeb", - slateblue :"#6a5acd", - slategray :"#708090", - slategrey :"#708090", - snow :"#fffafa", - springgreen :"#00ff7f", - steelblue :"#4682b4", - tan :"#d2b48c", - teal :"#008080", - thistle :"#d8bfd8", - tomato :"#ff6347", - turquoise :"#40e0d0", - violet :"#ee82ee", - wheat :"#f5deb3", - white :"#ffffff", - whitesmoke :"#f5f5f5", - yellow :"#ffff00", - yellowgreen :"#9acd32", - activeBorder :"Active window border.", - activecaption :"Active window caption.", - appworkspace :"Background color of multiple document interface.", - background :"Desktop background.", - buttonface :"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.", - buttonhighlight :"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.", - buttonshadow :"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.", - buttontext :"Text on push buttons.", - captiontext :"Text in caption, size box, and scrollbar arrow box.", - graytext :"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.", - greytext :"Greyed (disabled) text. This color is set to #000 if the current display driver does not support a solid grey color.", - highlight :"Item(s) selected in a control.", - highlighttext :"Text of item(s) selected in a control.", - inactiveborder :"Inactive window border.", - inactivecaption :"Inactive window caption.", - inactivecaptiontext :"Color of text in an inactive caption.", - infobackground :"Background color for tooltip controls.", - infotext :"Text color for tooltip controls.", - menu :"Menu background.", - menutext :"Text in menus.", - scrollbar :"Scroll bar gray area.", - threeddarkshadow :"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - threedface :"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - threedhighlight :"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - threedlightshadow :"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - threedshadow :"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.", - window :"Window background.", - windowframe :"Window frame.", - windowtext :"Text in windows." -}; -function Combinator(text, line, col){ +var Parser = require("./Parser"); +function Combinator(text, line, col) { SyntaxUnit.call(this, text, line, col, Parser.COMBINATOR_TYPE); this.type = "unknown"; - if (/^\s+$/.test(text)){ + if (/^\s+$/.test(text)) { this.type = "descendant"; - } else if (text == ">"){ + } else if (text === ">") { this.type = "child"; - } else if (text == "+"){ + } else if (text === "+") { this.type = "adjacent-sibling"; - } else if (text == "~"){ + } else if (text === "~") { this.type = "sibling"; } @@ -1997,7 +1550,322 @@ function Combinator(text, line, col){ Combinator.prototype = new SyntaxUnit(); Combinator.prototype.constructor = Combinator; -function MediaFeature(name, value){ + + +},{"../util/SyntaxUnit":26,"./Parser":6}],3:[function(require,module,exports){ +"use strict"; + +module.exports = Matcher; + +var StringReader = require("../util/StringReader"); +var SyntaxError = require("../util/SyntaxError"); +function Matcher(matchFunc, toString) { + this.match = function(expression) { + var result; + expression.mark(); + result = matchFunc(expression); + if (result) { + expression.drop(); + } else { + expression.restore(); + } + return result; + }; + this.toString = typeof toString === "function" ? toString : function() { + return toString; + }; +} +Matcher.prec = { + MOD: 5, + SEQ: 4, + ANDAND: 3, + OROR: 2, + ALT: 1 +}; +Matcher.parse = function(str) { + var reader, eat, expr, oror, andand, seq, mod, term, result; + reader = new StringReader(str); + eat = function(matcher) { + var result = reader.readMatch(matcher); + if (result === null) { + throw new SyntaxError( + "Expected " + matcher, reader.getLine(), reader.getCol()); + } + return result; + }; + expr = function() { + var m = [ oror() ]; + while (reader.readMatch(" | ") !== null) { + m.push(oror()); + } + return m.length === 1 ? m[0] : Matcher.alt.apply(Matcher, m); + }; + oror = function() { + var m = [ andand() ]; + while (reader.readMatch(" || ") !== null) { + m.push(andand()); + } + return m.length === 1 ? m[0] : Matcher.oror.apply(Matcher, m); + }; + andand = function() { + var m = [ seq() ]; + while (reader.readMatch(" && ") !== null) { + m.push(seq()); + } + return m.length === 1 ? m[0] : Matcher.andand.apply(Matcher, m); + }; + seq = function() { + var m = [ mod() ]; + while (reader.readMatch(/^ (?![&|\]])/) !== null) { + m.push(mod()); + } + return m.length === 1 ? m[0] : Matcher.seq.apply(Matcher, m); + }; + mod = function() { + var m = term(); + if (reader.readMatch("?") !== null) { + return m.question(); + } else if (reader.readMatch("*") !== null) { + return m.star(); + } else if (reader.readMatch("+") !== null) { + return m.plus(); + } else if (reader.readMatch("#") !== null) { + return m.hash(); + } else if (reader.readMatch(/^\{\s*/) !== null) { + var min = eat(/^\d+/); + eat(/^\s*,\s*/); + var max = eat(/^\d+/); + eat(/^\s*\}/); + return m.braces(Number(min), Number(max)); + } + return m; + }; + term = function() { + if (reader.readMatch("[ ") !== null) { + var m = expr(); + eat(" ]"); + return m; + } + return Matcher.fromType(eat(/^[^ ?*+#{]+/)); + }; + result = expr(); + if (!reader.eof()) { + throw new SyntaxError( + "Expected end of string", reader.getLine(), reader.getCol()); + } + return result; +}; +Matcher.cast = function(m) { + if (m instanceof Matcher) { + return m; + } + return Matcher.parse(m); +}; +Matcher.fromType = function(type) { + var ValidationTypes = require("./ValidationTypes"); + return new Matcher(function(expression) { + return expression.hasNext() && ValidationTypes.isType(expression, type); + }, type); +}; +Matcher.seq = function() { + var ms = Array.prototype.slice.call(arguments).map(Matcher.cast); + if (ms.length === 1) { + return ms[0]; + } + return new Matcher(function(expression) { + var i, result = true; + for (i = 0; result && i < ms.length; i++) { + result = ms[i].match(expression); + } + return result; + }, function(prec) { + var p = Matcher.prec.SEQ; + var s = ms.map(function(m) { + return m.toString(p); + }).join(" "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); +}; +Matcher.alt = function() { + var ms = Array.prototype.slice.call(arguments).map(Matcher.cast); + if (ms.length === 1) { + return ms[0]; + } + return new Matcher(function(expression) { + var i, result = false; + for (i = 0; !result && i < ms.length; i++) { + result = ms[i].match(expression); + } + return result; + }, function(prec) { + var p = Matcher.prec.ALT; + var s = ms.map(function(m) { + return m.toString(p); + }).join(" | "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); +}; +Matcher.many = function(required) { + var ms = Array.prototype.slice.call(arguments, 1).reduce(function(acc, v) { + if (v.expand) { + var ValidationTypes = require("./ValidationTypes"); + acc.push.apply(acc, ValidationTypes.complex[v.expand].options); + } else { + acc.push(Matcher.cast(v)); + } + return acc; + }, []); + + if (required === true) { + required = ms.map(function() { + return true; + }); + } + + var result = new Matcher(function(expression) { + var seen = [], max = 0, pass = 0; + var success = function(matchCount) { + if (pass === 0) { + max = Math.max(matchCount, max); + return matchCount === ms.length; + } else { + return matchCount === max; + } + }; + var tryMatch = function(matchCount) { + for (var i = 0; i < ms.length; i++) { + if (seen[i]) { + continue; + } + expression.mark(); + if (ms[i].match(expression)) { + seen[i] = true; + if (tryMatch(matchCount + (required === false || required[i] ? 1 : 0))) { + expression.drop(); + return true; + } + expression.restore(); + seen[i] = false; + } else { + expression.drop(); + } + } + return success(matchCount); + }; + if (!tryMatch(0)) { + pass++; + tryMatch(0); + } + + if (required === false) { + return max > 0; + } + for (var i = 0; i < ms.length; i++) { + if (required[i] && !seen[i]) { + return false; + } + } + return true; + }, function(prec) { + var p = required === false ? Matcher.prec.OROR : Matcher.prec.ANDAND; + var s = ms.map(function(m, i) { + if (required !== false && !required[i]) { + return m.toString(Matcher.prec.MOD) + "?"; + } + return m.toString(p); + }).join(required === false ? " || " : " && "); + if (prec > p) { + s = "[ " + s + " ]"; + } + return s; + }); + result.options = ms; + return result; +}; +Matcher.andand = function() { + var args = Array.prototype.slice.call(arguments); + args.unshift(true); + return Matcher.many.apply(Matcher, args); +}; +Matcher.oror = function() { + var args = Array.prototype.slice.call(arguments); + args.unshift(false); + return Matcher.many.apply(Matcher, args); +}; +Matcher.prototype = { + constructor: Matcher, + match: function() { + throw new Error("unimplemented"); + }, + toString: function() { + throw new Error("unimplemented"); + }, + func: function() { + return this.match.bind(this); + }, + then: function(m) { + return Matcher.seq(this, m); + }, + or: function(m) { + return Matcher.alt(this, m); + }, + andand: function(m) { + return Matcher.many(true, this, m); + }, + oror: function(m) { + return Matcher.many(false, this, m); + }, + star: function() { + return this.braces(0, Infinity, "*"); + }, + plus: function() { + return this.braces(1, Infinity, "+"); + }, + question: function() { + return this.braces(0, 1, "?"); + }, + hash: function() { + return this.braces(1, Infinity, "#", Matcher.cast(",")); + }, + braces: function(min, max, marker, optSep) { + var m1 = this, m2 = optSep ? optSep.then(this) : this; + if (!marker) { + marker = "{" + min + "," + max + "}"; + } + return new Matcher(function(expression) { + var result = true, i; + for (i = 0; i < max; i++) { + if (i > 0 && optSep) { + result = m2.match(expression); + } else { + result = m1.match(expression); + } + if (!result) { + break; + } + } + return i >= min; + }, function() { + return m1.toString(Matcher.prec.MOD) + marker; + }); + } +}; + +},{"../util/StringReader":24,"../util/SyntaxError":25,"./ValidationTypes":21}],4:[function(require,module,exports){ +"use strict"; + +module.exports = MediaFeature; + +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Parser = require("./Parser"); +function MediaFeature(name, value) { SyntaxUnit.call(this, "(" + name + (value !== null ? ":" + value : "") + ")", name.startLine, name.startCol, Parser.MEDIA_FEATURE_TYPE); this.name = name; @@ -2006,9 +1874,19 @@ function MediaFeature(name, value){ MediaFeature.prototype = new SyntaxUnit(); MediaFeature.prototype.constructor = MediaFeature; -function MediaQuery(modifier, mediaType, features, line, col){ - SyntaxUnit.call(this, (modifier ? modifier + " ": "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); + +},{"../util/SyntaxUnit":26,"./Parser":6}],5:[function(require,module,exports){ +"use strict"; + +module.exports = MediaQuery; + +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Parser = require("./Parser"); +function MediaQuery(modifier, mediaType, features, line, col) { + + SyntaxUnit.call(this, (modifier ? modifier + " " : "") + (mediaType ? mediaType : "") + (mediaType && features.length > 0 ? " and " : "") + features.join(" and "), line, col, Parser.MEDIA_QUERY_TYPE); this.modifier = modifier; this.mediaType = mediaType; this.features = features; @@ -2017,7 +1895,30 @@ function MediaQuery(modifier, mediaType, features, line, col){ MediaQuery.prototype = new SyntaxUnit(); MediaQuery.prototype.constructor = MediaQuery; -function Parser(options){ + + +},{"../util/SyntaxUnit":26,"./Parser":6}],6:[function(require,module,exports){ +"use strict"; + +module.exports = Parser; + +var EventTarget = require("../util/EventTarget"); +var SyntaxError = require("../util/SyntaxError"); +var SyntaxUnit = require("../util/SyntaxUnit"); + +var Combinator = require("./Combinator"); +var MediaFeature = require("./MediaFeature"); +var MediaQuery = require("./MediaQuery"); +var PropertyName = require("./PropertyName"); +var PropertyValue = require("./PropertyValue"); +var PropertyValuePart = require("./PropertyValuePart"); +var Selector = require("./Selector"); +var SelectorPart = require("./SelectorPart"); +var SelectorSubPart = require("./SelectorSubPart"); +var TokenStream = require("./TokenStream"); +var Tokens = require("./Tokens"); +var Validation = require("./Validation"); +function Parser(options) { EventTarget.call(this); @@ -2036,11 +1937,12 @@ Parser.SELECTOR_TYPE = 7; Parser.SELECTOR_PART_TYPE = 8; Parser.SELECTOR_SUB_PART_TYPE = 9; -Parser.prototype = function(){ +Parser.prototype = function() { - var proto = new EventTarget(), //new prototype + var proto = new EventTarget(), // new prototype prop, additions = { + __proto__: null, constructor: Parser, DEFAULT_TYPE : 0, COMBINATOR_TYPE : 1, @@ -2053,10 +1955,9 @@ Parser.prototype = function(){ SELECTOR_PART_TYPE : 8, SELECTOR_SUB_PART_TYPE : 9, - _stylesheet: function(){ + _stylesheet: function() { var tokenStream = this._tokenStream, - charset = null, count, token, tt; @@ -2065,20 +1966,20 @@ Parser.prototype = function(){ this._charset(); this._skipCruft(); - while (tokenStream.peek() == Tokens.IMPORT_SYM){ + while (tokenStream.peek() === Tokens.IMPORT_SYM) { this._import(); this._skipCruft(); } - while (tokenStream.peek() == Tokens.NAMESPACE_SYM){ + while (tokenStream.peek() === Tokens.NAMESPACE_SYM) { this._namespace(); this._skipCruft(); } tt = tokenStream.peek(); - while(tt > Tokens.EOF){ + while (tt > Tokens.EOF) { try { - switch(tt){ + switch (tt) { case Tokens.MEDIA_SYM: this._media(); this._skipCruft(); @@ -2099,9 +2000,17 @@ Parser.prototype = function(){ this._viewport(); this._skipCruft(); break; - case Tokens.UNKNOWN_SYM: //unknown @ rule + case Tokens.DOCUMENT_SYM: + this._document(); + this._skipCruft(); + break; + case Tokens.SUPPORTS_SYM: + this._supports(); + this._skipCruft(); + break; + case Tokens.UNKNOWN_SYM: // unknown @ rule tokenStream.get(); - if (!this.options.strict){ + if (!this.options.strict) { this.fire({ type: "error", error: null, @@ -2109,12 +2018,12 @@ Parser.prototype = function(){ line: tokenStream.LT(0).startLine, col: tokenStream.LT(0).startCol }); - count=0; - while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) == Tokens.LBRACE){ - count++; //keep track of nesting depth + count = 0; + while (tokenStream.advance([Tokens.LBRACE, Tokens.RBRACE]) === Tokens.LBRACE) { + count++; // keep track of nesting depth } - while(count){ + while (count) { tokenStream.advance([Tokens.RBRACE]); count--; } @@ -2127,8 +2036,8 @@ Parser.prototype = function(){ this._readWhitespace(); break; default: - if(!this._ruleset()){ - switch(tt){ + if (!this._ruleset()) { + switch (tt) { case Tokens.CHARSET_SYM: token = tokenStream.LT(1); this._charset(false); @@ -2142,14 +2051,14 @@ Parser.prototype = function(){ this._namespace(false); throw new SyntaxError("@namespace not allowed here.", token.startLine, token.startCol); default: - tokenStream.get(); //get the last token + tokenStream.get(); // get the last token this._unexpectedToken(tokenStream.token()); } } } - } catch(ex) { - if (ex instanceof SyntaxError && !this.options.strict){ + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict) { this.fire({ type: "error", error: ex, @@ -2165,21 +2074,21 @@ Parser.prototype = function(){ tt = tokenStream.peek(); } - if (tt != Tokens.EOF){ + if (tt !== Tokens.EOF) { this._unexpectedToken(tokenStream.token()); } this.fire("endstylesheet"); }, - _charset: function(emit){ + _charset: function(emit) { var tokenStream = this._tokenStream, charset, token, line, col; - if (tokenStream.match(Tokens.CHARSET_SYM)){ + if (tokenStream.match(Tokens.CHARSET_SYM)) { line = tokenStream.token().startLine; col = tokenStream.token().startCol; @@ -2192,7 +2101,7 @@ Parser.prototype = function(){ this._readWhitespace(); tokenStream.mustMatch(Tokens.SEMICOLON); - if (emit !== false){ + if (emit !== false) { this.fire({ type: "charset", charset:charset, @@ -2203,10 +2112,9 @@ Parser.prototype = function(){ } }, - _import: function(emit){ + _import: function(emit) { var tokenStream = this._tokenStream, - tt, uri, importToken, mediaList = []; @@ -2223,7 +2131,7 @@ Parser.prototype = function(){ tokenStream.mustMatch(Tokens.SEMICOLON); this._readWhitespace(); - if (emit !== false){ + if (emit !== false) { this.fire({ type: "import", uri: uri, @@ -2235,7 +2143,7 @@ Parser.prototype = function(){ }, - _namespace: function(emit){ + _namespace: function(emit) { var tokenStream = this._tokenStream, line, @@ -2246,7 +2154,7 @@ Parser.prototype = function(){ line = tokenStream.token().startLine; col = tokenStream.token().startCol; this._readWhitespace(); - if (tokenStream.match(Tokens.IDENT)){ + if (tokenStream.match(Tokens.IDENT)) { prefix = tokenStream.token().value; this._readWhitespace(); } @@ -2258,7 +2166,7 @@ Parser.prototype = function(){ tokenStream.mustMatch(Tokens.SEMICOLON); this._readWhitespace(); - if (emit !== false){ + if (emit !== false) { this.fire({ type: "namespace", prefix: prefix, @@ -2270,11 +2178,119 @@ Parser.prototype = function(){ }, - _media: function(){ + _supports: function(emit) { + var tokenStream = this._tokenStream, + line, + col; + + if (tokenStream.match(Tokens.SUPPORTS_SYM)) { + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; + + this._readWhitespace(); + this._supports_condition(); + this._readWhitespace(); + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + if (emit !== false) { + this.fire({ + type: "startsupports", + line: line, + col: col + }); + } + + while (true) { + if (!this._ruleset()) { + break; + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); + + this.fire({ + type: "endsupports", + line: line, + col: col + }); + } + }, + + _supports_condition: function() { + var tokenStream = this._tokenStream, + ident; + + if (tokenStream.match(Tokens.IDENT)) { + ident = tokenStream.token().value.toLowerCase(); + + if (ident === "not") { + tokenStream.mustMatch(Tokens.S); + this._supports_condition_in_parens(); + } else { + tokenStream.unget(); + } + } else { + this._supports_condition_in_parens(); + this._readWhitespace(); + + while (tokenStream.peek() === Tokens.IDENT) { + ident = tokenStream.LT(1).value.toLowerCase(); + if (ident === "and" || ident === "or") { + tokenStream.mustMatch(Tokens.IDENT); + this._readWhitespace(); + this._supports_condition_in_parens(); + this._readWhitespace(); + } + } + } + }, + + _supports_condition_in_parens: function() { + var tokenStream = this._tokenStream, + ident; + + if (tokenStream.match(Tokens.LPAREN)) { + this._readWhitespace(); + if (tokenStream.match(Tokens.IDENT)) { + ident = tokenStream.token().value.toLowerCase(); + if (ident === "not") { + this._readWhitespace(); + this._supports_condition(); + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RPAREN); + } else { + tokenStream.unget(); + this._supports_declaration_condition(false); + } + } else { + this._supports_condition(); + this._readWhitespace(); + tokenStream.mustMatch(Tokens.RPAREN); + } + } else { + this._supports_declaration_condition(); + } + }, + + _supports_declaration_condition: function(requireStartParen) { + var tokenStream = this._tokenStream; + + if (requireStartParen !== false) { + tokenStream.mustMatch(Tokens.LPAREN); + } + this._readWhitespace(); + this._declaration(); + tokenStream.mustMatch(Tokens.RPAREN); + }, + + _media: function() { var tokenStream = this._tokenStream, line, col, - mediaList;// = []; + mediaList; // = []; tokenStream.mustMatch(Tokens.MEDIA_SYM); line = tokenStream.token().startLine; col = tokenStream.token().startCol; @@ -2293,14 +2309,20 @@ Parser.prototype = function(){ col: col }); - while(true) { - if (tokenStream.peek() == Tokens.PAGE_SYM){ + while (true) { + if (tokenStream.peek() === Tokens.PAGE_SYM) { this._page(); - } else if (tokenStream.peek() == Tokens.FONT_FACE_SYM){ + } else if (tokenStream.peek() === Tokens.FONT_FACE_SYM) { this._font_face(); - } else if (tokenStream.peek() == Tokens.VIEWPORT_SYM){ + } else if (tokenStream.peek() === Tokens.VIEWPORT_SYM) { this._viewport(); - } else if (!this._ruleset()){ + } else if (tokenStream.peek() === Tokens.DOCUMENT_SYM) { + this._document(); + } else if (tokenStream.peek() === Tokens.SUPPORTS_SYM) { + this._supports(); + } else if (tokenStream.peek() === Tokens.MEDIA_SYM) { + this._media(); + } else if (!this._ruleset()) { break; } } @@ -2315,34 +2337,34 @@ Parser.prototype = function(){ col: col }); }, - _media_query_list: function(){ + _media_query_list: function() { var tokenStream = this._tokenStream, mediaList = []; this._readWhitespace(); - if (tokenStream.peek() == Tokens.IDENT || tokenStream.peek() == Tokens.LPAREN){ + if (tokenStream.peek() === Tokens.IDENT || tokenStream.peek() === Tokens.LPAREN) { mediaList.push(this._media_query()); } - while(tokenStream.match(Tokens.COMMA)){ + while (tokenStream.match(Tokens.COMMA)) { this._readWhitespace(); mediaList.push(this._media_query()); } return mediaList; }, - _media_query: function(){ + _media_query: function() { var tokenStream = this._tokenStream, type = null, ident = null, token = null, expressions = []; - if (tokenStream.match(Tokens.IDENT)){ + if (tokenStream.match(Tokens.IDENT)) { ident = tokenStream.token().value.toLowerCase(); - if (ident != "only" && ident != "not"){ + if (ident !== "only" && ident !== "not") { tokenStream.unget(); ident = null; } else { @@ -2352,24 +2374,24 @@ Parser.prototype = function(){ this._readWhitespace(); - if (tokenStream.peek() == Tokens.IDENT){ + if (tokenStream.peek() === Tokens.IDENT) { type = this._media_type(); - if (token === null){ + if (token === null) { token = tokenStream.token(); } - } else if (tokenStream.peek() == Tokens.LPAREN){ - if (token === null){ + } else if (tokenStream.peek() === Tokens.LPAREN) { + if (token === null) { token = tokenStream.LT(1); } expressions.push(this._media_expression()); } - if (type === null && expressions.length === 0){ + if (type === null && expressions.length === 0) { return null; } else { this._readWhitespace(); - while (tokenStream.match(Tokens.IDENT)){ - if (tokenStream.token().value.toLowerCase() != "and"){ + while (tokenStream.match(Tokens.IDENT)) { + if (tokenStream.token().value.toLowerCase() !== "and") { this._unexpectedToken(tokenStream.token()); } @@ -2380,10 +2402,10 @@ Parser.prototype = function(){ return new MediaQuery(ident, type, expressions, token.startLine, token.startCol); }, - _media_type: function(){ + _media_type: function() { return this._media_feature(); }, - _media_expression: function(){ + _media_expression: function() { var tokenStream = this._tokenStream, feature = null, token, @@ -2395,7 +2417,7 @@ Parser.prototype = function(){ feature = this._media_feature(); this._readWhitespace(); - if (tokenStream.match(Tokens.COLON)){ + if (tokenStream.match(Tokens.COLON)) { this._readWhitespace(); token = tokenStream.LT(1); expression = this._expression(); @@ -2404,16 +2426,18 @@ Parser.prototype = function(){ tokenStream.mustMatch(Tokens.RPAREN); this._readWhitespace(); - return new MediaFeature(feature, (expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null)); + return new MediaFeature(feature, expression ? new SyntaxUnit(expression, token.startLine, token.startCol) : null); }, - _media_feature: function(){ + _media_feature: function() { var tokenStream = this._tokenStream; + this._readWhitespace(); + tokenStream.mustMatch(Tokens.IDENT); return SyntaxUnit.fromToken(tokenStream.token()); }, - _page: function(){ + _page: function() { var tokenStream = this._tokenStream, line, col, @@ -2425,13 +2449,13 @@ Parser.prototype = function(){ this._readWhitespace(); - if (tokenStream.match(Tokens.IDENT)){ + if (tokenStream.match(Tokens.IDENT)) { identifier = tokenStream.token().value; - if (identifier.toLowerCase() === "auto"){ + if (identifier.toLowerCase() === "auto") { this._unexpectedToken(tokenStream.token()); } } - if (tokenStream.peek() == Tokens.COLON){ + if (tokenStream.peek() === Tokens.COLON) { pseudoPage = this._pseudo_page(); } @@ -2456,13 +2480,13 @@ Parser.prototype = function(){ }); }, - _margin: function(){ + _margin: function() { var tokenStream = this._tokenStream, line, col, marginSym = this._margin_sym(); - if (marginSym){ + if (marginSym) { line = tokenStream.token().startLine; col = tokenStream.token().startCol; @@ -2486,18 +2510,17 @@ Parser.prototype = function(){ return false; } }, - _margin_sym: function(){ + _margin_sym: function() { var tokenStream = this._tokenStream; - if(tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM, - Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM, - Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM, - Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM, - Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM, - Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM, - Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM])) - { + if (tokenStream.match([Tokens.TOPLEFTCORNER_SYM, Tokens.TOPLEFT_SYM, + Tokens.TOPCENTER_SYM, Tokens.TOPRIGHT_SYM, Tokens.TOPRIGHTCORNER_SYM, + Tokens.BOTTOMLEFTCORNER_SYM, Tokens.BOTTOMLEFT_SYM, + Tokens.BOTTOMCENTER_SYM, Tokens.BOTTOMRIGHT_SYM, + Tokens.BOTTOMRIGHTCORNER_SYM, Tokens.LEFTTOP_SYM, + Tokens.LEFTMIDDLE_SYM, Tokens.LEFTBOTTOM_SYM, Tokens.RIGHTTOP_SYM, + Tokens.RIGHTMIDDLE_SYM, Tokens.RIGHTBOTTOM_SYM])) { return SyntaxUnit.fromToken(tokenStream.token()); } else { return null; @@ -2505,7 +2528,7 @@ Parser.prototype = function(){ }, - _pseudo_page: function(){ + _pseudo_page: function() { var tokenStream = this._tokenStream; @@ -2515,7 +2538,7 @@ Parser.prototype = function(){ return tokenStream.token().value; }, - _font_face: function(){ + _font_face: function() { var tokenStream = this._tokenStream, line, col; @@ -2540,40 +2563,126 @@ Parser.prototype = function(){ }); }, - _viewport: function(){ - var tokenStream = this._tokenStream, + _viewport: function() { + var tokenStream = this._tokenStream, line, col; - tokenStream.mustMatch(Tokens.VIEWPORT_SYM); - line = tokenStream.token().startLine; - col = tokenStream.token().startCol; + tokenStream.mustMatch(Tokens.VIEWPORT_SYM); + line = tokenStream.token().startLine; + col = tokenStream.token().startCol; - this._readWhitespace(); + this._readWhitespace(); - this.fire({ - type: "startviewport", - line: line, - col: col - }); + this.fire({ + type: "startviewport", + line: line, + col: col + }); - this._readDeclarations(true); + this._readDeclarations(true); - this.fire({ - type: "endviewport", - line: line, - col: col - }); + this.fire({ + type: "endviewport", + line: line, + col: col + }); }, - _operator: function(inFunction){ + _document: function() { + + var tokenStream = this._tokenStream, + token, + functions = [], + prefix = ""; + + tokenStream.mustMatch(Tokens.DOCUMENT_SYM); + token = tokenStream.token(); + if (/^@-([^-]+)-/.test(token.value)) { + prefix = RegExp.$1; + } + + this._readWhitespace(); + functions.push(this._document_function()); + + while (tokenStream.match(Tokens.COMMA)) { + this._readWhitespace(); + functions.push(this._document_function()); + } + + tokenStream.mustMatch(Tokens.LBRACE); + this._readWhitespace(); + + this.fire({ + type: "startdocument", + functions: functions, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + + var ok = true; + while (ok) { + switch (tokenStream.peek()) { + case Tokens.PAGE_SYM: + this._page(); + break; + case Tokens.FONT_FACE_SYM: + this._font_face(); + break; + case Tokens.VIEWPORT_SYM: + this._viewport(); + break; + case Tokens.MEDIA_SYM: + this._media(); + break; + case Tokens.KEYFRAMES_SYM: + this._keyframes(); + break; + case Tokens.DOCUMENT_SYM: + this._document(); + break; + default: + ok = Boolean(this._ruleset()); + } + } + + tokenStream.mustMatch(Tokens.RBRACE); + token = tokenStream.token(); + this._readWhitespace(); + + this.fire({ + type: "enddocument", + functions: functions, + prefix: prefix, + line: token.startLine, + col: token.startCol + }); + }, + + _document_function: function() { + + var tokenStream = this._tokenStream, + value; + + if (tokenStream.match(Tokens.URI)) { + value = tokenStream.token().value; + this._readWhitespace(); + } else { + value = this._function(); + } + + return value; + }, + + _operator: function(inFunction) { var tokenStream = this._tokenStream, token = null; if (tokenStream.match([Tokens.SLASH, Tokens.COMMA]) || - (inFunction && tokenStream.match([Tokens.PLUS, Tokens.STAR, Tokens.MINUS]))){ + inFunction && tokenStream.match([Tokens.PLUS, Tokens.STAR, Tokens.MINUS])) { token = tokenStream.token(); this._readWhitespace(); } @@ -2581,13 +2690,13 @@ Parser.prototype = function(){ }, - _combinator: function(){ + _combinator: function() { var tokenStream = this._tokenStream, value = null, token; - if(tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])){ + if (tokenStream.match([Tokens.PLUS, Tokens.GREATER, Tokens.TILDE])) { token = tokenStream.token(); value = new Combinator(token.value, token.startLine, token.startCol); this._readWhitespace(); @@ -2596,57 +2705,69 @@ Parser.prototype = function(){ return value; }, - _unary_operator: function(){ + _unary_operator: function() { var tokenStream = this._tokenStream; - if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])){ + if (tokenStream.match([Tokens.MINUS, Tokens.PLUS])) { return tokenStream.token().value; } else { return null; } }, - _property: function(){ + _property: function() { - var tokenStream = this._tokenStream, - value = null, - hack = null, - tokenValue, + var tokenStream = this._tokenStream, + value = null, + hack = null, + propertyName = "", token, line, col; - if (tokenStream.peek() == Tokens.STAR && this.options.starHack){ + if (tokenStream.peek() === Tokens.STAR && this.options.starHack) { tokenStream.get(); token = tokenStream.token(); hack = token.value; line = token.startLine; col = token.startCol; } - - if(tokenStream.match(Tokens.IDENT)){ + if (tokenStream.peek() === Tokens.MINUS) { + tokenStream.get(); token = tokenStream.token(); - tokenValue = token.value; - if (tokenValue.charAt(0) == "_" && this.options.underscoreHack){ + propertyName = token.value; + line = token.startLine; + col = token.startCol; + } + + if (tokenStream.match(Tokens.IDENT)) { + token = tokenStream.token(); + propertyName += token.value; + if (propertyName.charAt(0) === "_" && this.options.underscoreHack) { hack = "_"; - tokenValue = tokenValue.substring(1); + propertyName = propertyName.substring(1); } - value = new PropertyName(tokenValue, hack, (line||token.startLine), (col||token.startCol)); + value = new PropertyName(propertyName, hack, line || token.startLine, col || token.startCol); this._readWhitespace(); + } else { + var tt = tokenStream.peek(); + if (tt !== Tokens.EOF && tt !== Tokens.RBRACE) { + this._unexpectedToken(tokenStream.LT(1)); + } } return value; }, - _ruleset: function(){ + _ruleset: function() { var tokenStream = this._tokenStream, tt, selectors; try { selectors = this._selectors_group(); - } catch (ex){ - if (ex instanceof SyntaxError && !this.options.strict){ + } catch (ex) { + if (ex instanceof SyntaxError && !this.options.strict) { this.fire({ type: "error", error: ex, @@ -2655,7 +2776,7 @@ Parser.prototype = function(){ col: ex.col }); tt = tokenStream.advance([Tokens.RBRACE]); - if (tt == Tokens.RBRACE){ + if (tt === Tokens.RBRACE) { } else { throw ex; } @@ -2665,7 +2786,7 @@ Parser.prototype = function(){ } return true; } - if (selectors){ + if (selectors) { this.fire({ type: "startrule", @@ -2688,19 +2809,19 @@ Parser.prototype = function(){ return selectors; }, - _selectors_group: function(){ + _selectors_group: function() { var tokenStream = this._tokenStream, selectors = [], selector; selector = this._selector(); - if (selector !== null){ + if (selector !== null) { selectors.push(selector); - while(tokenStream.match(Tokens.COMMA)){ + while (tokenStream.match(Tokens.COMMA)) { this._readWhitespace(); selector = this._selector(); - if (selector !== null){ + if (selector !== null) { selectors.push(selector); } else { this._unexpectedToken(tokenStream.LT(1)); @@ -2710,7 +2831,7 @@ Parser.prototype = function(){ return selectors.length ? selectors : null; }, - _selector: function(){ + _selector: function() { var tokenStream = this._tokenStream, selector = [], @@ -2718,7 +2839,7 @@ Parser.prototype = function(){ combinator = null, ws = null; nextSelector = this._simple_selector_sequence(); - if (nextSelector === null){ + if (nextSelector === null) { return null; } @@ -2727,26 +2848,26 @@ Parser.prototype = function(){ do { combinator = this._combinator(); - if (combinator !== null){ + if (combinator !== null) { selector.push(combinator); nextSelector = this._simple_selector_sequence(); - if (nextSelector === null){ + if (nextSelector === null) { this._unexpectedToken(tokenStream.LT(1)); } else { selector.push(nextSelector); } } else { - if (this._readWhitespace()){ + if (this._readWhitespace()) { ws = new Combinator(tokenStream.token().value, tokenStream.token().startLine, tokenStream.token().startCol); combinator = this._combinator(); nextSelector = this._simple_selector_sequence(); - if (nextSelector === null){ - if (combinator !== null){ + if (nextSelector === null) { + if (combinator !== null) { this._unexpectedToken(tokenStream.LT(1)); } } else { - if (combinator !== null){ + if (combinator !== null) { selector.push(combinator); } else { selector.push(ws); @@ -2759,18 +2880,18 @@ Parser.prototype = function(){ } } - } while(true); + } while (true); return new Selector(selector, selector[0].line, selector[0].col); }, - _simple_selector_sequence: function(){ + _simple_selector_sequence: function() { var tokenStream = this._tokenStream, elementName = null, modifiers = [], - selectorText= "", + selectorText = "", components = [ - function(){ + function() { return tokenStream.match(Tokens.HASH) ? new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : null; @@ -2783,31 +2904,30 @@ Parser.prototype = function(){ i = 0, len = components.length, component = null, - found = false, line, col; line = tokenStream.LT(1).startLine; col = tokenStream.LT(1).startCol; elementName = this._type_selector(); - if (!elementName){ + if (!elementName) { elementName = this._universal(); } - if (elementName !== null){ + if (elementName !== null) { selectorText += elementName; } - while(true){ - if (tokenStream.peek() === Tokens.S){ + while (true) { + if (tokenStream.peek() === Tokens.S) { break; } - while(i < len && component === null){ + while (i < len && component === null) { component = components[i++].call(this); } - if (component === null){ - if (selectorText === ""){ + if (component === null) { + if (selectorText === "") { return null; } else { break; @@ -2825,35 +2945,35 @@ Parser.prototype = function(){ new SelectorPart(elementName, modifiers, selectorText, line, col) : null; }, - _type_selector: function(){ + _type_selector: function() { var tokenStream = this._tokenStream, ns = this._namespace_prefix(), elementName = this._element_name(); - if (!elementName){ - if (ns){ + if (!elementName) { + if (ns) { tokenStream.unget(); - if (ns.length > 1){ + if (ns.length > 1) { tokenStream.unget(); } } return null; } else { - if (ns){ + if (ns) { elementName.text = ns + elementName.text; elementName.col -= ns.length; } return elementName; } }, - _class: function(){ + _class: function() { var tokenStream = this._tokenStream, token; - if (tokenStream.match(Tokens.DOT)){ + if (tokenStream.match(Tokens.DOT)) { tokenStream.mustMatch(Tokens.IDENT); token = tokenStream.token(); return new SelectorSubPart("." + token.value, "class", token.startLine, token.startCol - 1); @@ -2862,12 +2982,12 @@ Parser.prototype = function(){ } }, - _element_name: function(){ + _element_name: function() { var tokenStream = this._tokenStream, token; - if (tokenStream.match(Tokens.IDENT)){ + if (tokenStream.match(Tokens.IDENT)) { token = tokenStream.token(); return new SelectorSubPart(token.value, "elementName", token.startLine, token.startCol); @@ -2875,12 +2995,12 @@ Parser.prototype = function(){ return null; } }, - _namespace_prefix: function(){ + _namespace_prefix: function() { var tokenStream = this._tokenStream, value = ""; - if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE){ + if (tokenStream.LA(1) === Tokens.PIPE || tokenStream.LA(2) === Tokens.PIPE) { - if(tokenStream.match([Tokens.IDENT, Tokens.STAR])){ + if (tokenStream.match([Tokens.IDENT, Tokens.STAR])) { value += tokenStream.token().value; } @@ -2891,38 +3011,38 @@ Parser.prototype = function(){ return value.length ? value : null; }, - _universal: function(){ + _universal: function() { var tokenStream = this._tokenStream, value = "", ns; ns = this._namespace_prefix(); - if(ns){ + if (ns) { value += ns; } - if(tokenStream.match(Tokens.STAR)){ + if (tokenStream.match(Tokens.STAR)) { value += "*"; } return value.length ? value : null; - }, - _attrib: function(){ + }, + _attrib: function() { var tokenStream = this._tokenStream, value = null, ns, token; - if (tokenStream.match(Tokens.LBRACKET)){ + if (tokenStream.match(Tokens.LBRACKET)) { token = tokenStream.token(); value = token.value; value += this._readWhitespace(); ns = this._namespace_prefix(); - if (ns){ + if (ns) { value += ns; } @@ -2930,8 +3050,8 @@ Parser.prototype = function(){ value += tokenStream.token().value; value += this._readWhitespace(); - if(tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH, - Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])){ + if (tokenStream.match([Tokens.PREFIXMATCH, Tokens.SUFFIXMATCH, Tokens.SUBSTRINGMATCH, + Tokens.EQUALS, Tokens.INCLUDES, Tokens.DASHMATCH])) { value += tokenStream.token().value; value += this._readWhitespace(); @@ -2948,7 +3068,7 @@ Parser.prototype = function(){ return null; } }, - _pseudo: function(){ + _pseudo: function() { var tokenStream = this._tokenStream, pseudo = null, @@ -2956,35 +3076,39 @@ Parser.prototype = function(){ line, col; - if (tokenStream.match(Tokens.COLON)){ + if (tokenStream.match(Tokens.COLON)) { - if (tokenStream.match(Tokens.COLON)){ + if (tokenStream.match(Tokens.COLON)) { colons += ":"; } - if (tokenStream.match(Tokens.IDENT)){ + if (tokenStream.match(Tokens.IDENT)) { pseudo = tokenStream.token().value; line = tokenStream.token().startLine; col = tokenStream.token().startCol - colons.length; - } else if (tokenStream.peek() == Tokens.FUNCTION){ + } else if (tokenStream.peek() === Tokens.FUNCTION) { line = tokenStream.LT(1).startLine; col = tokenStream.LT(1).startCol - colons.length; pseudo = this._functional_pseudo(); } - if (pseudo){ + if (pseudo) { pseudo = new SelectorSubPart(colons + pseudo, "pseudo", line, col); + } else { + var startLine = tokenStream.LT(1).startLine, + startCol = tokenStream.LT(0).startCol; + throw new SyntaxError("Expected a `FUNCTION` or `IDENT` after colon at line " + startLine + ", col " + startCol + ".", startLine, startCol); } } return pseudo; }, - _functional_pseudo: function(){ + _functional_pseudo: function() { var tokenStream = this._tokenStream, value = null; - if(tokenStream.match(Tokens.FUNCTION)){ + if (tokenStream.match(Tokens.FUNCTION)) { value = tokenStream.token().value; value += this._readWhitespace(); value += this._expression(); @@ -2994,15 +3118,15 @@ Parser.prototype = function(){ return value; }, - _expression: function(){ + _expression: function() { var tokenStream = this._tokenStream, value = ""; - while(tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION, - Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH, - Tokens.FREQ, Tokens.ANGLE, Tokens.TIME, - Tokens.RESOLUTION, Tokens.SLASH])){ + while (tokenStream.match([Tokens.PLUS, Tokens.MINUS, Tokens.DIMENSION, + Tokens.NUMBER, Tokens.STRING, Tokens.IDENT, Tokens.LENGTH, + Tokens.FREQ, Tokens.ANGLE, Tokens.TIME, + Tokens.RESOLUTION, Tokens.SLASH])) { value += tokenStream.token().value; value += this._readWhitespace(); @@ -3011,7 +3135,7 @@ Parser.prototype = function(){ return value.length ? value : null; }, - _negation: function(){ + _negation: function() { var tokenStream = this._tokenStream, line, @@ -3020,7 +3144,7 @@ Parser.prototype = function(){ arg, subpart = null; - if (tokenStream.match(Tokens.NOT)){ + if (tokenStream.match(Tokens.NOT)) { value = tokenStream.token().value; line = tokenStream.token().startLine; col = tokenStream.token().startCol; @@ -3037,13 +3161,13 @@ Parser.prototype = function(){ return subpart; }, - _negation_arg: function(){ + _negation_arg: function() { var tokenStream = this._tokenStream, args = [ this._type_selector, this._universal, - function(){ + function() { return tokenStream.match(Tokens.HASH) ? new SelectorSubPart(tokenStream.token().value, "id", tokenStream.token().startLine, tokenStream.token().startCol) : null; @@ -3055,7 +3179,6 @@ Parser.prototype = function(){ arg = null, i = 0, len = args.length, - elementName, line, col, part; @@ -3063,15 +3186,15 @@ Parser.prototype = function(){ line = tokenStream.LT(1).startLine; col = tokenStream.LT(1).startCol; - while(i < len && arg === null){ + while (i < len && arg === null) { arg = args[i].call(this); i++; } - if (arg === null){ + if (arg === null) { this._unexpectedToken(tokenStream.LT(1)); } - if (arg.type == "elementName"){ + if (arg.type === "elementName") { part = new SelectorPart(arg, [], arg.toString(), line, col); } else { part = new SelectorPart(null, [arg], arg.toString(), line, col); @@ -3080,31 +3203,30 @@ Parser.prototype = function(){ return part; }, - _declaration: function(){ + _declaration: function() { - var tokenStream = this._tokenStream, - property = null, - expr = null, - prio = null, - error = null, - invalid = null, - propertyName= ""; + var tokenStream = this._tokenStream, + property = null, + expr = null, + prio = null, + invalid = null, + propertyName = ""; property = this._property(); - if (property !== null){ + if (property !== null) { tokenStream.mustMatch(Tokens.COLON); this._readWhitespace(); expr = this._expr(); - if (!expr || expr.length === 0){ + if (!expr || expr.length === 0) { this._unexpectedToken(tokenStream.LT(1)); } prio = this._prio(); propertyName = property.toString(); - if (this.options.starHack && property.hack == "*" || - this.options.underscoreHack && property.hack == "_") { + if (this.options.starHack && property.hack === "*" || + this.options.underscoreHack && property.hack === "_") { propertyName = property.text; } @@ -3131,7 +3253,7 @@ Parser.prototype = function(){ } }, - _prio: function(){ + _prio: function() { var tokenStream = this._tokenStream, result = tokenStream.match(Tokens.IMPORTANT_SYM); @@ -3140,21 +3262,20 @@ Parser.prototype = function(){ return result; }, - _expr: function(inFunction){ + _expr: function(inFunction) { - var tokenStream = this._tokenStream, - values = [], + var values = [], value = null, operator = null; value = this._term(inFunction); - if (value !== null){ + if (value !== null) { values.push(value); do { operator = this._operator(inFunction); - if (operator){ + if (operator) { values.push(operator); } /*else { values.push(new PropertyValue(valueParts, valueParts[0].line, valueParts[0].col)); @@ -3163,44 +3284,45 @@ Parser.prototype = function(){ value = this._term(inFunction); - if (value === null){ + if (value === null) { break; } else { values.push(value); } - } while(true); + } while (true); } return values.length > 0 ? new PropertyValue(values, values[0].line, values[0].col) : null; }, - _term: function(inFunction){ + _term: function(inFunction) { var tokenStream = this._tokenStream, unary = null, value = null, endChar = null, + part = null, token, line, col; unary = this._unary_operator(); - if (unary !== null){ + if (unary !== null) { line = tokenStream.token().startLine; col = tokenStream.token().startCol; } - if (tokenStream.peek() == Tokens.IE_FUNCTION && this.options.ieFilters){ + if (tokenStream.peek() === Tokens.IE_FUNCTION && this.options.ieFilters) { value = this._ie_function(); - if (unary === null){ + if (unary === null) { line = tokenStream.token().startLine; col = tokenStream.token().startCol; } - } else if (inFunction && tokenStream.match([Tokens.LPAREN, Tokens.LBRACE, Tokens.LBRACKET])){ + } else if (inFunction && tokenStream.match([Tokens.LPAREN, Tokens.LBRACE, Tokens.LBRACKET])) { token = tokenStream.token(); endChar = token.endChar; value = token.value + this._expr(inFunction).text; - if (unary === null){ + if (unary === null) { line = tokenStream.token().startLine; col = tokenStream.token().startCol; } @@ -3208,24 +3330,25 @@ Parser.prototype = function(){ value += endChar; this._readWhitespace(); } else if (tokenStream.match([Tokens.NUMBER, Tokens.PERCENTAGE, Tokens.LENGTH, - Tokens.ANGLE, Tokens.TIME, - Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])){ + Tokens.ANGLE, Tokens.TIME, + Tokens.FREQ, Tokens.STRING, Tokens.IDENT, Tokens.URI, Tokens.UNICODE_RANGE])) { value = tokenStream.token().value; - if (unary === null){ + if (unary === null) { line = tokenStream.token().startLine; col = tokenStream.token().startCol; + part = PropertyValuePart.fromToken(tokenStream.token()); } this._readWhitespace(); } else { token = this._hexcolor(); - if (token === null){ - if (unary === null){ + if (token === null) { + if (unary === null) { line = tokenStream.LT(1).startLine; col = tokenStream.LT(1).startCol; } - if (value === null){ - if (tokenStream.LA(3) == Tokens.EQUALS && this.options.ieFilters){ + if (value === null) { + if (tokenStream.LA(3) === Tokens.EQUALS && this.options.ieFilters) { value = this._ie_function(); } else { value = this._function(); @@ -3234,7 +3357,7 @@ Parser.prototype = function(){ } else { value = token.value; - if (unary === null){ + if (unary === null) { line = token.startLine; col = token.startCol; } @@ -3242,31 +3365,31 @@ Parser.prototype = function(){ } - return value !== null ? + return part !== null ? part : value !== null ? new PropertyValuePart(unary !== null ? unary + value : value, line, col) : null; }, - _function: function(){ + _function: function() { var tokenStream = this._tokenStream, functionText = null, expr = null, lt; - if (tokenStream.match(Tokens.FUNCTION)){ + if (tokenStream.match(Tokens.FUNCTION)) { functionText = tokenStream.token().value; this._readWhitespace(); expr = this._expr(true); functionText += expr; - if (this.options.ieFilters && tokenStream.peek() == Tokens.EQUALS){ + if (this.options.ieFilters && tokenStream.peek() === Tokens.EQUALS) { do { - if (this._readWhitespace()){ + if (this._readWhitespace()) { functionText += tokenStream.token().value; } - if (tokenStream.LA(0) == Tokens.COMMA){ + if (tokenStream.LA(0) === Tokens.COMMA) { functionText += tokenStream.token().value; } @@ -3276,12 +3399,12 @@ Parser.prototype = function(){ tokenStream.match(Tokens.EQUALS); functionText += tokenStream.token().value; lt = tokenStream.peek(); - while(lt != Tokens.COMMA && lt != Tokens.S && lt != Tokens.RPAREN){ + while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) { tokenStream.get(); functionText += tokenStream.token().value; lt = tokenStream.peek(); } - } while(tokenStream.match([Tokens.COMMA, Tokens.S])); + } while (tokenStream.match([Tokens.COMMA, Tokens.S])); } tokenStream.match(Tokens.RPAREN); @@ -3292,21 +3415,20 @@ Parser.prototype = function(){ return functionText; }, - _ie_function: function(){ + _ie_function: function() { var tokenStream = this._tokenStream, functionText = null, - expr = null, lt; - if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])){ + if (tokenStream.match([Tokens.IE_FUNCTION, Tokens.FUNCTION])) { functionText = tokenStream.token().value; do { - if (this._readWhitespace()){ + if (this._readWhitespace()) { functionText += tokenStream.token().value; } - if (tokenStream.LA(0) == Tokens.COMMA){ + if (tokenStream.LA(0) === Tokens.COMMA) { functionText += tokenStream.token().value; } @@ -3316,12 +3438,12 @@ Parser.prototype = function(){ tokenStream.match(Tokens.EQUALS); functionText += tokenStream.token().value; lt = tokenStream.peek(); - while(lt != Tokens.COMMA && lt != Tokens.S && lt != Tokens.RPAREN){ + while (lt !== Tokens.COMMA && lt !== Tokens.S && lt !== Tokens.RPAREN) { tokenStream.get(); functionText += tokenStream.token().value; lt = tokenStream.peek(); } - } while(tokenStream.match([Tokens.COMMA, Tokens.S])); + } while (tokenStream.match([Tokens.COMMA, Tokens.S])); tokenStream.match(Tokens.RPAREN); functionText += ")"; @@ -3331,17 +3453,17 @@ Parser.prototype = function(){ return functionText; }, - _hexcolor: function(){ + _hexcolor: function() { var tokenStream = this._tokenStream, token = null, color; - if(tokenStream.match(Tokens.HASH)){ + if (tokenStream.match(Tokens.HASH)) { token = tokenStream.token(); color = token.value; - if (!/#[a-f0-9]{3,6}/i.test(color)){ + if (!/#[a-f0-9]{3,6}/i.test(color)) { throw new SyntaxError("Expected a hex color but found '" + color + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); } this._readWhitespace(); @@ -3350,7 +3472,7 @@ Parser.prototype = function(){ return token; }, - _keyframes: function(){ + _keyframes: function() { var tokenStream = this._tokenStream, token, tt, @@ -3359,7 +3481,7 @@ Parser.prototype = function(){ tokenStream.mustMatch(Tokens.KEYFRAMES_SYM); token = tokenStream.token(); - if (/^@\-([^\-]+)\-/.test(token.value)) { + if (/^@-([^-]+)-/.test(token.value)) { prefix = RegExp.$1; } @@ -3379,7 +3501,7 @@ Parser.prototype = function(){ this._readWhitespace(); tt = tokenStream.peek(); - while(tt == Tokens.IDENT || tt == Tokens.PERCENTAGE) { + while (tt === Tokens.IDENT || tt === Tokens.PERCENTAGE) { this._keyframe_rule(); this._readWhitespace(); tt = tokenStream.peek(); @@ -3395,21 +3517,19 @@ Parser.prototype = function(){ this._readWhitespace(); tokenStream.mustMatch(Tokens.RBRACE); + this._readWhitespace(); }, - _keyframe_name: function(){ - var tokenStream = this._tokenStream, - token; + _keyframe_name: function() { + var tokenStream = this._tokenStream; tokenStream.mustMatch([Tokens.IDENT, Tokens.STRING]); return SyntaxUnit.fromToken(tokenStream.token()); }, - _keyframe_rule: function(){ - var tokenStream = this._tokenStream, - token, - keyList = this._key_list(); + _keyframe_rule: function() { + var keyList = this._key_list(); this.fire({ type: "startkeyframerule", @@ -3429,16 +3549,14 @@ Parser.prototype = function(){ }, - _key_list: function(){ + _key_list: function() { var tokenStream = this._tokenStream, - token, - key, keyList = []; keyList.push(this._key()); this._readWhitespace(); - while(tokenStream.match(Tokens.COMMA)){ + while (tokenStream.match(Tokens.COMMA)) { this._readWhitespace(); keyList.push(this._key()); this._readWhitespace(); @@ -3447,17 +3565,17 @@ Parser.prototype = function(){ return keyList; }, - _key: function(){ + _key: function() { var tokenStream = this._tokenStream, token; - if (tokenStream.match(Tokens.PERCENTAGE)){ + if (tokenStream.match(Tokens.PERCENTAGE)) { return SyntaxUnit.fromToken(tokenStream.token()); - } else if (tokenStream.match(Tokens.IDENT)){ + } else if (tokenStream.match(Tokens.IDENT)) { token = tokenStream.token(); - if (/from|to/i.test(token.value)){ + if (/from|to/i.test(token.value)) { return SyntaxUnit.fromToken(token); } @@ -3465,18 +3583,18 @@ Parser.prototype = function(){ } this._unexpectedToken(tokenStream.LT(1)); }, - _skipCruft: function(){ - while(this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])){ + _skipCruft: function() { + while (this._tokenStream.match([Tokens.S, Tokens.CDO, Tokens.CDC])) { } }, - _readDeclarations: function(checkStart, readMargins){ + _readDeclarations: function(checkStart, readMargins) { var tokenStream = this._tokenStream, tt; this._readWhitespace(); - if (checkStart){ + if (checkStart) { tokenStream.mustMatch(Tokens.LBRACE); } @@ -3484,11 +3602,11 @@ Parser.prototype = function(){ try { - while(true){ + while (true) { - if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())){ - } else if (this._declaration()){ - if (!tokenStream.match(Tokens.SEMICOLON)){ + if (tokenStream.match(Tokens.SEMICOLON) || (readMargins && this._margin())) { + } else if (this._declaration()) { + if (!tokenStream.match(Tokens.SEMICOLON)) { break; } } else { @@ -3501,7 +3619,7 @@ Parser.prototype = function(){ this._readWhitespace(); } catch (ex) { - if (ex instanceof SyntaxError && !this.options.strict){ + if (ex instanceof SyntaxError && !this.options.strict) { this.fire({ type: "error", error: ex, @@ -3510,9 +3628,9 @@ Parser.prototype = function(){ col: ex.col }); tt = tokenStream.advance([Tokens.SEMICOLON, Tokens.RBRACE]); - if (tt == Tokens.SEMICOLON){ + if (tt === Tokens.SEMICOLON) { this._readDeclarations(false, readMargins); - } else if (tt != Tokens.RBRACE){ + } else if (tt !== Tokens.EOF && tt !== Tokens.RBRACE) { throw ex; } @@ -3522,45 +3640,45 @@ Parser.prototype = function(){ } }, - _readWhitespace: function(){ + _readWhitespace: function() { var tokenStream = this._tokenStream, ws = ""; - while(tokenStream.match(Tokens.S)){ + while (tokenStream.match(Tokens.S)) { ws += tokenStream.token().value; } return ws; }, - _unexpectedToken: function(token){ + _unexpectedToken: function(token) { throw new SyntaxError("Unexpected token '" + token.value + "' at line " + token.startLine + ", col " + token.startCol + ".", token.startLine, token.startCol); }, - _verifyEnd: function(){ - if (this._tokenStream.LA(1) != Tokens.EOF){ + _verifyEnd: function() { + if (this._tokenStream.LA(1) !== Tokens.EOF) { this._unexpectedToken(this._tokenStream.LT(1)); } }, - _validateProperty: function(property, value){ + _validateProperty: function(property, value) { Validation.validate(property, value); }, - parse: function(input){ + parse: function(input) { this._tokenStream = new TokenStream(input, Tokens); this._stylesheet(); }, - parseStyleSheet: function(input){ + parseStyleSheet: function(input) { return this.parse(input); }, - parseMediaQuery: function(input){ + parseMediaQuery: function(input) { this._tokenStream = new TokenStream(input, Tokens); var result = this._media_query(); this._verifyEnd(); return result; }, - parsePropertyValue: function(input){ + parsePropertyValue: function(input) { this._tokenStream = new TokenStream(input, Tokens); this._readWhitespace(); @@ -3570,7 +3688,7 @@ Parser.prototype = function(){ this._verifyEnd(); return result; }, - parseRule: function(input){ + parseRule: function(input) { this._tokenStream = new TokenStream(input, Tokens); this._readWhitespace(); @@ -3579,7 +3697,7 @@ Parser.prototype = function(){ this._verifyEnd(); return result; }, - parseSelector: function(input){ + parseSelector: function(input) { this._tokenStream = new TokenStream(input, Tokens); this._readWhitespace(); @@ -3589,502 +3707,482 @@ Parser.prototype = function(){ this._verifyEnd(); return result; }, - parseStyleAttribute: function(input){ - input += "}"; // for error recovery in _readDeclarations() + parseStyleAttribute: function(input) { + input += "}"; // for error recovery in _readDeclarations() this._tokenStream = new TokenStream(input, Tokens); this._readDeclarations(); } }; - for (prop in additions){ - if (additions.hasOwnProperty(prop)){ + for (prop in additions) { + if (Object.prototype.hasOwnProperty.call(additions, prop)) { proto[prop] = additions[prop]; } } return proto; }(); -var Properties = { - "align-items" : "flex-start | flex-end | center | baseline | stretch", - "align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", - "align-self" : "auto | flex-start | flex-end | center | baseline | stretch", - "-webkit-align-items" : "flex-start | flex-end | center | baseline | stretch", - "-webkit-align-content" : "flex-start | flex-end | center | space-between | space-around | stretch", - "-webkit-align-self" : "auto | flex-start | flex-end | center | baseline | stretch", - "alignment-adjust" : "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | | ", - "alignment-baseline" : "baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical", - "animation" : 1, - "animation-delay" : { multi: "